PageSourceSearch

https://azizkhaldi.com/_next/static/chunks/58a3678d-05679c921dc6d218.js

js azizkhaldi.com collected 2026-10-06 13:35:28 UTC 1,997,533 bytes, 8,174 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[918],{2249:function(e,t,i){let r,a,o,h,c,d,u,p,f,m,g,v,y,x,b,w,S,_,A,M,E,C,T,P,D,O,I,R,L,B,z,F,N,U,k,V,j,G,H,W,q,X,Y,Q,Z,K,J,$,ee,et,ei,er,es,ea,en,eo,el,eh,ec,ed,eu,ep,ef,em,eg,ev,ey,ex,eb,ew,eS,e_,eA,eM,eE,eC,eT,eP,eD,eO,eI,eR,eL,eB,ez,eF,eN,eU,ek,eV,ej,eG,eH,eW,eq,eX,eY,eQ,eZ,eK,eJ,e$,e0,e1,e2,e3,e4,e5,e6,e8,e9,e7,te,tt,ti,tr,ts,ta,tn,to,tl,th,tc;i.d(t,{M:function(){return zF}});var td,tu,tp=i(3454),tf=i(8764).lW,tm=Object.create,tg=Object.defineProperty,tv=Object.getOwnPropertyDescriptor,ty=Object.getOwnPropertyNames,tx=Object.getPrototypeOf,tb=Object.prototype.hasOwnProperty,tw=(e,t,i)=>t in e?tg(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,tS=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),t_=(e,t,i,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of ty(t))tb.call(e,a)||a===i||tg(e,a,{get:()=>t[a],enumerable:!(r=tv(t,a))||r.enumerable});return e},tA=(e,t,i)=>(i=null!=e?tm(tx(e)):{},t_(!t&&e&&e.__esModule?i:tg(i,"default",{value:e,enumerable:!0}),e)),tM=(e,t,i)=>(tw(e,"symbol"!=typeof t?t+"":t,i),i),tE=tS((e,t)=>{var i;i=function(){return e.importState=function(t){var i=new e;return i.importState(t),i},e;function e(){return function(e){var t,i,r=0,a=0,o=0,h=1;0==e.length&&(e=[+new Date]);var c=(t=4022871197,(i=function(e){e=e.toString();for(var i=0;i<e.length;i++){var r=.02519603282416938*(t+=e.charCodeAt(i));t=r>>>0,r-=t,r*=t,t=r>>>0,r-=t,t+=4294967296*r}return(t>>>0)*23283064365386963e-26}).version="Mash 0.9",i);r=c(" "),a=c(" "),o=c(" ");for(var d=0;d<e.length;d++)(r-=c(e[d]))<0&&(r+=1),(a-=c(e[d]))<0&&(a+=1),(o-=c(e[d]))<0&&(o+=1);c=null;var u=function(){var e=2091639*r+23283064365386963e-26*h;return r=a,a=o,o=e-(h=0|e)};return u.next=u,u.uint32=function(){return 4294967296*u()},u.fract53=function(){return u()+(2097152*u()|0)*11102230246251565e-32},u.version="Alea 0.9",u.args=e,u.exportState=function(){return[r,a,o,h]},u.importState=function(e){r=+e[0]||0,a=+e[1]||0,o=+e[2]||0,h=+e[3]||0},u}(Array.prototype.slice.call(arguments))}},"object"==typeof e?t.exports=i():"function"==typeof define&&define.amd?define(i):e.Alea=i()}),tC=tS((e,t)=>{var i,r;i=e,r=function(e){e.SVD=function(e,t,i,r,a){if(t=void 0===t||t,i=void 0===i||i,a=1e-64/(r=r||2220446049250313e-31),!e)throw TypeError("Matrix a is not defined");var o,h,c,d,u,p,f,m,g,v,y,x,b=e[0].length,w=e.length;if(w<b)throw TypeError("Invalid matrix: m < n");for(var S=[],_=[],A=[],M="f"===t?w:b,E=v=f=0;E<w;E++)_[E]=Array(M).fill(0);for(E=0;E<b;E++)A[E]=Array(b).fill(0);var C,T=Array(b).fill(0);for(E=0;E<w;E++)for(o=0;o<b;o++)_[E][o]=e[E][o];for(E=0;E<b;E++){for(S[E]=f,g=0,c=E+1,o=E;o<w;o++)g+=Math.pow(_[o][E],2);if(g<a)f=0;else for(m=(p=_[E][E])*(f=p<0?Math.sqrt(g):-Math.sqrt(g))-g,_[E][E]=p-f,o=c;o<b;o++){for(g=0,h=E;h<w;h++)g+=_[h][E]*_[h][o];for(p=g/m,h=E;h<w;h++)_[h][o]=_[h][o]+p*_[h][E]}for(T[E]=f,g=0,o=c;o<b;o++)g+=Math.pow(_[E][o],2);if(g<a)f=0;else{for(m=(p=_[E][E+1])*(f=p<0?Math.sqrt(g):-Math.sqrt(g))-g,_[E][E+1]=p-f,o=c;o<b;o++)S[o]=_[E][o]/m;for(o=c;o<w;o++){for(g=0,h=c;h<b;h++)g+=_[o][h]*_[E][h];for(h=c;h<b;h++)_[o][h]=_[o][h]+g*S[h]}}v<(y=Math.abs(T[E])+Math.abs(S[E]))&&(v=y)}if(i)for(E=b-1;0<=E;E--){if(0!==f){for(m=_[E][E+1]*f,o=c;o<b;o++)A[o][E]=_[E][o]/m;for(o=c;o<b;o++){for(g=0,h=c;h<b;h++)g+=_[E][h]*A[h][o];for(h=c;h<b;h++)A[h][o]=A[h][o]+g*A[h][E]}}for(o=c;o<b;o++)A[E][o]=0,A[o][E]=0;A[E][E]=1,f=S[E],c=E}if(t){if("f"===t)for(E=b;E<w;E++){for(o=b;o<w;o++)_[E][o]=0;_[E][E]=1}for(E=b-1;0<=E;E--){for(c=E+1,f=T[E],o=c;o<M;o++)_[E][o]=0;if(0!==f){for(m=_[E][E]*f,o=c;o<M;o++){for(g=0,h=c;h<w;h++)g+=_[h][E]*_[h][o];for(p=g/m,h=E;h<w;h++)_[h][o]=_[h][o]+p*_[h][E]}for(o=E;o<w;o++)_[o][E]=_[o][E]/f}else for(o=E;o<w;o++)_[o][E]=0;_[E][E]=_[E][E]+1}}for(r*=v,h=b-1;0<=h;h--)for(var P=0;P<50;P++){for(C=!1,c=h;0<=c;c--){if(Math.abs(S[c])<=r){C=!0;break}if(Math.abs(T[c-1])<=r)break}if(!C){for(u=0,d=c-(g=1),E=c;E<h+1&&(p=g*S[E],S[E]=u*S[E],!(Math.abs(p)<=r));E++)if(f=T[E],T[E]=Math.sqrt(p*p+f*f),u=f/(m=T[E]),g=-p/m,t)for(o=0;o<w;o++)y=_[o][d],x=_[o][E],_[o][d]=y*u+x*g,_[o][E]=-y*g+x*u}if(x=T[h],c===h){if(x<0&&(T[h]=-x,i))for(o=0;o<b;o++)A[o][h]=-A[o][h];break}
1for(v=T[c],f=Math.sqrt((p=(((y=T[h-1])-x)*(y+x)+((f=S[h-1])-(m=S[h]))*(f+m))/(2*m*y))*p+1),p=((v-x)*(v+x)+m*(y/(p<0?p-f:p+f)-m))/v,E=c+(g=u=1);E<h+1;E++){if(f=S[E],y=T[E],m=g*f,f*=u,x=Math.sqrt(p*p+m*m),p=v*(u=p/(S[E-1]=x))+f*(g=m/x),f=-v*g+f*u,m=y*g,y*=u,i)for(o=0;o<b;o++)v=A[o][E-1],x=A[o][E],A[o][E-1]=v*u+x*g,A[o][E]=-v*g+x*u;if(x=Math.sqrt(p*p+m*m),p=(u=p/(T[E-1]=x))*f+(g=m/x)*y,v=-g*f+u*y,t)for(o=0;o<w;o++)y=_[o][E-1],x=_[o][E],_[o][E-1]=y*u+x*g,_[o][E]=-y*g+x*u}S[c]=0,S[h]=p,T[h]=v}for(E=0;E<b;E++)T[E]<r&&(T[E]=0);return{u:_,q:T,v:A}},e.VERSION="1.1.1",Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof e&&"u">typeof t?r(e):"function"==typeof define&&define.amd?define(["exports"],r):r((i="u">typeof globalThis?globalThis:i||self).SVDJS={})}),tT=tS((e,t)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)},t.exports=e.default}),tP=tS((e,t)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()},t.exports=e.default}),tD=tS((e,t)=>{function i(e,t,r,a){this.message=e,this.expected=t,this.found=r,this.location=a,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,i)}!function(e,t){function i(){this.constructor=e}i.prototype=t.prototype,e.prototype=new i}(i,Error),i.buildMessage=function(e,t){var i={literal:function(e){return'"'+a(e.text)+'"'},class:function(e){var t,i="";for(t=0;t<e.parts.length;t++)i+=e.parts[t]instanceof Array?o(e.parts[t][0])+"-"+o(e.parts[t][1]):o(e.parts[t]);return"["+(e.inverted?"^":"")+i+"]"},any:function(e){return"any character"},end:function(e){return"end of input"},other:function(e){return e.description}};function r(e){return e.charCodeAt(0).toString(16).toUpperCase()}function a(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(e){return"\\x0"+r(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return"\\x"+r(e)})}function o(e){return e.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(e){return"\\x0"+r(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return"\\x"+r(e)})}return"Expected "+function(e){var t,r,a,o=Array(e.length);for(r=0;r<e.length;r++)o[r]=i[(t=e[r]).type](t);if(o.sort(),o.length>0){for(r=1,a=1;r<o.length;r++)o[r-1]!==o[r]&&(o[a]=o[r],a++);o.length=a}switch(o.length){case 1:return o[0];case 2:return o[0]+" or "+o[1];default:return o.slice(0,-1).join(", ")+", or "+o[o.length-1]}}(e)+" but "+(t?'"'+a(t)+'"':"end of input")+" found."},t.exports={SyntaxError:i,parse:function(e,t){t=void 0!==t?t:{};var r,a,o,h,c,d,u,p,f={},m={svg_path:eh},g=eh,v=function(e){if(!e)return[];for(var t=[],i=0;i<e.length;i++)t=t.concat.apply(t,e[i]);var r=t[0];return r&&"m"==r.code&&(delete r.relative,r.code="M"),t},y=function(e,t){return function(e,t){if(!t)return[e];for(var i=[e],r=0,a=t.length;r<a;r++)i[r+1]=t[r][1];return i}(e,t)},x=/^[Mm]/,b=en(["M","m"],!1,!1),w=function(e,t,i){var r=eO(e,[t]);return i&&(r=r.concat(eO("M"==e?"L":"l",i[1]))),r},S=/^[Zz]/,_=en(["Z","z"],!1,!1),A=/^[Ll]/,M=en(["L","l"],!1,!1),E=function(e,t){return eO(e,t)},C=/^[Hh]/,T=en(["H","h"],!1,!1),P=/^[Vv]/,D=en(["V","v"],!1,!1),O=/^[Cc]/,I=en(["C","c"],!1,!1),R=/^[Ss]/,L=en(["S","s"],!1,!1),B=/^[Qq]/,z=en(["Q","q"],!1,!1),F=/^[Tt]/,N=en(["T","t"],!1,!1),U=/^[Aa]/,k=en(["A","a"],!1,!1),V=/^[01]/,j=en(["0","1"],!1,!1),G=function(){return""},H=ea(",",!1),W=function(e){return e.join("")},q=ea(".",!1),X=/^[eE]/,Y=en(["e","E"],!1,!1),Q=/^[+\-]/,Z=en(["+","-"],!1,!1),K=/^[0-9]/,J=en([["0","9"]],!1,!1),$=/^[ \t\n\r]/,ee=en([" ","	",`
2`,"\r"],!1,!1),et=0,ei=[{line:1,column:1}],er=0,es=[];if("startRule"in t){if(!(t.startRule in m))throw Error("Can't start parsing from rule \""+t.startRule+'".');g=m[t.startRule]}function ea(e,t){return{type:"literal",text:e,ignoreCase:t}}function en(e,t,i){return{type:"class",parts:e,inverted:t,ignoreCase:i}}function eo(t){var i,r=ei[t];if(r)return r;for(i=t-1;!ei[i];)i--;for(r={line:(r=ei[i]).line,column:r.column};i<t;)10===e.charCodeAt(i)?(r.line++,r.column=1):r.column++,i++;return ei[t]=r,r}function el(e){et<er||(et>er&&(er=et,es=[]),es.push(e))}function eh(){var e,t,i,r,a;for(e=et,t=[],i=eT();i!==f;)t.push(i),i=eT();if(t!==f){if((i=function(){var e,t,i,r,a,o;if(e=et,(t=ec())!==f){for(i=[],r=et,a=[],o=eT();o!==f;)a.push(o),o=eT();for(a!==f&&(o=ec())!==f?r=a=[a,o]:(et=r,r=f);r!==f;){for(i.push(r),r=et,a=[],o=eT();o!==f;)a.push(o),o=eT();a!==f&&(o=ec())!==f?r=a=[a,o]:(et=r,r=f)}i!==f?e=t=y(t,i):(et=e,e=f)}else et=e,e=f;return e}())===f&&(i=null),i!==f){for(r=[],a=eT();a!==f;)r.push(a),a=eT();r!==f?e=t=v(i):(et=e,e=f)}else et=e,e=f}else et=e,e=f;return e}function ec(){var t,i,r,a,o,h;
2if(t=et,(i=function(){var t,i,r,a,o,h,c;if(t=et,x.test(e.charAt(et))?(i=e.charAt(et),et++):(i=f,el(b)),i!==f){for(r=[],a=eT();a!==f;)r.push(a),a=eT();r!==f&&(a=ey())!==f?(o=et,(h=eS())===f&&(h=null),h!==f&&(c=eu())!==f?o=h=[h,c]:(et=o,o=f),o===f&&(o=null),o!==f?t=i=w(i,a,o):(et=t,t=f)):(et=t,t=f)}else et=t,t=f;return t}())!==f){for(r=[],a=et,o=[],h=eT();h!==f;)o.push(h),h=eT();for(o!==f&&(h=ed())!==f?a=o=[o,h]:(et=a,a=f);a!==f;){for(r.push(a),a=et,o=[],h=eT();h!==f;)o.push(h),h=eT();o!==f&&(h=ed())!==f?a=o=[o,h]:(et=a,a=f)}r!==f?t=i=y(i,r):(et=t,t=f)}else et=t,t=f;return t}function ed(){var t,i;return S.test(e.charAt(et))?(i=e.charAt(et),et++):(i=f,el(_)),i!==f&&(i=eO("Z")),(t=i)===f&&(t=function(){var t,i,r,a;if(t=et,A.test(e.charAt(et))?(i=e.charAt(et),et++):(i=f,el(M)),i!==f){for(r=[],a=eT();a!==f;)r.push(a),a=eT();r!==f&&(a=eu())!==f?t=i=E(i,a):(et=t,t=f)}else et=t,t=f;return t}())===f&&(t=function(){var t,i,r,a;if(t=et,C.test(e.charAt(et))?(i=e.charAt(et),et++):(i=f,el(T)),i!==f){for(r=[],a=eT();a!==f;)r.push(a),a=eT();r!==f&&(a=ep())!==f?t=i=eO(i,a.map(function(e){return{x:e}})):(et=t,t=f)}else et=t,t=f;return t}())===f&&(t=function(){var t,i,r,a;if(t=et,P.test(e.charAt(et))?(i=e.charAt(et),et++):(i=f,el(D)),i!==f){for(r=[],a=eT();a!==f;)r.push(a),a=eT();r!==f&&(a=ep())!==f?t=i=eO(i,a.map(function(e){return{y:e}})):(et=t,t=f)}else et=t,t=f;return t}())===f&&(t=function(){var t,i,r,a;if(t=et,O.test(e.charAt(et))?(i=e.charAt(et),et++):(i=f,el(I)),i!==f){for(r=[],a=eT();a!==f;)r.push(a),a=eT();r!==f&&(a=function(){var e,t,i,r,a,o;if(e=et,(t=ef())!==f){for(i=[],r=et,(a=eS())===f&&(a=null),a!==f&&(o=ef())!==f?r=a=[a,o]:(et=r,r=f);r!==f;)i.push(r),r=et,(a=eS())===f&&(a=null),a!==f&&(o=ef())!==f?r=a=[a,o]:(et=r,r=f);i!==f?e=t=y(t,i):(et=e,e=f)}else et=e,e=f;return e}())!==f?t=i=E(i,a):(et=t,t=f)}else et=t,t=f;return t}())===f&&(t=function(){var t,i,r,a;if(t=et,R.test(e.charAt(et))?(i=e.charAt(et),et++):(i=f,el(L)),i!==f){for(r=[],a=eT();a!==f;)r.push(a),a=eT();r!==f&&(a=function(){var e,t,i,r,a,o;if(e=et,(t=em())!==f){for(i=[],r=et,(a=eS())===f&&(a=null),a!==f&&(o=em())!==f?r=a=[a,o]:(et=r,r=f);r!==f;)i.push(r),r=et,(a=eS())===f&&(a=null),a!==f&&(o=em())!==f?r=a=[a,o]:(et=r,r=f);i!==f?e=t=y(t,i):(et=e,e=f)}else et=e,e=f;return e}())!==f?t=i=E(i,a):(et=t,t=f)}else et=t,t=f;return t}())===f&&(t=function(){var t,i,r,a;if(t=et,B.test(e.charAt(et))?(i=e.charAt(et),et++):(i=f,el(z)),i!==f){for(r=[],a=eT();a!==f;)r.push(a),a=eT();r!==f&&(a=function(){var e,t,i,r,a,o;if(e=et,(t=eg())!==f){for(i=[],r=et,(a=eS())===f&&(a=null),a!==f&&(o=eg())!==f?r=a=[a,o]:(et=r,r=f);r!==f;)i.push(r),r=et,(a=eS())===f&&(a=null),a!==f&&(o=eg())!==f?r=a=[a,o]:(et=r,r=f);i!==f?e=t=y(t,i):(et=e,e=f)}else et=e,e=f;return e}())!==f?t=i=E(i,a):(et=t,t=f)}else et=t,t=f;return t}())===f&&(t=function(){var t,i,r,a;if(t=et,F.test(e.charAt(et))?(i=e.charAt(et),et++):(i=f,el(N)),i!==f){for(r=[],a=eT();a!==f;)r.push(a),a=eT();r!==f&&(a=function(){var e,t,i,r,a,o;if(e=et,(t=ey())!==f){for(i=[],r=et,(a=eS())===f&&(a=null),a!==f&&(o=ey())!==f?r=a=[a,o]:(et=r,r=f);r!==f;)i.push(r),r=et,(a=eS())===f&&(a=null),a!==f&&(o=ey())!==f?r=a=[a,o]:(et=r,r=f);i!==f?e=t=y(t,i):(et=e,e=f)}else et=e,e=f;return e}())!==f?t=i=E(i,a):(et=t,t=f)}else et=t,t=f;return t}())===f&&(t=function(){var t,i,r,a;if(t=et,U.test(e.charAt(et))?(i=e.charAt(et),et++):(i=f,el(k)),i!==f){for(r=[],a=eT();a!==f;)r.push(a),a=eT();r!==f&&(a=function(){var e,t,i,r,a,o;if(e=et,(t=ev())!==f){for(i=[],r=et,(a=eS())===f&&(a=null),a!==f&&(o=ev())!==f?r=a=[a,o]:(et=r,r=f);r!==f;)i.push(r),r=et,(a=eS())===f&&(a=null),a!==f&&(o=ev())!==f?r=a=[a,o]:(et=r,r=f);i!==f?e=t=y(t,i):(et=e,e=f)}else et=e,e=f;return e}())!==f?t=i=E(i,a):(et=t,t=f)}else et=t,t=f;return t}()),t}function eu(){var e,t,i,r,a,o;if(e=et,(t=ey())!==f){for(i=[],r=et,(a=eS())===f&&(a=null),a!==f&&(o=ey())!==f?r=a=[a,o]:(et=r,r=f);r!==f;)i.push(r),r=et,(a=eS())===f&&(a=null),a!==f&&(o=ey())!==f?r=a=[a,o]:(et=r,r=f);i!==f?e=t=y(t,i):(et=e,e=f)}else et=e,e=f;return e}function ep(){var e,t,i,r,a,o;if(e=et,(t=eb())!==f){for(i=[],r=et,(a=eS())===f&&(a=null),a!==f&&(o=eb()
2)!==f?r=a=[a,o]:(et=r,r=f);r!==f;)i.push(r),r=et,(a=eS())===f&&(a=null),a!==f&&(o=eb())!==f?r=a=[a,o]:(et=r,r=f);i!==f?e=t=y(t,i):(et=e,e=f)}else et=e,e=f;return e}function ef(){var e,t,i,r,a,o,h,c,d;return e=et,(t=ey())!==f?((i=eS())===f&&(i=null),i!==f&&(r=ey())!==f?((a=eS())===f&&(a=null),a!==f&&(o=ey())!==f?(h=t,c=r,d=o,e=t={x1:h.x,y1:h.y,x2:c.x,y2:c.y,x:d.x,y:d.y}):(et=e,e=f)):(et=e,e=f)):(et=e,e=f),e}function em(){var e,t,i,r,a,o;return e=et,(t=ey())!==f?((i=eS())===f&&(i=null),i!==f&&(r=ey())!==f?(a=t,o=r,e=t={x2:a.x,y2:a.y,x:o.x,y:o.y}):(et=e,e=f)):(et=e,e=f),e}function eg(){var e,t,i,r,a,o;return e=et,(t=ey())!==f?((i=eS())===f&&(i=null),i!==f&&(r=ey())!==f?(a=t,o=r,e=t={x1:a.x,y1:a.y,x:o.x,y:o.y}):(et=e,e=f)):(et=e,e=f),e}function ev(){var e,t,i,r,a,o,h,c,d,u,p,m;return e=et,(t=ex())!==f?((i=eS())===f&&(i=null),i!==f&&(r=ex())!==f?((a=eS())===f&&(a=null),a!==f&&(o=eb())!==f&&eS()!==f&&(h=ew())!==f?((c=eS())===f&&(c=null),c!==f&&(d=ew())!==f?((u=eS())===f&&(u=null),u!==f&&(p=ey())!==f?e=t={rx:t,ry:r,xAxisRotation:o,largeArc:h,sweep:d,x:(m=p).x,y:m.y}:(et=e,e=f)):(et=e,e=f)):(et=e,e=f)):(et=e,e=f)):(et=e,e=f),e}function ey(){var e,t,i,r;return e=et,(t=eb())!==f?((i=eS())===f&&(i=null),i!==f&&(r=eb())!==f?e=t={x:t,y:r}:(et=e,e=f)):(et=e,e=f),e}function ex(){var e;return(e=eA())===f&&(e=eC()),e!==f&&(e*=1),e}function eb(){var e,t,i;return e=et,(t=eE())===f&&(t=null),t!==f&&(i=eA())!==f?e=t=[t,i]:(et=e,e=f),e===f&&(e=et,(t=eE())===f&&(t=null),t!==f&&(i=eC())!==f?e=t=[t,i]:(et=e,e=f)),e!==f&&(e=1*e.join("")),e}function ew(){var t;return V.test(e.charAt(et))?(t=e.charAt(et),et++):(t=f,el(j)),t!==f&&(t="1"==t),t}function eS(){var e,t,i,r,a;if(e=et,t=[],(i=eT())!==f)for(;i!==f;)t.push(i),i=eT();else t=f;if(t!==f){if((i=e_())===f&&(i=null),i!==f){for(r=[],a=eT();a!==f;)r.push(a),a=eT();r!==f?e=t=[t,i,r]:(et=e,e=f)}else et=e,e=f}else et=e,e=f;if(e===f){if(e=et,t=et,(i=e_())!==f){for(r=[],a=eT();a!==f;)r.push(a),a=eT();r!==f?t=i=[i,r]:(et=t,t=f)}else et=t,t=f;t!==f&&(t=G()),e=t}return e}function e_(){var t;return 44===e.charCodeAt(et)?(t=",",et++):(t=f,el(H)),t}function eA(){var t,i,r,a,o,h,c;return t=et,(a=et,(o=eC())===f&&(o=null),o!==f?(46===e.charCodeAt(et)?(h=".",et++):(h=f,el(q)),h!==f&&(c=eC())!==f?a=o=[o,h,c]:(et=a,a=f)):(et=a,a=f),a===f&&(a=et,(o=eC())!==f?(46===e.charCodeAt(et)?(h=".",et++):(h=f,el(q)),h!==f?a=o=[o,h]:(et=a,a=f)):(et=a,a=f)),a!==f&&(a=W(a)),(i=a)!==f)?((r=eM())===f&&(r=null),r!==f?t=i=[i,r]:(et=t,t=f)):(et=t,t=f),t===f&&(t=et,(i=eC())!==f&&(r=eM())!==f?t=i=[i,r]:(et=t,t=f)),t!==f&&(t=W(t)),t}function eM(){var t,i,r,a;return t=et,X.test(e.charAt(et))?(i=e.charAt(et),et++):(i=f,el(Y)),i!==f?((r=eE())===f&&(r=null),r!==f&&(a=eC())!==f?t=i=[i,r,a]:(et=t,t=f)):(et=t,t=f),t!==f&&(t=W(t)),t}function eE(){var t;return Q.test(e.charAt(et))?(t=e.charAt(et),et++):(t=f,el(Z)),t}function eC(){var t,i;if(t=[],K.test(e.charAt(et))?(i=e.charAt(et),et++):(i=f,el(J)),i!==f)for(;i!==f;)t.push(i),K.test(e.charAt(et))?(i=e.charAt(et),et++):(i=f,el(J));else t=f;return t!==f&&(t=t.join("")),t}function eT(){var t;return $.test(e.charAt(et))?(t=e.charAt(et),et++):(t=f,el(ee)),t!==f&&(t=G()),t}var eP={m:"moveto",l:"lineto",h:"horizontal lineto",v:"vertical lineto",c:"curveto",s:"smooth curveto",q:"quadratic curveto",t:"smooth quadratic curveto",a:"elliptical arc",z:"closepath"};for(var eD in eP)eP[eD.toUpperCase()]=eP[eD];function eO(e,t){t||(t=[{}]);for(var i=t.length;i--;){var r={code:e,command:eP[e]};for(var a in e==e.toLowerCase()&&(r.relative=!0),t[i])r[a]=t[i][a];t[i]=r}return t}if((p=g())!==f&&et===e.length)return p;throw p!==f&&et<e.length&&el({type:"end"}),c=es,d=er<e.length?e.charAt(er):null,r=er,a=er<e.length?er+1:er,o=eo(r),h=eo(a),u={start:{offset:r,line:o.line,column:o.column},end:{offset:a,line:h.line,column:h.column}},new i(i.buildMessage(c,d),c,d,u)}}}),tO=tS((e,t)=>{var i=tD().parse;i.parseSVG=i,i.makeAbsolute=function(e){var t,i={x:0,y:0},r={x:"x0",y:"y0",x1:"x0",y1:"y0",x2:"x0",y2:"y0"};return e.forEach(function(e){for(var a in"moveto"===e.command&&(t=e),e.x0=i.x,e.y0=i.y,r)a in e&&(e[a]+=e.relative?e[r[a]]:0);"x"in e||(e.x=i.x),"y"in e||(e.y=i.y),e.relative=!1,e.code=e.code.toUpperCase(),"closepath"==e.command&&(e.x=t.x,e.y=t.y),i=e}),e},t.exports=i}),tI=tS((e,t)=>{t.exports=function(e,t){for(var i=e.split("."),r=t.split("."),a=0;a<3;a++){var o=Number(i[a]),h=Number(r[a]);if(o>h)return 1;if(h>o)return -1;if(!isNaN(o)&&isNaN(h))return 1;if(isNaN(o)&&!isNaN(h))return -1}return 0}}),tR={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},tL="srgb",tB="srgb-linear",tz="300 es",tF=class{addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let i=this._listeners;void 0===i[e]&&(i[e]=[]),-1===i[e].indexOf(t)&&i[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let i=this._listeners;return void 0!==i[e]&&-1!==i[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let i=this._listeners[e];if(void 0!==i){let e=i.indexOf(t);-1!==e&&i.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let i=t.slice(0);for(let t=0,r=i.length;t<r;t++)i[t].call(this,e);e.target=null}}},tN=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","5
25","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"],tU=1234567,tk=Math.PI/180,tV=180/Math.PI;function tj(){let e=4294967295*Math.random()|0,t=4294967295*Math.random()|0,i=4294967295*Math.random()|0,r=4294967295*Math.random()|0;return(tN[255&e]+tN[e>>8&255]+tN[e>>16&255]+tN[e>>24&255]+"-"+tN[255&t]+tN[t>>8&255]+"-"+tN[t>>16&15|64]+tN[t>>24&255]+"-"+tN[63&i|128]+tN[i>>8&255]+"-"+tN[i>>16&255]+tN[i>>24&255]+tN[255&r]+tN[r>>8&255]+tN[r>>16&255]+tN[r>>24&255]).toLowerCase()}function tG(e,t,i){return Math.max(t,Math.min(i,e))}function tH(e,t){return(e%t+t)%t}function tW(e,t,i){return(1-i)*e+i*t}function tq(e){return(e&e-1)==0&&0!==e}function tX(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))}function tY(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))}function tQ(e,t){switch(t.constructor){case Float32Array:return e;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw Error("Invalid component type.")}}function tZ(e,t){switch(t.constructor){case Float32Array:return e;case Uint16Array:return Math.round(65535*e);case Uint8Array:return Math.round(255*e);case Int16Array:return Math.round(32767*e);case Int8Array:return Math.round(127*e);default:throw Error("Invalid component type.")}}var tK=Object.freeze({__proto__:null,DEG2RAD:tk,RAD2DEG:tV,ceilPowerOfTwo:tX,clamp:tG,damp:function(e,t,i,r){return tW(e,t,1-Math.exp(-i*r))},degToRad:function(e){return e*tk},denormalize:tQ,euclideanModulo:tH,floorPowerOfTwo:tY,generateUUID:tj,inverseLerp:function(e,t,i){return e!==t?(i-e)/(t-e):0},isPowerOfTwo:tq,lerp:tW,mapLinear:function(e,t,i,r,a){return r+(e-t)*(a-r)/(i-t)},normalize:tZ,pingpong:function(e,t=1){return t-Math.abs(tH(e,2*t)-t)},radToDeg:function(e){return e*tV},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},seededRandom:function(e){void 0!==e&&(tU=e);let t=tU+=1831565813;return t=Math.imul(t^t>>>15,1|t),(((t^=t+Math.imul(t^t>>>7,61|t))^t>>>14)>>>0)/4294967296},setQuaternionFromProperEuler:function(e,t,i,r,a){let o=Math.cos,h=Math.sin,c=o(i/2),d=h(i/2),u=o((t+r)/2),p=h((t+r)/2),f=o((t-r)/2),m=h((t-r)/2),g=o((r-t)/2),v=h((r-t)/2);switch(a){case"XYX":e.set(c*p,d*f,d*m,c*u);break;case"YZY":e.set(d*m,c*p,d*f,c*u);break;case"ZXZ":e.set(d*f,d*m,c*p,c*u);break;case"XZX":e.set(c*p,d*v,d*g,c*u);break;case"YXY":e.set(d*g,c*p,d*v,c*u);break;case"ZYZ":e.set(d*v,d*g,c*p,c*u);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+a)}},smootherstep:function(e,t,i){return e<=t?0:e>=i?1:(e=(e-t)/(i-t))*e*e*(e*(6*e-15)+10)},smoothstep:function(e,t,i){return e<=t?0:e>=i?1:(e=(e-t)/(i-t))*e*(3-2*e)}}),tJ=class{constructor(e=0,t=0){tJ.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}
vendor: 5,859 bytes, line 2
2sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){let t=this.x,i=this.y,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6],this.y=r[1]*t+r[4]*i+r[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let i=Math.cos(t),r=Math.sin(t),a=this.x-e.x,o=this.y-e.y;return this.x=a*i-o*r+e.x,this.y=a*r+o*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},t$=class{constructor(){t$.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(e,t,i,r,a,o,h,c,d){let u=this.elements;return u[0]=e,u[1]=r,u[2]=h,u[3]=t,u[4]=a,u[5]=c,u[6]=i,u[7]=o,u[8]=d,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,r=t.elements,a=this.elements,o=i[0],h=i[3],c=i[6],d=i[1],u=i[4],p=i[7],f=i[2],m=i[5],g=i[8],v=r[0],y=r[3],x=r[6],b=r[1],w=r[4],S=r[7],_=r[2],A=r[5],M=r[8];return a[0]=o*v+h*b+c*_,a[3]=o*y+h*w+c*A,a[6]=o*x+h*S+c*M,a[1]=d*v+u*b+p*_,a[4]=d*y+u*w+p*A,a[7]=d*x+u*S+p*M,a[2]=f*v+m*b+g*_,a[5]=f*y+m*w+g*A,a[8]=f*x+m*S+g*M,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],i=e[1],r=e[2],a=e[3],o=e[4],h=e[5],c=e[6],d=e[7],u=e[8];return t*o*u-t*h*d-i*a*u+i*h*c+r*a*d-r*o*c}invert(){let e=this.elements,t=e[0],i=e[1],r=e[2],a=e[3],o=e[4],h=e[5],c=e[6],d=e[7],u=e[8],p=u*o-h*d,f=h*c-u*a,m=d*a-o*c,g=t*p+i*f+r*m;if(0===g)return this.set(0,0,0,0,0,0,0,0,0);let v=1/g;return e[0]=p*v,e[1]=(r*d-u*i)*v,e[2]=(h*i-r*o)*v,e[3]=f*v,e[4]=(u*t-r*c)*v,e[5]=(r*a-h*t)*v,e[6]=m*v,e[7]=(i*c-d*t)*v,e[8]=(o*t-i*a)*v,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,r,a,o,h){let c=Math.cos(a),d=Math.sin(a);return this.set(i*c,i*d,-i*(c*o+d*h)+o+e,-r*d,r*c,-r*(-d*o+c*h)+h+t,0,0,1),this}scale(e,t){return this.premultiply(t0.makeScale(e,t)),this}rotate(e){return this.premultiply(t0.makeRotation(-e)),this}translate(e,t){return this.premultiply(t0.makeTranslation(e,t)),this}makeTranslation(e,t){return this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,i=e.elements;for(let e=0;e<9;e++)if(t[e]!==i[e])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return new this.constructor().fromArray(this.elements)}},t0=new t$;function t1(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}var t2={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function t3(e,t){return new t2[e](t)}function t4(e){return document.createElementNS("http://www.w3.org/1999/xhtml",e)}function t5(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}
2function t6(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}var t8={[tL]:{[tB]:t5},[tB]:{[tL]:t6}},t9={legacyMode:!0,get workingColorSpace(){return tB},set workingColorSpace(n){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(e,t,i){if(this.legacyMode||t===i||!t||!i)return e;if(t8[t]&&void 0!==t8[t][i]){let r=t8[t][i];return e.r=r(e.r),e.g=r(e.g),e.b=r(e.b),e}throw Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(e,t){return this.convert(e,this.workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this.workingColorSpace)}},t7={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},ie={r:0,g:0,b:0},it={h:0,s:0,l:0},ii={h:0,s:0,l:0};function ir(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+(t-e)*6*i:i<.5?t:i<2/3?e+(t-e)*6*(2/3-i):e}function is(e,t){return t.r=e.r,t.g=e.g,t.b=e.b,t}var ia=class{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,void 0===t&&void 0===i?this.set(e):this.setRGB(e,t,i)}set(e){return e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=tL){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,t9.toWorkingColorSpace(this,t),this}setRGB(e,t,i,r=t9.workingColorSpace){return this.r=e,this.g=t,this.b=i,t9.toWorkingColorSpace(this,r),this}setHSL(e,t,i,r=t9.workingColorSpace){if(e=tH(e,1),t=tG(t,0,1),i=tG(i,0,1),0===t)this.r=this.g=this.b=i;else{let r=i<=.5?i*(1+t):i+t-i*t,a=2*i-r;this.r=ir(a,r,e+1/3),this.g=ir(a,r,e),this.b=ir(a,r,e-1/3)}return t9.toWorkingColorSpace(this,r),this}setStyle(e,t=tL){let i;function r(t){void 0!==t&&1>parseFloat(t)&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}if(i=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(e)){let e,a=i[1],o=i[2];switch(a){case"rgb":case"rgba":if(e=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.r=Math.min(255,parseInt(e[1],10))/255,this.g=Math.min(255,parseInt(e[2],10))/255,this.b=Math.min(255,parseInt(e[3],10))/255,t9.toWorkingColorSpace(this,t),r(e[4]),this;if(e=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.r=Math.min(100,parseInt(e[1],10))/100,this.g=Math.min(100,parseInt(e[2],10))/100,this.b=Math.min(100,parseInt(e[3],10))/100,t9.toWorkingColorSpace(this,t),r(e[4]),this;break;case"hsl":case"hsla":if(e=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o)){let i=parseFloat(e[1])/360,a=parseFloat(e[2])/100,o=parseFloat(e[3])/100;return r(e[4]),this.setHSL(i,a,o,t)}}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){let e=i[1],r=e.length;if(3===r)return this.r=parseInt(e.charAt(0)+e.charAt(0),16)/255,this.g=parseInt(e.charAt(1)+e.charAt(1),16)/255,this.b=parseInt(e.charAt(2)+e.charAt(2),16)/255,t9.toWorkingColorSpace(this,t),this;if(6===r)return this.r=parseInt(e.charAt(0)+e.charAt(1),16)/255,this.g=parseInt(e.charAt(2)+e.charAt(3),16)/255,this.b=parseInt(e.charAt(4)+e.charAt(5),16)/255,t9.toWorkingColorSpace(this,t),this}return e&&e.length>0?this.setColorName(e,t):this}setColorName(e,t=tL){let i=t7[e.toLowerCase()];return void 0!==i?this.setHex(i,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=t5(e.r),this.g=t5(e.g),this.b=t5(e.b),this}copyLinearToSRGB(e){return this.r=t6(e.r),this.g=t6(e.g),this.b=t6(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=tL){return t9.fromWorkingColorSpace(is(this,ie),e),tG(255*ie.r,0,255)<<16^tG(255*ie.g,0,255)<<8^tG(255*ie.b,0,255)<<0}getHexString(e=tL){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=t9.workingColorSpace){t9.fromWorkingColorSpace(is(this,ie),t);let i=ie.r,r=ie.g,a=ie.b,o=Math.max(i,r,a),h=Math.min(i,r,a),c,d,u=(h+o)/2;if(h===o)c=0,d=0;else{let e=o-h;switch(d=u<=.5?e/(o+h):e/(2-o-h),o){case i:c=(r-a)/e+(r<a?6:0);break;case r:c=(a-i)/e+2;break;case a:c=(i-r)/e+4}c/=6}return e.h=c,e.s=d,e.l=u,e}getRGB(e,t=t9.workingColorSpace){return t9.fromWorkingColorSpace(is(this,ie),t),e.r=ie.r,e.g=ie.g,e.b=ie.b,e}getStyle(e=tL){return t9.fromWorkingColorSpace(is(this,ie),e),e!==tL?`color(${e} ${ie.r} ${ie.g} ${ie.b})`:`rgb(${255*ie.r|0},${255*ie.g|0},${255*ie.b|0})`}offsetHSL(e,t,i){return this.getHSL(it),it.h+=e,it.s+=t,it.l+=i,this.setHSL(it.h,it.s,it.l),this}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,i){return this.r=e.r+(t.r-e.r)*i,this.g=e.g+(t.g-e.g)*i,this.b=e.b+(t.b-e.b)*i,this}lerpHSL(e,t){this.getHSL(it),e.getHSL(ii);let i=tW(it.h,ii.h,t),r=tW(it.s,ii.s,t),a=tW(it.l,ii.l,t);return this.setHSL(i,r,a),this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}};ia.NAMES=t7;var io,il=class{static getDataURL(e){let t;if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;if(e instanceof HTMLCanvasElement)t=e;else{void 0===io&&(io=t4("canvas")),io.width=e.width,io.height=e.height;let i=io.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),t=io}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if("u">typeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap){let t=t4("canvas");t.width=e.width,t.height=e.height;let i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);let r=i.getImageData(0,0,e.width,e.height),a=r.data;for(let e=0;e<a.length;e++)a[e]=255*t5(a[e]/255);return i.putImageData(r,0,0),t}if(!e.data)return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),e;{let t=e.data.slice(0);for(let e=0;e<t.length;e++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[e]=Math.floor(255*t5(t[e]/255
2)):t[e]=t5(t[e]);return{data:t,width:e.width,height:e.height}}}},ih=class{constructor(e=null){this.isSource=!0,this.uuid=tj(),this.data=e,this.version=0}set needsUpdate(e){!0===e&&this.version++}toJSON(e){let t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.images[this.uuid])return e.images[this.uuid];let i={uuid:this.uuid,url:""},r=this.data;if(null!==r){let e;if(Array.isArray(r)){e=[];for(let t=0,i=r.length;t<i;t++)r[t].isDataTexture?e.push(ic(r[t].image)):e.push(ic(r[t]))}else e=ic(r);i.url=e}return t||(e.images[this.uuid]=i),i}};function ic(e){return"u">typeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap?il.getDataURL(e):e.data?{data:Array.from(e.data),width:e.width,height:e.height,type:e.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}var id=0,iu=class extends tF{constructor(e=iu.DEFAULT_IMAGE,t=iu.DEFAULT_MAPPING,i=1001,r=1001,a=1006,o=1008,h=1023,c=1009,d=iu.DEFAULT_ANISOTROPY,u=3e3){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:id++}),this.uuid=tj(),this.name="",this.source=new ih(e),this.mipmaps=[],this.mapping=t,this.wrapS=i,this.wrapT=r,this.magFilter=a,this.minFilter=o,this.anisotropy=d,this.format=h,this.internalFormat=null,this.type=c,this.offset=new tJ(0,0),this.repeat=new tJ(1,1),this.center=new tJ(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new t$,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=u,this.userData={},this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1,this.needsPMREMUpdate=!1}get image(){return this.source.data}set image(e){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.encoding=e.encoding,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}toJSON(e){let t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.textures[this.uuid])return e.textures[this.uuid];let i={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(300!==this.mapping)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case 1e3:e.x=e.x-Math.floor(e.x);break;case 1001:e.x=e.x<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case 1e3:e.y=e.y-Math.floor(e.y);break;case 1001:e.y=e.y<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){!0===e&&(this.version++,this.source.needsUpdate=!0)}};iu.DEFAULT_IMAGE=null,iu.DEFAULT_MAPPING=300,iu.DEFAULT_ANISOTROPY=1;var ip=class{constructor(e=0,t=0,i=0,r=1){ip.prototype.isVector4=!0,this.x=e,this.y=t,this.z=i,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}
2sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,i=this.y,r=this.z,a=this.w,o=e.elements;return this.x=o[0]*t+o[4]*i+o[8]*r+o[12]*a,this.y=o[1]*t+o[5]*i+o[9]*r+o[13]*a,this.z=o[2]*t+o[6]*i+o[10]*r+o[14]*a,this.w=o[3]*t+o[7]*i+o[11]*r+o[15]*a,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,r,a,o=e.elements,h=o[0],c=o[4],d=o[8],u=o[1],p=o[5],f=o[9],m=o[2],g=o[6],v=o[10];if(.01>Math.abs(c-u)&&.01>Math.abs(d-m)&&.01>Math.abs(f-g)){if(.1>Math.abs(c+u)&&.1>Math.abs(d+m)&&.1>Math.abs(f+g)&&.1>Math.abs(h+p+v-3))return this.set(1,0,0,0),this;t=Math.PI;let e=(h+1)/2,o=(p+1)/2,y=(v+1)/2,x=(c+u)/4,b=(d+m)/4,w=(f+g)/4;return e>o&&e>y?e<.01?(i=0,r=.707106781,a=.707106781):(r=x/(i=Math.sqrt(e)),a=b/i):o>y?o<.01?(i=.707106781,r=0,a=.707106781):(i=x/(r=Math.sqrt(o)),a=w/r):y<.01?(i=.707106781,r=.707106781,a=0):(i=b/(a=Math.sqrt(y)),r=w/a),this.set(i,r,a,t),this}let y=Math.sqrt((g-f)*(g-f)+(d-m)*(d-m)+(u-c)*(u-c));return .001>Math.abs(y)&&(y=1),this.x=(g-f)/y,this.y=(d-m)/y,this.z=(u-c)/y,this.w=Math.acos((h+p+v-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}},im=class extends tF{constructor(e=1,t=1,i={}
2){super(),this.isWebGLRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new ip(0,0,e,t),this.scissorTest=!1,this.viewport=new ip(0,0,e,t),this.texture=new iu({width:e,height:t,depth:1},i.mapping,i.wrapS,i.wrapT,i.magFilter,i.minFilter,i.format,i.type,i.anisotropy,i.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=void 0!==i.generateMipmaps&&i.generateMipmaps,this.texture.internalFormat=void 0!==i.internalFormat?i.internalFormat:null,this.texture.minFilter=void 0!==i.minFilter?i.minFilter:1006,this.depthBuffer=void 0===i.depthBuffer||i.depthBuffer,this.stencilBuffer=void 0!==i.stencilBuffer&&i.stencilBuffer,this.depthTexture=void 0!==i.depthTexture?i.depthTexture:null,this.samples=void 0!==i.samples?i.samples:0}setSize(e,t,i=1){(this.width!==e||this.height!==t||this.depth!==i)&&(this.width=e,this.height=t,this.depth=i,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=i,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.texture.isRenderTargetTexture=!0;let t=Object.assign({},e.texture.image);return this.texture.source=new ih(t),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,null!==e.depthTexture&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}},ig=class extends iu{constructor(e=null,t=1,i=1,r=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:i,depth:r},this.magFilter=1003,this.minFilter=1003,this.wrapR=1001,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},iv=class extends iu{constructor(e=null,t=1,i=1,r=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:i,depth:r},this.magFilter=1003,this.minFilter=1003,this.wrapR=1001,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},iy=class extends im{constructor(e=1,t=1,i=1,r={}){super(e,t,r),this.isWebGLMultipleRenderTargets=!0;let a=this.texture;this.texture=[];for(let e=0;e<i;e++)this.texture[e]=a.clone(),this.texture[e].isRenderTargetTexture=!0}setSize(e,t,i=1){if(this.width!==e||this.height!==t||this.depth!==i){this.width=e,this.height=t,this.depth=i;for(let r=0,a=this.texture.length;r<a;r++)this.texture[r].image.width=e,this.texture[r].image.height=t,this.texture[r].image.depth=i;this.dispose()}return this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t),this}copy(e){this.dispose(),this.width=e.width,this.height=e.height,this.depth=e.depth,this.viewport.set(0,0,this.width,this.height),this.scissor.set(0,0,this.width,this.height),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,null!==e.depthTexture&&(this.depthTexture=e.depthTexture.clone()),this.texture.length=0;for(let t=0,i=e.texture.length;t<i;t++)this.texture[t]=e.texture[t].clone(),this.texture[t].isRenderTargetTexture=!0;return this}},ix=class{constructor(e=0,t=0,i=0,r=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=i,this._w=r}static slerpFlat(e,t,i,r,a,o,h){let c=i[r+0],d=i[r+1],u=i[r+2],p=i[r+3],f=a[o+0],m=a[o+1],g=a[o+2],v=a[o+3];if(0===h){e[t+0]=c,e[t+1]=d,e[t+2]=u,e[t+3]=p;return}if(1===h){e[t+0]=f,e[t+1]=m,e[t+2]=g,e[t+3]=v;return}if(p!==v||c!==f||d!==m||u!==g){let e=1-h,t=c*f+d*m+u*g+p*v,i=t>=0?1:-1,r=1-t*t;if(r>Number.EPSILON){let a=Math.sqrt(r),o=Math.atan2(a,t*i);e=Math.sin(e*o)/a,h=Math.sin(h*o)/a}let a=h*i;if(c=c*e+f*a,d=d*e+m*a,u=u*e+g*a,p=p*e+v*a,e===1-h){let e=1/Math.sqrt(c*c+d*d+u*u+p*p);c*=e,d*=e,u*=e,p*=e}}e[t]=c,e[t+1]=d,e[t+2]=u,e[t+3]=p}static multiplyQuaternionsFlat(e,t,i,r,a,o){let h=i[r],c=i[r+1],d=i[r+2],u=i[r+3],p=a[o],f=a[o+1],m=a[o+2],g=a[o+3];return e[t]=h*g+u*p+c*m-d*f,e[t+1]=c*g+u*f+d*p-h*m,e[t+2]=d*g+u*m+h*f-c*p,e[t+3]=u*g-h*p-c*f-d*m,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,r){return this._x=e,this._y=t,this._z=i,this._w=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){let i=e._x,r=e._y,a=e._z,o=e._order,h=Math.cos,c=Math.sin,d=h(i/2),u=h(r/2),p=h(a/2),f=c(i/2),m=c(r/2),g=c(a/2);switch(o){case"XYZ":this._x=f*u*p+d*m*g,this._y=d*m*p-f*u*g,this._z=d*u*g+f*m*p,this._w=d*u*p-f*m*g;break;case"YXZ":this._x=f*u*p+d*m*g,this._y=d*m*p-f*u*g,this._z=d*u*g-f*m*p,this._w=d*u*p+f*m*g;break;case"ZXY":this._x=f*u*p-d*m*g,this._y=d*m*p+f*u*g,this._z=d*u*g+f*m*p,this._w=d*u*p-f*m*g;break;case"ZYX":this._x=f*u*p-d*m*g,this._y=d*m*p+f*u*g,this._z=d*u*g-f*m*p,this._w=d*u*p+f*m*g;break;case"YZX":this._x=f*u*p+d*m*g,this._y=d*m*p+f*u*g,this._z=d*u*g-f*m*p,this._w=d*u*p-f*m*g;break;case"XZY":this._x=f*u*p-d*m*g,this._y=d*m*p-f*u*g,this._z=d*u*g+f*m*p,this._w=d*u*p+f*m*g;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return!1!==t&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let i=t/2,r=Math.sin(i);return this._x=e.x*r,this._y=e.y*r,this._z=e.z*r,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){let t=e.elements,i=t[0],r=t[4],a=t[8],o=t[1],h=t[5],c=t[9],d=t[2],u=t[6],p=t[10],f=i+h+p;if(f>0){let e=.5/Math.sqrt(f+1);this._w=.25/e,this._x=(u-c)*e,this._y=(a-d)*e,this._z=(o-r)*e}else if(i>h&&i>p){let e=2*Math.sqrt(1+i-h-p);this._w=(u-c)/e,this._x=.25*e,this._y=(r+o)/e,this._z=(a+d)/e}else if(h>p){let e=2*Math.sqrt(1+h-i-p);this._w=(a-d)/e,this._x=(r+o)/e,this._y=.25*e,this._z=(c+u)/e}else{let e=2*Math.sqrt(1+p-i-h);this._w=(o-r)/e,this._x=(a+d)/e,this._y=(c+u)/e,this._z=.25*e}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return i<Number.EPSILON?(i=0,Math.abs(e.x)>
vendor: 4,509 bytes, line 2
2Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0):(this._x=0,this._y=-e.z,this._z=e.y)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x),this._w=i,this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(tG(this.dot(e),-1,1)))}rotateTowards(e,t){let i=this.angleTo(e);if(0===i)return this;let r=Math.min(1,t/i);return this.slerp(e,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let i=e._x,r=e._y,a=e._z,o=e._w,h=t._x,c=t._y,d=t._z,u=t._w;return this._x=i*u+o*h+r*d-a*c,this._y=r*u+o*c+a*h-i*d,this._z=a*u+o*d+i*c-r*h,this._w=o*u-i*h-r*c-a*d,this._onChangeCallback(),this}slerp(e,t){if(0===t)return this;if(1===t)return this.copy(e);let i=this._x,r=this._y,a=this._z,o=this._w,h=o*e._w+i*e._x+r*e._y+a*e._z;if(h<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,h=-h):this.copy(e),h>=1)return this._w=o,this._x=i,this._y=r,this._z=a,this;let c=1-h*h;if(c<=Number.EPSILON){let e=1-t;return this._w=e*o+t*this._w,this._x=e*i+t*this._x,this._y=e*r+t*this._y,this._z=e*a+t*this._z,this.normalize(),this._onChangeCallback(),this}let d=Math.sqrt(c),u=Math.atan2(d,h),p=Math.sin((1-t)*u)/d,f=Math.sin(t*u)/d;return this._w=o*p+this._w*f,this._x=i*p+this._x*f,this._y=r*p+this._y*f,this._z=a*p+this._z*f,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){let e=Math.random(),t=Math.sqrt(1-e),i=Math.sqrt(e),r=2*Math.PI*Math.random(),a=2*Math.PI*Math.random();return this.set(t*Math.cos(r),i*Math.sin(a),i*Math.cos(a),t*Math.sin(r))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},ib=class{constructor(e=0,t=0,i=0){ib.prototype.isVector3=!0,this.x=e,this.y=t,this.z=i}set(e,t,i){return void 0===i&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(iS.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(iS.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,i=this.y,r=this.z,a=e.elements;return this.x=a[0]*t+a[3]*i+a[6]*r,this.y=a[1]*t+a[4]*i+a[7]*r,this.z=a[2]*t+a[5]*i+a[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,i=this.y,r=this.z,a=e.elements,o=1/(a[3]*t+a[7]*i+a[11]*r+a[15]);
2return this.x=(a[0]*t+a[4]*i+a[8]*r+a[12])*o,this.y=(a[1]*t+a[5]*i+a[9]*r+a[13])*o,this.z=(a[2]*t+a[6]*i+a[10]*r+a[14])*o,this}applyQuaternion(e){let t=this.x,i=this.y,r=this.z,a=e.x,o=e.y,h=e.z,c=e.w,d=c*t+o*r-h*i,u=c*i+h*t-a*r,p=c*r+a*i-o*t,f=-a*t-o*i-h*r;return this.x=d*c+-(f*a)+-(u*h)- -(p*o),this.y=u*c+-(f*o)+-(p*a)- -(d*h),this.z=p*c+-(f*h)+-(d*o)- -(u*a),this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,i=this.y,r=this.z,a=e.elements;return this.x=a[0]*t+a[4]*i+a[8]*r,this.y=a[1]*t+a[5]*i+a[9]*r,this.z=a[2]*t+a[6]*i+a[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let i=e.x,r=e.y,a=e.z,o=t.x,h=t.y,c=t.z;return this.x=r*c-a*h,this.y=a*o-i*c,this.z=i*h-r*o,this}projectOnVector(e){let t=e.lengthSq();if(0===t)return this.set(0,0,0);let i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return iw.copy(this).projectOnVector(e),this.sub(iw)}reflect(e){return this.sub(iw.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());return 0===t?Math.PI/2:Math.acos(tG(this.dot(e)/t,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y,r=this.z-e.z;return t*t+i*i+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){let r=Math.sin(t)*e;return this.x=r*Math.sin(i),this.y=Math.cos(t)*e,this.z=r*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,4*t)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,3*t)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=(Math.random()-.5)*2,t=Math.random()*Math.PI*2,i=Math.sqrt(1-e**2);return this.x=i*Math.cos(t),this.y=i*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},iw=new ib,iS=new ix,i_=class{constructor(e=new ib(1/0,1/0,1/0),t=new ib(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){let t=1/0,i=1/0,r=1/0,a=-1/0,o=-1/0,h=-1/0;for(let c=0,d=e.length;c<d;c+=3){let d=e[c],u=e[c+1],p=e[c+2];d<t&&(t=d),u<i&&(i=u),p<r&&(r=p),d>a&&(a=d),u>o&&(o=u),p>h&&(h=p)}return this.min.set(t,i,r),this.max.set(a,o,h),this}setFromBufferAttribute(e){let t=1/0,i=1/0,r=1/0,a=-1/0,o=-1/0,h=-1/0;for(let c=0,d=e.count;c<d;c++){let d=e.getX(c),u=e.getY(c),p=e.getZ(c);d<t&&(t=d),u<i&&(i=u),p<r&&(r=p),d>a&&(a=d),u>o&&(o=u),p>h&&(h=p)}return this.min.set(t,i,r),this.max.set(a,o,h),this}setFromPoints(e){this.makeEmpty();for(let t=0,i=e.length;t<i;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){let i=iM.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(i),this.max.copy(e).add(i),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);let i=e.geometry;if(void 0!==i){if(t&&null!=i.attributes&&void 0!==i.attributes.position){let t=i.attributes.position;for(let i=0,r=t.count;i<r;i++)iM.fromBufferAttribute(t,i).applyMatrix4(e.matrixWorld),this.expandByPoint(iM)}else null===i.boundingBox&&i.computeBoundingBox(),iE.copy(i.boundingBox),iE.applyMatrix4(e.matrixWorld),this.union(iE)}let r=e.children;for(let e=0,i=r.length;e<i;e++)this.expandByObject(r[e],t);return this}containsPoint(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y||e.z<this.min.z||e.z>this.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y||e.max.z<this.min.z||e.min.z>this.max.z)}intersectsSphere(e){return this.clampPoint(e.center,iM),iM.distanceToSquared(e.center)<=e.radius*e.radiu
2s}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(iR),iL.subVectors(this.max,iR),iC.subVectors(e.a,iR),iT.subVectors(e.b,iR),iP.subVectors(e.c,iR),iD.subVectors(iT,iC),iO.subVectors(iP,iT),iI.subVectors(iC,iP);let t=[0,-iD.z,iD.y,0,-iO.z,iO.y,0,-iI.z,iI.y,iD.z,0,-iD.x,iO.z,0,-iO.x,iI.z,0,-iI.x,-iD.y,iD.x,0,-iO.y,iO.x,0,-iI.y,iI.x,0];return!!(iF(t,iC,iT,iP,iL)&&iF(t=[1,0,0,0,1,0,0,0,1],iC,iT,iP,iL))&&(iB.crossVectors(iD,iO),iF(t=[iB.x,iB.y,iB.z],iC,iT,iP,iL))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return iM.copy(e).clamp(this.min,this.max).sub(e).length()}getBoundingSphere(e){return this.getCenter(e.center),e.radius=.5*this.getSize(iM).length(),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()||(iA[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),iA[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),iA[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),iA[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),iA[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),iA[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),iA[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),iA[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(iA)),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}},iA=[new ib,new ib,new ib,new ib,new ib,new ib,new ib,new ib],iM=new ib,iE=new i_,iC=new ib,iT=new ib,iP=new ib,iD=new ib,iO=new ib,iI=new ib,iR=new ib,iL=new ib,iB=new ib,iz=new ib;function iF(e,t,i,r,a){for(let o=0,h=e.length-3;o<=h;o+=3){iz.fromArray(e,o);let h=a.x*Math.abs(iz.x)+a.y*Math.abs(iz.y)+a.z*Math.abs(iz.z),c=t.dot(iz),d=i.dot(iz),u=r.dot(iz);if(Math.max(-Math.max(c,d,u),Math.min(c,d,u))>h)return!1}return!0}var iN=new i_,iU=new ib,ik=new ib,iV=class{constructor(e=new ib,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){let i=this.center;void 0!==t?i.copy(t):iN.setFromPoints(e).getCenter(i);let r=0;for(let t=0,a=e.length;t<a;t++)r=Math.max(r,i.distanceToSquared(e[t]));return this.radius=Math.sqrt(r),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){let t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,t){let i=this.center.distanceToSquared(e);return t.copy(e),i>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?e.makeEmpty():(e.set(this.center,this.center),e.expandByScalar(this.radius)),e}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;iU.subVectors(e,this.center);let t=iU.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),i=(e-this.radius)*.5;this.center.addScaledVector(iU,i/e),this.radius+=i}return this}union(e){return e.isEmpty()||(this.isEmpty()?this.copy(e):!0===this.center.equals(e.center)?this.radius=Math.max(this.radius,e.radius):(ik.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(iU.copy(e.center).add(ik)),this.expandByPoint(iU.copy(e.center).sub(ik)))),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}},ij=new ib,iG=new ib,iH=new ib,iW=new ib,iq=new ib,iX=new ib,iY=new ib,iQ=class{constructor(e=new ib,t=new ib(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.direction).multiplyScalar(e).add(this.origin)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,ij)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(i).add(this.origin)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=ij.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(ij.copy(this.direction).multiplyScalar(t).add(this.origin),ij.distanceToSquared(e))}distanceSqToSegment(e,t,i,r){iG.copy(e).add(t).multiplyScalar(.5),iH.copy(t).sub(e).normalize(),iW.copy(this.origin).sub(iG);let a=.5*e.distanceTo(t),o=-this.direction.dot(iH),h=iW.dot(this.direction),c=-iW.dot(iH),d=iW.lengthSq(),u=Math.abs(1-o*o),p,f,m,g;if(u>0){if(p=o*c-h,f=o*h-c,g=a*u,p>=0){if(f>=-g){if(f<=g){let e=1/u;p*=e,f*=e,m=p*(p+o*f+2*h)+f*(o*p+f+2*c)+d}else m=-(p=Math.max(0,-(o*(f=a)+h)))*p+f*(f+2*c)+d}else m=-(p=Math.max(0,-(o*(f=-a)+h)))*p+f*(f+2*c)+d}else f<=-g?(f=(p=Math.max(0,-(-o*a+h)))>0?-a:Math.min(Math.max(-a,-c),a),m=-p*p+f*(f+2*c)+d):f<=g?(p=0,m=(f=Math.min(Math.max(-a,-c),a))*(f+2*c)+d):(f=(p=Math.max(0,-(o*a+h)))>0?a:Math.min(Math.max(-a,-c),a),m=-p*p+f*(f+2*c)+d)}else f=o>0?-a:a,m=-(p=Math.max(0,-(o*f+h)))*p+f*(f+2*c)+d;
vendor: 4,217 bytes, line 2
2return i&&i.copy(this.direction).multiplyScalar(p).add(this.origin),r&&r.copy(iH).multiplyScalar(f).add(iG),m}intersectSphere(e,t){ij.subVectors(e.center,this.origin);let i=ij.dot(this.direction),r=ij.dot(ij)-i*i,a=e.radius*e.radius;if(r>a)return null;let o=Math.sqrt(a-r),h=i-o,c=i+o;return h<0&&c<0?null:h<0?this.at(c,t):this.at(h,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;let i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){let i=this.distanceToPlane(e);return null===i?null:this.at(i,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,r,a,o,h,c,d=1/this.direction.x,u=1/this.direction.y,p=1/this.direction.z,f=this.origin;return d>=0?(i=(e.min.x-f.x)*d,r=(e.max.x-f.x)*d):(i=(e.max.x-f.x)*d,r=(e.min.x-f.x)*d),u>=0?(a=(e.min.y-f.y)*u,o=(e.max.y-f.y)*u):(a=(e.max.y-f.y)*u,o=(e.min.y-f.y)*u),i>o||a>r||((a>i||isNaN(i))&&(i=a),(o<r||isNaN(r))&&(r=o),p>=0?(h=(e.min.z-f.z)*p,c=(e.max.z-f.z)*p):(h=(e.max.z-f.z)*p,c=(e.min.z-f.z)*p),i>c||h>r)||((h>i||i!=i)&&(i=h),(c<r||r!=r)&&(r=c),r<0)?null:this.at(i>=0?i:r,t)}intersectsBox(e){return null!==this.intersectBox(e,ij)}intersectTriangle(e,t,i,r,a){iq.subVectors(t,e),iX.subVectors(i,e),iY.crossVectors(iq,iX);let o=this.direction.dot(iY),h;if(o>0){if(r)return null;h=1}else{if(!(o<0))return null;h=-1,o=-o}iW.subVectors(this.origin,e);let c=h*this.direction.dot(iX.crossVectors(iW,iX));if(c<0)return null;let d=h*this.direction.dot(iq.cross(iW));if(d<0||c+d>o)return null;let u=-h*iW.dot(iY);return u<0?null:this.at(u/o,a)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},iZ=class{constructor(){iZ.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(e,t,i,r,a,o,h,c,d,u,p,f,m,g,v,y){let x=this.elements;return x[0]=e,x[4]=t,x[8]=i,x[12]=r,x[1]=a,x[5]=o,x[9]=h,x[13]=c,x[2]=d,x[6]=u,x[10]=p,x[14]=f,x[3]=m,x[7]=g,x[11]=v,x[15]=y,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new iZ().fromArray(this.elements)}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){let t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,i=e.elements,r=1/iK.setFromMatrixColumn(e,0).length(),a=1/iK.setFromMatrixColumn(e,1).length(),o=1/iK.setFromMatrixColumn(e,2).length();return t[0]=i[0]*r,t[1]=i[1]*r,t[2]=i[2]*r,t[3]=0,t[4]=i[4]*a,t[5]=i[5]*a,t[6]=i[6]*a,t[7]=0,t[8]=i[8]*o,t[9]=i[9]*o,t[10]=i[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){let t=this.elements,i=e.x,r=e.y,a=e.z,o=Math.cos(i),h=Math.sin(i),c=Math.cos(r),d=Math.sin(r),u=Math.cos(a),p=Math.sin(a);if("XYZ"===e.order){let e=o*u,i=o*p,r=h*u,a=h*p;t[0]=c*u,t[4]=-c*p,t[8]=d,t[1]=i+r*d,t[5]=e-a*d,t[9]=-h*c,t[2]=a-e*d,t[6]=r+i*d,t[10]=o*c}else if("YXZ"===e.order){let e=c*u,i=c*p,r=d*u,a=d*p;t[0]=e+a*h,t[4]=r*h-i,t[8]=o*d,t[1]=o*p,t[5]=o*u,t[9]=-h,t[2]=i*h-r,t[6]=a+e*h,t[10]=o*c}else if("ZXY"===e.order){let e=c*u,i=c*p,r=d*u,a=d*p;t[0]=e-a*h,t[4]=-o*p,t[8]=r+i*h,t[1]=i+r*h,t[5]=o*u,t[9]=a-e*h,t[2]=-o*d,t[6]=h,t[10]=o*c}else if("ZYX"===e.order){let e=o*u,i=o*p,r=h*u,a=h*p;t[0]=c*u,t[4]=r*d-i,t[8]=e*d+a,t[1]=c*p,t[5]=a*d+e,t[9]=i*d-r,t[2]=-d,t[6]=h*c,t[10]=o*c}else if("YZX"===e.order){let e=o*c,i=o*d,r=h*c,a=h*d;t[0]=c*u,t[4]=a-e*p,t[8]=r*p+i,t[1]=p,t[5]=o*u,t[9]=-h*u,t[2]=-d*u,t[6]=i*p+r,t[10]=e-a*p}
2else if("XZY"===e.order){let e=o*c,i=o*d,r=h*c,a=h*d;t[0]=c*u,t[4]=-p,t[8]=d*u,t[1]=e*p+a,t[5]=o*u,t[9]=i*p-r,t[2]=r*p-i,t[6]=h*u,t[10]=a*p+e}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(i$,e,i0)}lookAt(e,t,i){let r=this.elements;return i3.subVectors(e,t),0===i3.lengthSq()&&(i3.z=1),i3.normalize(),i1.crossVectors(i,i3),0===i1.lengthSq()&&(1===Math.abs(i.z)?i3.x+=1e-4:i3.z+=1e-4,i3.normalize(),i1.crossVectors(i,i3)),i1.normalize(),i2.crossVectors(i3,i1),r[0]=i1.x,r[4]=i2.x,r[8]=i3.x,r[1]=i1.y,r[5]=i2.y,r[9]=i3.y,r[2]=i1.z,r[6]=i2.z,r[10]=i3.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,r=t.elements,a=this.elements,o=i[0],h=i[4],c=i[8],d=i[12],u=i[1],p=i[5],f=i[9],m=i[13],g=i[2],v=i[6],y=i[10],x=i[14],b=i[3],w=i[7],S=i[11],_=i[15],A=r[0],M=r[4],E=r[8],C=r[12],T=r[1],P=r[5],D=r[9],O=r[13],I=r[2],R=r[6],L=r[10],B=r[14],z=r[3],F=r[7],N=r[11],U=r[15];return a[0]=o*A+h*T+c*I+d*z,a[4]=o*M+h*P+c*R+d*F,a[8]=o*E+h*D+c*L+d*N,a[12]=o*C+h*O+c*B+d*U,a[1]=u*A+p*T+f*I+m*z,a[5]=u*M+p*P+f*R+m*F,a[9]=u*E+p*D+f*L+m*N,a[13]=u*C+p*O+f*B+m*U,a[2]=g*A+v*T+y*I+x*z,a[6]=g*M+v*P+y*R+x*F,a[10]=g*E+v*D+y*L+x*N,a[14]=g*C+v*O+y*B+x*U,a[3]=b*A+w*T+S*I+_*z,a[7]=b*M+w*P+S*R+_*F,a[11]=b*E+w*D+S*L+_*N,a[15]=b*C+w*O+S*B+_*U,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){let e=this.elements,t=e[0],i=e[4],r=e[8],a=e[12],o=e[1],h=e[5],c=e[9],d=e[13],u=e[2],p=e[6],f=e[10],m=e[14];return e[3]*(+a*c*p-r*d*p-a*h*f+i*d*f+r*h*m-i*c*m)+e[7]*(+t*c*m-t*d*f+a*o*f-r*o*m+r*d*u-a*c*u)+e[11]*(+t*d*p-t*h*m-a*o*p+i*o*m+a*h*u-i*d*u)+e[15]*(-r*h*u-t*c*p+t*h*f+r*o*p-i*o*f+i*c*u)}transpose(){let e=this.elements,t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,i){let r=this.elements;return e.isVector3?(r[12]=e.x,r[13]=e.y,r[14]=e.z):(r[12]=e,r[13]=t,r[14]=i),this}invert(){let e=this.elements,t=e[0],i=e[1],r=e[2],a=e[3],o=e[4],h=e[5],c=e[6],d=e[7],u=e[8],p=e[9],f=e[10],m=e[11],g=e[12],v=e[13],y=e[14],x=e[15],b=p*y*d-v*f*d+v*c*m-h*y*m-p*c*x+h*f*x,w=g*f*d-u*y*d-g*c*m+o*y*m+u*c*x-o*f*x,S=u*v*d-g*p*d+g*h*m-o*v*m-u*h*x+o*p*x,_=g*p*c-u*v*c-g*h*f+o*v*f+u*h*y-o*p*y,A=t*b+i*w+r*S+a*_;if(0===A)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let M=1/A;return e[0]=b*M,e[1]=(v*f*a-p*y*a-v*r*m+i*y*m+p*r*x-i*f*x)*M,e[2]=(h*y*a-v*c*a+v*r*d-i*y*d-h*r*x+i*c*x)*M,e[3]=(p*c*a-h*f*a-p*r*d+i*f*d+h*r*m-i*c*m)*M,e[4]=w*M,e[5]=(u*y*a-g*f*a+g*r*m-t*y*m-u*r*x+t*f*x)*M,e[6]=(g*c*a-o*y*a-g*r*d+t*y*d+o*r*x-t*c*x)*M,e[7]=(o*f*a-u*c*a+u*r*d-t*f*d-o*r*m+t*c*m)*M,e[8]=S*M,e[9]=(g*p*a-u*v*a-g*i*m+t*v*m+u*i*x-t*p*x)*M,e[10]=(o*v*a-g*h*a+g*i*d-t*v*d-o*i*x+t*h*x)*M,e[11]=(u*h*a-o*p*a-u*i*d+t*p*d+o*i*m-t*h*m)*M,e[12]=_*M,e[13]=(u*v*r-g*p*r+g*i*f-t*v*f-u*i*y+t*p*y)*M,e[14]=(g*h*r-o*v*r-g*i*c+t*v*c+o*i*y-t*h*y)*M,e[15]=(o*p*r-u*h*r+u*i*c-t*p*c-o*i*f+t*h*f)*M,this}scale(e){let t=this.elements,i=e.x,r=e.y,a=e.z;return t[0]*=i,t[4]*=r,t[8]*=a,t[1]*=i,t[5]*=r,t[9]*=a,t[2]*=i,t[6]*=r,t[10]*=a,t[3]*=i,t[7]*=r,t[11]*=a,this}getMaxScaleOnAxis(){let e=this.elements;return Math.sqrt(Math.max(e[0]*e[0]+e[1]*e[1]+e[2]*e[2],e[4]*e[4]+e[5]*e[5]+e[6]*e[6],e[8]*e[8]+e[9]*e[9]+e[10]*e[10]))}makeTranslation(e,t,i){return this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){let t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this}makeRotationY(e){let t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this}makeRotationZ(e){let t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){let i=Math.cos(t),r=Math.sin(t),a=1-i,o=e.x,h=e.y,c=e.z,d=a*o,u=a*h;return this.set(d*o+i,d*h-r*c,d*c+r*h,0,d*h+r*c,u*h+i,u*c-r*o,0,d*c-r*h,u*c+r*o,a*c*c+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,r,a,o){return this.set(1,i,a,0,e,1,o,0,t,r,1,0,0,0,0,1),this}compose(e,t,i){let r=this.elements,a=t._x,o=t._y,h=t._z,c=t._w,d=a+a,u=o+o,p=h+h,f=a*d,m=a*u,g=a*p,v=o*u,y=o*p,x=h*p,b=c*d,w=c*u,S=c*p,_=i.x,A=i.y,M=i.z;return r[0]=(1-(v+x))*_,r[1]=(m+S)*_,r[2]=(g-w)*_,r[3]=0,r[4]=(m-S)*A,r[5]=(1-(f+x))*A,r[6]=(y+b)*A,r[7]=0,r[8]=(g+w)*M,r[9]=(y-b)*M,r[10]=(1-(f+v))*M,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,i){let r=this.elements,a=iK.set(r[0],r[1],r[2]).length(),o=iK.set(r[4],r[5],r[6]).length(),h=iK.set(r[8],r[9],r[10]).length();0>this.determinant()&&(a=-a),e.x=r[12],e.y=r[13],e.z=r[14],iJ.copy(this);let c=1/a,d=1/o,u=1/h;return iJ.elements[0]*=c,iJ.elements[1]*=c,iJ.elements[2]*=c,iJ.elements[4]*=d,iJ.elements[5]*=d,iJ.elements[6]*=d,iJ.elements[8]*=u,iJ.elements[9]*=u,iJ.elements[10]*=u,t.setFromRotationMatrix(iJ),i.x=a,i.y=o,i.z=h,this}makePerspective(e,t,i,r,a,o){let h=this.elements;return h[0]=2*a/(t-e),h[4]=0,h[8]=(t+e)/(t-e),h[12]=0,h[1]=0,h[5]=2*a/(i-r),h[9]=(i+r)/(i-r),h[13]=0,h[2]=0,h[6]=0,h[10]=-(o+a)/(o-a),h[14]=-2*o*a/(o-a),h[3]=0,h[7]=0,h[11]=-1,h[15]=0,this}
2makeOrthographic(e,t,i,r,a,o){let h=this.elements,c=1/(t-e),d=1/(i-r),u=1/(o-a);return h[0]=2*c,h[4]=0,h[8]=0,h[12]=-((t+e)*c),h[1]=0,h[5]=2*d,h[9]=0,h[13]=-((i+r)*d),h[2]=0,h[6]=0,h[10]=-2*u,h[14]=-((o+a)*u),h[3]=0,h[7]=0,h[11]=0,h[15]=1,this}equals(e){let t=this.elements,i=e.elements;for(let e=0;e<16;e++)if(t[e]!==i[e])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e}},iK=new ib,iJ=new iZ,i$=new ib(0,0,0),i0=new ib(1,1,1),i1=new ib,i2=new ib,i3=new ib,i4=new iZ,i5=new ix,i6=class{constructor(e=0,t=0,i=0,r=i6.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=i,this._order=r}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,i,r=this._order){return this._x=e,this._y=t,this._z=i,this._order=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){let r=e.elements,a=r[0],o=r[4],h=r[8],c=r[1],d=r[5],u=r[9],p=r[2],f=r[6],m=r[10];switch(t){case"XYZ":this._y=Math.asin(tG(h,-1,1)),.9999999>Math.abs(h)?(this._x=Math.atan2(-u,m),this._z=Math.atan2(-o,a)):(this._x=Math.atan2(f,d),this._z=0);break;case"YXZ":this._x=Math.asin(-tG(u,-1,1)),.9999999>Math.abs(u)?(this._y=Math.atan2(h,m),this._z=Math.atan2(c,d)):(this._y=Math.atan2(-p,a),this._z=0);break;case"ZXY":this._x=Math.asin(tG(f,-1,1)),.9999999>Math.abs(f)?(this._y=Math.atan2(-p,m),this._z=Math.atan2(-o,d)):(this._y=0,this._z=Math.atan2(c,a));break;case"ZYX":this._y=Math.asin(-tG(p,-1,1)),.9999999>Math.abs(p)?(this._x=Math.atan2(f,m),this._z=Math.atan2(c,a)):(this._x=0,this._z=Math.atan2(-o,d));break;case"YZX":this._z=Math.asin(tG(c,-1,1)),.9999999>Math.abs(c)?(this._x=Math.atan2(-u,d),this._y=Math.atan2(-p,a)):(this._x=0,this._y=Math.atan2(h,m));break;case"XZY":this._z=Math.asin(-tG(o,-1,1)),.9999999>Math.abs(o)?(this._x=Math.atan2(f,d),this._y=Math.atan2(h,a)):(this._x=Math.atan2(-u,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!0===i&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return i4.makeRotationFromQuaternion(e),this.setFromRotationMatrix(i4,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return i5.setFromEuler(this),this.setFromQuaternion(i5,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};i6.DEFAULT_ORDER="XYZ";var i8=class{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(e){this.mask|=1<<e|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e|0}disable(e){this.mask&=~(1<<e|0)}disableAll(){this.mask=0}test(e){return(this.mask&e.mask)!=0}isEnabled(e){return(this.mask&(1<<e|0))!=0}},i9=0,i7=new ib,re=new ix,rt=new iZ,ri=new ib,rr=new ib,rs=new ib,ra=new ix,rn=new ib(1,0,0),ro=new ib(0,1,0),rl=new ib(0,0,1),rh={type:"added"},rc={type:"removed"},rd=class extends tF{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:i9++}),this.uuid=tj(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=rd.DEFAULT_UP.clone();let e=new ib,t=new i6,i=new ix,r=new ib(1,1,1);t._onChange(function(){i.setFromEuler(t,!1)}),i._onChange(function(){t.setFromQuaternion(i,void 0,!1)}),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:i},scale:{configurable:!0,enumerable:!0,value:r},modelViewMatrix:{value:new iZ},normalMatrix:{value:new t$}}),this.matrix=new iZ,this.matrixWorld=new iZ,this.matrixAutoUpdate=rd.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.matrixWorldAutoUpdate=rd.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.layers=new i8,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}
2setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return re.setFromAxisAngle(e,t),this.quaternion.multiply(re),this}rotateOnWorldAxis(e,t){return re.setFromAxisAngle(e,t),this.quaternion.premultiply(re),this}rotateX(e){return this.rotateOnAxis(rn,e)}rotateY(e){return this.rotateOnAxis(ro,e)}rotateZ(e){return this.rotateOnAxis(rl,e)}translateOnAxis(e,t){return i7.copy(e).applyQuaternion(this.quaternion),this.position.add(i7.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(rn,e)}translateY(e){return this.translateOnAxis(ro,e)}translateZ(e){return this.translateOnAxis(rl,e)}localToWorld(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(rt.copy(this.matrixWorld).invert())}lookAt(e,t,i){e.isVector3?ri.copy(e):ri.set(e,t,i);let r=this.parent;this.updateWorldMatrix(!0,!1),rr.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?rt.lookAt(rr,ri,this.up):rt.lookAt(ri,rr,this.up),this.quaternion.setFromRotationMatrix(rt),r&&(rt.extractRotation(r.matrixWorld),re.setFromRotationMatrix(rt),this.quaternion.premultiply(re.invert()))}add(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return e===this?console.error("THREE.Object3D.add: object can't be added as a child of itself.",e):e&&e.isObject3D?(null!==e.parent&&e.parent.remove(e),e.parent=this,this.children.push(e),e.dispatchEvent(rh)):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",e),this}remove(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.remove(arguments[e]);return this}let t=this.children.indexOf(e);return -1!==t&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(rc)),this}removeFromParent(){let e=this.parent;return null!==e&&e.remove(this),this}clear(){for(let e=0;e<this.children.length;e++){let t=this.children[e];t.parent=null,t.dispatchEvent(rc)}return this.children.length=0,this}attach(e){return this.updateWorldMatrix(!0,!1),rt.copy(this.matrixWorld).invert(),null!==e.parent&&(e.parent.updateWorldMatrix(!0,!1),rt.multiply(e.parent.matrixWorld)),e.applyMatrix4(rt),this.add(e),e.updateWorldMatrix(!1,!0),this}getObjectById(e){return this.getObjectByProperty("id",e)}getObjectByName(e){return this.getObjectByProperty("name",e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let i=0,r=this.children.length;i<r;i++){let r=this.children[i].getObjectByProperty(e,t);if(void 0!==r)return r}}getObjectsByProperty(e,t){let i=[];this[e]===t&&i.push(this);for(let r=0,a=this.children.length;r<a;r++){let a=this.children[r].getObjectsByProperty(e,t);a.length>0&&(i=i.concat(a))}return i}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(rr,e,rs),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(rr,ra,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);let t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);let t=this.children;for(let i=0,r=t.length;i<r;i++)t[i].traverse(e)}traverseVisible(e){if(!1===this.visible)return;e(this);let t=this.children;for(let i=0,r=t.length;i<r;i++)t[i].traverseVisible(e)}traverseAncestors(e){let t=this.parent;null!==t&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,e=!0);let t=this.children;for(let i=0,r=t.length;i<r;i++){let r=t[i];(!0===r.matrixWorldAutoUpdate||!0===e)&&r.updateMatrixWorld(e)}}updateWorldMatrix(e,t){let i=this.parent;if(!0===e&&null!==i&&!0===i.matrixWorldAutoUpdate&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),null===this.parent?this.matrixWorld.copy(this.matrix
2):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),!0===t){let e=this.children;for(let t=0,i=e.length;t<i;t++){let i=e[t];!0===i.matrixWorldAutoUpdate&&i.updateWorldMatrix(!1,!0)}}}toJSON(e){let t=void 0===e||"string"==typeof e,i={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},i.metadata={version:4.5,type:"Object",generator:"Object3D.toJSON"});let r={};function a(t,i){return void 0===t[i.uuid]&&(t[i.uuid]=i.toJSON(e)),i.uuid}if(r.uuid=this.uuid,r.type=this.type,""!==this.name&&(r.name=this.name),!0===this.castShadow&&(r.castShadow=!0),!0===this.receiveShadow&&(r.receiveShadow=!0),!1===this.visible&&(r.visible=!1),!1===this.frustumCulled&&(r.frustumCulled=!1),0!==this.renderOrder&&(r.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),!1===this.matrixAutoUpdate&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(r.instanceColor=this.instanceColor.toJSON())),this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=a(e.geometries,this.geometry);let t=this.geometry.parameters;if(void 0!==t&&void 0!==t.shapes){let i=t.shapes;if(Array.isArray(i))for(let t=0,r=i.length;t<r;t++){let r=i[t];a(e.shapes,r)}else a(e.shapes,i)}}if(this.isSkinnedMesh&&(r.bindMode=this.bindMode,r.bindMatrix=this.bindMatrix.toArray(),void 0!==this.skeleton&&(a(e.skeletons,this.skeleton),r.skeleton=this.skeleton.uuid)),void 0!==this.material){if(Array.isArray(this.material)){let t=[];for(let i=0,r=this.material.length;i<r;i++)t.push(a(e.materials,this.material[i]));r.material=t}else r.material=a(e.materials,this.material)}if(this.children.length>0){r.children=[];for(let t=0;t<this.children.length;t++)r.children.push(this.children[t].toJSON(e).object)}if(this.animations.length>0){r.animations=[];for(let t=0;t<this.animations.length;t++){let i=this.animations[t];r.animations.push(a(e.animations,i))}}if(t){let t=o(e.geometries),r=o(e.materials),a=o(e.textures),h=o(e.images),c=o(e.shapes),d=o(e.skeletons),u=o(e.animations),p=o(e.nodes);t.length>0&&(i.geometries=t),r.length>0&&(i.materials=r),a.length>0&&(i.textures=a),h.length>0&&(i.images=h),c.length>0&&(i.shapes=c),d.length>0&&(i.skeletons=d),u.length>0&&(i.animations=u),p.length>0&&(i.nodes=p)}return i.object=r,i;function o(e){let t=[];for(let i in e){let r=e[i];delete r.metadata,t.push(r)}return t}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(let t=0;t<e.children.length;t++){let i=e.children[t];this.add(i.clone())}return this}};rd.DEFAULT_UP=new ib(0,1,0),rd.DEFAULT_MATRIX_AUTO_UPDATE=!0,rd.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;var ru=new ib,rp=new ib,rf=new ib,rm=new ib,rg=new ib,rv=new ib,ry=new ib,rx=new ib,rb=new ib,rw=new ib,rS=class{constructor(e=new ib,t=new ib,i=new ib){this.a=e,this.b=t,this.c=i}static getNormal(e,t,i,r){r.subVectors(i,t),ru.subVectors(e,t),r.cross(ru);let a=r.lengthSq();return a>0?r.multiplyScalar(1/Math.sqrt(a)):r.set(0,0,0)}static getBarycoord(e,t,i,r,a){ru.subVectors(r,t),rp.subVectors(i,t),rf.subVectors(e,t);let o=ru.dot(ru),h=ru.dot(rp),c=ru.dot(rf),d=rp.dot(rp),u=rp.dot(rf),p=o*d-h*h;if(0===p)return a.set(-2,-1,-1);let f=1/p,m=(d*c-h*u)*f,g=(o*u-h*c)*f;return a.set(1-m-g,g,m)}static containsPoint(e,t,i,r){return this.getBarycoord(e,t,i,r,rm),rm.x>=0&&rm.y>=0&&rm.x+rm.y<=1}static getUV(e,t,i,r,a,o,h,c){return this.getBarycoord(e,t,i,r,rm),c.set(0,0),c.addScaledVector(a,rm.x),c.addScaledVector(o,rm.y),c.addScaledVector(h,rm.z),c}static isFrontFacing(e,t,i,r){return ru.subVectors(i,t),rp.subVectors(e,t),0>ru.cross(rp).dot(r)}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,r){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,i,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,r),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return ru.subVectors(this.c,this.b),rp.subVectors(this.a,this.b),.5*ru.cross(rp).length()}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return rS.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return rS.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,i,r,a){return rS.getUV(e,this.a,this.b,this.c,t,i,r,a)}containsPoint(e){return rS.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return rS.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let i=this.a,r=this.b,a=this.c,o,h;rg.subVectors(r,i),rv.subVectors(a,i),rx.subVectors(e,i);let c=rg.dot(rx),d=rv.dot(rx);if(c<=0&&d<=0)return t.copy(i);rb.subVectors(e,r);
2let u=rg.dot(rb),p=rv.dot(rb);if(u>=0&&p<=u)return t.copy(r);let f=c*p-u*d;if(f<=0&&c>=0&&u<=0)return o=c/(c-u),t.copy(i).addScaledVector(rg,o);rw.subVectors(e,a);let m=rg.dot(rw),g=rv.dot(rw);if(g>=0&&m<=g)return t.copy(a);let v=m*d-c*g;if(v<=0&&d>=0&&g<=0)return h=d/(d-g),t.copy(i).addScaledVector(rv,h);let y=u*g-m*p;if(y<=0&&p-u>=0&&m-g>=0)return ry.subVectors(a,r),h=(p-u)/(p-u+(m-g)),t.copy(r).addScaledVector(ry,h);let x=1/(y+v+f);return o=v*x,h=f*x,t.copy(i).addScaledVector(rg,o).addScaledVector(rv,h)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},r_=0,rA=class extends tF{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:r_++}),this.uuid=tj(),this.name="",this.type="Material",this.blending=1,this.side=0,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=204,this.blendDst=205,this.blendEquation=100,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=3,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=7680,this.stencilZFail=7680,this.stencilZPass=7680,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(void 0!==e)for(let t in e){let i=e[t];if(void 0===i){console.warn("THREE.Material: '"+t+"' parameter is undefined.");continue}let r=this[t];if(void 0===r){console.warn("THREE."+this.type+": '"+t+"' is not a property of this material.");continue}r&&r.isColor?r.set(i):r&&r.isVector3&&i&&i.isVector3?r.copy(i):this[t]=i}}toJSON(e){let t=void 0===e||"string"==typeof e;t&&(e={textures:{},images:{}});let i={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};function r(e){let t=[];for(let i in e){let r=e[i];delete r.metadata,t.push(r)}return t}
vendor: 11,949 bytes, line 2
2if(i.uuid=this.uuid,i.type=this.type,""!==this.name&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),void 0!==this.roughness&&(i.roughness=this.roughness),void 0!==this.metalness&&(i.metalness=this.metalness),void 0!==this.sheen&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(i.shininess=this.shininess),void 0!==this.clearcoat&&(i.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.iridescence&&(i.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(i.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,void 0!==this.combine&&(i.combine=this.combine)),void 0!==this.envMapIntensity&&(i.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(i.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.transmission&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),void 0!==this.thickness&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(i.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(i.size=this.size),null!==this.shadowSide&&(i.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(i.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(i.blending=this.blending),0!==this.side&&(i.side=this.side),this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),!0===this.transparent&&(i.transparent=this.transparent),i.depthFunc=this.depthFunc,i.depthTest=this.depthTest,i.depthWrite=this.depthWrite,i.colorWrite=this.colorWrite,i.stencilWrite=this.stencilWrite,i.stencilWriteMask=this.stencilWriteMask,i.stencilFunc=this.stencilFunc,i.stencilRef=this.stencilRef,i.stencilFuncMask=this.stencilFuncMask,i.stencilFail=this.stencilFail,i.stencilZFail=this.stencilZFail,i.stencilZPass=this.stencilZPass,void 0!==this.rotation&&0!==this.rotation&&(i.rotation=this.rotation),!0===this.polygonOffset&&(i.polygonOffset=!0),0!==this.polygonOffsetFactor&&(i.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(i.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(i.linewidth=this.linewidth),void 0!==this.dashSize&&(i.dashSize=this.dashSize),void 0!==this.gapSize&&(i.gapSize=this.gapSize),void 0!==this.scale&&(i.scale=this.scale),!0===this.dithering&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),!0===this.alphaToCoverage&&(i.alphaToCoverage=this.alphaToCoverage),!0===this.premultipliedAlpha&&(i.premultipliedAlpha=this.premultipliedAlpha),!0===this.forceSinglePass&&(i.forceSinglePass=this.forceSinglePass),!0===this.wireframe&&(i.wireframe=this.wireframe),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(i.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(i.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(i.flatShading=this.flatShading),!1===this.visible&&(i.visible=!1),!1===this.toneMapped&&(i.toneMapped=!1),!1===this.fog&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData),t){let t=r(e.textures),a=r(e.images);t.length>0&&(i.textures=t),a.length>0&&(i.images=a)}return i}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,i=null;if(null!==t){let e=t.length;i=Array(e);for(let r=0;r!==e;++r)i[r]=t[r].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){!0===e&&this.version++}},rM=class extends rA{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new ia(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}},rE=new ib,rC=new tJ,rT=class{constructor(e,t,i=!1){if(Array.isArray(e))throw TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=i,this.usage=35044,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let r=0,a=this.itemSize;r<a;r++)this.array[e+r]=t.array[i+r];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(2===this.itemSize)for(let t=0,i=this.count;t<i;t++)rC.fromBufferAttribute(this,t),rC.applyMatrix3(e),this.setXY(t,rC.x,rC.y);else if(3===this.itemSize)for(let t=0,i=this.count;t<i;t++)rE.fromBufferAttribute(this,t),rE.applyMatrix3(e),this.setXYZ(t,rE.x,rE.y,rE.z);return this}applyMatrix4(e){for(let t=0,i=this.count;t<i;t++)rE.fromBufferAttribute(this,t),rE.applyMatrix4(e),this.setXYZ(t,rE.x,rE.y,rE.z);return this}applyNormalMatrix(e){for(let t=0,i=this.count;t<i;t++)rE.fromBufferAttribute(this,t),rE.applyNormalMatrix(e),this.setXYZ(t,rE.x,rE.y,rE.z);return this}transformDirection(e){for(let t=0,i=this.count;t<i;t++)rE.fromBufferAttribute(this,t),rE.transformDirection(e),this.setXYZ(t,rE.x,rE.y,rE.z);return this}set(e,t=0){return this.array.set(e,t),this}getX(e){let t=this.array[e*this.itemSize];return this.normalized&&(t=tQ(t,this.array)),t}setX(e,t){return this.normalized&&(t=tZ(t,this.array)),this.array[e*this.itemSize]=t,this}getY(e){let t=this.array[e*this.itemSize+1];return this.normalized&&(t=tQ(t,this.array)),t}setY(e,t){return this.normalized&&(t=tZ(t,this.array)),this.array[e*this.itemSize+1]=t,this}getZ(e){let t=this.array[e*this.itemSize+2];return this.normalized&&(t=tQ(t,this.array)),t}setZ(e,t){return this.normalized&&(t=tZ(t,this.array)),this.array[e*this.itemSize+2]=t,this}getW(e){let t=this.array[e*this.itemSize+3];return this.normalized&&(t=tQ(t,this.array)),t}setW(e,t){return this.normalized&&(t=tZ(t,this.array)),this.array[e*this.itemSize+3]=t,this}setXY(e,t,i){return e*=this.itemSize,this.normalized&&(t=tZ(t,this.array),i=tZ(i,this.array)),this.array[e+0]=t,this.array[e+1]=i,this}setXYZ(e,t,i,r){return e*=this.itemSize,this.normalized&&(t=tZ(t,this.array),i=tZ(i,this.array),r=tZ(r,this.array)),this.array[e+0]=t,this.array[e+1]=i,this.array[e+2]=r,this}setXYZW(e,t,i,r,a){return e*=this.itemSize,this.normalized&&(t=tZ(t,this.array),i=tZ(i,this.array),r=tZ(r,this.array),a=tZ(a,this.array)),this.array[e+0]=t,this.array[e+1]=i,this.array[e+2]=r,this.array[e+3]=a,this}
2onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){let e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return""!==this.name&&(e.name=this.name),35044!==this.usage&&(e.usage=this.usage),(0!==this.updateRange.offset||-1!==this.updateRange.count)&&(e.updateRange=this.updateRange),e}copyColorsArray(){console.error("THREE.BufferAttribute: copyColorsArray() was removed in r144.")}copyVector2sArray(){console.error("THREE.BufferAttribute: copyVector2sArray() was removed in r144.")}copyVector3sArray(){console.error("THREE.BufferAttribute: copyVector3sArray() was removed in r144.")}copyVector4sArray(){console.error("THREE.BufferAttribute: copyVector4sArray() was removed in r144.")}},rP=class extends rT{constructor(e,t,i){super(new Uint16Array(e),t,i)}},rD=class extends rT{constructor(e,t,i){super(new Uint32Array(e),t,i)}},rO=class extends rT{constructor(e,t,i){super(new Float32Array(e),t,i)}},rI=0,rR=new iZ,rL=new rd,rB=new ib,rz=new i_,rF=new i_,rN=new ib,rU=class extends tF{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:rI++}),this.uuid=tj(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(t1(e)?rD:rP)(e,1):this.index=e,this}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return void 0!==this.attributes[e]}addGroup(e,t,i=0){this.groups.push({start:e,count:t,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){let t=this.attributes.position;void 0!==t&&(t.applyMatrix4(e),t.needsUpdate=!0);let i=this.attributes.normal;if(void 0!==i){let t=new t$().getNormalMatrix(e);i.applyNormalMatrix(t),i.needsUpdate=!0}let r=this.attributes.tangent;return void 0!==r&&(r.transformDirection(e),r.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}applyQuaternion(e){return rR.makeRotationFromQuaternion(e),this.applyMatrix4(rR),this}rotateX(e){return rR.makeRotationX(e),this.applyMatrix4(rR),this}rotateY(e){return rR.makeRotationY(e),this.applyMatrix4(rR),this}rotateZ(e){return rR.makeRotationZ(e),this.applyMatrix4(rR),this}translate(e,t,i){return rR.makeTranslation(e,t,i),this.applyMatrix4(rR),this}scale(e,t,i){return rR.makeScale(e,t,i),this.applyMatrix4(rR),this}lookAt(e){return rL.lookAt(e),rL.updateMatrix(),this.applyMatrix4(rL.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(rB).negate(),this.translate(rB.x,rB.y,rB.z),this}setFromPoints(e){let t=[];for(let i=0,r=e.length;i<r;i++){let r=e[i];t.push(r.x,r.y,r.z||0)}return this.setAttribute("position",new rO(t,3)),this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new i_);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "fal
2se".',this),this.boundingBox.set(new ib(-1/0,-1/0,-1/0),new ib(1/0,1/0,1/0));return}if(void 0!==e){if(this.boundingBox.setFromBufferAttribute(e),t)for(let e=0,i=t.length;e<i;e++){let i=t[e];rz.setFromBufferAttribute(i),this.morphTargetsRelative?(rN.addVectors(this.boundingBox.min,rz.min),this.boundingBox.expandByPoint(rN),rN.addVectors(this.boundingBox.max,rz.max),this.boundingBox.expandByPoint(rN)):(this.boundingBox.expandByPoint(rz.min),this.boundingBox.expandByPoint(rz.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new iV);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "fal
2se".',this),this.boundingSphere.set(new ib,1/0);return}if(e){let i=this.boundingSphere.center;if(rz.setFromBufferAttribute(e),t)for(let e=0,i=t.length;e<i;e++){let i=t[e];rF.setFromBufferAttribute(i),this.morphTargetsRelative?(rN.addVectors(rz.min,rF.min),rz.expandByPoint(rN),rN.addVectors(rz.max,rF.max),rz.expandByPoint(rN)):(rz.expandByPoint(rF.min),rz.expandByPoint(rF.max))}rz.getCenter(i);let r=0;for(let t=0,a=e.count;t<a;t++)rN.fromBufferAttribute(e,t),r=Math.max(r,i.distanceToSquared(rN));if(t)for(let a=0,o=t.length;a<o;a++){let o=t[a],h=this.morphTargetsRelative;for(let t=0,a=o.count;t<a;t++)rN.fromBufferAttribute(o,t),h&&(rB.fromBufferAttribute(e,t),rN.add(rB)),r=Math.max(r,i.distanceToSquared(rN))}this.boundingSphere.radius=Math.sqrt(r),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){let e=this.index,t=this.attributes;if(null===e||void 0===t.position||void 0===t.normal||void 0===t.uv){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}let i=e.array,r=t.position.array,a=t.normal.array,o=t.uv.array,h=r.length/3;!1===this.hasAttribute("tangent")&&this.setAttribute("tangent",new rT(new Float32Array(4*h),4));let c=this.getAttribute("tangent").array,d=[],u=[];for(let e=0;e<h;e++)d[e]=new ib,u[e]=new ib;
2let p=new ib,f=new ib,m=new ib,g=new tJ,v=new tJ,y=new tJ,x=new ib,b=new ib,w=this.groups;0===w.length&&(w=[{start:0,count:i.length}]);for(let e=0,t=w.length;e<t;++e){let t=w[e],a=t.start,h=t.count;for(let e=a,t=a+h;e<t;e+=3)!function(e,t,i){p.fromArray(r,3*e),f.fromArray(r,3*t),m.fromArray(r,3*i),g.fromArray(o,2*e),v.fromArray(o,2*t),y.fromArray(o,2*i),f.sub(p),m.sub(p),v.sub(g),y.sub(g);let a=1/(v.x*y.y-y.x*v.y);isFinite(a)&&(x.copy(f).multiplyScalar(y.y).addScaledVector(m,-v.y).multiplyScalar(a),b.copy(m).multiplyScalar(v.x).addScaledVector(f,-y.x).multiplyScalar(a),d[e].add(x),d[t].add(x),d[i].add(x),u[e].add(b),u[t].add(b),u[i].add(b))}(i[e+0],i[e+1],i[e+2])}let S=new ib,_=new ib,A=new ib,M=new ib;function E(e){A.fromArray(a,3*e),M.copy(A);let t=d[e];S.copy(t),S.sub(A.multiplyScalar(A.dot(t))).normalize(),_.crossVectors(M,t);let i=0>_.dot(u[e])?-1:1;c[4*e]=S.x,c[4*e+1]=S.y,c[4*e+2]=S.z,c[4*e+3]=i}for(let e=0,t=w.length;e<t;++e){let t=w[e],r=t.start,a=t.count;for(let e=r,t=r+a;e<t;e+=3)E(i[e+0]),E(i[e+1]),E(i[e+2])}}computeVertexNormals(){let e=this.index,t=this.getAttribute("position");if(void 0!==t){let i=this.getAttribute("normal");if(void 0===i)i=new rT(new Float32Array(3*t.count),3),this.setAttribute("normal",i);else for(let e=0,t=i.count;e<t;e++)i.setXYZ(e,0,0,0);let r=new ib,a=new ib,o=new ib,h=new ib,c=new ib,d=new ib,u=new ib,p=new ib;if(e)for(let f=0,m=e.count;f<m;f+=3){let m=e.getX(f+0),g=e.getX(f+1),v=e.getX(f+2);r.fromBufferAttribute(t,m),a.fromBufferAttribute(t,g),o.fromBufferAttribute(t,v),u.subVectors(o,a),p.subVectors(r,a),u.cross(p),h.fromBufferAttribute(i,m),c.fromBufferAttribute(i,g),d.fromBufferAttribute(i,v),h.add(u),c.add(u),d.add(u),i.setXYZ(m,h.x,h.y,h.z),i.setXYZ(g,c.x,c.y,c.z),i.setXYZ(v,d.x,d.y,d.z)}else for(let e=0,h=t.count;e<h;e+=3)r.fromBufferAttribute(t,e+0),a.fromBufferAttribute(t,e+1),o.fromBufferAttribute(t,e+2),u.subVectors(o,a),p.subVectors(r,a),u.cross(p),i.setXYZ(e+0,u.x,u.y,u.z),i.setXYZ(e+1,u.x,u.y,u.z),i.setXYZ(e+2,u.x,u.y,u.z);this.normalizeNormals(),i.needsUpdate=!0}}merge(){return console.error("THREE.BufferGeometry.merge() has been removed. Use THREE.BufferGeometryUtils.mergeBufferGeometries() instead."),this}normalizeNormals(){let e=this.attributes.normal;for(let t=0,i=e.count;t<i;t++)rN.fromBufferAttribute(e,t),rN.normalize(),e.setXYZ(t,rN.x,rN.y,rN.z)}toNonIndexed(){function e(e,t){let i=e.array,r=e.itemSize,a=e.normalized,o=new i.constructor(t.length*r),h=0,c=0;for(let a=0,d=t.length;a<d;a++){h=e.isInterleavedBufferAttribute?t[a]*e.data.stride+e.offset:t[a]*r;for(let e=0;e<r;e++)o[c++]=i[h++]}return new rT(o,r,a)}if(null===this.index)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;let t=new rU,i=this.index.array,r=this.attributes;for(let a in r){let o=e(r[a],i);t.setAttribute(a,o)}let a=this.morphAttributes;for(let r in a){let o=[],h=a[r];for(let t=0,r=h.length;t<r;t++){let r=e(h[t],i);o.push(r)}t.morphAttributes[r]=o}t.morphTargetsRelative=this.morphTargetsRelative;let o=this.groups;for(let e=0,i=o.length;e<i;e++){let i=o[e];t.addGroup(i.start,i.count,i.materialIndex)}return t}toJSON(){let e={metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,""!==this.name&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),void 0!==this.parameters){let t=this.parameters;for(let i in t)void 0!==t[i]&&(e[i]=t[i]);return e}e.data={attributes:{}};let t=this.index;null!==t&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let i=this.attributes;for(let t in i){let r=i[t];e.data.attributes[t]=r.toJSON(e.data)}let r={},a=!1;for(let t in this.morphAttributes){let i=this.morphAttributes[t],o=[];for(let t=0,r=i.length;t<r;t++){let r=i[t];o.push(r.toJSON(e.data))}o.length>0&&(r[t]=o,a=!0)}a&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);let o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));let h=this.boundingSphere;return null!==h&&(e.data.boundingSphere={center:h.center.toArray(),radius:h.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let i=e.index;null!==i&&this.setIndex(i.clone(t));let r=e.attributes;for(let e in r){let i=r[e];this.setAttribute(e,i.clone(t))}let a=e.morphAttributes;for(let e in a){let i=[],r=a[e];for(let e=0,a=r.length;e<a;e++)i.push(r[e].clone(t));this.morphAttributes[e]=i}this.morphTargetsRelative=e.morphTargetsRelative;let o=e.groups;for(let e=0,t=o.length;e<t;
2e++){let t=o[e];this.addGroup(t.start,t.count,t.materialIndex)}let h=e.boundingBox;null!==h&&(this.boundingBox=h.clone());let c=e.boundingSphere;return null!==c&&(this.boundingSphere=c.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,void 0!==e.parameters&&(this.parameters=Object.assign({},e.parameters)),this}dispose(){this.dispatchEvent({type:"dispose"})}},rk=new iZ,rV=new iQ,rj=new iV,rG=new ib,rH=new ib,rW=new ib,rq=new ib,rX=new ib,rY=new tJ,rQ=new tJ,rZ=new tJ,rK=new ib,rJ=new ib,r$=class extends rd{constructor(e=new rU,t=new rM){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),void 0!==e.morphTargetInfluences&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),void 0!==e.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=e.material,this.geometry=e.geometry,this}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;e<t;e++){let t=i[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}getVertexPosition(e,t){let i=this.geometry,r=i.attributes.position,a=i.morphAttributes.position,o=i.morphTargetsRelative;t.fromBufferAttribute(r,e);let h=this.morphTargetInfluences;if(a&&h){rX.set(0,0,0);for(let i=0,r=a.length;i<r;i++){let r=h[i],c=a[i];0!==r&&(rq.fromBufferAttribute(c,e),o?rX.addScaledVector(rq,r):rX.addScaledVector(rq.sub(t),r))}t.add(rX)}return this.isSkinnedMesh&&this.boneTransform(e,t),t}raycast(e,t){let i=this.geometry,r=this.material,a=this.matrixWorld;if(void 0===r||(null===i.boundingSphere&&i.computeBoundingSphere(),rj.copy(i.boundingSphere),rj.applyMatrix4(a),!1===e.ray.intersectsSphere(rj))||(rk.copy(a).invert(),rV.copy(e.ray).applyMatrix4(rk),null!==i.boundingBox&&!1===rV.intersectsBox(i.boundingBox)))return;let o,h=i.index,c=i.attributes.position,d=i.attributes.uv,u=i.attributes.uv2,p=i.groups,f=i.drawRange;if(null!==h){if(Array.isArray(r))for(let i=0,a=p.length;i<a;i++){let a=p[i],c=r[a.materialIndex],m=Math.max(a.start,f.start),g=Math.min(h.count,Math.min(a.start+a.count,f.start+f.count));for(let i=m;i<g;i+=3)(o=r0(this,c,e,rV,d,u,h.getX(i),h.getX(i+1),h.getX(i+2)))&&(o.faceIndex=Math.floor(i/3),o.face.materialIndex=a.materialIndex,t.push(o))}else{let i=Math.max(0,f.start),a=Math.min(h.count,f.start+f.count);for(let c=i;c<a;c+=3)(o=r0(this,r,e,rV,d,u,h.getX(c),h.getX(c+1),h.getX(c+2)))&&(o.faceIndex=Math.floor(c/3),t.push(o))}}else if(void 0!==c){if(Array.isArray(r))for(let i=0,a=p.length;i<a;i++){let a=p[i],h=r[a.materialIndex],m=Math.max(a.start,f.start),g=Math.min(c.count,Math.min(a.start+a.count,f.start+f.count));for(let i=m;i<g;i+=3)(o=r0(this,h,e,rV,d,u,i,i+1,i+2))&&(o.faceIndex=Math.floor(i/3),o.face.materialIndex=a.materialIndex,t.push(o))}else{let i=Math.max(0,f.start),a=Math.min(c.count,f.start+f.count);for(let h=i;h<a;h+=3)(o=r0(this,r,e,rV,d,u,h,h+1,h+2))&&(o.faceIndex=Math.floor(h/3),t.push(o))}}}};function r0(e,t,i,r,a,o,h,c,d){e.getVertexPosition(h,rG),e.getVertexPosition(c,rH),e.getVertexPosition(d,rW);let u=function(e,t,i,r,a,o,h,c){if(null===(1===t.side?r.intersectTriangle(h,o,a,!0,c):r.intersectTriangle(a,o,h,0===t.side,c)))return null;rJ.copy(c),rJ.applyMatrix4(e.matrixWorld);let d=i.ray.origin.distanceTo(rJ);return d<i.near||d>i.far?null:{distance:d,point:rJ.clone(),object:e}}(e,t,i,r,rG,rH,rW,rK);if(u){a&&(rY.fromBufferAttribute(a,h),rQ.fromBufferAttribute(a,c),rZ.fromBufferAttribute(a,d),u.uv=rS.getUV(rK,rG,rH,rW,rY,rQ,rZ,new tJ)),o&&(rY.fromBufferAttribute(o,h),rQ.fromBufferAttribute(o,c),rZ.fromBufferAttribute(o,d),u.uv2=rS.getUV(rK,rG,rH,rW,rY,rQ,rZ,new tJ));let e={a:h,b:c,c:d,normal:new ib,materialIndex:0};rS.getNormal(rG,rH,rW,e.normal),u.face=e}return u}var r1=class extends rU{constructor(e=1,t=1,i=1,r=1,a=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:r,heightSegments:a,depthSegments:o};let h=this;r=Math.floor(r),a=Math.floor(a);let c=[],d=[],u=[],p=[],f=0,m=0;function g(e,t,i,r,a,o,g,v,y,x,b){let w=o/y,S=g/x,_=o/2,A=g/2,M=v/2,E=y+1,C=x+1,T=0,P=0,D=new ib;for(let o=0;o<C;o++){let h=o*S-A;for(let c=0;c<E;c++){let f=c*w-_;D[e]=f*r,D[t]=h*a,D[i]=M,d.push(D.x,D.y,D.z),D[e]=0,D[t]=0,D[i]=v>0?1:-1,u.push(D.x,D.y,D.z),p.push(c/y),p.push(1-o/x),T+=1}}for(let e=0;e<x;e++)for(let t=0;t<y;t++){let i=f+t+E*e,r=f+t+E*(e+1),a=f+(t+1)+E*(e+1),o=f+(t+1)+E*e;c.push(i,r,o),c.push(r,a,o),P+=6}h.addGroup(m,P,b),m+=P,f+=T}g("z","y","x",-1,-1,i,t,e,o=Math.floor(o),a,0),g("z","y","x",1,-1,i,t,-e,o,a,1),g("x","z","y",1,1,e,i,t,r,o,2),g("x","z","y",1,-1,e,i,-t,r,o,3),g("x","y","z",1,-1,e,t,i,r,a,4),g("x","y","z",-1,-1,e,t,-i,r,a,5),this.setIndex(c),this.setAttribute("position",new rO(d,3)),this.setAttribute("normal",new rO(u,3)),this.setAttribute("uv",new rO(p,2))}static fromJSON(e){return new r1(e.width,e.height,e.depth,e.widthSegments,e.heightSegments,e.depthSegments)}};function r2(e){let t={};for(let i in e)for(let r in t[i]={},e[i]){let a=e[i][r];a&&(a.isColor||a.isMatrix3||a.isMatrix4||a.isVector2||a.isVector3||a.isVector4||a.isTexture||a.isQuaternion)?t[i][r]=a.clone():Array.isArray(a)?t[i][r]=a.slice():t[i][r]=a}return t}function r3(e){let t={};for(let i=0;i<e.length;i++){let r=r2(e[i]);for(let e in r)t[e]=r[e]}return t}function r4(e){return null===e.getRenderTarget()&&3001===e.outputEncoding?tL:tB}var r5={clone:r2,merge:r3},r6=`void main() {
3	gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
4}`,r8=`void main() {
5	gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
6}`,r9=class extends rA{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=r6,this.fragmentShader=r8,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,void 0!==e&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=r2(e.uniforms),this.uniformsGroups=function(e){let t=[];for(let i=0;i<e.length;i++)t.push(e[i].clone());return t}(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){let t=super.toJSON(e);for(let i in t.glslVersion=this.glslVersion,t.uniforms={},this.uniforms){let r=this.uniforms[i].value;r&&r.isTexture?t.uniforms[i]={type:"t",value:r.toJSON(e).uuid}:r&&r.isColor?t.uniforms[i]={type:"c",value:r.getHex()}:r&&r.isVector2?t.uniforms[i]={type:"v2",value:r.toArray()}:r&&r.isVector3?t.uniforms[i]={type:"v3",value:r.toArray()}:r&&r.isVector4?t.uniforms[i]={type:"v4",value:r.toArray()}:r&&r.isMatrix3?t.uniforms[i]={type:"m3",value:r.toArray()}:r&&r.isMatrix4?t.uniforms[i]={type:"m4",value:r.toArray()}:t.uniforms[i]={value:r}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader;let i={};for(let e in this.extensions)!0===this.extensions[e]&&(i[e]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}},r7=class extends rd{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new iZ,this.projectionMatrix=new iZ,this.projectionMatrixInverse=new iZ}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this}getWorldDirection(e){this.updateWorldMatrix(!0,!1);let t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}},se=class extends r7{constructor(e=50,t=1,i=.1,r=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=i,this.far=r,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){let t=.5*this.getFilmHeight()/e;this.fov=2*tV*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){let e=Math.tan(.5*tk*this.fov);return .5*this.getFilmHeight()/e}
6getEffectiveFOV(){return 2*tV*Math.atan(Math.tan(.5*tk*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,i,r,a,o){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=r,this.view.width=a,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=this.near,t=e*Math.tan(.5*tk*this.fov)/this.zoom,i=2*t,r=this.aspect*i,a=-.5*r,o=this.view;if(null!==this.view&&this.view.enabled){let e=o.fullWidth,h=o.fullHeight;a+=o.offsetX*r/e,t-=o.offsetY*i/h,r*=o.width/e,i*=o.height/h}let h=this.filmOffset;0!==h&&(a+=e*h/this.getFilmWidth()),this.projectionMatrix.makePerspective(a,a+r,t,t-i,e,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}},st=class extends rd{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i;let r=new se(-90,1,e,t);r.layers=this.layers,r.up.set(0,1,0),r.lookAt(1,0,0),this.add(r);let a=new se(-90,1,e,t);a.layers=this.layers,a.up.set(0,1,0),a.lookAt(-1,0,0),this.add(a);let o=new se(-90,1,e,t);o.layers=this.layers,o.up.set(0,0,-1),o.lookAt(0,1,0),this.add(o);let h=new se(-90,1,e,t);h.layers=this.layers,h.up.set(0,0,1),h.lookAt(0,-1,0),this.add(h);let c=new se(-90,1,e,t);c.layers=this.layers,c.up.set(0,1,0),c.lookAt(0,0,1),this.add(c);let d=new se(-90,1,e,t);d.layers=this.layers,d.up.set(0,1,0),d.lookAt(0,0,-1),this.add(d)}update(e,t){null===this.parent&&this.updateMatrixWorld();let i=this.renderTarget,[r,a,o,h,c,d]=this.children,u=e.getRenderTarget(),p=e.toneMapping,f=e.xr.enabled;e.toneMapping=0,e.xr.enabled=!1;let m=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,e.setRenderTarget(i,0),e.render(t,r),e.setRenderTarget(i,1),e.render(t,a),e.setRenderTarget(i,2),e.render(t,o),e.setRenderTarget(i,3),e.render(t,h),e.setRenderTarget(i,4),e.render(t,c),i.texture.generateMipmaps=m,e.setRenderTarget(i,5),e.render(t,d),e.setRenderTarget(u),e.toneMapping=p,e.xr.enabled=f,i.texture.needsPMREMUpdate=!0}},si=class extends iu{constructor(e,t,i,r,a,o,h,c,d,u){super(e=void 0!==e?e:[],t=void 0!==t?t:301,i,r,a,o,h,c,d,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}},sr=class extends im{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;let i={width:e,height:e,depth:1};this.texture=new si([i,i,i,i,i,i],t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==t.generateMipmaps&&t.generateMipmaps,this.texture.minFilter=void 0!==t.minFilter?t.minFilter:1006}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.encoding=t.encoding,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let i={uniforms:{tEquirect:{value:null}},vertexShader:`
7
8				varying vec3 vWorldDirection;
9
10				vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
11
12					return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
13
14				}
15
16				void main() {
17
18					vWorldDirection = transformDirection( position, modelMatrix );
19
20					#include <begin_vertex>
21					#include <project_vertex>
22
23				}
24			`,fragmentShader:`
25
26				uniform sampler2D tEquirect;
27
28				varying vec3 vWorldDirection;
29
30				#include <common>
31
32				void main() {
33
34					vec3 direction = normalize( vWorldDirection );
35
36					vec2 sampleUV = equirectUv( direction );
37
38					gl_FragColor = texture2D( tEquirect, sampleUV );
39
40				}
41			`},r=new r1(5,5,5),a=new r9({name:"CubemapFromEquirect",uniforms:r2(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:1,blending:0});a.uniforms.tEquirect.value=t;let o=new r$(r,a),h=t.minFilter;return 1008===t.minFilter&&(t.minFilter=1006),new st(1,10,this).update(e,o),t.minFilter=h,o.geometry.dispose(),o.material.dispose(),this}clear(e,t,i,r){let a=e.getRenderTarget();for(let a=0;a<6;a++)e.setRenderTarget(this,a),e.clear(t,i,r);e.setRenderTarget(a)}},ss=new ib,sa=new ib,sn=new t$,so=class{constructor(e=new ib(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,i,r){return this.normal.set(e,t,i),this.constant=r,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}
41setFromCoplanarPoints(e,t,i){let r=ss.subVectors(i,t).cross(sa.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(r,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){let e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)}intersectLine(e,t){let i=e.delta(ss),r=this.normal.dot(i);if(0===r)return 0===this.distanceToPoint(e.start)?t.copy(e.start):null;let a=-(e.start.dot(this.normal)+this.constant)/r;return a<0||a>1?null:t.copy(i).multiplyScalar(a).add(e.start)}intersectsLine(e){let t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let i=t||sn.getNormalMatrix(e),r=this.coplanarPoint(ss).applyMatrix4(e),a=this.normal.applyMatrix3(i).normalize();return this.constant=-r.dot(a),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}},sl=new iV,sh=new ib,sc=class{constructor(e=new so,t=new so,i=new so,r=new so,a=new so,o=new so){this.planes=[e,t,i,r,a,o]}set(e,t,i,r,a,o){let h=this.planes;return h[0].copy(e),h[1].copy(t),h[2].copy(i),h[3].copy(r),h[4].copy(a),h[5
41].copy(o),this}copy(e){let t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e){let t=this.planes,i=e.elements,r=i[0],a=i[1],o=i[2],h=i[3],c=i[4],d=i[5],u=i[6],p=i[7],f=i[8],m=i[9],g=i[10],v=i[11],y=i[12],x=i[13],b=i[14],w=i[15];return t[0].setComponents(h-r,p-c,v-f,w-y).normalize(),t[1].setComponents(h+r,p+c,v+f,w+y).normalize(),t[2].setComponents(h+a,p+d,v+m,w+x).normalize(),t[3].setComponents(h-a,p-d,v-m,w-x).normalize(),t[4].setComponents(h-o,p-u,v-g,w-b).normalize(),t[5].setComponents(h+o,p+u,v+g,w+b).normalize(),this}intersectsObject(e){let t=e.geometry;return null===t.boundingSphere&&t.computeBoundingSphere(),sl.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(sl)}intersectsSprite(e){return sl.center.set(0,0,0),sl.radius=.7071067811865476,sl.applyMatrix4(e.matrixWorld),this.intersectsSphere(sl)}intersectsSphere(e){let t=this.planes,i=e.center,r=-e.radius;for(let e=0;e<6;e++)if(t[e].distanceToPoint(i)<r)return!1;return!0}intersectsBox(e){let t=this.planes;for(let i=0;i<6;i++){let r=t[i];if(sh.x=r.normal.x>0?e.max.x:e.min.x,sh.y=r.normal.y>0?e.max.y:e.min.y,sh.z=r.normal.z>0?e.max.z:e.min.z,0>r.distanceToPoint(sh))return!1}return!0}containsPoint(e){let t=this.planes;for(let i=0;i<6;i++)if(0>t[i].distanceToPoint(e))return!1;return!0}clone(){return new this.constructor().copy(this)}};function sd(){let e=null,t=!1,i=null,r=null;function a(t,o){i(t,o),r=e.requestAnimationFrame(a)}return{start:function(){!0!==t&&null!==i&&(r=e.requestAnimationFrame(a),t=!0)},stop:function(){e.cancelAnimationFrame(r),t=!1},setAnimationLoop:function(e){i=e},setContext:function(t){e=t}}}function su(e,t){let i=t.isWebGL2,r=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),r.get(e)},remove:function(t){t.isInterleavedBufferAttribute&&(t=t.data);let i=r.get(t);i&&(e.deleteBuffer(i.buffer),r.delete(t))},update:function(t,a){var o,h;let c,d;if(t.isGLBufferAttribute){let e=r.get(t);(!e||e.version<t.version)&&r.set(t,{buffer:t.buffer,type:t.type,bytesPerElement:t.elementSize,version:t.version});return}t.isInterleavedBufferAttribute&&(t=t.data);let u=r.get(t);void 0===u?r.set(t,function(t,r){let a,o=t.array,h=t.usage,c=e.createBuffer();if(e.bindBuffer(r,c),e.bufferData(r,o,h),t.onUploadCallback(),o instanceof Float32Array)a=5126;else if(o instanceof Uint16Array){if(t.isFloat16BufferAttribute){if(i)a=5131;else throw Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.")}else a=5123}else if(o instanceof Int16Array)a=5122;else if(o instanceof Uint32Array)a=5125;else if(o instanceof Int32Array)a=5124;else if(o instanceof Int8Array)a=5120;else if(o instanceof Uint8Array)a=5121;else if(o instanceof Uint8ClampedArray)a=5121;else throw Error("THREE.WebGLAttributes: Unsupported buffer data format: "+o);return{buffer:c,type:a,bytesPerElement:o.BYTES_PER_ELEMENT,version:t.version}}(t,a)):u.version<t.version&&(o=u.buffer,c=(h=t).array,d=h.updateRange,e.bindBuffer(a,o),-1===d.count?e.bufferSubData(a,0,c):(i?e.bufferSubData(a,d.offset*c.BYTES_PER_ELEMENT,c,d.offset,d.count):e.bufferSubData(a,d.offset*c.BYTES_PER_ELEMENT,c.subarray(d.offset,d.offset+d.count)),d.count=-1),h.onUploadCallback(),u.version=t.version)}}}var sp=class extends rU{constructor(e=1,t=1,i=1,r=1){super(),this.type="PlaneGeometry",this.parameters={width:e,height:t,widthSegments:i,heightSegments:r};let a=e/2,o=t/2,h=Math.floor(i),c=Math.floor(r),d=h+1,u=c+1,p=e/h,f=t/c,m=[],g=[],v=[],y=[];for(let e=0;e<u;e++){let t=e*f-o;for(let i=0;i<d;i++){let r=i*p-a;g.push(r,-t,0),v.push(0,0,1),y.push(i/h),y.push(1-e/c)}}for(let e=0;e<c;e++)for(let t=0;t<h;t++){let i=t+d*e,r=t+d*(e+1),a=t+1+d*(e+1),o=t+1+d*e;m.push(i,r,o),m.push(r,a,o)}this.setIndex(m),this.setAttribute("position",new rO(g,3)),this.setAttribute("normal",new rO(v,3)),this.setAttribute("uv",new rO(y,2))}static fromJSON(e){return new sp(e.width,e.height,e.widthSegments,e.heightSegments)}},sf={alphamap_fragment:`#ifdef USE_ALPHAMAP
42	diffuseColor.a *= texture2D( alphaMap, vUv ).g;
43#endif`,alphamap_pars_fragment:`#ifdef USE_ALPHAMAP
44	uniform sampler2D alphaMap;
45#endif`,alphatest_fragment:`#ifdef USE_ALPHATEST
46	if ( diffuseColor.a < alphaTest ) discard;
47#endif`,alphatest_pars_fragment:`#ifdef USE_ALPHATEST
48	uniform float alphaTest;
49#endif`,aomap_fragment:`#ifdef USE_AOMAP
50	float ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;
51	reflectedLight.indirectDiffuse *= ambientOcclusion;
52	#if defined( USE_ENVMAP ) && defined( STANDARD )
53		float dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );
54		reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );
55	#endif
56#endif`,aomap_pars_fragment:`#ifdef USE_AOMAP
57	uniform sampler2D aoMap;
58	uniform float aoMapIntensity;
59#endif`,begin_vertex:"vec3 transformed = vec3( position );",beginnormal_vertex:`vec3 objectNormal = vec3( normal );
60#ifdef USE_TANGENT
61	vec3 objectTangent = vec3( tangent.xyz );
62#endif`,bsdfs:`vec3 BRDF_Lambert( const in vec3 diffuseColor ) {
63	return RECIPROCAL_PI * diffuseColor;
64}
65vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {
66	float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );
67	return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );
68}
69float F_Schlick( const in float f0, const in float f90, const in float dotVH ) {
70	float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );
71	return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );
72}
73vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {
74    float x = clamp( 1.0 - dotVH, 0.0, 1.0 );
75    float x2 = x * x;
76    float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );
77    return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );
78}
79float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {
80	float a2 = pow2( alpha );
81	float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );
82	float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );
83	return 0.5 / max( gv + gl, EPSILON );
84}
85float D_GGX( const in float alpha, const in float dotNH ) {
86	float a2 = pow2( alpha );
87	float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;
88	return RECIPROCAL_PI * a2 / pow2( denom );
89}
90vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {
91	float alpha = pow2( roughness );
92	vec3 halfDir = normalize( lightDir + viewDir );
93	float dotNL = saturate( dot( normal, lightDir ) );
94	float dotNV = saturate( dot( normal, viewDir ) );
95	float dotNH = saturate( dot( normal, halfDir ) );
96	float dotVH = saturate( dot( viewDir, halfDir ) );
97	vec3 F = F_Schlick( f0, f90, dotVH );
98	float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
99	float D = D_GGX( alpha, dotNH );
100	return F * ( V * D );
101}
102#ifdef USE_IRIDESCENCE
103	vec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float roughness ) {
104		float alpha = pow2( roughness );
105		vec3 halfDir = normalize( lightDir + viewDir );
106		float dotNL = saturate( dot( normal, lightDir ) );
107		float dotNV = saturate( dot( normal, viewDir ) );
108		float dotNH = saturate( dot( normal, halfDir ) );
109		float dotVH = saturate( dot( viewDir, halfDir ) );
110		vec3 F = mix( F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence );
111		float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
112		float D = D_GGX( alpha, dotNH );
113		return F * ( V * D );
114	}
115#endif
116vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {
117	const float LUT_SIZE = 64.0;
118	const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;
119	const float LUT_BIAS = 0.5 / LUT_SIZE;
120	float dotNV = saturate( dot( N, V ) );
121	vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );
122	uv = uv * LUT_SCALE + LUT_BIAS;
123	return uv;
124}
125float LTC_ClippedSphereFormFactor( const in vec3 f ) {
126	float l = length( f );
127	return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );
128}
129vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {
130	float x = dot( v1, v2 );
131	float y = abs( x );
132	float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;
133	float b = 3.4175940 + ( 4.1616724 + y ) * y;
134	float v = a / b;
135	float theta_sintheta = ( x >
135 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;
136	return cross( v1, v2 ) * theta_sintheta;
137}
138vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {
139	vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];
140	vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];
141	vec3 lightNormal = cross( v1, v2 );
142	if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );
143	vec3 T1, T2;
144	T1 = normalize( V - N * dot( V, N ) );
145	T2 = - cross( N, T1 );
146	mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );
147	vec3 coords[ 4 ];
148	coords[ 0 ] = mat * ( rectCoords[ 0 ] - P );
149	coords[ 1 ] = mat * ( rectCoords[ 1 ] - P );
150	coords[ 2 ] = mat * ( rectCoords[ 2 ] - P );
151	coords[ 3 ] = mat * ( rectCoords[ 3 ] - P );
152	coords[ 0 ] = normalize( coords[ 0 ] );
153	coords[ 1 ] = normalize( coords[ 1 ] );
154	coords[ 2 ] = normalize( coords[ 2 ] );
155	coords[ 3 ] = normalize( coords[ 3 ] );
156	vec3 vectorFormFactor = vec3( 0.0 );
157	vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );
158	vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );
159	vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );
160	vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );
161	float result = LTC_ClippedSphereFormFactor( vectorFormFactor );
162	return vec3( result );
163}
164float G_BlinnPhong_Implicit( ) {
165	return 0.25;
166}
167float D_BlinnPhong( const in float shininess, const in float dotNH ) {
168	return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );
169}
170vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {
171	vec3 halfDir = normalize( lightDir + viewDir );
172	float dotNH = saturate( dot( normal, halfDir ) );
173	float dotVH = saturate( dot( viewDir, halfDir ) );
174	vec3 F = F_Schlick( specularColor, 1.0, dotVH );
175	float G = G_BlinnPhong_Implicit( );
176	float D = D_BlinnPhong( shininess, dotNH );
177	return F * ( G * D );
178}
179#if defined( USE_SHEEN )
180float D_Charlie( float roughness, float dotNH ) {
181	float alpha = pow2( roughness );
182	float invAlpha = 1.0 / alpha;
183	float cos2h = dotNH * dotNH;
184	float sin2h = max( 1.0 - cos2h, 0.0078125 );
185	return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );
186}
187float V_Neubelt( float dotNV, float dotNL ) {
188	return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );
189}
190vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {
191	vec3 halfDir = normalize( lightDir + viewDir );
192	float dotNL = saturate( dot( normal, lightDir ) );
193	float dotNV = saturate( dot( normal, viewDir ) );
194	float dotNH = saturate( dot( normal, halfDir ) );
195	float D = D_Charlie( sheenRoughness, dotNH );
196	float V = V_Neubelt( dotNV, dotNL );
197	return sheenColor * ( D * V );
198}
199#endif`,iridescence_fragment:`#ifdef USE_IRIDESCENCE
200	const mat3 XYZ_TO_REC709 = mat3(
201		 3.2404542, -0.9692660,  0.0556434,
202		-1.5371385,  1.8760108, -0.2040259,
203		-0.4985314,  0.0415560,  1.0572252
204	);
205	vec3 Fresnel0ToIor( vec3 fresnel0 ) {
206		vec3 sqrtF0 = sqrt( fresnel0 );
207		return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );
208	}
209	vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {
210		return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );
211	}
212	float IorToFresnel0( float transmittedIor, float incidentIor ) {
213		return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));
214	}
215	vec3 evalSensitivity( float OPD, vec3 shift ) {
216		float phase = 2.0 * PI * OPD * 1.0e-9;
217		vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );
218		vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );
219		vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );
220		vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );
221		xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );
222		xyz /= 1.0685e-7;
223		vec3 rgb = XYZ_TO_REC709 * xyz;
224		return rgb;
225	}
226	vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {
227		vec3 I;
228		float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );
229		float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );
230		float cosTheta2Sq = 1.0 - sinTheta2Sq;
231		if ( cosTheta2Sq < 0.0 ) {
232			 return vec3( 1.0 );
233		}
234		float cosTheta2 = sqrt( cosTheta2Sq );
235		float R0 = IorToFresnel0( iridescenceIOR, outsideIOR );
236		float R12 = F_Schlick( R0, 1.0, cosTheta1 );
237		float R21 = R12;
238		float T121 = 1.0 - R12;
239		float phi12 = 0.0;
240		if ( iridescenceIOR < outsideIOR ) phi12 = PI;
241		float phi21 = PI - phi12;
242		vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );		vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );
243		vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );
244		vec3 phi23 = vec3( 0.0 );
245		if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;
246		if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;
247		if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;
248		float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;
249		vec3 phi = vec3( phi21 ) + phi23;
250		vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );
251		vec3 r123 = sqrt( R123 );
252		vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );
253		vec3 C0 = R12 + Rs;
254		I = C0;
255		vec3 Cm = Rs - T121;
256		for ( int m = 1; m <= 2; ++ m ) {
257			Cm *= r123;
258			vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );
259			I += Cm * Sm;
260		}
261		return max( I, vec3( 0.0 ) );
262	}
263#endif`,bumpmap_pars_fragment:`#ifdef USE_BUMPMAP
264	uniform sampler2D bumpMap;
265	uniform float bumpScale;
266	vec2 dHdxy_fwd() {
267		vec2 dSTdx = dFdx( vUv );
268		vec2 dSTdy = dFdy( vUv );
269		float Hll = bumpScale * texture2D( bumpMap, vUv ).x;
270		float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;
271		float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;
272		return vec2( dBx, dBy );
273	}
274	vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
275		vec3 vSigmaX = dFdx( surf_pos.xyz );
276		vec3 vSigmaY = dFdy( surf_pos.xyz );
277		vec3 vN = surf_norm;
278		vec3 R1 = cross( vSigmaY, vN );
279		vec3 R2 = cross( vN, vSigmaX );
280		float fDet = dot( vSigmaX, R1 ) * faceDirection;
281		vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
282		return normalize( abs( fDet ) * surf_norm - vGrad );
283	}
284#endif`,clipping_planes_fragment:`#if NUM_CLIPPING_PLANES > 0
285	vec4 plane;
286	#pragma unroll_loop_start
287	for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {
288		plane = clippingPlanes[ i ];
289		if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;
290	}
291	#pragma unroll_loop_end
292	#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES
293		bool clipped = true;
294		#pragma unroll_loop_start
295		for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {
296			plane = clippingPlanes[ i ];
297			clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;
298		}
299		#pragma unroll_loop_end
300		if ( clipped ) discard;
301	#endif
302#endif`,clipping_planes_pars_fragment:`#if NUM_CLIPPING_PLANES > 0
303	varying vec3 vClipPosition;
304	uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];
305#endif`,clipping_planes_pars_vertex:`#if NUM_CLIPPING_PLANES > 0
306	varying vec3 vClipPosition;
307#endif`,clipping_planes_vertex:`#if NUM_CLIPPING_PLANES > 0
308	vClipPosition = - mvPosition.xyz;
309#endif`,color_fragment:`#if defined( USE_COLOR_ALPHA )
310	diffuseColor *= vColor;
311#elif defined( USE_COLOR )
312	diffuseColor.rgb *= vColor;
313#endif`,color_pars_fragment:`#if defined( USE_COLOR_ALPHA )
314	varying vec4 vColor;
315#elif defined( USE_COLOR )
316	varying vec3 vColor;
317#endif`,color_pars_vertex:`#if defined( USE_COLOR_ALPHA )
318	varying vec4 vColor;
319#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )
320	varying vec3 vColor;
321#endif`,color_vertex:`#if defined( USE_COLOR_ALPHA )
322	vColor = vec4( 1.0 );
323#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )
324	vColor = vec3( 1.0 );
325#endif
326#ifdef USE_COLOR
327	vColor *= color;
328#endif
329#ifdef USE_INSTANCING_COLOR
330	vColor.xyz *= instanceColor.xyz;
331#endif`,common:`#define PI 3.141592653589793
332#define PI2 6.283185307179586
333#define PI_HALF 1.5707963267948966
334#define RECIPROCAL_PI 0.3183098861837907
335#define RECIPROCAL_PI2 0.15915494309189535
336#define EPSILON 1e-6
337#ifndef saturate
338#define saturate( a ) clamp( a, 0.0, 1.0 )
339#endif
340#define whiteComplement( a ) ( 1.0 - saturate( a ) )
341float pow2( const in float x ) { return x*x; }
342vec3 pow2( const in vec3 x ) { return x*x; }
343float pow3( const in float x ) { return x*x*x; }
344float pow4( const in float x ) { float x2 = x*x; return x2*x2; }
345float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }
346float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }
347highp float rand( const in vec2 uv ) {
348	const highp float a = 12.9898, b = 78.233, c = 43758.5453;
349	highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );
350	return fract( sin( sn ) * c );
351}
352#ifdef HIGH_PRECISION
353	float precisionSafeLength( vec3 v ) { return length( v ); }
354#else
355	float precisionSafeLength( vec3 v ) {
356		float maxComponent = max3( abs( v ) );
357		return length( v / maxComponent ) * maxComponent;
358	}
359#endif
360struct IncidentLight {
361	vec3 color;
362	vec3 direction;
363	bool visible;
364};
365struct ReflectedLight {
366	vec3 directDiffuse;
367	vec3 directSpecular;
368	vec3 indirectDiffuse;
369	vec3 indirectSpecular;
370};
371struct GeometricContext {
372	vec3 position;
373	vec3 normal;
374	vec3 viewDir;
375#ifdef USE_CLEARCOAT
376	vec3 clearcoatNormal;
377#endif
378};
379vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
380	return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
381}
382vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {
383	return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );
384}
385mat3 transposeMat3( const in mat3 m ) {
386	mat3 tmp;
387	tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );
388	tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );
389	tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );
390	return tmp;
391}
392float luminance( const in vec3 rgb ) {
393	const vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );
394	return dot( weights, rgb );
395}
396bool isPerspectiveMatrix( mat4 m ) {
397	return m[ 2 ][ 3 ] == - 1.0;
398}
399vec2 equirectUv( in vec3 dir ) {
400	float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;
401	float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;
402	return vec2( u, v );
403}`,cube_uv_reflection_fragment:`#ifdef ENVMAP_TYPE_CUBE_UV
404	#define cubeUV_minMipLevel 4.0
405	#define cubeUV_minTileSize 16.0
406	float getFace( vec3 direction ) {
407		vec3 absDirection = abs( direction );
408		float face = - 1.0;
409		if ( absDirection.x > absDirection.z ) {
410			if ( absDirection.x > absDirection.y )
411				face = direction.x > 0.0 ? 0.0 : 3.0;
412			else
413				face = direction.y > 0.0 ? 1.0 : 4.0;
414		} else {
415			if ( absDirection.z > absDirection.y )
416				face = direction.z > 0.0 ? 2.0 : 5.0;
417			else
418				face = direction.y > 0.0 ? 1.0 : 4.0;
419		}
420		return face;
421	}
422	vec2 getUV( vec3 direction, float face ) {
423		vec2 uv;
424		if ( face == 0.0 ) {
425			uv = vec2( direction.z, direction.y ) / abs( direction.x );
426		} else if ( face == 1.0 ) {
427			uv = vec2( - direction.x, - direction.z ) / abs( direction.y );
428		} else if ( face == 2.0 ) {
429			uv = vec2( - direction.x, direction.y ) / abs( direction.z );
430		} else if ( face == 3.0 ) {
431			uv = vec2( - direction.z, direction.y ) / abs( direction.x );
432		} else if ( face == 4.0 ) {
433			uv = vec2( - direction.x, direction.z ) / abs( direction.y );
434		} else {
435			uv = vec2( direction.x, direction.y ) / abs( direction.z );
436		}
437		return 0.5 * ( uv + 1.0 );
438	}
439	vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {
440		float face = getFace( direction );
441		float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );
442		mipInt = max( mipInt, cubeUV_minMipLevel );
443		float faceSize = exp2( mipInt );
444		highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;
445		if ( face > 2.0 ) {
446			uv.y += faceSize;
447			face -= 3.0;
448		}
449		uv.x += face * faceSize;
450		uv.x += filterInt * 3.0 * cubeUV_minTileSize;
451		uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );
452		uv.x *= CUBEUV_TEXEL_WIDTH;
453		uv.y *= CUBEUV_TEXEL_HEIGHT;
454		#ifdef texture2DGradEXT
455			return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;
456		#else
457			return texture2D( envMap, uv ).rgb;
458		#endif
459	}
460	#define cubeUV_r0 1.0
461	#define cubeUV_v0 0.339
462	#define cubeUV_m0 - 2.0
463	#define cubeUV_r1 0.8
464	#define cubeUV_v1 0.276
465	#define cubeUV_m1 - 1.0
466	#define cubeUV_r4 0.4
467	#define cubeUV_v4 0.046
468	#define cubeUV_m4 2.0
469	#define cubeUV_r5 0.305
470	#define cubeUV_v5 0.016
471	#define cubeUV_m5 3.0
472	#define cubeUV_r6 0.21
473	#define cubeUV_v6 0.0038
474	#define cubeUV_m6 4.0
475	float roughnessToMip( float roughness ) {
476		float mip = 0.0;
477		if ( roughness >= cubeUV_r1 ) {
478			mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;
479		} else if ( roughness >= cubeUV_r4 ) {
480			mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;
481		} else if ( roughness >= cubeUV_r5 ) {
482			mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;
483		} else if ( roughness >= cubeUV_r6 ) {
484			mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;
485		} else {
486			mip = - 2.0 * log2( 1.16 * roughness );		}
487		return mip;
488	}
489	vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {
490		float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );
491		float mipF = fract( mip );
492		float mipInt = floor( mip );
493		vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );
494		if ( mipF == 0.0 ) {
495			return vec4( color0, 1.0 );
496		} else {
497			vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );
498			return vec4( mix( color0, color1, mipF ), 1.0 );
499		}
500	}
501#endif`,defaultnormal_vertex:`vec3 transformedNormal = objectNormal;
502#ifdef USE_INSTANCING
503	mat3 m = mat3( instanceMatrix );
504	transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );
505	transformedNormal = m * transformedNormal;
506#endif
507transformedNormal = normalMatrix * transformedNormal;
508#ifdef FLIP_SIDED
509	transformedNormal = - transformedNormal;
510#endif
511#ifdef USE_TANGENT
512	vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;
513	#ifdef FLIP_SIDED
514		transformedTangent = - transformedTangent;
515	#endif
516#endif`,displacementmap_pars_vertex:`#ifdef USE_DISPLACEMENTMAP
517	uniform sampler2D displacementMap;
518	uniform float displacementScale;
519	uniform float displacementBias;
520#endif`,displacementmap_vertex:`#ifdef USE_DISPLACEMENTMAP
521	transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );
522#endif`,emissivemap_fragment:`#ifdef USE_EMISSIVEMAP
523	vec4 emissiveColor = texture2D( emissiveMap, vUv );
524	totalEmissiveRadiance *= emissiveColor.rgb;
525#endif`,emissivemap_pars_fragment:`#ifdef USE_EMISSIVEMAP
526	uniform sampler2D emissiveMap;
527#endif`,encodings_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment:`vec4 LinearToLinear( in vec4 value ) {
528	return value;
529}
530vec4 LinearTosRGB( in vec4 value ) {
531	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.a );
532}`,envmap_fragment:`#ifdef USE_ENVMAP
533	#ifdef ENV_WORLDPOS
534		vec3 cameraToFrag;
535		if ( isOrthographic ) {
536			cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
537		} else {
538			cameraToFrag = normalize( vWorldPosition - cameraPosition );
539		}
540		vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
541		#ifdef ENVMAP_MODE_REFLECTION
542			vec3 reflectVec = reflect( cameraToFrag, worldNormal );
543		#else
544			vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );
545		#endif
546	#else
547		vec3 reflectVec = vReflect;
548	#endif
549	#ifdef ENVMAP_TYPE_CUBE
550		vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );
551	#else
552		vec4 envColor = vec4( 0.0 );
553	#endif
554	#ifdef ENVMAP_BLENDING_MULTIPLY
555		outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );
556	#elif defined( ENVMAP_BLENDING_MIX )
557		outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );
558	#elif defined( ENVMAP_BLENDING_ADD )
559		outgoingLight += envColor.xyz * specularStrength * reflectivity;
560	#endif
561#endif`,envmap_common_pars_fragment:`#ifdef USE_ENVMAP
562	uniform float envMapIntensity;
563	uniform float flipEnvMap;
564	#ifdef ENVMAP_TYPE_CUBE
565		uniform samplerCube envMap;
566	#else
567		uniform sampler2D envMap;
568	#endif
569	
570#endif`,envmap_pars_fragment:`#ifdef USE_ENVMAP
571	uniform float reflectivity;
572	#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )
573		#define ENV_WORLDPOS
574	#endif
575	#ifdef ENV_WORLDPOS
576		varying vec3 vWorldPosition;
577		uniform float refractionRatio;
578	#else
579		varying vec3 vReflect;
580	#endif
581#endif`,envmap_pars_vertex:`#ifdef USE_ENVMAP
582	#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )
583		#define ENV_WORLDPOS
584	#endif
585	#ifdef ENV_WORLDPOS
586		
587		varying vec3 vWorldPosition;
588	#else
589		varying vec3 vReflect;
590		uniform float refractionRatio;
591	#endif
592#endif`,envmap_physical_pars_fragment:`#if defined( USE_ENVMAP )
593	vec3 getIBLIrradiance( const in vec3 normal ) {
594		#if defined( ENVMAP_TYPE_CUBE_UV )
595			vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
596			vec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );
597			return PI * envMapColor.rgb * envMapIntensity;
598		#else
599			return vec3( 0.0 );
600		#endif
601	}
602	vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {
603		#if defined( ENVMAP_TYPE_CUBE_UV )
604			vec3 reflectVec = reflect( - viewDir, normal );
605			reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
606			reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
607			vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );
608			return envMapColor.rgb * envMapIntensity;
609		#else
610			return vec3( 0.0 );
611		#endif
612	}
613#endif`,envmap_vertex:`#ifdef USE_ENVMAP
614	#ifdef ENV_WORLDPOS
615		vWorldPosition = worldPosition.xyz;
616	#else
617		vec3 cameraToVertex;
618		if ( isOrthographic ) {
619			cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
620		} else {
621			cameraToVertex = normalize( worldPosition.xyz - cameraPosition );
622		}
623		vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
624		#ifdef ENVMAP_MODE_REFLECTION
625			vReflect = reflect( cameraToVertex, worldNormal );
626		#else
627			vReflect = refract( cameraToVertex, worldNormal, refractionRatio );
628		#endif
629	#endif
630#endif`,fog_vertex:`#ifdef USE_FOG
631	vFogDepth = - mvPosition.z;
632#endif`,fog_pars_vertex:`#ifdef USE_FOG
633	varying float vFogDepth;
634#endif`,fog_fragment:`#ifdef USE_FOG
635	#ifdef FOG_EXP2
636		float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );
637	#else
638		float fogFactor = smoothstep( fogNear, fogFar, vFogDepth );
639	#endif
640	gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );
641#endif`,fog_pars_fragment:`#ifdef USE_FOG
642	uniform vec3 fogColor;
643	varying float vFogDepth;
644	#ifdef FOG_EXP2
645		uniform float fogDensity;
646	#else
647		uniform float fogNear;
648		uniform float fogFar;
649	#endif
650#endif`,gradientmap_pars_fragment:`#ifdef USE_GRADIENTMAP
651	uniform sampler2D gradientMap;
652#endif
653vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {
654	float dotNL = dot( normal, lightDirection );
655	vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );
656	#ifdef USE_GRADIENTMAP
657		return vec3( texture2D( gradientMap, coord ).r );
658	#else
659		vec2 fw = fwidth( coord ) * 0.5;
660		return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );
661	#endif
662}`,lightmap_fragment:`#ifdef USE_LIGHTMAP
663	vec4 lightMapTexel = texture2D( lightMap, vUv2 );
664	vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
665	reflectedLight.indirectDiffuse += lightMapIrradiance;
666#endif`,lightmap_pars_fragment:`#ifdef USE_LIGHTMAP
667	uniform sampler2D lightMap;
668	uniform float lightMapIntensity;
669#endif`,lights_lambert_fragment:`LambertMaterial material;
670material.diffuseColor = diffuseColor.rgb;
671material.specularStrength = specularStrength;`,lights_lambert_pars_fragment:`varying vec3 vViewPosition;
672struct LambertMaterial {
673	vec3 diffuseColor;
674	float specularStrength;
675};
676void RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {
677	float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
678	vec3 irradiance = dotNL * directLight.color;
679	reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
680}
681void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {
682	reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
683}
684#define RE_Direct				RE_Direct_Lambert
685#define RE_IndirectDiffuse		RE_IndirectDiffuse_Lambert`,lights_pars_begin:`uniform bool receiveShadow;
686uniform vec3 ambientLightColor;
687uniform vec3 lightProbe[ 9 ];
688vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {
689	float x = normal.x, y = normal.y, z = normal.z;
690	vec3 result = shCoefficients[ 0 ] * 0.886227;
691	result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;
692	result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;
693	result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;
694	result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;
695	result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;
696	result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );
697	result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;
698	result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );
699	return result;
700}
701vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {
702	vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
703	vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );
704	return irradiance;
705}
706vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {
707	vec3 irradiance = ambientLightColor;
708	return irradiance;
709}
710float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {
711	#if defined ( PHYSICALLY_CORRECT_LIGHTS )
712		float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );
713		if ( cutoffDistance > 0.0 ) {
714			distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );
715		}
716		return distanceFalloff;
717	#else
718		if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {
719			return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );
720		}
721		return 1.0;
722	#endif
723}
724float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {
725	return smoothstep( coneCosine, penumbraCosine, angleCosine );
726}
727#if NUM_DIR_LIGHTS > 0
728	struct DirectionalLight {
729		vec3 direction;
730		vec3 color;
731	};
732	uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];
733	void getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {
734		light.color = directionalLight.color;
735		light.direction = directionalLight.direction;
736		light.visible = true;
737	}
738#endif
739#if NUM_POINT_LIGHTS > 0
740	struct PointLight {
741		vec3 position;
742		vec3 color;
743		float distance;
744		float decay;
745	};
746	uniform PointLight pointLights[ NUM_POINT_LIGHTS ];
747	void getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {
748		vec3 lVector = pointLight.position - geometry.position;
749		light.direction = normalize( lVector );
750		float lightDistance = length( lVector );
751		light.color = pointLight.color;
752		light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );
753		light.visible = ( light.color != vec3( 0.0 ) );
754	}
755#endif
756#if NUM_SPOT_LIGHTS > 0
757	struct SpotLight {
758		vec3 position;
759		vec3 direction;
760		vec3 color;
761		float distance;
762		float decay;
763		float coneCos;
764		float penumbraCos;
765	};
766	uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];
767	void getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {
768		vec3 lVector = spotLight.position - geometry.position;
769		light.direction = normalize( lVector );
770		float angleCos = dot( light.direction, spotLight.direction );
771		float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );
772		if ( spotAttenuation > 0.0 ) {
773			float lightDistance = length( lVector );
774			light.color = spotLight.color * spotAttenuation;
775			light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );
776			light.visible = ( light.color != vec3( 0.0 ) );
777		} else {
778			light.color = vec3( 0.0 );
779			light.visible = false;
780		}
781	}
782#endif
783#if NUM_RECT_AREA_LIGHTS > 0
784	struct RectAreaLight {
785		vec3 color;
786		vec3 position;
787		vec3 halfWidth;
788		vec3 halfHeight;
789	};
790	uniform sampler2D ltc_1;	uniform sampler2D ltc_2;
791	uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];
792#endif
793#if NUM_HEMI_LIGHTS > 0
794	struct HemisphereLight {
795		vec3 direction;
796		vec3 skyColor;
797		vec3 groundColor;
798	};
799	uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];
800	vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {
801		float dotNL = dot( normal, hemiLight.direction );
802		float hemiDiffuseWeight = 0.5 * dotNL + 0.5;
803		vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );
804		return irradiance;
805	}
806#endif`,lights_toon_fragment:`ToonMaterial material;
807material.diffuseColor = diffuseColor.rgb;`,lights_toon_pars_fragment:`varying vec3 vViewPosition;
808struct ToonMaterial {
809	vec3 diffuseColor;
810};
811void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
812	vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
813	reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
814}
815void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
816	reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
817}
818#define RE_Direct				RE_Direct_Toon
819#define RE_IndirectDiffuse		RE_IndirectDiffuse_Toon`,lights_phong_fragment:`BlinnPhongMaterial material;
820material.diffuseColor = diffuseColor.rgb;
821material.specularColor = specular;
822material.specularShininess = shininess;
823material.specularStrength = specularStrength;`,lights_phong_pars_fragment:`varying vec3 vViewPosition;
824struct BlinnPhongMaterial {
825	vec3 diffuseColor;
826	vec3 specularColor;
827	float specularShininess;
828	float specularStrength;
829};
830void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
831	float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
832	vec3 irradiance = dotNL * directLight.color;
833	reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
834	reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
835}
836void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
837	reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
838}
839#define RE_Direct				RE_Direct_BlinnPhong
840#define RE_IndirectDiffuse		RE_IndirectDiffuse_BlinnPhong`,lights_physical_fragment:`PhysicalMaterial material;
841material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );
842vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );
843float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );
844material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;
845material.roughness = min( material.roughness, 1.0 );
846#ifdef IOR
847	material.ior = ior;
848	#ifdef SPECULAR
849		float specularIntensityFactor = specularIntensity;
850		vec3 specularColorFactor = specularColor;
851		#ifdef USE_SPECULARINTENSITYMAP
852			specularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;
853		#endif
854		#ifdef USE_SPECULARCOLORMAP
855			specularColorFactor *= texture2D( specularColorMap, vUv ).rgb;
856		#endif
857		material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );
858	#else
859		float specularIntensityFactor = 1.0;
860		vec3 specularColorFactor = vec3( 1.0 );
861		material.specularF90 = 1.0;
862	#endif
863	material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );
864#else
865	material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );
866	material.specularF90 = 1.0;
867#endif
868#ifdef USE_CLEARCOAT
869	material.clearcoat = clearcoat;
870	material.clearcoatRoughness = clearcoatRoughness;
871	material.clearcoatF0 = vec3( 0.04 );
872	material.clearcoatF90 = 1.0;
873	#ifdef USE_CLEARCOATMAP
874		material.clearcoat *= texture2D( clearcoatMap, vUv ).x;
875	#endif
876	#ifdef USE_CLEARCOAT_ROUGHNESSMAP
877		material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;
878	#endif
879	material.clearcoat = saturate( material.clearcoat );	material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );
880	material.clearcoatRoughness += geometryRoughness;
881	material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );
882#endif
883#ifdef USE_IRIDESCENCE
884	material.iridescence = iridescence;
885	material.iridescenceIOR = iridescenceIOR;
886	#ifdef USE_IRIDESCENCEMAP
887		material.iridescence *= texture2D( iridescenceMap, vUv ).r;
888	#endif
889	#ifdef USE_IRIDESCENCE_THICKNESSMAP
890		material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;
891	#else
892		material.iridescenceThickness = iridescenceThicknessMaximum;
893	#endif
894#endif
895#ifdef USE_SHEEN
896	material.sheenColor = sheenColor;
897	#ifdef USE_SHEENCOLORMAP
898		material.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;
899	#endif
900	material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );
901	#ifdef USE_SHEENROUGHNESSMAP
902		material.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;
903	#endif
904#endif`,lights_physical_pars_fragment:`struct PhysicalMaterial {
905	vec3 diffuseColor;
906	float roughness;
907	vec3 specularColor;
908	float specularF90;
909	#ifdef USE_CLEARCOAT
910		float clearcoat;
911		float clearcoatRoughness;
912		vec3 clearcoatF0;
913		float clearcoatF90;
914	#endif
915	#ifdef USE_IRIDESCENCE
916		float iridescence;
917		float iridescenceIOR;
918		float iridescenceThickness;
919		vec3 iridescenceFresnel;
920		vec3 iridescenceF0;
921	#endif
922	#ifdef USE_SHEEN
923		vec3 sheenColor;
924		float sheenRoughness;
925	#endif
926	#ifdef IOR
927		float ior;
928	#endif
929	#ifdef USE_TRANSMISSION
930		float transmission;
931		float transmissionAlpha;
932		float thickness;
933		float attenuationDistance;
934		vec3 attenuationColor;
935	#endif
936};
937vec3 clearcoatSpecular = vec3( 0.0 );
938vec3 sheenSpecular = vec3( 0.0 );
939float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {
940	float dotNV = saturate( dot( normal, viewDir ) );
941	float r2 = roughness * roughness;
942	float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;
943	float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;
944	float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );
945	return saturate( DG * RECIPROCAL_PI );
946}
947vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {
948	float dotNV = saturate( dot( normal, viewDir ) );
949	const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );
950	const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );
951	vec4 r = roughness * c0 + c1;
952	float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;
953	vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;
954	return fab;
955}
956vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {
957	vec2 fab = DFGApprox( normal, viewDir, roughness );
958	return specularColor * fab.x + specularF90 * fab.y;
959}
960#ifdef USE_IRIDESCENCE
961void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {
962#else
963void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {
964#endif
965	vec2 fab = DFGApprox( normal, viewDir, roughness );
966	#ifdef USE_IRIDESCENCE
967		vec3 Fr = mix( specularColor, iridescenceF0, iridescence );
968	#else
969		vec3 Fr = specularColor;
970	#endif
971	vec3 FssEss = Fr * fab.x + specularF90 * fab.y;
972	float Ess = fab.x + fab.y;
973	float Ems = 1.0 - Ess;
974	vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;	vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );
975	singleScatter += FssEss;
976	multiScatter += Fms * Ems;
977}
978#if NUM_RECT_AREA_LIGHTS > 0
979	void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
980		vec3 normal = geometry.normal;
981		vec3 viewDir = geometry.viewDir;
982		vec3 position = geometry.position;
983		vec3 lightPos = rectAreaLight.position;
984		vec3 halfWidth = rectAreaLight.halfWidth;
985		vec3 halfHeight = rectAreaLight.halfHeight;
986		vec3 lightColor = rectAreaLight.color;
987		float roughness = material.roughness;
988		vec3 rectCoords[ 4 ];
989		rectCoords[ 0 ] = lightPos + halfWidth - halfHeight;		rectCoords[ 1 ] = lightPos - halfWidth - halfHeight;
990		rectCoords[ 2 ] = lightPos - halfWidth + halfHeight;
991		rectCoords[ 3 ] = lightPos + halfWidth + halfHeight;
992		vec2 uv = LTC_Uv( normal, viewDir, roughness );
993		vec4 t1 = texture2D( ltc_1, uv );
994		vec4 t2 = texture2D( ltc_2, uv );
995		mat3 mInv = mat3(
996			vec3( t1.x, 0, t1.y ),
997			vec3(    0, 1,    0 ),
998			vec3( t1.z, 0, t1.w )
999		);
1000		vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );
1001		reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );
1002		reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );
1003	}
1004#endif
1005void RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
1006	float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
1007	vec3 irradiance = dotNL * directLight.color;
1008	#ifdef USE_CLEARCOAT
1009		float dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );
1010		vec3 ccIrradiance = dotNLcc * directLight.color;
1011		clearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );
1012	#endif
1013	#ifdef USE_SHEEN
1014		sheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );
1015	#endif
1016	#ifdef USE_IRIDESCENCE
1017		reflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );
1018	#else
1019		reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );
1020	#endif
1021	reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
1022}
1023void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
1024	reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
1025}
1026void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
1027	#ifdef USE_CLEARCOAT
1028		clearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );
1029	#endif
1030	#ifdef USE_SHEEN
1031		sheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );
1032	#endif
1033	vec3 singleScattering = vec3( 0.0 );
1034	vec3 multiScattering = vec3( 0.0 );
1035	vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;
1036	#ifdef USE_IRIDESCENCE
1037		computeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );
1038	#else
1039		computeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );
1040	#endif
1041	vec3 totalScattering = singleScattering + multiScattering;
1042	vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );
1043	reflectedLight.indirectSpecular += radiance * singleScattering;
1044	reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;
1045	reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;
1046}
1047#define RE_Direct				RE_Direct_Physical
1048#define RE_Direct_RectArea		RE_Direct_RectArea_Physical
1049#define RE_IndirectDiffuse		RE_IndirectDiffuse_Physical
1050#define RE_IndirectSpecular		RE_IndirectSpecular_Physical
1051float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {
1052	return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );
1053}`,lights_fragment_begin:`
1054GeometricContext geometry;
1055geometry.position = - vViewPosition;
1056geometry.normal = normal;
1057geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );
1058#ifdef USE_CLEARCOAT
1059	geometry.clearcoatNormal = clearcoatNormal;
1060#endif
1061#ifdef USE_IRIDESCENCE
1062	float dotNVi = saturate( dot( normal, geometry.viewDir ) );
1063	if ( material.iridescenceThickness == 0.0 ) {
1064		material.iridescence = 0.0;
1065	} else {
1066		material.iridescence = saturate( material.iridescence );
1067	}
1068	if ( material.iridescence > 0.0 ) {
1069		material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );
1070		material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );
1071	}
1072#endif
1073IncidentLight directLight;
1074#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )
1075	PointLight pointLight;
1076	#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0
1077	PointLightShadow pointLightShadow;
1078	#endif
1079	#pragma unroll_loop_start
1080	for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
1081		pointLight = pointLights[ i ];
1082		getPointLightInfo( pointLight, geometry, directLight );
1083		#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )
1084		pointLightShadow = pointLightShadows[ i ];
1085		directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
1086		#endif
1087		RE_Direct( directLight, geometry, material, reflectedLight );
1088	}
1089	#pragma unroll_loop_end
1090#endif
1091#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )
1092	SpotLight spotLight;
1093	vec4 spotColor;
1094	vec3 spotLightCoord;
1095	bool inSpotLightMap;
1096	#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0
1097	SpotLightShadow spotLightShadow;
1098	#endif
1099	#pragma unroll_loop_start
1100	for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
1101		spotLight = spotLights[ i ];
1102		getSpotLightInfo( spotLight, geometry, directLight );
1103		#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )
1104		#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX
1105		#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
1106		#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS
1107		#else
1108		#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )
1109		#endif
1110		#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )
1111			spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;
1112			inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );
1113			spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );
1114			directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;
1115		#endif
1116		#undef SPOT_LIGHT_MAP_INDEX
1117		#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
1118		spotLightShadow = spotLightShadows[ i ];
1119		directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
1120		#endif
1121		RE_Direct( directLight, geometry, material, reflectedLight );
1122	}
1123	#pragma unroll_loop_end
1124#endif
1125#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )
1126	DirectionalLight directionalLight;
1127	#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0
1128	DirectionalLightShadow directionalLightShadow;
1129	#endif
1130	#pragma unroll_loop_start
1131	for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
1132		directionalLight = directionalLights[ i ];
1133		getDirectionalLightInfo( directionalLight, geometry, directLight );
1134		#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )
1135		directionalLightShadow = directionalLightShadows[ i ];
1136		directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
1137		#endif
1138		RE_Direct( directLight, geometry, material, reflectedLight );
1139	}
1140	#pragma unroll_loop_end
1141#endif
1142#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )
1143	RectAreaLight rectAreaLight;
1144	#pragma unroll_loop_start
1145	for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {
1146		rectAreaLight = rectAreaLights[ i ];
1147		RE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );
1148	}
1149	#pragma unroll_loop_end
1150#endif
1151#if defined( RE_IndirectDiffuse )
1152	vec3 iblIrradiance = vec3( 0.0 );
1153	vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );
1154	irradiance += getLightProbeIrradiance( lightProbe, geometry.normal );
1155	#if ( NUM_HEMI_LIGHTS > 0 )
1156		#pragma unroll_loop_start
1157		for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
1158			irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
1159		}
1160		#pragma unroll_loop_end
1161	#endif
1162#endif
1163#if defined( RE_IndirectSpecular )
1164	vec3 radiance = vec3( 0.0 );
1165	vec3 clearcoatRadiance = vec3( 0.0 );
1166#endif`,lights_fragment_maps:`#if defined( RE_IndirectDiffuse )
1167	#ifdef USE_LIGHTMAP
1168		vec4 lightMapTexel = texture2D( lightMap, vUv2 );
1169		vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
1170		irradiance += lightMapIrradiance;
1171	#endif
1172	#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )
1173		iblIrradiance += getIBLIrradiance( geometry.normal );
1174	#endif
1175#endif
1176#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )
1177	radiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );
1178	#ifdef USE_CLEARCOAT
1179		clearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );
1180	#endif
1181#endif`,lights_fragment_end:`#if defined( RE_IndirectDiffuse )
1182	RE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );
1183#endif
1184#if defined( RE_IndirectSpecular )
1185	RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );
1186#endif`,logdepthbuf_fragment:`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )
1187	gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;
1188#endif`,logdepthbuf_pars_fragment:`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )
1189	uniform float logDepthBufFC;
1190	varying float vFragDepth;
1191	varying float vIsPerspective;
1192#endif`,logdepthbuf_pars_vertex:`#ifdef USE_LOGDEPTHBUF
1193	#ifdef USE_LOGDEPTHBUF_EXT
1194		varying float vFragDepth;
1195		varying float vIsPerspective;
1196	#else
1197		uniform float logDepthBufFC;
1198	#endif
1199#endif`,logdepthbuf_vertex:`#ifdef USE_LOGDEPTHBUF
1200	#ifdef USE_LOGDEPTHBUF_EXT
1201		vFragDepth = 1.0 + gl_Position.w;
1202		vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
1203	#else
1204		if ( isPerspectiveMatrix( projectionMatrix ) ) {
1205			gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;
1206			gl_Position.z *= gl_Position.w;
1207		}
1208	#endif
1209#endif`,map_fragment:`#ifdef USE_MAP
1210	vec4 sampledDiffuseColor = texture2D( map, vUv );
1211	#ifdef DECODE_VIDEO_TEXTURE
1212		sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );
1213	#endif
1214	diffuseColor *= sampledDiffuseColor;
1215#endif`,map_pars_fragment:`#ifdef USE_MAP
1216	uniform sampler2D map;
1217#endif`,map_particle_fragment:`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
1218	vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;
1219#endif
1220#ifdef USE_MAP
1221	diffuseColor *= texture2D( map, uv );
1222#endif
1223#ifdef USE_ALPHAMAP
1224	diffuseColor.a *= texture2D( alphaMap, uv ).g;
1225#endif`,map_particle_pars_fragment:`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
1226	uniform mat3 uvTransform;
1227#endif
1228#ifdef USE_MAP
1229	uniform sampler2D map;
1230#endif
1231#ifdef USE_ALPHAMAP
1232	uniform sampler2D alphaMap;
1233#endif`,metalnessmap_fragment:`float metalnessFactor = metalness;
1234#ifdef USE_METALNESSMAP
1235	vec4 texelMetalness = texture2D( metalnessMap, vUv );
1236	metalnessFactor *= texelMetalness.b;
1237#endif`,metalnessmap_pars_fragment:`#ifdef USE_METALNESSMAP
1238	uniform sampler2D metalnessMap;
1239#endif`,morphcolor_vertex:`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )
1240	vColor *= morphTargetBaseInfluence;
1241	for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
1242		#if defined( USE_COLOR_ALPHA )
1243			if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];
1244		#elif defined( USE_COLOR )
1245			if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];
1246		#endif
1247	}
1248#endif`,morphnormal_vertex:`#ifdef USE_MORPHNORMALS
1249	objectNormal *= morphTargetBaseInfluence;
1250	#ifdef MORPHTARGETS_TEXTURE
1251		for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
1252			if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];
1253		}
1254	#else
1255		objectNormal += morphNormal0 * morphTargetInfluences[ 0 ];
1256		objectNormal += morphNormal1 * morphTargetInfluences[ 1 ];
1257		objectNormal += morphNormal2 * morphTargetInfluences[ 2 ];
1258		objectNormal += morphNormal3 * morphTargetInfluences[ 3 ];
1259	#endif
1260#endif`,morphtarget_pars_vertex:`#ifdef USE_MORPHTARGETS
1261	uniform float morphTargetBaseInfluence;
1262	#ifdef MORPHTARGETS_TEXTURE
1263		uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];
1264		uniform sampler2DArray morphTargetsTexture;
1265		uniform ivec2 morphTargetsTextureSize;
1266		vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {
1267			int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;
1268			int y = texelIndex / morphTargetsTextureSize.x;
1269			int x = texelIndex - y * morphTargetsTextureSize.x;
1270			ivec3 morphUV = ivec3( x, y, morphTargetIndex );
1271			return texelFetch( morphTargetsTexture, morphUV, 0 );
1272		}
1273	#else
1274		#ifndef USE_MORPHNORMALS
1275			uniform float morphTargetInfluences[ 8 ];
1276		#else
1277			uniform float morphTargetInfluences[ 4 ];
1278		#endif
1279	#endif
1280#endif`,morphtarget_vertex:`#ifdef USE_MORPHTARGETS
1281	transformed *= morphTargetBaseInfluence;
1282	#ifdef MORPHTARGETS_TEXTURE
1283		for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
1284			if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];
1285		}
1286	#else
1287		transformed += morphTarget0 * morphTargetInfluences[ 0 ];
1288		transformed += morphTarget1 * morphTargetInfluences[ 1 ];
1289		transformed += morphTarget2 * morphTargetInfluences[ 2 ];
1290		transformed += morphTarget3 * morphTargetInfluences[ 3 ];
1291		#ifndef USE_MORPHNORMALS
1292			transformed += morphTarget4 * morphTargetInfluences[ 4 ];
1293			transformed += morphTarget5 * morphTargetInfluences[ 5 ];
1294			transformed += morphTarget6 * morphTargetInfluences[ 6 ];
1295			transformed += morphTarget7 * morphTargetInfluences[ 7 ];
1296		#endif
1297	#endif
1298#endif`,normal_fragment_begin:`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
1299#ifdef FLAT_SHADED
1300	vec3 fdx = dFdx( vViewPosition );
1301	vec3 fdy = dFdy( vViewPosition );
1302	vec3 normal = normalize( cross( fdx, fdy ) );
1303#else
1304	vec3 normal = normalize( vNormal );
1305	#ifdef DOUBLE_SIDED
1306		normal = normal * faceDirection;
1307	#endif
1308	#ifdef USE_TANGENT
1309		vec3 tangent = normalize( vTangent );
1310		vec3 bitangent = normalize( vBitangent );
1311		#ifdef DOUBLE_SIDED
1312			tangent = tangent * faceDirection;
1313			bitangent = bitangent * faceDirection;
1314		#endif
1315		#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )
1316			mat3 vTBN = mat3( tangent, bitangent, normal );
1317		#endif
1318	#endif
1319#endif
1320vec3 geometryNormal = normal;`,normal_fragment_maps:`#ifdef OBJECTSPACE_NORMALMAP
1321	normal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;
1322	#ifdef FLIP_SIDED
1323		normal = - normal;
1324	#endif
1325	#ifdef DOUBLE_SIDED
1326		normal = normal * faceDirection;
1327	#endif
1328	normal = normalize( normalMatrix * normal );
1329#elif defined( TANGENTSPACE_NORMALMAP )
1330	vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;
1331	mapN.xy *= normalScale;
1332	#ifdef USE_TANGENT
1333		normal = normalize( vTBN * mapN );
1334	#else
1335		normal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );
1336	#endif
1337#elif defined( USE_BUMPMAP )
1338	normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );
1339#endif`,normal_pars_fragment:`#ifndef FLAT_SHADED
1340	varying vec3 vNormal;
1341	#ifdef USE_TANGENT
1342		varying vec3 vTangent;
1343		varying vec3 vBitangent;
1344	#endif
1345#endif`,normal_pars_vertex:`#ifndef FLAT_SHADED
1346	varying vec3 vNormal;
1347	#ifdef USE_TANGENT
1348		varying vec3 vTangent;
1349		varying vec3 vBitangent;
1350	#endif
1351#endif`,normal_vertex:`#ifndef FLAT_SHADED
1352	vNormal = normalize( transformedNormal );
1353	#ifdef USE_TANGENT
1354		vTangent = normalize( transformedTangent );
1355		vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );
1356	#endif
1357#endif`,normalmap_pars_fragment:`#ifdef USE_NORMALMAP
1358	uniform sampler2D normalMap;
1359	uniform vec2 normalScale;
1360#endif
1361#ifdef OBJECTSPACE_NORMALMAP
1362	uniform mat3 normalMatrix;
1363#endif
1364#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )
1365	vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {
1366		vec3 q0 = dFdx( eye_pos.xyz );
1367		vec3 q1 = dFdy( eye_pos.xyz );
1368		vec2 st0 = dFdx( vUv.st );
1369		vec2 st1 = dFdy( vUv.st );
1370		vec3 N = surf_norm;
1371		vec3 q1perp = cross( q1, N );
1372		vec3 q0perp = cross( N, q0 );
1373		vec3 T = q1perp * st0.x + q0perp * st1.x;
1374		vec3 B = q1perp * st0.y + q0perp * st1.y;
1375		float det = max( dot( T, T ), dot( B, B ) );
1376		float scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );
1377		return normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );
1378	}
1379#endif`,clearcoat_normal_fragment_begin:`#ifdef USE_CLEARCOAT
1380	vec3 clearcoatNormal = geometryNormal;
1381#endif`,clearcoat_normal_fragment_maps:`#ifdef USE_CLEARCOAT_NORMALMAP
1382	vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;
1383	clearcoatMapN.xy *= clearcoatNormalScale;
1384	#ifdef USE_TANGENT
1385		clearcoatNormal = normalize( vTBN * clearcoatMapN );
1386	#else
1387		clearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );
1388	#endif
1389#endif`,clearcoat_pars_fragment:`#ifdef USE_CLEARCOATMAP
1390	uniform sampler2D clearcoatMap;
1391#endif
1392#ifdef USE_CLEARCOAT_ROUGHNESSMAP
1393	uniform sampler2D clearcoatRoughnessMap;
1394#endif
1395#ifdef USE_CLEARCOAT_NORMALMAP
1396	uniform sampler2D clearcoatNormalMap;
1397	uniform vec2 clearcoatNormalScale;
1398#endif`,iridescence_pars_fragment:`#ifdef USE_IRIDESCENCEMAP
1399	uniform sampler2D iridescenceMap;
1400#endif
1401#ifdef USE_IRIDESCENCE_THICKNESSMAP
1402	uniform sampler2D iridescenceThicknessMap;
1403#endif`,output_fragment:`#ifdef OPAQUE
1404diffuseColor.a = 1.0;
1405#endif
1406#ifdef USE_TRANSMISSION
1407diffuseColor.a *= material.transmissionAlpha + 0.1;
1408#endif
1409gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,packing:`vec3 packNormalToRGB( const in vec3 normal ) {
1410	return normalize( normal ) * 0.5 + 0.5;
1411}
1412vec3 unpackRGBToNormal( const in vec3 rgb ) {
1413	return 2.0 * rgb.xyz - 1.0;
1414}
1415const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;
1416const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );
1417const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );
1418const float ShiftRight8 = 1. / 256.;
1419vec4 packDepthToRGBA( const in float v ) {
1420	vec4 r = vec4( fract( v * PackFactors ), v );
1421	r.yzw -= r.xyz * ShiftRight8;	return r * PackUpscale;
1422}
1423float unpackRGBAToDepth( const in vec4 v ) {
1424	return dot( v, UnpackFactors );
1425}
1426vec2 packDepthToRG( in highp float v ) {
1427	return packDepthToRGBA( v ).yx;
1428}
1429float unpackRGToDepth( const in highp vec2 v ) {
1430	return unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );
1431}
1432vec4 pack2HalfToRGBA( vec2 v ) {
1433	vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );
1434	return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );
1435}
1436vec2 unpackRGBATo2Half( vec4 v ) {
1437	return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );
1438}
1439float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {
1440	return ( viewZ + near ) / ( near - far );
1441}
1442float orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {
1443	return linearClipZ * ( near - far ) - near;
1444}
1445float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {
1446	return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );
1447}
1448float perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {
1449	return ( near * far ) / ( ( far - near ) * invClipZ - far );
1450}`,premultiplied_alpha_fragment:`#ifdef PREMULTIPLIED_ALPHA
1451	gl_FragColor.rgb *= gl_FragColor.a;
1452#endif`,project_vertex:`vec4 mvPosition = vec4( transformed, 1.0 );
1453#ifdef USE_INSTANCING
1454	mvPosition = instanceMatrix * mvPosition;
1455#endif
1456mvPosition = modelViewMatrix * mvPosition;
1457gl_Position = projectionMatrix * mvPosition;`,dithering_fragment:`#ifdef DITHERING
1458	gl_FragColor.rgb = dithering( gl_FragColor.rgb );
1459#endif`,dithering_pars_fragment:`#ifdef DITHERING
1460	vec3 dithering( vec3 color ) {
1461		float grid_position = rand( gl_FragCoord.xy );
1462		vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );
1463		dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );
1464		return color + dither_shift_RGB;
1465	}
1466#endif`,roughnessmap_fragment:`float roughnessFactor = roughness;
1467#ifdef USE_ROUGHNESSMAP
1468	vec4 texelRoughness = texture2D( roughnessMap, vUv );
1469	roughnessFactor *= texelRoughness.g;
1470#endif`,roughnessmap_pars_fragment:`#ifdef USE_ROUGHNESSMAP
1471	uniform sampler2D roughnessMap;
1472#endif`,shadowmap_pars_fragment:`#if NUM_SPOT_LIGHT_COORDS > 0
1473  varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];
1474#endif
1475#if NUM_SPOT_LIGHT_MAPS > 0
1476  uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];
1477#endif
1478#ifdef USE_SHADOWMAP
1479	#if NUM_DIR_LIGHT_SHADOWS > 0
1480		uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];
1481		varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
1482		struct DirectionalLightShadow {
1483			float shadowBias;
1484			float shadowNormalBias;
1485			float shadowRadius;
1486			vec2 shadowMapSize;
1487		};
1488		uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];
1489	#endif
1490	#if NUM_SPOT_LIGHT_SHADOWS > 0
1491		uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];
1492		struct SpotLightShadow {
1493			float shadowBias;
1494			float shadowNormalBias;
1495			float shadowRadius;
1496			vec2 shadowMapSize;
1497		};
1498		uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];
1499	#endif
1500	#if NUM_POINT_LIGHT_SHADOWS > 0
1501		uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];
1502		varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
1503		struct PointLightShadow {
1504			float shadowBias;
1505			float shadowNormalBias;
1506			float shadowRadius;
1507			vec2 shadowMapSize;
1508			float shadowCameraNear;
1509			float shadowCameraFar;
1510		};
1511		uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
1512	#endif
1513	float texture2DCompare( sampler2D depths, vec2 uv, float compare ) {
1514		return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );
1515	}
1516	vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {
1517		return unpackRGBATo2Half( texture2D( shadow, uv ) );
1518	}
1519	float VSMShadow (sampler2D shadow, vec2 uv, float compare ){
1520		float occlusion = 1.0;
1521		vec2 distribution = texture2DDistribution( shadow, uv );
1522		float hard_shadow = step( compare , distribution.x );
1523		if (hard_shadow != 1.0 ) {
1524			float distance = compare - distribution.x ;
1525			float variance = max( 0.00000, distribution.y * distribution.y );
1526			float softness_probability = variance / (variance + distance * distance );			softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );			occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );
1527		}
1528		return occlusion;
1529	}
1530	float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {
1531		float shadow = 1.0;
1532		shadowCoord.xyz /= shadowCoord.w;
1533		shadowCoord.z += shadowBias;
1534		bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;
1535		bool frustumTest = inFrustum && shadowCoord.z <= 1.0;
1536		if ( frustumTest ) {
1537		#if defined( SHADOWMAP_TYPE_PCF )
1538			vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
1539			float dx0 = - texelSize.x * shadowRadius;
1540			float dy0 = - texelSize.y * shadowRadius;
1541			float dx1 = + texelSize.x * shadowRadius;
1542			float dy1 = + texelSize.y * shadowRadius;
1543			float dx2 = dx0 / 2.0;
1544			float dy2 = dy0 / 2.0;
1545			float dx3 = dx1 / 2.0;
1546			float dy3 = dy1 / 2.0;
1547			shadow = (
1548				texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +
1549				texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +
1550				texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +
1551				texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +
1552				texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +
1553				texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +
1554				texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +
1555				texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +
1556				texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +
1557				texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +
1558				texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +
1559				texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +
1560				texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +
1561				texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +
1562				texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +
1563				texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +
1564				texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )
1565			) * ( 1.0 / 17.0 );
1566		#elif defined( SHADOWMAP_TYPE_PCF_SOFT )
1567			vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
1568			float dx = texelSize.x;
1569			float dy = texelSize.y;
1570			vec2 uv = shadowCoord.xy;
1571			vec2 f = fract( uv * shadowMapSize + 0.5 );
1572			uv -= f * texelSize;
1573			shadow = (
1574				texture2DCompare( shadowMap, uv, shadowCoord.z ) +
1575				texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +
1576				texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +
1577				texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +
1578				mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),
1579					 texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),
1580					 f.x ) +
1581				mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),
1582					 texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),
1583					 f.x ) +
1584				mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),
1585					 texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),
1586					 f.y ) +
1587				mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),
1588					 texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),
1589					 f.y ) +
1590				mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),
1591						  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),
1592						  f.x ),
1593					 mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),
1594						  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),
1595						  f.x ),
1596					 f.y )
1597			) * ( 1.0 / 9.0 );
1598		#elif defined( SHADOWMAP_TYPE_VSM )
1599			shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );
1600		#else
1601			shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );
1602		#endif
1603		}
1604		return shadow;
1605	}
1606	vec2 cubeToUV( vec3 v, float texelSizeY ) {
1607		vec3 absV = abs( v );
1608		float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );
1609		absV *= scaleToCube;
1610		v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );
1611		vec2 planar = v.xy;
1612		float almostATexel = 1.5 * texelSizeY;
1613		float almostOne = 1.0 - almostATexel;
1614		if ( absV.z >= almostOne ) {
1615			if ( v.z > 0.0 )
1616				planar.x = 4.0 - v.x;
1617		} else if ( absV.x >= almostOne ) {
1618			float signX = sign( v.x );
1619			planar.x = v.z * signX + 2.0 * signX;
1620		} else if ( absV.y >= almostOne ) {
1621			float signY = sign( v.y );
1622			planar.x = v.x + 2.0 * signY + 2.0;
1623			planar.y = v.z * signY - 2.0;
1624		}
1625		return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );
1626	}
1627	float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {
1628		vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );
1629		vec3 lightToPosition = shadowCoord.xyz;
1630		float dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );		dp += shadowBias;
1631		vec3 bd3D = normalize( lightToPosition );
1632		#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )
1633			vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;
1634			return (
1635				texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +
1636				texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +
1637				texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +
1638				texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +
1639				texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +
1640				texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +
1641				texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +
1642				texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +
1643				texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )
1644			) * ( 1.0 / 9.0 );
1645		#else
1646			return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );
1647		#endif
1648	}
1649#endif`,shadowmap_pars_vertex:`#if NUM_SPOT_LIGHT_COORDS > 0
1650  uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];
1651  varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];
1652#endif
1653#ifdef USE_SHADOWMAP
1654	#if NUM_DIR_LIGHT_SHADOWS > 0
1655		uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];
1656		varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
1657		struct DirectionalLightShadow {
1658			float shadowBias;
1659			float shadowNormalBias;
1660			float shadowRadius;
1661			vec2 shadowMapSize;
1662		};
1663		uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];
1664	#endif
1665	#if NUM_SPOT_LIGHT_SHADOWS > 0
1666		struct SpotLightShadow {
1667			float shadowBias;
1668			float shadowNormalBias;
1669			float shadowRadius;
1670			vec2 shadowMapSize;
1671		};
1672		uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];
1673	#endif
1674	#if NUM_POINT_LIGHT_SHADOWS > 0
1675		uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];
1676		varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
1677		struct PointLightShadow {
1678			float shadowBias;
1679			float shadowNormalBias;
1680			float shadowRadius;
1681			vec2 shadowMapSize;
1682			float shadowCameraNear;
1683			float shadowCameraFar;
1684		};
1685		uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
1686	#endif
1687#endif`,shadowmap_vertex:`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )
1688	vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
1689	vec4 shadowWorldPosition;
1690#endif
1691#if defined( USE_SHADOWMAP )
1692	#if NUM_DIR_LIGHT_SHADOWS > 0
1693		#pragma unroll_loop_start
1694		for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
1695			shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );
1696			vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;
1697		}
1698		#pragma unroll_loop_end
1699	#endif
1700	#if NUM_POINT_LIGHT_SHADOWS > 0
1701		#pragma unroll_loop_start
1702		for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
1703			shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );
1704			vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;
1705		}
1706		#pragma unroll_loop_end
1707	#endif
1708#endif
1709#if NUM_SPOT_LIGHT_COORDS > 0
1710	#pragma unroll_loop_start
1711	for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {
1712		shadowWorldPosition = worldPosition;
1713		#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
1714			shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;
1715		#endif
1716		vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;
1717	}
1718	#pragma unroll_loop_end
1719#endif`,shadowmask_pars_fragment:`float getShadowMask() {
1720	float shadow = 1.0;
1721	#ifdef USE_SHADOWMAP
1722	#if NUM_DIR_LIGHT_SHADOWS > 0
1723	DirectionalLightShadow directionalLight;
1724	#pragma unroll_loop_start
1725	for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
1726		directionalLight = directionalLightShadows[ i ];
1727		shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
1728	}
1729	#pragma unroll_loop_end
1730	#endif
1731	#if NUM_SPOT_LIGHT_SHADOWS > 0
1732	SpotLightShadow spotLight;
1733	#pragma unroll_loop_start
1734	for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {
1735		spotLight = spotLightShadows[ i ];
1736		shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
1737	}
1738	#pragma unroll_loop_end
1739	#endif
1740	#if NUM_POINT_LIGHT_SHADOWS > 0
1741	PointLightShadow pointLight;
1742	#pragma unroll_loop_start
1743	for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
1744		pointLight = pointLightShadows[ i ];
1745		shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;
1746	}
1747	#pragma unroll_loop_end
1748	#endif
1749	#endif
1750	return shadow;
1751}`,skinbase_vertex:`#ifdef USE_SKINNING
1752	mat4 boneMatX = getBoneMatrix( skinIndex.x );
1753	mat4 boneMatY = getBoneMatrix( skinIndex.y );
1754	mat4 boneMatZ = getBoneMatrix( skinIndex.z );
1755	mat4 boneMatW = getBoneMatrix( skinIndex.w );
1756#endif`,skinning_pars_vertex:`#ifdef USE_SKINNING
1757	uniform mat4 bindMatrix;
1758	uniform mat4 bindMatrixInverse;
1759	uniform highp sampler2D boneTexture;
1760	uniform int boneTextureSize;
1761	mat4 getBoneMatrix( const in float i ) {
1762		float j = i * 4.0;
1763		float x = mod( j, float( boneTextureSize ) );
1764		float y = floor( j / float( boneTextureSize ) );
1765		float dx = 1.0 / float( boneTextureSize );
1766		float dy = 1.0 / float( boneTextureSize );
1767		y = dy * ( y + 0.5 );
1768		vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );
1769		vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );
1770		vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );
1771		vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );
1772		mat4 bone = mat4( v1, v2, v3, v4 );
1773		return bone;
1774	}
1775#endif`,skinning_vertex:`#ifdef USE_SKINNING
1776	vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );
1777	vec4 skinned = vec4( 0.0 );
1778	skinned += boneMatX * skinVertex * skinWeight.x;
1779	skinned += boneMatY * skinVertex * skinWeight.y;
1780	skinned += boneMatZ * skinVertex * skinWeight.z;
1781	skinned += boneMatW * skinVertex * skinWeight.w;
1782	transformed = ( bindMatrixInverse * skinned ).xyz;
1783#endif`,skinnormal_vertex:`#ifdef USE_SKINNING
1784	mat4 skinMatrix = mat4( 0.0 );
1785	skinMatrix += skinWeight.x * boneMatX;
1786	skinMatrix += skinWeight.y * boneMatY;
1787	skinMatrix += skinWeight.z * boneMatZ;
1788	skinMatrix += skinWeight.w * boneMatW;
1789	skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;
1790	objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;
1791	#ifdef USE_TANGENT
1792		objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;
1793	#endif
1794#endif`,specularmap_fragment:`float specularStrength;
1795#ifdef USE_SPECULARMAP
1796	vec4 texelSpecular = texture2D( specularMap, vUv );
1797	specularStrength = texelSpecular.r;
1798#else
1799	specularStrength = 1.0;
1800#endif`,specularmap_pars_fragment:`#ifdef USE_SPECULARMAP
1801	uniform sampler2D specularMap;
1802#endif`,tonemapping_fragment:`#if defined( TONE_MAPPING )
1803	gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );
1804#endif`,tonemapping_pars_fragment:`#ifndef saturate
1805#define saturate( a ) clamp( a, 0.0, 1.0 )
1806#endif
1807uniform float toneMappingExposure;
1808vec3 LinearToneMapping( vec3 color ) {
1809	return toneMappingExposure * color;
1810}
1811vec3 ReinhardToneMapping( vec3 color ) {
1812	color *= toneMappingExposure;
1813	return saturate( color / ( vec3( 1.0 ) + color ) );
1814}
1815vec3 OptimizedCineonToneMapping( vec3 color ) {
1816	color *= toneMappingExposure;
1817	color = max( vec3( 0.0 ), color - 0.004 );
1818	return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );
1819}
1820vec3 RRTAndODTFit( vec3 v ) {
1821	vec3 a = v * ( v + 0.0245786 ) - 0.000090537;
1822	vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;
1823	return a / b;
1824}
1825vec3 ACESFilmicToneMapping( vec3 color ) {
1826	const mat3 ACESInputMat = mat3(
1827		vec3( 0.59719, 0.07600, 0.02840 ),		vec3( 0.35458, 0.90834, 0.13383 ),
1828		vec3( 0.04823, 0.01566, 0.83777 )
1829	);
1830	const mat3 ACESOutputMat = mat3(
1831		vec3(  1.60475, -0.10208, -0.00327 ),		vec3( -0.53108,  1.10813, -0.07276 ),
1832		vec3( -0.07367, -0.00605,  1.07602 )
1833	);
1834	color *= toneMappingExposure / 0.6;
1835	color = ACESInputMat * color;
1836	color = RRTAndODTFit( color );
1837	color = ACESOutputMat * color;
1838	return saturate( color );
1839}
1840vec3 CustomToneMapping( vec3 color ) { return color; }`,transmission_fragment:`#ifdef USE_TRANSMISSION
1841	material.transmission = transmission;
1842	material.transmissionAlpha = 1.0;
1843	material.thickness = thickness;
1844	material.attenuationDistance = attenuationDistance;
1845	material.attenuationColor = attenuationColor;
1846	#ifdef USE_TRANSMISSIONMAP
1847		material.transmission *= texture2D( transmissionMap, vUv ).r;
1848	#endif
1849	#ifdef USE_THICKNESSMAP
1850		material.thickness *= texture2D( thicknessMap, vUv ).g;
1851	#endif
1852	vec3 pos = vWorldPosition;
1853	vec3 v = normalize( cameraPosition - pos );
1854	vec3 n = inverseTransformDirection( normal, viewMatrix );
1855	vec4 transmission = getIBLVolumeRefraction(
1856		n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,
1857		pos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,
1858		material.attenuationColor, material.attenuationDistance );
1859	material.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission );
1860	totalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );
1861#endif`,transmission_pars_fragment:`#ifdef USE_TRANSMISSION
1862	uniform float transmission;
1863	uniform float thickness;
1864	uniform float attenuationDistance;
1865	uniform vec3 attenuationColor;
1866	#ifdef USE_TRANSMISSIONMAP
1867		uniform sampler2D transmissionMap;
1868	#endif
1869	#ifdef USE_THICKNESSMAP
1870		uniform sampler2D thicknessMap;
1871	#endif
1872	uniform vec2 transmissionSamplerSize;
1873	uniform sampler2D transmissionSamplerMap;
1874	uniform mat4 modelMatrix;
1875	uniform mat4 projectionMatrix;
1876	varying vec3 vWorldPosition;
1877	vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {
1878		vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );
1879		vec3 modelScale;
1880		modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );
1881		modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );
1882		modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
1883		return normalize( refractionVector ) * thickness * modelScale;
1884	}
1885	float applyIorToRoughness( const in float roughness, const in float ior ) {
1886		return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
1887	}
1888	vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {
1889		float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
1890		#ifdef texture2DLodEXT
1891			return texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );
1892		#else
1893			return texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );
1894		#endif
1895	}
1896	vec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {
1897		if ( isinf( attenuationDistance ) ) {
1898			return radiance;
1899		} else {
1900			vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;
1901			vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );			return transmittance * radiance;
1902		}
1903	}
1904	vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,
1905		const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,
1906		const in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,
1907		const in vec3 attenuationColor, const in float attenuationDistance ) {
1908		vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
1909		vec3 refractedRayExit = position + transmissionRay;
1910		vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );
1911		vec2 refractionCoords = ndcPos.xy / ndcPos.w;
1912		refractionCoords += 1.0;
1913		refractionCoords /= 2.0;
1914		vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );
1915		vec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );
1916		vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );
1917		return vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );
1918	}
1919#endif`,uv_pars_fragment:`#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )
1920	varying vec2 vUv;
1921#endif`,uv_pars_vertex:`#ifdef USE_UV
1922	#ifdef UVS_VERTEX_ONLY
1923		vec2 vUv;
1924	#else
1925		varying vec2 vUv;
1926	#endif
1927	uniform mat3 uvTransform;
1928#endif`,uv_vertex:`#ifdef USE_UV
1929	vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
1930#endif`,uv2_pars_fragment:`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
1931	varying vec2 vUv2;
1932#endif`,uv2_pars_vertex:`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
1933	attribute vec2 uv2;
1934	varying vec2 vUv2;
1935	uniform mat3 uv2Transform;
1936#endif`,uv2_vertex:`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
1937	vUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;
1938#endif`,worldpos_vertex:`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_L
1938IGHT_COORDS > 0
1939	vec4 worldPosition = vec4( transformed, 1.0 );
1940	#ifdef USE_INSTANCING
1941		worldPosition = instanceMatrix * worldPosition;
1942	#endif
1943	worldPosition = modelMatrix * worldPosition;
1944#endif`,background_vert:`varying vec2 vUv;
1945uniform mat3 uvTransform;
1946void main() {
1947	vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
1948	gl_Position = vec4( position.xy, 1.0, 1.0 );
1949}`,background_frag:`uniform sampler2D t2D;
1950uniform float backgroundIntensity;
1951varying vec2 vUv;
1952void main() {
1953	vec4 texColor = texture2D( t2D, vUv );
1954	#ifdef DECODE_VIDEO_TEXTURE
1955		texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );
1956	#endif
1957	texColor.rgb *= backgroundIntensity;
1958	gl_FragColor = texColor;
1959	#include <tonemapping_fragment>
1960	#include <encodings_fragment>
1961}`,backgroundCube_vert:`varying vec3 vWorldDirection;
1962#include <common>
1963void main() {
1964	vWorldDirection = transformDirection( position, modelMatrix );
1965	#include <begin_vertex>
1966	#include <project_vertex>
1967	gl_Position.z = gl_Position.w;
1968}`,backgroundCube_frag:`#ifdef ENVMAP_TYPE_CUBE
1969	uniform samplerCube envMap;
1970#elif defined( ENVMAP_TYPE_CUBE_UV )
1971	uniform sampler2D envMap;
1972#endif
1973uniform float flipEnvMap;
1974uniform float backgroundBlurriness;
1975uniform float backgroundIntensity;
1976varying vec3 vWorldDirection;
1977#include <cube_uv_reflection_fragment>
1978void main() {
1979	#ifdef ENVMAP_TYPE_CUBE
1980		vec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );
1981	#elif defined( ENVMAP_TYPE_CUBE_UV )
1982		vec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );
1983	#else
1984		vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );
1985	#endif
1986	texColor.rgb *= backgroundIntensity;
1987	gl_FragColor = texColor;
1988	#include <tonemapping_fragment>
1989	#include <encodings_fragment>
1990}`,cube_vert:`varying vec3 vWorldDirection;
1991#include <common>
1992void main() {
1993	vWorldDirection = transformDirection( position, modelMatrix );
1994	#include <begin_vertex>
1995	#include <project_vertex>
1996	gl_Position.z = gl_Position.w;
1997}`,cube_frag:`uniform samplerCube tCube;
1998uniform float tFlip;
1999uniform float opacity;
2000varying vec3 vWorldDirection;
2001void main() {
2002	vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );
2003	gl_FragColor = texColor;
2004	gl_FragColor.a *= opacity;
2005	#include <tonemapping_fragment>
2006	#include <encodings_fragment>
2007}`,depth_vert:`#include <common>
2008#include <uv_pars_vertex>
2009#include <displacementmap_pars_vertex>
2010#include <morphtarget_pars_vertex>
2011#include <skinning_pars_vertex>
2012#include <logdepthbuf_pars_vertex>
2013#include <clipping_planes_pars_vertex>
2014varying vec2 vHighPrecisionZW;
2015void main() {
2016	#include <uv_vertex>
2017	#include <skinbase_vertex>
2018	#ifdef USE_DISPLACEMENTMAP
2019		#include <beginnormal_vertex>
2020		#include <morphnormal_vertex>
2021		#include <skinnormal_vertex>
2022	#endif
2023	#include <begin_vertex>
2024	#include <morphtarget_vertex>
2025	#include <skinning_vertex>
2026	#include <displacementmap_vertex>
2027	#include <project_vertex>
2028	#include <logdepthbuf_vertex>
2029	#include <clipping_planes_vertex>
2030	vHighPrecisionZW = gl_Position.zw;
2031}`,depth_frag:`#if DEPTH_PACKING == 3200
2032	uniform float opacity;
2033#endif
2034#include <common>
2035#include <packing>
2036#include <uv_pars_fragment>
2037#include <map_pars_fragment>
2038#include <alphamap_pars_fragment>
2039#include <alphatest_pars_fragment>
2040#include <logdepthbuf_pars_fragment>
2041#include <clipping_planes_pars_fragment>
2042varying vec2 vHighPrecisionZW;
2043void main() {
2044	#include <clipping_planes_fragment>
2045	vec4 diffuseColor = vec4( 1.0 );
2046	#if DEPTH_PACKING == 3200
2047		diffuseColor.a = opacity;
2048	#endif
2049	#include <map_fragment>
2050	#include <alphamap_fragment>
2051	#include <alphatest_fragment>
2052	#include <logdepthbuf_fragment>
2053	float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;
2054	#if DEPTH_PACKING == 3200
2055		gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );
2056	#elif DEPTH_PACKING == 3201
2057		gl_FragColor = packDepthToRGBA( fragCoordZ );
2058	#endif
2059}`,distanceRGBA_vert:`#define DISTANCE
2060varying vec3 vWorldPosition;
2061#include <common>
2062#include <uv_pars_vertex>
2063#include <displacementmap_pars_vertex>
2064#include <morphtarget_pars_vertex>
2065#include <skinning_pars_vertex>
2066#include <clipping_planes_pars_vertex>
2067void main() {
2068	#include <uv_vertex>
2069	#include <skinbase_vertex>
2070	#ifdef USE_DISPLACEMENTMAP
2071		#include <beginnormal_vertex>
2072		#include <morphnormal_vertex>
2073		#include <skinnormal_vertex>
2074	#endif
2075	#include <begin_vertex>
2076	#include <morphtarget_vertex>
2077	#include <skinning_vertex>
2078	#include <displacementmap_vertex>
2079	#include <project_vertex>
2080	#include <worldpos_vertex>
2081	#include <clipping_planes_vertex>
2082	vWorldPosition = worldPosition.xyz;
2083}`,distanceRGBA_frag:`#define DISTANCE
2084uniform vec3 referencePosition;
2085uniform float nearDistance;
2086uniform float farDistance;
2087varying vec3 vWorldPosition;
2088#include <common>
2089#include <packing>
2090#include <uv_pars_fragment>
2091#include <map_pars_fragment>
2092#include <alphamap_pars_fragment>
2093#include <alphatest_pars_fragment>
2094#include <clipping_planes_pars_fragment>
2095void main () {
2096	#include <clipping_planes_fragment>
2097	vec4 diffuseColor = vec4( 1.0 );
2098	#include <map_fragment>
2099	#include <alphamap_fragment>
2100	#include <alphatest_fragment>
2101	float dist = length( vWorldPosition - referencePosition );
2102	dist = ( dist - nearDistance ) / ( farDistance - nearDistance );
2103	dist = saturate( dist );
2104	gl_FragColor = packDepthToRGBA( dist );
2105}`,equirect_vert:`varying vec3 vWorldDirection;
2106#include <common>
2107void main() {
2108	vWorldDirection = transformDirection( position, modelMatrix );
2109	#include <begin_vertex>
2110	#include <project_vertex>
2111}`,equirect_frag:`uniform sampler2D tEquirect;
2112varying vec3 vWorldDirection;
2113#include <common>
2114void main() {
2115	vec3 direction = normalize( vWorldDirection );
2116	vec2 sampleUV = equirectUv( direction );
2117	gl_FragColor = texture2D( tEquirect, sampleUV );
2118	#include <tonemapping_fragment>
2119	#include <encodings_fragment>
2120}`,linedashed_vert:`uniform float scale;
2121attribute float lineDistance;
2122varying float vLineDistance;
2123#include <common>
2124#include <color_pars_vertex>
2125#include <fog_pars_vertex>
2126#include <morphtarget_pars_vertex>
2127#include <logdepthbuf_pars_vertex>
2128#include <clipping_planes_pars_vertex>
2129void main() {
2130	vLineDistance = scale * lineDistance;
2131	#include <color_vertex>
2132	#include <morphcolor_vertex>
2133	#include <begin_vertex>
2134	#include <morphtarget_vertex>
2135	#include <project_vertex>
2136	#include <logdepthbuf_vertex>
2137	#include <clipping_planes_vertex>
2138	#include <fog_vertex>
2139}`,linedashed_frag:`uniform vec3 diffuse;
2140uniform float opacity;
2141uniform float dashSize;
2142uniform float totalSize;
2143varying float vLineDistance;
2144#include <common>
2145#include <color_pars_fragment>
2146#include <fog_pars_fragment>
2147#include <logdepthbuf_pars_fragment>
2148#include <clipping_planes_pars_fragment>
2149void main() {
2150	#include <clipping_planes_fragment>
2151	if ( mod( vLineDistance, totalSize ) > dashSize ) {
2152		discard;
2153	}
2154	vec3 outgoingLight = vec3( 0.0 );
2155	vec4 diffuseColor = vec4( diffuse, opacity );
2156	#include <logdepthbuf_fragment>
2157	#include <color_fragment>
2158	outgoingLight = diffuseColor.rgb;
2159	#include <output_fragment>
2160	#include <tonemapping_fragment>
2161	#include <encodings_fragment>
2162	#include <fog_fragment>
2163	#include <premultiplied_alpha_fragment>
2164}`,meshbasic_vert:`#include <common>
2165#include <uv_pars_vertex>
2166#include <uv2_pars_vertex>
2167#include <envmap_pars_vertex>
2168#include <color_pars_vertex>
2169#include <fog_pars_vertex>
2170#include <morphtarget_pars_vertex>
2171#include <skinning_pars_vertex>
2172#include <logdepthbuf_pars_vertex>
2173#include <clipping_planes_pars_vertex>
2174void main() {
2175	#include <uv_vertex>
2176	#include <uv2_vertex>
2177	#include <color_vertex>
2178	#include <morphcolor_vertex>
2179	#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )
2180		#include <beginnormal_vertex>
2181		#include <morphnormal_vertex>
2182		#include <skinbase_vertex>
2183		#include <skinnormal_vertex>
2184		#include <defaultnormal_vertex>
2185	#endif
2186	#include <begin_vertex>
2187	#include <morphtarget_vertex>
2188	#include <skinning_vertex>
2189	#include <project_vertex>
2190	#include <logdepthbuf_vertex>
2191	#include <clipping_planes_vertex>
2192	#include <worldpos_vertex>
2193	#include <envmap_vertex>
2194	#include <fog_vertex>
2195}`,meshbasic_frag:`uniform vec3 diffuse;
2196uniform float opacity;
2197#ifndef FLAT_SHADED
2198	varying vec3 vNormal;
2199#endif
2200#include <common>
2201#include <dithering_pars_fragment>
2202#include <color_pars_fragment>
2203#include <uv_pars_fragment>
2204#include <uv2_pars_fragment>
2205#include <map_pars_fragment>
2206#include <alphamap_pars_fragment>
2207#include <alphatest_pars_fragment>
2208#include <aomap_pars_fragment>
2209#include <lightmap_pars_fragment>
2210#include <envmap_common_pars_fragment>
2211#include <envmap_pars_fragment>
2212#include <fog_pars_fragment>
2213#include <specularmap_pars_fragment>
2214#include <logdepthbuf_pars_fragment>
2215#include <clipping_planes_pars_fragment>
2216void main() {
2217	#include <clipping_planes_fragment>
2218	vec4 diffuseColor = vec4( diffuse, opacity );
2219	#include <logdepthbuf_fragment>
2220	#include <map_fragment>
2221	#include <color_fragment>
2222	#include <alphamap_fragment>
2223	#include <alphatest_fragment>
2224	#include <specularmap_fragment>
2225	ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
2226	#ifdef USE_LIGHTMAP
2227		vec4 lightMapTexel = texture2D( lightMap, vUv2 );
2228		reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;
2229	#else
2230		reflectedLight.indirectDiffuse += vec3( 1.0 );
2231	#endif
2232	#include <aomap_fragment>
2233	reflectedLight.indirectDiffuse *= diffuseColor.rgb;
2234	vec3 outgoingLight = reflectedLight.indirectDiffuse;
2235	#include <envmap_fragment>
2236	#include <output_fragment>
2237	#include <tonemapping_fragment>
2238	#include <encodings_fragment>
2239	#include <fog_fragment>
2240	#include <premultiplied_alpha_fragment>
2241	#include <dithering_fragment>
2242}`,meshlambert_vert:`#define LAMBERT
2243varying vec3 vViewPosition;
2244#include <common>
2245#include <uv_pars_vertex>
2246#include <uv2_pars_vertex>
2247#include <displacementmap_pars_vertex>
2248#include <envmap_pars_vertex>
2249#include <color_pars_vertex>
2250#include <fog_pars_vertex>
2251#include <normal_pars_vertex>
2252#include <morphtarget_pars_vertex>
2253#include <skinning_pars_vertex>
2254#include <shadowmap_pars_vertex>
2255#include <logdepthbuf_pars_vertex>
2256#include <clipping_planes_pars_vertex>
2257void main() {
2258	#include <uv_vertex>
2259	#include <uv2_vertex>
2260	#include <color_vertex>
2261	#include <morphcolor_vertex>
2262	#include <beginnormal_vertex>
2263	#include <morphnormal_vertex>
2264	#include <skinbase_vertex>
2265	#include <skinnormal_vertex>
2266	#include <defaultnormal_vertex>
2267	#include <normal_vertex>
2268	#include <begin_vertex>
2269	#include <morphtarget_vertex>
2270	#include <skinning_vertex>
2271	#include <displacementmap_vertex>
2272	#include <project_vertex>
2273	#include <logdepthbuf_vertex>
2274	#include <clipping_planes_vertex>
2275	vViewPosition = - mvPosition.xyz;
2276	#include <worldpos_vertex>
2277	#include <envmap_vertex>
2278	#include <shadowmap_vertex>
2279	#include <fog_vertex>
2280}`,meshlambert_frag:`#define LAMBERT
2281uniform vec3 diffuse;
2282uniform vec3 emissive;
2283uniform float opacity;
2284#include <common>
2285#include <packing>
2286#include <dithering_pars_fragment>
2287#include <color_pars_fragment>
2288#include <uv_pars_fragment>
2289#include <uv2_pars_fragment>
2290#include <map_pars_fragment>
2291#include <alphamap_pars_fragment>
2292#include <alphatest_pars_fragment>
2293#include <aomap_pars_fragment>
2294#include <lightmap_pars_fragment>
2295#include <emissivemap_pars_fragment>
2296#include <envmap_common_pars_fragment>
2297#include <envmap_pars_fragment>
2298#include <fog_pars_fragment>
2299#include <bsdfs>
2300#include <lights_pars_begin>
2301#include <normal_pars_fragment>
2302#include <lights_lambert_pars_fragment>
2303#include <shadowmap_pars_fragment>
2304#include <bumpmap_pars_fragment>
2305#include <normalmap_pars_fragment>
2306#include <specularmap_pars_fragment>
2307#include <logdepthbuf_pars_fragment>
2308#include <clipping_planes_pars_fragment>
2309void main() {
2310	#include <clipping_planes_fragment>
2311	vec4 diffuseColor = vec4( diffuse, opacity );
2312	ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
2313	vec3 totalEmissiveRadiance = emissive;
2314	#include <logdepthbuf_fragment>
2315	#include <map_fragment>
2316	#include <color_fragment>
2317	#include <alphamap_fragment>
2318	#include <alphatest_fragment>
2319	#include <specularmap_fragment>
2320	#include <normal_fragment_begin>
2321	#include <normal_fragment_maps>
2322	#include <emissivemap_fragment>
2323	#include <lights_lambert_fragment>
2324	#include <lights_fragment_begin>
2325	#include <lights_fragment_maps>
2326	#include <lights_fragment_end>
2327	#include <aomap_fragment>
2328	vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
2329	#include <envmap_fragment>
2330	#include <output_fragment>
2331	#include <tonemapping_fragment>
2332	#include <encodings_fragment>
2333	#include <fog_fragment>
2334	#include <premultiplied_alpha_fragment>
2335	#include <dithering_fragment>
2336}`,meshmatcap_vert:`#define MATCAP
2337varying vec3 vViewPosition;
2338#include <common>
2339#include <uv_pars_vertex>
2340#include <color_pars_vertex>
2341#include <displacementmap_pars_vertex>
2342#include <fog_pars_vertex>
2343#include <normal_pars_vertex>
2344#include <morphtarget_pars_vertex>
2345#include <skinning_pars_vertex>
2346#include <logdepthbuf_pars_vertex>
2347#include <clipping_planes_pars_vertex>
2348void main() {
2349	#include <uv_vertex>
2350	#include <color_vertex>
2351	#include <morphcolor_vertex>
2352	#include <beginnormal_vertex>
2353	#include <morphnormal_vertex>
2354	#include <skinbase_vertex>
2355	#include <skinnormal_vertex>
2356	#include <defaultnormal_vertex>
2357	#include <normal_vertex>
2358	#include <begin_vertex>
2359	#include <morphtarget_vertex>
2360	#include <skinning_vertex>
2361	#include <displacementmap_vertex>
2362	#include <project_vertex>
2363	#include <logdepthbuf_vertex>
2364	#include <clipping_planes_vertex>
2365	#include <fog_vertex>
2366	vViewPosition = - mvPosition.xyz;
2367}`,meshmatcap_frag:`#define MATCAP
2368uniform vec3 diffuse;
2369uniform float opacity;
2370uniform sampler2D matcap;
2371varying vec3 vViewPosition;
2372#include <common>
2373#include <dithering_pars_fragment>
2374#include <color_pars_fragment>
2375#include <uv_pars_fragment>
2376#include <map_pars_fragment>
2377#include <alphamap_pars_fragment>
2378#include <alphatest_pars_fragment>
2379#include <fog_pars_fragment>
2380#include <normal_pars_fragment>
2381#include <bumpmap_pars_fragment>
2382#include <normalmap_pars_fragment>
2383#include <logdepthbuf_pars_fragment>
2384#include <clipping_planes_pars_fragment>
2385void main() {
2386	#include <clipping_planes_fragment>
2387	vec4 diffuseColor = vec4( diffuse, opacity );
2388	#include <logdepthbuf_fragment>
2389	#include <map_fragment>
2390	#include <color_fragment>
2391	#include <alphamap_fragment>
2392	#include <alphatest_fragment>
2393	#include <normal_fragment_begin>
2394	#include <normal_fragment_maps>
2395	vec3 viewDir = normalize( vViewPosition );
2396	vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
2397	vec3 y = cross( viewDir, x );
2398	vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;
2399	#ifdef USE_MATCAP
2400		vec4 matcapColor = texture2D( matcap, uv );
2401	#else
2402		vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );
2403	#endif
2404	vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;
2405	#include <output_fragment>
2406	#include <tonemapping_fragment>
2407	#include <encodings_fragment>
2408	#include <fog_fragment>
2409	#include <premultiplied_alpha_fragment>
2410	#include <dithering_fragment>
2411}`,meshnormal_vert:`#define NORMAL
2412#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )
2413	varying vec3 vViewPosition;
2414#endif
2415#include <common>
2416#include <uv_pars_vertex>
2417#include <displacementmap_pars_vertex>
2418#include <normal_pars_vertex>
2419#include <morphtarget_pars_vertex>
2420#include <skinning_pars_vertex>
2421#include <logdepthbuf_pars_vertex>
2422#include <clipping_planes_pars_vertex>
2423void main() {
2424	#include <uv_vertex>
2425	#include <beginnormal_vertex>
2426	#include <morphnormal_vertex>
2427	#include <skinbase_vertex>
2428	#include <skinnormal_vertex>
2429	#include <defaultnormal_vertex>
2430	#include <normal_vertex>
2431	#include <begin_vertex>
2432	#include <morphtarget_vertex>
2433	#include <skinning_vertex>
2434	#include <displacementmap_vertex>
2435	#include <project_vertex>
2436	#include <logdepthbuf_vertex>
2437	#include <clipping_planes_vertex>
2438#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )
2439	vViewPosition = - mvPosition.xyz;
2440#endif
2441}`,meshnormal_frag:`#define NORMAL
2442uniform float opacity;
2443#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )
2444	varying vec3 vViewPosition;
2445#endif
2446#include <packing>
2447#include <uv_pars_fragment>
2448#include <normal_pars_fragment>
2449#include <bumpmap_pars_fragment>
2450#include <normalmap_pars_fragment>
2451#include <logdepthbuf_pars_fragment>
2452#include <clipping_planes_pars_fragment>
2453void main() {
2454	#include <clipping_planes_fragment>
2455	#include <logdepthbuf_fragment>
2456	#include <normal_fragment_begin>
2457	#include <normal_fragment_maps>
2458	gl_FragColor = vec4( packNormalToRGB( normal ), opacity );
2459	#ifdef OPAQUE
2460		gl_FragColor.a = 1.0;
2461	#endif
2462}`,meshphong_vert:`#define PHONG
2463varying vec3 vViewPosition;
2464#include <common>
2465#include <uv_pars_vertex>
2466#include <uv2_pars_vertex>
2467#include <displacementmap_pars_vertex>
2468#include <envmap_pars_vertex>
2469#include <color_pars_vertex>
2470#include <fog_pars_vertex>
2471#include <normal_pars_vertex>
2472#include <morphtarget_pars_vertex>
2473#include <skinning_pars_vertex>
2474#include <shadowmap_pars_vertex>
2475#include <logdepthbuf_pars_vertex>
2476#include <clipping_planes_pars_vertex>
2477void main() {
2478	#include <uv_vertex>
2479	#include <uv2_vertex>
2480	#include <color_vertex>
2481	#include <morphcolor_vertex>
2482	#include <beginnormal_vertex>
2483	#include <morphnormal_vertex>
2484	#include <skinbase_vertex>
2485	#include <skinnormal_vertex>
2486	#include <defaultnormal_vertex>
2487	#include <normal_vertex>
2488	#include <begin_vertex>
2489	#include <morphtarget_vertex>
2490	#include <skinning_vertex>
2491	#include <displacementmap_vertex>
2492	#include <project_vertex>
2493	#include <logdepthbuf_vertex>
2494	#include <clipping_planes_vertex>
2495	vViewPosition = - mvPosition.xyz;
2496	#include <worldpos_vertex>
2497	#include <envmap_vertex>
2498	#include <shadowmap_vertex>
2499	#include <fog_vertex>
2500}`,meshphong_frag:`#define PHONG
2501uniform vec3 diffuse;
2502uniform vec3 emissive;
2503uniform vec3 specular;
2504uniform float shininess;
2505uniform float opacity;
2506#include <common>
2507#include <packing>
2508#include <dithering_pars_fragment>
2509#include <color_pars_fragment>
2510#include <uv_pars_fragment>
2511#include <uv2_pars_fragment>
2512#include <map_pars_fragment>
2513#include <alphamap_pars_fragment>
2514#include <alphatest_pars_fragment>
2515#include <aomap_pars_fragment>
2516#include <lightmap_pars_fragment>
2517#include <emissivemap_pars_fragment>
2518#include <envmap_common_pars_fragment>
2519#include <envmap_pars_fragment>
2520#include <fog_pars_fragment>
2521#include <bsdfs>
2522#include <lights_pars_begin>
2523#include <normal_pars_fragment>
2524#include <lights_phong_pars_fragment>
2525#include <shadowmap_pars_fragment>
2526#include <bumpmap_pars_fragment>
2527#include <normalmap_pars_fragment>
2528#include <specularmap_pars_fragment>
2529#include <logdepthbuf_pars_fragment>
2530#include <clipping_planes_pars_fragment>
2531void main() {
2532	#include <clipping_planes_fragment>
2533	vec4 diffuseColor = vec4( diffuse, opacity );
2534	ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
2535	vec3 totalEmissiveRadiance = emissive;
2536	#include <logdepthbuf_fragment>
2537	#include <map_fragment>
2538	#include <color_fragment>
2539	#include <alphamap_fragment>
2540	#include <alphatest_fragment>
2541	#include <specularmap_fragment>
2542	#include <normal_fragment_begin>
2543	#include <normal_fragment_maps>
2544	#include <emissivemap_fragment>
2545	#include <lights_phong_fragment>
2546	#include <lights_fragment_begin>
2547	#include <lights_fragment_maps>
2548	#include <lights_fragment_end>
2549	#include <aomap_fragment>
2550	vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;
2551	#include <envmap_fragment>
2552	#include <output_fragment>
2553	#include <tonemapping_fragment>
2554	#include <encodings_fragment>
2555	#include <fog_fragment>
2556	#include <premultiplied_alpha_fragment>
2557	#include <dithering_fragment>
2558}`,meshphysical_vert:`#define STANDARD
2559varying vec3 vViewPosition;
2560#ifdef USE_TRANSMISSION
2561	varying vec3 vWorldPosition;
2562#endif
2563#include <common>
2564#include <uv_pars_vertex>
2565#include <uv2_pars_vertex>
2566#include <displacementmap_pars_vertex>
2567#include <color_pars_vertex>
2568#include <fog_pars_vertex>
2569#include <normal_pars_vertex>
2570#include <morphtarget_pars_vertex>
2571#include <skinning_pars_vertex>
2572#include <shadowmap_pars_vertex>
2573#include <logdepthbuf_pars_vertex>
2574#include <clipping_planes_pars_vertex>
2575void main() {
2576	#include <uv_vertex>
2577	#include <uv2_vertex>
2578	#include <color_vertex>
2579	#include <morphcolor_vertex>
2580	#include <beginnormal_vertex>
2581	#include <morphnormal_vertex>
2582	#include <skinbase_vertex>
2583	#include <skinnormal_vertex>
2584	#include <defaultnormal_vertex>
2585	#include <normal_vertex>
2586	#include <begin_vertex>
2587	#include <morphtarget_vertex>
2588	#include <skinning_vertex>
2589	#include <displacementmap_vertex>
2590	#include <project_vertex>
2591	#include <logdepthbuf_vertex>
2592	#include <clipping_planes_vertex>
2593	vViewPosition = - mvPosition.xyz;
2594	#include <worldpos_vertex>
2595	#include <shadowmap_vertex>
2596	#include <fog_vertex>
2597#ifdef USE_TRANSMISSION
2598	vWorldPosition = worldPosition.xyz;
2599#endif
2600}`,meshphysical_frag:`#define STANDARD
2601#ifdef PHYSICAL
2602	#define IOR
2603	#define SPECULAR
2604#endif
2605uniform vec3 diffuse;
2606uniform vec3 emissive;
2607uniform float roughness;
2608uniform float metalness;
2609uniform float opacity;
2610#ifdef IOR
2611	uniform float ior;
2612#endif
2613#ifdef SPECULAR
2614	uniform float specularIntensity;
2615	uniform vec3 specularColor;
2616	#ifdef USE_SPECULARINTENSITYMAP
2617		uniform sampler2D specularIntensityMap;
2618	#endif
2619	#ifdef USE_SPECULARCOLORMAP
2620		uniform sampler2D specularColorMap;
2621	#endif
2622#endif
2623#ifdef USE_CLEARCOAT
2624	uniform float clearcoat;
2625	uniform float clearcoatRoughness;
2626#endif
2627#ifdef USE_IRIDESCENCE
2628	uniform float iridescence;
2629	uniform float iridescenceIOR;
2630	uniform float iridescenceThicknessMinimum;
2631	uniform float iridescenceThicknessMaximum;
2632#endif
2633#ifdef USE_SHEEN
2634	uniform vec3 sheenColor;
2635	uniform float sheenRoughness;
2636	#ifdef USE_SHEENCOLORMAP
2637		uniform sampler2D sheenColorMap;
2638	#endif
2639	#ifdef USE_SHEENROUGHNESSMAP
2640		uniform sampler2D sheenRoughnessMap;
2641	#endif
2642#endif
2643varying vec3 vViewPosition;
2644#include <common>
2645#include <packing>
2646#include <dithering_pars_fragment>
2647#include <color_pars_fragment>
2648#include <uv_pars_fragment>
2649#include <uv2_pars_fragment>
2650#include <map_pars_fragment>
2651#include <alphamap_pars_fragment>
2652#include <alphatest_pars_fragment>
2653#include <aomap_pars_fragment>
2654#include <lightmap_pars_fragment>
2655#include <emissivemap_pars_fragment>
2656#include <bsdfs>
2657#include <iridescence_fragment>
2658#include <cube_uv_reflection_fragment>
2659#include <envmap_common_pars_fragment>
2660#include <envmap_physical_pars_fragment>
2661#include <fog_pars_fragment>
2662#include <lights_pars_begin>
2663#include <normal_pars_fragment>
2664#include <lights_physical_pars_fragment>
2665#include <transmission_pars_fragment>
2666#include <shadowmap_pars_fragment>
2667#include <bumpmap_pars_fragment>
2668#include <normalmap_pars_fragment>
2669#include <clearcoat_pars_fragment>
2670#include <iridescence_pars_fragment>
2671#include <roughnessmap_pars_fragment>
2672#include <metalnessmap_pars_fragment>
2673#include <logdepthbuf_pars_fragment>
2674#include <clipping_planes_pars_fragment>
2675void main() {
2676	#include <clipping_planes_fragment>
2677	vec4 diffuseColor = vec4( diffuse, opacity );
2678	ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
2679	vec3 totalEmissiveRadiance = emissive;
2680	#include <logdepthbuf_fragment>
2681	#include <map_fragment>
2682	#include <color_fragment>
2683	#include <alphamap_fragment>
2684	#include <alphatest_fragment>
2685	#include <roughnessmap_fragment>
2686	#include <metalnessmap_fragment>
2687	#include <normal_fragment_begin>
2688	#include <normal_fragment_maps>
2689	#include <clearcoat_normal_fragment_begin>
2690	#include <clearcoat_normal_fragment_maps>
2691	#include <emissivemap_fragment>
2692	#include <lights_physical_fragment>
2693	#include <lights_fragment_begin>
2694	#include <lights_fragment_maps>
2695	#include <lights_fragment_end>
2696	#include <aomap_fragment>
2697	vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;
2698	vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;
2699	#include <transmission_fragment>
2700	vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
2701	#ifdef USE_SHEEN
2702		float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );
2703		outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;
2704	#endif
2705	#ifdef USE_CLEARCOAT
2706		float dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );
2707		vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
2708		outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;
2709	#endif
2710	#include <output_fragment>
2711	#include <tonemapping_fragment>
2712	#include <encodings_fragment>
2713	#include <fog_fragment>
2714	#include <premultiplied_alpha_fragment>
2715	#include <dithering_fragment>
2716}`,meshtoon_vert:`#define TOON
2717varying vec3 vViewPosition;
2718#include <common>
2719#include <uv_pars_vertex>
2720#include <uv2_pars_vertex>
2721#include <displacementmap_pars_vertex>
2722#include <color_pars_vertex>
2723#include <fog_pars_vertex>
2724#include <normal_pars_vertex>
2725#include <morphtarget_pars_vertex>
2726#include <skinning_pars_vertex>
2727#include <shadowmap_pars_vertex>
2728#include <logdepthbuf_pars_vertex>
2729#include <clipping_planes_pars_vertex>
2730void main() {
2731	#include <uv_vertex>
2732	#include <uv2_vertex>
2733	#include <color_vertex>
2734	#include <morphcolor_vertex>
2735	#include <beginnormal_vertex>
2736	#include <morphnormal_vertex>
2737	#include <skinbase_vertex>
2738	#include <skinnormal_vertex>
2739	#include <defaultnormal_vertex>
2740	#include <normal_vertex>
2741	#include <begin_vertex>
2742	#include <morphtarget_vertex>
2743	#include <skinning_vertex>
2744	#include <displacementmap_vertex>
2745	#include <project_vertex>
2746	#include <logdepthbuf_vertex>
2747	#include <clipping_planes_vertex>
2748	vViewPosition = - mvPosition.xyz;
2749	#include <worldpos_vertex>
2750	#include <shadowmap_vertex>
2751	#include <fog_vertex>
2752}`,meshtoon_frag:`#define TOON
2753uniform vec3 diffuse;
2754uniform vec3 emissive;
2755uniform float opacity;
2756#include <common>
2757#include <packing>
2758#include <dithering_pars_fragment>
2759#include <color_pars_fragment>
2760#include <uv_pars_fragment>
2761#include <uv2_pars_fragment>
2762#include <map_pars_fragment>
2763#include <alphamap_pars_fragment>
2764#include <alphatest_pars_fragment>
2765#include <aomap_pars_fragment>
2766#include <lightmap_pars_fragment>
2767#include <emissivemap_pars_fragment>
2768#include <gradientmap_pars_fragment>
2769#include <fog_pars_fragment>
2770#include <bsdfs>
2771#include <lights_pars_begin>
2772#include <normal_pars_fragment>
2773#include <lights_toon_pars_fragment>
2774#include <shadowmap_pars_fragment>
2775#include <bumpmap_pars_fragment>
2776#include <normalmap_pars_fragment>
2777#include <logdepthbuf_pars_fragment>
2778#include <clipping_planes_pars_fragment>
2779void main() {
2780	#include <clipping_planes_fragment>
2781	vec4 diffuseColor = vec4( diffuse, opacity );
2782	ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
2783	vec3 totalEmissiveRadiance = emissive;
2784	#include <logdepthbuf_fragment>
2785	#include <map_fragment>
2786	#include <color_fragment>
2787	#include <alphamap_fragment>
2788	#include <alphatest_fragment>
2789	#include <normal_fragment_begin>
2790	#include <normal_fragment_maps>
2791	#include <emissivemap_fragment>
2792	#include <lights_toon_fragment>
2793	#include <lights_fragment_begin>
2794	#include <lights_fragment_maps>
2795	#include <lights_fragment_end>
2796	#include <aomap_fragment>
2797	vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
2798	#include <output_fragment>
2799	#include <tonemapping_fragment>
2800	#include <encodings_fragment>
2801	#include <fog_fragment>
2802	#include <premultiplied_alpha_fragment>
2803	#include <dithering_fragment>
2804}`,points_vert:`uniform float size;
2805uniform float scale;
2806#include <common>
2807#include <color_pars_vertex>
2808#include <fog_pars_vertex>
2809#include <morphtarget_pars_vertex>
2810#include <logdepthbuf_pars_vertex>
2811#include <clipping_planes_pars_vertex>
2812void main() {
2813	#include <color_vertex>
2814	#include <morphcolor_vertex>
2815	#include <begin_vertex>
2816	#include <morphtarget_vertex>
2817	#include <project_vertex>
2818	gl_PointSize = size;
2819	#ifdef USE_SIZEATTENUATION
2820		bool isPerspective = isPerspectiveMatrix( projectionMatrix );
2821		if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );
2822	#endif
2823	#include <logdepthbuf_vertex>
2824	#include <clipping_planes_vertex>
2825	#include <worldpos_vertex>
2826	#include <fog_vertex>
2827}`,points_frag:`uniform vec3 diffuse;
2828uniform float opacity;
2829#include <common>
2830#include <color_pars_fragment>
2831#include <map_particle_pars_fragment>
2832#include <alphatest_pars_fragment>
2833#include <fog_pars_fragment>
2834#include <logdepthbuf_pars_fragment>
2835#include <clipping_planes_pars_fragment>
2836void main() {
2837	#include <clipping_planes_fragment>
2838	vec3 outgoingLight = vec3( 0.0 );
2839	vec4 diffuseColor = vec4( diffuse, opacity );
2840	#include <logdepthbuf_fragment>
2841	#include <map_particle_fragment>
2842	#include <color_fragment>
2843	#include <alphatest_fragment>
2844	outgoingLight = diffuseColor.rgb;
2845	#include <output_fragment>
2846	#include <tonemapping_fragment>
2847	#include <encodings_fragment>
2848	#include <fog_fragment>
2849	#include <premultiplied_alpha_fragment>
2850}`,shadow_vert:`#include <common>
2851#include <fog_pars_vertex>
2852#include <morphtarget_pars_vertex>
2853#include <skinning_pars_vertex>
2854#include <shadowmap_pars_vertex>
2855void main() {
2856	#include <beginnormal_vertex>
2857	#include <morphnormal_vertex>
2858	#include <skinbase_vertex>
2859	#include <skinnormal_vertex>
2860	#include <defaultnormal_vertex>
2861	#include <begin_vertex>
2862	#include <morphtarget_vertex>
2863	#include <skinning_vertex>
2864	#include <project_vertex>
2865	#include <worldpos_vertex>
2866	#include <shadowmap_vertex>
2867	#include <fog_vertex>
2868}`,shadow_frag:`uniform vec3 color;
2869uniform float opacity;
2870#include <common>
2871#include <packing>
2872#include <fog_pars_fragment>
2873#include <bsdfs>
2874#include <lights_pars_begin>
2875#include <shadowmap_pars_fragment>
2876#include <shadowmask_pars_fragment>
2877void main() {
2878	gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );
2879	#include <tonemapping_fragment>
2880	#include <encodings_fragment>
2881	#include <fog_fragment>
2882}`,sprite_vert:`uniform float rotation;
2883uniform vec2 center;
2884#include <common>
2885#include <uv_pars_vertex>
2886#include <fog_pars_vertex>
2887#include <logdepthbuf_pars_vertex>
2888#include <clipping_planes_pars_vertex>
2889void main() {
2890	#include <uv_vertex>
2891	vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );
2892	vec2 scale;
2893	scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );
2894	scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );
2895	#ifndef USE_SIZEATTENUATION
2896		bool isPerspective = isPerspectiveMatrix( projectionMatrix );
2897		if ( isPerspective ) scale *= - mvPosition.z;
2898	#endif
2899	vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;
2900	vec2 rotatedPosition;
2901	rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;
2902	rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;
2903	mvPosition.xy += rotatedPosition;
2904	gl_Position = projectionMatrix * mvPosition;
2905	#include <logdepthbuf_vertex>
2906	#include <clipping_planes_vertex>
2907	#include <fog_vertex>
2908}`,sprite_frag:`uniform vec3 diffuse;
2909uniform float opacity;
2910#include <common>
2911#include <uv_pars_fragment>
2912#include <map_pars_fragment>
2913#include <alphamap_pars_fragment>
2914#include <alphatest_pars_fragment>
2915#include <fog_pars_fragment>
2916#include <logdepthbuf_pars_fragment>
2917#include <clipping_planes_pars_fragment>
2918void main() {
2919	#include <clipping_planes_fragment>
2920	vec3 outgoingLight = vec3( 0.0 );
2921	vec4 diffuseColor = vec4( diffuse, opacity );
2922	#include <logdepthbuf_fragment>
2923	#include <map_fragment>
2924	#include <alphamap_fragment>
2925	#include <alphatest_fragment>
2926	outgoingLight = diffuseColor.rgb;
2927	#include <output_fragment>
2928	#include <tonemapping_fragment>
2929	#include <encodings_fragment>
2930	#include <fog_fragment>
2931}`},sm={common:{diffuse:{value:new ia(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new t$},uv2Transform:{value:new t$},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new tJ(1,1)}}
2931,displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new ia(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new ia(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new t$}},sprite:{diffuse:{value:new ia(16777215)},opacity:{value:1},center:{value:new tJ(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new t$}}},sg={basic:{uniforms:r3([sm.common,sm.specularmap,sm.envmap,sm.aomap,sm.lightmap,sm.fog]),vertexShader:sf.meshbasic_vert,fragmentShader:sf.meshbasic_frag},lambert:{uniforms:r3([sm.common,sm.specularmap,sm.envmap,sm.aomap,sm.lightmap,sm.emissivemap,sm.bumpmap,sm.normalmap,sm.displacementmap,sm.fog,sm.lights,{emissive:{value:new ia(0)}}]),vertexShader:sf.meshlambert_vert,fragmentShader:sf.meshlambert_frag},phong:{uniforms:r3([sm.common,sm.specularmap,sm.envmap,sm.aomap,sm.lightmap,sm.emissivemap,sm.bumpmap,sm.normalmap,sm.displacementmap,sm.fog,sm.lights,{emissive:{value:new ia(0)},specular:{value:new ia(1118481)},shininess:{value:30}}]),vertexShader:sf.meshphong_vert,fragmentShader:sf.meshphong_frag},standard:{uniforms:r3([sm.common,sm.envmap,sm.aomap,sm.lightmap,sm.emissivemap,sm.bumpmap,sm.normalmap,sm.displacementmap,sm.roughnessmap,sm.metalnessmap,sm.fog,sm.lights,{emissive:{value:new ia(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:sf.meshphysical_vert,fragmentShader:sf.meshphysical_frag},toon:{uniforms:r3([sm.common,sm.aomap,sm.lightmap,sm.emissivemap,sm.bumpmap,sm.normalmap,sm.displacementmap,sm.gradientmap,sm.fog,sm.lights,{emissive:{value:new ia(0)}}]),vertexShader:sf.meshtoon_vert,fragmentShader:sf.meshtoon_frag},matcap:{uniforms:r3([sm.common,sm.bumpmap,sm.normalmap,sm.displacementmap,sm.fog,{matcap:{value:null}}]),vertexShader:sf.meshmatcap_vert,fragmentShader:sf.meshmatcap_frag},points:{uniforms:r3([sm.points,sm.fog]),vertexShader:sf.points_vert,fragmentShader:sf.points_frag},dashed:{uniforms:r3([sm.common,sm.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:sf.linedashed_vert,fragmentShader:sf.linedashed_frag},depth:{uniforms:r3([sm.common,sm.displacementmap]),vertexShader:sf.depth_vert,fragmentShader:sf.depth_frag},normal:{uniforms:r3([sm.common,sm.bumpmap,sm.normalmap,sm.displacementmap,{opacity:{value:1}}]),vertexShader:sf.meshnormal_vert,fragmentShader:sf.meshnormal_frag},sprite:{uniforms:r3([sm.sprite,sm.fog]),vertexShader:sf.sprite_vert,fragmentShader:sf.sprite_frag},background:{uniforms:{uvTransform:{value:new t$},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:sf.background_vert,fragmentShader:sf.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:sf.backgroundCube_vert,fragmentShader:sf.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:sf.cube_vert,fragmentShader:sf.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:sf.equirect_vert,fragmentShader:sf.equirect_frag},distanceRGBA:{uniforms:r3([sm.common,sm.displacementmap,{referencePosition:{value:new ib},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:sf.distanceRGBA_vert,fragmentShader:sf.distanceRGBA_frag},shadow:{uniforms:r3([sm.lights,sm.fog,{color:{value:new ia(0)},opacity:{value:1}}]),vertexShader:sf.shadow_vert,fragmentShader:sf.shadow_frag}};sg.physical={uniforms:r3([sg.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new tJ(1,1)},clearcoatNormalMap:{value:null},iridescence:{value:0},iridescenceMap:{value:null},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},sheen:{value:0},sheenColor:{value:new ia(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new tJ},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new ia(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new ia(1,1,1)},specularColorMap:{value:null}}]),vertexShader:sf.meshphysical_vert,fragmentShader:sf.meshphysical_frag};var sv={r:0,b:0,g:0};function sy(e,t,i,r,a,o,h){let c=new ia(0),d=!0===o?0:1,u,p,f=null,m=0,g=null;function v(t,i){t.getRGB(sv,r4(e)),r.buffers.color.setClear(sv.r,sv.g,sv.b,i,h)}return{getClearColor:function(){return c},setClearColor:function(e,t=1){c.set(e),v(c,d=t)},getClearAlpha:function(){return d},setClearAlpha:function(e){v(c,d=e)},render:function(r,o){let h=!1,y=!0===o.isScene?o.background:null;y&&y.isTexture&&(y=(o.backgroundBlurriness>0?i:t).get(y));let x=e.xr,b=x.getSession&&x.getSession();b&&"additive"===b.environmentBlendMode&&(y=null),null===y?v(c,d):y&&y.isColor&&(v(y,1),h=!0),(e.autoClear||h)&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),y&&(y.isCubeTexture||306===y.mapping)?(void 0===p&&((p=new r$(new r1(1,1,1),new r9({name:"Backgroun
2931dCubeMaterial",uniforms:r2(sg.backgroundCube.uniforms),vertexShader:sg.backgroundCube.vertexShader,fragmentShader:sg.backgroundCube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1}))).geometry.deleteAttribute("normal"),p.geometry.deleteAttribute("uv"),p.onBeforeRender=function(e,t,i){this.matrixWorld.copyPosition(i.matrixWorld)},Object.defineProperty(p.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),a.update(p)),p.material.uniforms.envMap.value=y,p.material.uniforms.flipEnvMap.value=y.isCubeTexture&&!1===y.isRenderTargetTexture?-1:1,p.material.uniforms.backgroundBlurriness.value=o.backgroundBlurriness,p.material.uniforms.backgroundIntensity.value=o.backgroundIntensity,p.material.toneMapped=3001!==y.encoding,(f!==y||m!==y.version||g!==e.toneMapping)&&(p.material.needsUpdate=!0,f=y,m=y.version,g=e.toneMapping),p.layers.enableAll(),r.unshift(p,p.geometry,p.material,0,0,null)):y&&y.isTexture&&(void 0===u&&((u=new r$(new sp(2,2),new r9({name:"BackgroundMaterial",uniforms:r2(sg.background.uniforms),vertexShader:sg.background.vertexShader,fragmentShader:sg.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1}))).geometry.deleteAttribute("normal"),Object.defineProperty(u.material,"map",{get:function(){return this.uniforms.t2D.value}}),a.update(u)),u.material.uniforms.t2D.value=y,u.material.uniforms.backgroundIntensity.value=o.backgroundIntensity,u.material.toneMapped=3001!==y.encoding,!0===y.matrixAutoUpdate&&y.updateMatrix(),u.material.uniforms.uvTransform.value.copy(y.matrix),(f!==y||m!==y.version||g!==e.toneMapping)&&(u.material.needsUpdate=!0,f=y,m=y.version,g=e.toneMapping),u.layers.enableAll(),r.unshift(u,u.geometry,u.material,0,0,null))}}}function sx(e,t,i,r){let a=e.getParameter(34921),o=r.isWebGL2?null:t.get("OES_vertex_array_object"),h=r.isWebGL2||null!==o,c={},d=g(null),u=d,p=!1;function f(t){return r.isWebGL2?e.bindVertexArray(t):o.bindVertexArrayOES(t)}function m(t){return r.isWebGL2?e.deleteVertexArray(t):o.deleteVertexArrayOES(t)}function g(e){let t=[],i=[],r=[];for(let e=0;e<a;e++)t[e]=0,i[e]=0,r[e]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:t,enabledAttributes:i,attributeDivisors:r,object:e,attributes:{},index:null}}function v(){let e=u.newAttributes;for(let t=0,i=e.length;t<i;t++)e[t]=0}function y(e){x(e,0)}function x(i,a){let o=u.newAttributes,h=u.enabledAttributes,c=u.attributeDivisors;o[i]=1,0===h[i]&&(e.enableVertexAttribArray(i),h[i]=1),c[i]!==a&&((r.isWebGL2?e:t.get("ANGLE_instanced_arrays"))[r.isWebGL2?"vertexAttribDivisor":"vertexAttribDivisorANGLE"](i,a),c[i]=a)}function b(){let t=u.newAttributes,i=u.enabledAttributes;for(let r=0,a=i.length;r<a;r++)i[r]!==t[r]&&(e.disableVertexAttribArray(r),i[r]=0)}function w(t,i,a,o,h,c){!0===r.isWebGL2&&(5124===a||5125===a)?e.vertexAttribIPointer(t,i,a,h,c):e.vertexAttribPointer(t,i,a,o,h,c)}function S(){_(),p=!0,u!==d&&f((u=d).object)}function _(){d.geometry=null,d.program=null,d.wireframe=!1}return{setup:function(a,d,m,S,_){let A=!1;if(h){let t,i,h,p;let v=(t=!0===d.wireframe,void 0===(i=c[S.id])&&(i={},c[S.id]=i),void 0===(h=i[m.id])&&(h={},i[m.id]=h),void 0===(p=h[t])&&(p=g(r.isWebGL2?e.createVertexArray():o.createVertexArrayOES()),h[t]=p),p);u!==v&&f((u=v).object),(A=function(e,t,i,r){let a=u.attributes,o=t.attributes,h=0,c=i.getAttributes();for(let t in c)if(c[t].location>=0){let i=a[t],r=o[t];if(void 0===r&&("instanceMatrix"===t&&e.instanceMatrix&&(r=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(r=e.instanceColor)),void 0===i||i.attribute!==r||r&&i.data!==r.data)return!0;h++}return u.attributesNum!==h||u.index!==r}(a,S,m,_))&&function(e,t,i,r){let a={},o=t.attributes,h=0,c=i.getAttributes();for(let t in c)if(c[t].location>=0){let i=o[t];void 0===i&&("instanceMatrix"===t&&e.instanceMatrix&&(i=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(i=e.instanceColor));let r={};r.attribute=i,i&&i.data&&(r.data=i.data),a[t]=r,h++}u.attributes=a,u.attributesNum=h,u.index=r}(a,S,m,_)}else{let e=!0===d.wireframe;(u.geometry!==S.id||u.program!==m.id||u.wireframe!==e)&&(u.geometry=S.id,u.program=m.id,u.wireframe=e,A=!0)}null!==_&&i.update(_,34963),(A||p)&&(p=!1,function(a,o,h,c){if(!1===r.isWebGL2&&(a.isInstancedMesh||c.isInstancedBufferGeometry)&&null===t.get("ANGLE_instanced_arrays"))return;v();let d=c.attributes,u=h.getAttributes(),p=o.defaultAttributeValues;for(let t in u){let r=u[t];if(r.location>=0){let o=d[t];if(void 0===o&&("instanceMatrix"===t&&a.instanceMatrix&&(o=a.instanceMatrix),"instanceColor"===t&&a.instanceColor&&(o=a.instanceColor)),void 0!==o){let t=
2931o.normalized,h=o.itemSize,d=i.get(o);if(void 0===d)continue;let u=d.buffer,p=d.type,f=d.bytesPerElement;if(o.isInterleavedBufferAttribute){let i=o.data,d=i.stride,m=o.offset;if(i.isInstancedInterleavedBuffer){for(let e=0;e<r.locationSize;e++)x(r.location+e,i.meshPerAttribute);!0!==a.isInstancedMesh&&void 0===c._maxInstanceCount&&(c._maxInstanceCount=i.meshPerAttribute*i.count)}else for(let e=0;e<r.locationSize;e++)y(r.location+e);e.bindBuffer(34962,u);for(let e=0;e<r.locationSize;e++)w(r.location+e,h/r.locationSize,p,t,d*f,(m+h/r.locationSize*e)*f)}else{if(o.isInstancedBufferAttribute){for(let e=0;e<r.locationSize;e++)x(r.location+e,o.meshPerAttribute);!0!==a.isInstancedMesh&&void 0===c._maxInstanceCount&&(c._maxInstanceCount=o.meshPerAttribute*o.count)}else for(let e=0;e<r.locationSize;e++)y(r.location+e);e.bindBuffer(34962,u);for(let e=0;e<r.locationSize;e++)w(r.location+e,h/r.locationSize,p,t,h*f,h/r.locationSize*e*f)}}else if(void 0!==p){let i=p[t];if(void 0!==i)switch(i.length){case 2:e.vertexAttrib2fv(r.location,i);break;case 3:e.vertexAttrib3fv(r.location,i);break;case 4:e.vertexAttrib4fv(r.location,i);break;default:e.vertexAttrib1fv(r.location,i)}}}}b()}(a,d,m,S),null!==_&&e.bindBuffer(34963,i.get(_).buffer))},reset:S,resetDefaultState:_,dispose:function(){for(let e in S(),c){let t=c[e];for(let e in t){let i=t[e];for(let e in i)m(i[e].object),delete i[e];delete t[e]}delete c[e]}},releaseStatesOfGeometry:function(e){if(void 0===c[e.id])return;let t=c[e.id];for(let e in t){let i=t[e];for(let e in i)m(i[e].object),delete i[e];delete t[e]}delete c[e.id]},releaseStatesOfProgram:function(e){for(let t in c){let i=c[t];if(void 0===i[e.id])continue;let r=i[e.id];for(let e in r)m(r[e].object),delete r[e];delete i[e.id]}},initAttributes:v,enableAttribute:y,disableUnusedAttributes:b}}function sb(e,t,i,r){let a=r.isWebGL2,o;this.setMode=function(e){o=e},this.render=function(t,r){e.drawArrays(o,t,r),i.update(r,o,1)},this.renderInstances=function(r,h,c){let d,u;if(0!==c){if(a)d=e,u="drawArraysInstanced";else if(d=t.get("ANGLE_instanced_arrays"),u="drawArraysInstancedANGLE",null===d){console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}d[u](o,r,h,c),i.update(h,o,c)}}}function sw(e,t,i){let r;function a(t){if("highp"===t){if(e.getShaderPrecisionFormat(35633,36338).precision>0&&e.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";t="mediump"}return"mediump"===t&&e.getShaderPrecisionFormat(35633,36337).precision>0&&e.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}let o="u">typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext,h=void 0!==i.precision?i.precision:"highp",c=a(h);c!==h&&(console.warn("THREE.WebGLRenderer:",h,"not supported, using",c,"instead."),h=c);let d=o||t.has("WEBGL_draw_buffers"),u=!0===i.logarithmicDepthBuffer,p=e.getParameter(34930),f=e.getParameter(35660),m=e.getParameter(3379),g=e.getParameter(34076),v=e.getParameter(34921),y=e.getParameter(36347),x=e.getParameter(36348),b=e.getParameter(36349),w=f>0,S=o||t.has("OES_texture_float"),_=o?e.getParameter(36183):0;return{isWebGL2:o,drawBuffers:d,getMaxAnisotropy:function(){if(void 0!==r)return r;if(!0===t.has("EXT_texture_filter_anisotropic")){let i=t.get("EXT_texture_filter_anisotropic");r=e.getParameter(i.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else r=0;return r},getMaxPrecision:a,precision:h,logarithmicDepthBuffer:u,maxTextures:p,maxVertexTextures:f,maxTextureSize:m,maxCubemapSize:g,maxAttributes:v,maxVertexUniforms:y,maxVaryings:x,maxFragmentUniforms:b,vertexTextures:w,floatFragmentTextures:S,floatVertexTextures:w&&S,maxSamples:_}}function sS(e){let t=this,i=null,r=0,a=!1,o=!1,h=new so,c=new t$,d={value:null,needsUpdate:!1};function u(e,i,r,a){let o=null!==e?e.length:0,u=null;if(0!==o){if(u=d.value,!0!==a||null===u){let t=r+4*o,a=i.matrixWorldInverse;c.getNormalMatrix(a),(null===u||u.length<t)&&(u=new Float32Array(t));for(let t=0,i=r;t!==o;++t,i+=4)h.copy(e[t]).applyMatrix4(a,c),h.normal.toArray(u,i),u[i+3]=h.constant}d.value=u,d.needsUpdate=!0}return t.numPlanes=o,t.numIntersection=0,u}this.uniform=d,this.numPlanes=0,this.numIntersection=0,this.init=function(e,t){let i=0!==e.length||t||0!==r||a;return a=t,r=e.length,i},this.beginShadows=function(){o=!0,u(null)},this.endShadows=function(){o=!1}
2931,this.setGlobalState=function(e,t){i=u(e,t,0)},this.setState=function(h,c,p){let f=h.clippingPlanes,m=h.clipIntersection,g=h.clipShadows,v=e.get(h);if(a&&null!==f&&0!==f.length&&(!o||g)){let e=o?0:r,t=4*e,a=v.clippingState||null;d.value=a,a=u(f,c,t,p);for(let e=0;e!==t;++e)a[e]=i[e];v.clippingState=a,this.numIntersection=m?this.numPlanes:0,this.numPlanes+=e}else o?u(null):(d.value!==i&&(d.value=i,d.needsUpdate=r>0),t.numPlanes=r,t.numIntersection=0)}}function s_(e){let t=new WeakMap;function i(e,t){return 303===t?e.mapping=301:304===t&&(e.mapping=302),e}function r(e){let i=e.target;i.removeEventListener("dispose",r);let a=t.get(i);void 0!==a&&(t.delete(i),a.dispose())}return{get:function(a){if(a&&a.isTexture&&!1===a.isRenderTargetTexture){let o=a.mapping;if(303===o||304===o){if(t.has(a))return i(t.get(a).texture,a.mapping);{let o=a.image;if(!o||!(o.height>0))return null;{let h=new sr(o.height/2);return h.fromEquirectangularTexture(e,a),t.set(a,h),a.addEventListener("dispose",r),i(h.texture,a.mapping)}}}}return a},dispose:function(){t=new WeakMap}}}var sA=class extends r7{constructor(e=-1,t=1,i=1,r=-1,a=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=r,this.near=a,this.far=o,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=null===e.view?null:Object.assign({},e.view),this}setViewOffset(e,t,i,r,a,o){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=r,this.view.width=a,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,r=(this.top+this.bottom)/2,a=i-e,o=i+e,h=r+t,c=r-t;if(null!==this.view&&this.view.enabled){let e=(this.right-this.left)/this.view.fullWidth/this.zoom,t=(this.top-this.bottom)/this.view.fullHeight/this.zoom;a+=e*this.view.offsetX,o=a+e*this.view.width,h-=t*this.view.offsetY,c=h-t*this.view.height}this.projectionMatrix.makeOrthographic(a,o,h,c,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,null!==this.view&&(t.object.view=Object.assign({},this.view)),t}},sM=[.125,.215,.35,.446,.526,.582],sE=new sA,sC=new ia,sT=null,sP=(1+Math.sqrt(5))/2,sD=1/sP,sO=[new ib(1,1,1),new ib(-1,1,1),new ib(1,1,-1),new ib(-1,1,-1),new ib(0,sP,sD),new ib(0,sP,-sD),new ib(sD,0,sP),new ib(-sD,0,sP),new ib(sP,sD,0),new ib(-sP,sD,0)],sI=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,i=.1,r=100){sT=this._renderer.getRenderTarget(),this._setSize(256);let a=this._allocateTargets();return a.depthBuffer=!0,this._sceneToCubeUV(e,i,r,a),t>0&&this._blur(a,0,0,t),this._applyPMREM(a),this._cleanup(a),a}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=sz(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=sB(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let e=0;e<this._lodPlanes.length;e++)this._lodPlanes[e].dispose()}_cleanup(e){this._renderer.setRenderTarget(sT),e.scissorTest=!1,sL(e,0,0,e.width,e.height)}_fromTexture(e,t){301===e.mapping||302===e.mapping?this._setSize(0===e.image.length?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4),sT=this._renderer.getRenderTarget();let i=t||this._allocateTargets();return this._textureToCubeUV(e,i),this._applyPMREM(i),this._cleanup(i),i}_allocateTargets(){let e=3*Math.max(this._cubeSize,112),t=4*this._cubeSize,i={magFilter:1006,minFilter:1006,generateMipmaps:!1,type:1016,format:1023,encoding:3e3,depthBuffer:!1},r=sR(e,t,i);if(null===this._pingPongRenderTarget||this._pingPongRenderTarget.width!==e||this._pingPongRenderTarget.height!==t){null!==this._pingPongRenderTarget&&this._dispose(),this._pingPongRenderTarget=sR(e,t,i);let{_lodMax:r}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}
2931=function(e){let t=[],i=[],r=[],a=e,o=e-4+1+sM.length;for(let h=0;h<o;h++){let o=Math.pow(2,a);i.push(o);let c=1/o;h>e-4?c=sM[h-e+4-1]:0===h&&(c=0),r.push(c);let d=1/(o-2),u=-d,p=1+d,f=[u,u,p,u,p,p,u,u,p,p,u,p],m=new Float32Array(108),g=new Float32Array(72),v=new Float32Array(36);for(let e=0;e<6;e++){let t=e%3*2/3-1,i=e>2?0:-1,r=[t,i,0,t+2/3,i,0,t+2/3,i+1,0,t,i,0,t+2/3,i+1,0,t,i+1,0];m.set(r,18*e),g.set(f,12*e);let a=[e,e,e,e,e,e];v.set(a,6*e)}let y=new rU;y.setAttribute("position",new rT(m,3)),y.setAttribute("uv",new rT(g,2)),y.setAttribute("faceIndex",new rT(v,1)),t.push(y),a>4&&a--}return{lodPlanes:t,sizeLods:i,sigmas:r}}(r)),this._blurMaterial=new r9({name:"SphericalGaussianBlur",defines:{n:20,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:new Float32Array(20)},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:new ib(0,1,0)}},vertexShader:sF(),fragmentShader:`
2932
2933			precision mediump float;
2934			precision mediump int;
2935
2936			varying vec3 vOutputDirection;
2937
2938			uniform sampler2D envMap;
2939			uniform int samples;
2940			uniform float weights[ n ];
2941			uniform bool latitudinal;
2942			uniform float dTheta;
2943			uniform float mipInt;
2944			uniform vec3 poleAxis;
2945
2946			#define ENVMAP_TYPE_CUBE_UV
2947			#include <cube_uv_reflection_fragment>
2948
2949			vec3 getSample( float theta, vec3 axis ) {
2950
2951				float cosTheta = cos( theta );
2952				// Rodrigues' axis-angle rotation
2953				vec3 sampleDirection = vOutputDirection * cosTheta
2954					+ cross( axis, vOutputDirection ) * sin( theta )
2955					+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );
2956
2957				return bilinearCubeUV( envMap, sampleDirection, mipInt );
2958
2959			}
2960
2961			void main() {
2962
2963				vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );
2964
2965				if ( all( equal( axis, vec3( 0.0 ) ) ) ) {
2966
2967					axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );
2968
2969				}
2970
2971				axis = normalize( axis );
2972
2973				gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );
2974				gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );
2975
2976				for ( int i = 1; i < n; i++ ) {
2977
2978					if ( i >= samples ) {
2979
2980						break;
2981
2982					}
2983
2984					float theta = dTheta * float( i );
2985					gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );
2986					gl_FragColor.rgb += weights[ i ] * getSample( theta, axis );
2987
2988				}
2989
2990			}
2991		`,blending:0,depthTest:!1,depthWrite:!1})}return r}_compileMaterial(e){let t=new r$(this._lodPlanes[0],e);this._renderer.compile(t,sE)}_sceneToCubeUV(e,t,i,r){let a=new se(90,1,t,i),o=[1,-1,1,1,1,1],h=[1,1,1,-1,-1,-1],c=this._renderer,d=c.autoClear,u=c.toneMapping;c.getClearColor(sC),c.toneMapping=0,c.autoClear=!1;
2991let p=new rM({name:"PMREM.Background",side:1,depthWrite:!1,depthTest:!1}),f=new r$(new r1,p),m=!1,g=e.background;g?g.isColor&&(p.color.copy(g),e.background=null,m=!0):(p.color.copy(sC),m=!0);for(let t=0;t<6;t++){let i=t%3;0===i?(a.up.set(0,o[t],0),a.lookAt(h[t],0,0)):1===i?(a.up.set(0,0,o[t]),a.lookAt(0,h[t],0)):(a.up.set(0,o[t],0),a.lookAt(0,0,h[t]));let d=this._cubeSize;sL(r,i*d,t>2?d:0,d,d),c.setRenderTarget(r),m&&c.render(f,a),c.render(e,a)}f.geometry.dispose(),f.material.dispose(),c.toneMapping=u,c.autoClear=d,e.background=g}_textureToCubeUV(e,t){let i=this._renderer,r=301===e.mapping||302===e.mapping;r?(null===this._cubemapMaterial&&(this._cubemapMaterial=sz()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===e.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=sB());let a=r?this._cubemapMaterial:this._equirectMaterial,o=new r$(this._lodPlanes[0],a);a.uniforms.envMap.value=e;let h=this._cubeSize;sL(t,0,0,3*h,2*h),i.setRenderTarget(t),i.render(o,sE)}_applyPMREM(e){let t=this._renderer,i=t.autoClear;t.autoClear=!1;for(let t=1;t<this._lodPlanes.length;t++){let i=Math.sqrt(this._sigmas[t]*this._sigmas[t]-this._sigmas[t-1]*this._sigmas[t-1]),r=sO[(t-1)%sO.length];this._blur(e,t-1,t,i,r)}t.autoClear=i}_blur(e,t,i,r,a){let o=this._pingPongRenderTarget;this._halfBlur(e,o,t,i,r,"latitudinal",a),this._halfBlur(o,e,i,i,r,"longitudinal",a)}_halfBlur(e,t,i,r,a,o,h){let c=this._renderer,d=this._blurMaterial;"latitudinal"!==o&&"longitudinal"!==o&&console.error("blur direction must be either latitudinal or longitudinal!");let u=new r$(this._lodPlanes[r],d),p=d.uniforms,f=this._sizeLods[i]-1,m=isFinite(a)?Math.PI/(2*f):2*Math.PI/39,g=a/m,v=isFinite(a)?1+Math.floor(3*g):20;v>20&&console.warn(`sigmaRadians, ${a}, is too large and will clip, as it requested ${v} samples when the maximum is set to 20`);let y=[],x=0;for(let e=0;e<20;++e){let t=e/g,i=Math.exp(-t*t/2);y.push(i),0===e?x+=i:e<v&&(x+=2*i)}for(let e=0;e<y.length;e++)y[e]=y[e]/x;p.envMap.value=e.texture,p.samples.value=v,p.weights.value=y,p.latitudinal.value="latitudinal"===o,h&&(p.poleAxis.value=h);let{_lodMax:b}=this;p.dTheta.value=m,p.mipInt.value=b-i;let w=this._sizeLods[r],S=4*(this._cubeSize-w);sL(t,3*w*(r>b-4?r-b+4:0),S,3*w,2*w),c.setRenderTarget(t),c.render(u,sE)}};function sR(e,t,i){let r=new im(e,t,i);return r.texture.mapping=306,r.texture.name="PMREM.cubeUv",r.scissorTest=!0,r}function sL(e,t,i,r,a){e.viewport.set(t,i,r,a),e.scissor.set(t,i,r,a)}function sB(){return new r9({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:sF(),fragmentShader:`
2992
2993			precision mediump float;
2994			precision mediump int;
2995
2996			varying vec3 vOutputDirection;
2997
2998			uniform sampler2D envMap;
2999
3000			#include <common>
3001
3002			void main() {
3003
3004				vec3 outputDirection = normalize( vOutputDirection );
3005				vec2 uv = equirectUv( outputDirection );
3006
3007				gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );
3008
3009			}
3010		`,blending:0,depthTest:!1,depthWrite:!1})}function sz(){return new r9({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:sF(),fragmentShader:`
3011
3012			precision mediump float;
3013			precision mediump int;
3014
3015			uniform float flipEnvMap;
3016
3017			varying vec3 vOutputDirection;
3018
3019			uniform samplerCube envMap;
3020
3021			void main() {
3022
3023				gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );
3024
3025			}
3026		`,blending:0,depthTest:!1,depthWrite:!1})}function sF(){return`
3027
3028		precision mediump float;
3029		precision mediump int;
3030
3031		attribute float faceIndex;
3032
3033		varying vec3 vOutputDirection;
3034
3035		// RH coordinate system; PMREM face-indexing convention
3036		vec3 getDirection( vec2 uv, float face ) {
3037
3038			uv = 2.0 * uv - 1.0;
3039
3040			vec3 direction = vec3( uv, 1.0 );
3041
3042			if ( face == 0.0 ) {
3043
3044				direction = direction.zyx; // ( 1, v, u ) pos x
3045
3046			} else if ( face == 1.0 ) {
3047
3048				direction = direction.xzy;
3049				direction.xz *= -1.0; // ( -u, 1, -v ) pos y
3050
3051			} else if ( face == 2.0 ) {
3052
3053				direction.x *= -1.0; // ( -u, v, 1 ) pos z
3054
3055			} else if ( face == 3.0 ) {
3056
3057				direction = direction.zyx;
3058				direction.xz *= -1.0; // ( -1, v, -u ) neg x
3059
3060			} else if ( face == 4.0 ) {
3061
3062				direction = direction.xzy;
3063				direction.xy *= -1.0; // ( -u, -1, v ) neg y
3064
3065			} else if ( face == 5.0 ) {
3066
3067				direction.z *= -1.0; // ( u, v, -1 ) neg z
3068
3069			}
3070
3071			return direction;
3072
3073		}
3074
3075		void main() {
3076
3077			vOutputDirection = getDirection( uv, faceIndex );
3078			gl_Position = vec4( position, 1.0 );
3079
3080		}
3081	`}function sN(e){let t=new WeakMap,i=null;function r(e){let i=e.target;i.removeEventListener("dispose",r);let a=t.get(i);void 0!==a&&(t.delete(i),a.dispose())}
3081return{get:function(a){if(a&&a.isTexture){let o=a.mapping,h=303===o||304===o,c=301===o||302===o;if(h||c){if(a.isRenderTargetTexture&&!0===a.needsPMREMUpdate){a.needsPMREMUpdate=!1;let r=t.get(a);return null===i&&(i=new sI(e)),r=h?i.fromEquirectangular(a,r):i.fromCubemap(a,r),t.set(a,r),r.texture}if(t.has(a))return t.get(a).texture;{let o=a.image;if(!(h&&o&&o.height>0||c&&o&&function(e){let t=0;for(let i=0;i<6;i++)void 0!==e[i]&&t++;return 6===t}(o)))return null;{null===i&&(i=new sI(e));let o=h?i.fromEquirectangular(a):i.fromCubemap(a);return t.set(a,o),a.addEventListener("dispose",r),o.texture}}}}return a},dispose:function(){t=new WeakMap,null!==i&&(i.dispose(),i=null)}}}function sU(e){let t={};function i(i){let r;if(void 0!==t[i])return t[i];switch(i){case"WEBGL_depth_texture":r=e.getExtension("WEBGL_depth_texture")||e.getExtension("MOZ_WEBGL_depth_texture")||e.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":r=e.getExtension("EXT_texture_filter_anisotropic")||e.getExtension("MOZ_EXT_texture_filter_anisotropic")||e.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":r=e.getExtension("WEBGL_compressed_texture_s3tc")||e.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":r=e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:r=e.getExtension(i)}return t[i]=r,r}return{has:function(e){return null!==i(e)},init:function(e){e.isWebGL2?i("EXT_color_buffer_float"):(i("WEBGL_depth_texture"),i("OES_texture_float"),i("OES_texture_half_float"),i("OES_texture_half_float_linear"),i("OES_standard_derivatives"),i("OES_element_index_uint"),i("OES_vertex_array_object"),i("ANGLE_instanced_arrays")),i("OES_texture_float_linear"),i("EXT_color_buffer_half_float"),i("WEBGL_multisampled_render_to_texture")},get:function(e){let t=i(e);return null===t&&console.warn("THREE.WebGLRenderer: "+e+" extension not supported."),t}}}function sk(e,t,i,r){let a={},o=new WeakMap;function h(e){let c=e.target;for(let e in null!==c.index&&t.remove(c.index),c.attributes)t.remove(c.attributes[e]);c.removeEventListener("dispose",h),delete a[c.id];let d=o.get(c);d&&(t.remove(d),o.delete(c)),r.releaseStatesOfGeometry(c),!0===c.isInstancedBufferGeometry&&delete c._maxInstanceCount,i.memory.geometries--}function c(e){let i=[],r=e.index,a=e.attributes.position,h=0;if(null!==r){let e=r.array;h=r.version;for(let t=0,r=e.length;t<r;t+=3){let r=e[t+0],a=e[t+1],o=e[t+2];i.push(r,a,a,o,o,r)}}else{let e=a.array;h=a.version;for(let t=0,r=e.length/3-1;t<r;t+=3){let e=t+0,r=t+1,a=t+2;i.push(e,r,r,a,a,e)}}let c=new(t1(i)?rD:rP)(i,1);c.version=h;let d=o.get(e);d&&t.remove(d),o.set(e,c)}return{get:function(e,t){return!0===a[t.id]||(t.addEventListener("dispose",h),a[t.id]=!0,i.memory.geometries++),t},update:function(e){let i=e.attributes;for(let e in i)t.update(i[e],34962);let r=e.morphAttributes;for(let e in r){let i=r[e];for(let e=0,r=i.length;e<r;e++)t.update(i[e],34962)}},getWireframeAttribute:function(e){let t=o.get(e);if(t){let i=e.index;null!==i&&t.version<i.version&&c(e)}else c(e);return o.get(e)}}}function sV(e,t,i,r){let a,o,h=r.isWebGL2,c;this.setMode=function(e){c=e},this.setIndex=function(e){a=e.type,o=e.bytesPerElement},this.render=function(t,r){e.drawElements(c,r,a,t*o),i.update(r,c,1)},this.renderInstances=function(r,d,u){let p,f;if(0!==u){if(h)p=e,f="drawElementsInstanced";else if(p=t.get("ANGLE_instanced_arrays"),f="drawElementsInstancedANGLE",null===p){console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}p[f](c,d,a,r*o,u),i.update(d,c,u)}}}function sj(e){let t={frame:0,calls:0,triangles:0,points:0,lines:0};return{memory:{geometries:0,textures:0},render:t,programs:null,autoReset:!0,reset:function(){t.frame++,t.calls=0,t.triangles=0,t.points=0,t.lines=0},update:function(e,i,r){switch(t.calls++,i){case 4:t.triangles+=e/3*r;break;case 1:t.lines+=e/2*r;break;case 3:t.lines+=r*(e-1);break;case 2:t.lines+=r*e;break;case 0:t.points+=r*e;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",i)}}}}function sG(e,t){return e[0]-t[0]}function sH(e,t){return Math.abs(t[1])-Math.abs(e[1])}function sW(e,t,i){let r={},a=new Float32Array(8),o=new WeakMap,h=new ip,c=[];for(let e=0;e<8;e++)c[e]=[e,0];return{update:function(d,u,p,f){let m=d.morphTargetInfluences;if(!0===t.isWebGL2){let r=u.morphAttributes.position||u.morphAttributes.normal||u.morphAttributes.color,a=void 0!==r?r.length:0,c=o.get(u);if(void 0===c||c.count!==a){let e=function(){b.dispose(),o.delete(u),u.removeEventListener("dispose",e)};void 0!==c&&c.texture.dispose();let i=void 0!==u.morphAttributes.position,r=void 0!==u.morphAttributes.normal,d=void 0!==u.morphAttributes.color,p=u.morphAttributes.position||[],f=u.morphAttributes.normal||[],m=u.morphAttributes.color||[],g=0;!0===i&&(g=1),!0===r&&(g=2),!0===d&&(g=3);let v=u.attributes.position.count*g,y=1;v>t.maxTextureSize&&(y=Math.ceil(v/t.maxTextureSize),v=t.maxTextureSize);let x=new Float32Array(v*y*4*a),b=new ig(x,v,y,a);b.type=1015,b.needsUpdate=!0;let w=4*g;for(let e=0;e<a;e++){let t=p[e],a=f[e],o=m[e],c=v*y*4*e;for(let e=0;e<t.count;e++){let u=e*w;!0===i&&(h.fromBufferAttribute(t,e),x[c+u+0]=h.x,x[c+u+1]=h.y,x[c+u+2]=h.z,x[c+u+3]=0),!0===r&&(h.fromBufferAttribute(a,e),x[c+u+4]=h.x,x[c+u+5]=h.y,x[c+u+6]=h.z,x[c+u+7]=0),!0===d&&(h.fromBufferAttribute(o,e),x[c+u+8]=h.x,x[c+u+9]=h.y,x[c+u+10]=h.z,x[c+u+11]=4===o.itemSize?h.w:1)}}c={count:a,texture:b,size:new tJ(v,y)},o.set(u,c),u.addEventListener("dispose",e)}let d=0;for(let e=0;e<m.length;e++)d+=m[e];let p=u.morphTargetsRelative?1:1-d;f.getUniforms().setValue(e,"morphTargetBaseInfluence",p),f.getUniforms().setValue(e,"morphTargetInfluences",m),f.getUniforms().setValue(e,"morphTargetsTexture",c.texture,i),f.getUniforms().setValue(e,"morphTargetsTextureSize",c.size)}
3081else{let t=void 0===m?0:m.length,i=r[u.id];if(void 0===i||i.length!==t){i=[];for(let e=0;e<t;e++)i[e]=[e,0];r[u.id]=i}for(let e=0;e<t;e++){let t=i[e];t[0]=e,t[1]=m[e]}i.sort(sH);for(let e=0;e<8;e++)e<t&&i[e][1]?(c[e][0]=i[e][0],c[e][1]=i[e][1]):(c[e][0]=Number.MAX_SAFE_INTEGER,c[e][1]=0);c.sort(sG);let o=u.morphAttributes.position,h=u.morphAttributes.normal,d=0;for(let e=0;e<8;e++){let t=c[e],i=t[0],r=t[1];i!==Number.MAX_SAFE_INTEGER&&r?(o&&u.getAttribute("morphTarget"+e)!==o[i]&&u.setAttribute("morphTarget"+e,o[i]),h&&u.getAttribute("morphNormal"+e)!==h[i]&&u.setAttribute("morphNormal"+e,h[i]),a[e]=r,d+=r):(o&&!0===u.hasAttribute("morphTarget"+e)&&u.deleteAttribute("morphTarget"+e),h&&!0===u.hasAttribute("morphNormal"+e)&&u.deleteAttribute("morphNormal"+e),a[e]=0)}let p=u.morphTargetsRelative?1:1-d;f.getUniforms().setValue(e,"morphTargetBaseInfluence",p),f.getUniforms().setValue(e,"morphTargetInfluences",a)}}}}function sq(e,t,i,r){let a=new WeakMap;function o(e){let t=e.target;t.removeEventListener("dispose",o),i.remove(t.instanceMatrix),null!==t.instanceColor&&i.remove(t.instanceColor)}return{update:function(e){let h=r.render.frame,c=e.geometry,d=t.get(e,c);return a.get(d)!==h&&(t.update(d),a.set(d,h)),e.isInstancedMesh&&(!1===e.hasEventListener("dispose",o)&&e.addEventListener("dispose",o),i.update(e.instanceMatrix,34962),null!==e.instanceColor&&i.update(e.instanceColor,34962)),d},dispose:function(){a=new WeakMap}}}var sX=new iu,sY=new ig,sQ=new iv,sZ=new si,sK=[],sJ=[],s$=new Float32Array(16),s0=new Float32Array(9),s1=new Float32Array(4);function s2(e,t,i){let r=e[0];if(null==r||r<=0||r>0)return e;let a=t*i,o=sK[a];if(void 0===o&&(o=new Float32Array(a),sK[a]=o),0!==t){r.toArray(o,0);for(let r=1,a=0;r!==t;++r)a+=i,e[r].toArray(o,a)}return o}function s3(e,t){if(e.length!==t.length)return!1;for(let i=0,r=e.length;i<r;i++)if(e[i]!==t[i])return!1;return!0}function s4(e,t){for(let i=0,r=t.length;i<r;i++)e[i]=t[i]}function s5(e,t){let i=sJ[t];void 0===i&&(i=new Int32Array(t),sJ[t]=i);for(let r=0;r!==t;++r)i[r]=e.allocateTextureUnit();return i}function s6(e,t){let i=this.cache;i[0]!==t&&(e.uniform1f(this.addr,t),i[0]=t)}function s8(e,t){let i=this.cache;if(void 0!==t.x)(i[0]!==t.x||i[1]!==t.y)&&(e.uniform2f(this.addr,t.x,t.y),i[0]=t.x,i[1]=t.y);else{if(s3(i,t))return;e.uniform2fv(this.addr,t),s4(i,t)}}function s9(e,t){let i=this.cache;if(void 0!==t.x)(i[0]!==t.x||i[1]!==t.y||i[2]!==t.z)&&(e.uniform3f(this.addr,t.x,t.y,t.z),i[0]=t.x,i[1]=t.y,i[2]=t.z);else if(void 0!==t.r)(i[0]!==t.r||i[1]!==t.g||i[2]!==t.b)&&(e.uniform3f(this.addr,t.r,t.g,t.b),i[0]=t.r,i[1]=t.g,i[2]=t.b);else{if(s3(i,t))return;e.uniform3fv(this.addr,t),s4(i,t)}}function s7(e,t){let i=this.cache;if(void 0!==t.x)(i[0]!==t.x||i[1]!==t.y||i[2]!==t.z||i[3]!==t.w)&&(e.uniform4f(this.addr,t.x,t.y,t.z,t.w),i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=t.w);else{if(s3(i,t))return;e.uniform4fv(this.addr,t),s4(i,t)}}function ae(e,t){let i=this.cache,r=t.elements;if(void 0===r){if(s3(i,t))return;e.uniformMatrix2fv(this.addr,!1,t),s4(i,t)}else{if(s3(i,r))return;s1.set(r),e.uniformMatrix2fv(this.addr,!1,s1),s4(i,r)}}function at(e,t){let i=this.cache,r=t.elements;if(void 0===r){if(s3(i,t))return;e.uniformMatrix3fv(this.addr,!1,t),s4(i,t)}else{if(s3(i,r))return;s0.set(r),e.uniformMatrix3fv(this.addr,!1,s0),s4(i,r)}}function ai(e,t){let i=this.cache,r=t.elements;if(void 0===r){if(s3(i,t))return;e.uniformMatrix4fv(this.addr,!1,t),s4(i,t)}else{if(s3(i,r))return;s$.set(r),e.uniformMatrix4fv(this.addr,!1,s$),s4(i,r)}}function ar(e,t){let i=this.cache;i[0]!==t&&(e.uniform1i(this.addr,t),i[0]=t)}function as(e,t){let i=this.cache;if(void 0!==t.x)(i[0]!==t.x||i[1]!==t.y)&&(e.uniform2i(this.addr,t.x,t.y),i[0]=t.x,i[1]=t.y);else{if(s3(i,t))return;e.uniform2iv(this.addr,t),s4(i,t)}}function aa(e,t){let i=this.cache;if(void 0!==t.x)(i[0]!==t.x||i[1]!==t.y||i[2]!==t.z)&&(e.uniform3i(this.addr,t.x,t.y,t.z),i[0]=t.x,i[1]=t.y,i[2]=t.z);else{if(s3(i,t))return;e.uniform3iv(this.addr,t),s4(i,t)}}function an(e,t){let i=this.cache;if(void 0!==t.x)(i[0]!==t.x||i[1]!==t.y||i[2]!==t.z||i[3]!==t.w)&&(e.uniform4i(this.addr,t.x,t.y,t.z,t.w),i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=t.w);else{if(s3(i,t))return;e.uniform4iv(this.addr,t),s4(i,t)}}function ao(e,t){let i=this.cache;i[0]!==t&&(e.uniform1ui(this.addr,t),i[0]=t)}function al(e,t){let i=this.cache;if(void 0!==t.x)(i[0]!==t.x||i[1]!==t.y)&&(e.uniform2ui(this.addr,t.x,t.y),i[0]=t.x,i[1]=t.y);else{if(s3(i,t))return;e.uniform2uiv(this.addr,t),s4(i,t)}}function ah(e,t){let i=this.cache;if(void 0!==t.x)(i[0]!==t.x||i[1]!==t.y||i[2]!==t.z)&&(e.uniform3ui(this.addr,t.x,t.y,t.z),i[0]=t.x,i[1]=t.y,i[2]=t.z);else{if(s3(i,t))return;e.uniform3uiv(this.addr,t),s4(i,t)}}function ac(e,t){let i=this.cache;if(void 0!==t.x)(i[0]!==t.x||i[1]!==t.y||i[2]!==t.z||i[3]!==t.w)&&(e.uniform4ui(this.addr,t.x,t.y,t.z,t.w),i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=t.w);else{if(s3(i,t))return;e.uniform4uiv(this.addr,t),s4(i,t)}}function ad(e,t,i){let r=this.cache,a=i.allocateTextureUnit();r[0]!==a&&(e.uniform1i(this.addr,a),r[0]=a),i.setTexture2D(t||sX,a)}function au(e,t,i){let r=this.cache,a=i.allocateTextureUnit();r[0]!==a&&(e.uniform1i(this.addr,a),r[0]=a),i.setTexture3D(t||sQ,a)}function ap(e,t,i){let r=this.cache,a=i.allocateTextureUnit();r[0]!==a&&(e.uniform1i(this.addr,a),r[0]=a),i.setTextureCube(t||sZ,a)}function af(e,t,i){let r=this.cache,a=i.allocateTextureUnit();r[0]!==a&&(e.uniform1i(this.addr,a),r[0]=a),i.setTexture2DArray(t||sY,a)}function am(e,t){e.uniform1fv(this.addr,t)}function ag(e,t){let i=s2(t,this.size,2);e.uniform2fv(this.addr,i)}function av(e,t){let i=s2(t,this.size,3);e.uniform3fv(this.addr,i)}function ay(e,t){let i=s2(t,this.size,4);e.uniform4fv(this.addr,i)}function ax(e,t){let i=s2(t,this.size,4);e.uniformMatrix2fv(this.addr,!1,i)}function ab(e,t){let i=s2(t,this.size,9);e.uniformMatrix3fv(this.addr,!1,i)}function aw(e,t){let i=s2(t,this.size,16);e.uniformMatrix4fv(this.addr,!1,i)}function aS(e,t){e.uniform1iv(this.addr,t)}function a_(e,t){e.uniform2iv(this.addr,t)}function aA(e,t){e.uniform3iv(this.addr,t)}function aM(e,t){e.uniform4iv(this.addr,t)}function aE(e,t){e.uniform1uiv(this.addr,t)}function aC(e,t){e.uniform2uiv(this.addr,t)}function aT(e,t){e.uniform3uiv(this.addr,t)}function aP(e,t){e.uniform4uiv(this.addr,t)}function aD(e,t,i){let r=this.cache,a=t.length,o=s5(i,a);s3(r,o)||(e.uniform1iv(this.addr,o),s4(r,o));for(let e=0;e!==a;++e)i.setTexture2D(t[e]||sX,o[e])}function aO(e,t,i){let r=this.cache,a=t.length,o=s5(i,a);s3(r,o)||(e.uniform1iv(this.addr,o),s4(r,o));for(let e=0;e!==a;++e)i.setTexture3D(t[e]||sQ,o[e])}function aI(e,t,i){let r=this.cache,a=t.length,o=s5(i,a);s3(r,o)||(e.uniform1iv(this.addr,o),s4(r,o));for(let e=0;e!==a;++e)i.setTextureCube(t[e]||sZ,o[e])}function aR(e,t,i){let r=this.cache,a=t.length,o=s5(i,a);s3(r,o)||(e.uniform1iv(this.addr,o),s4(r,o));for(let e=0;e!==a;++e)i.setTexture2DArray(t[e]||sY,o[e])}var aL=class{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.setValue=function(e){switch(e){case 5126:return s6;case 35664:return s8;case 35665:return s9;case 35666:return s7;case 35674:return ae;case 35675:return at;case 35676:return ai;case 5124:case 35670:return ar;case 35667:case 35671:return as;case 35668:case 35672:return aa;case 35669:case 35673:return an;case 5125:return ao;case 36294:return al;case 36295:return ah;case 36296:return ac;case 35678:case 36198:case 36298:case 36306:case 35682:return ad;case 35679:case 36299:case 36307:return au;case 35680:case 36300:case 36308:case 36293:return ap;case 36289:case 36303:case 36311:case 36292:return af}}(t.type)}},aB=class{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.size=t.size,this.setValue=function(e){switch(e){case 5126:return am;case 35664:return ag;case 35665:return av;case 35666:return ay;case 35674:return ax;case 35675:return ab;case 35676:return aw;case 5124:case 35670:return aS;case 35667:case 35671:return a_;case 35668:case 35672:return aA;case 35669:case 35673:return aM;case 5125:return aE;case 36294:return aC;case 36295:return aT;case 36296:return aP;case 35678:case 36198:case 36298:case 36306:case 35682:return aD;case 35679:case 36299:case 36307:return aO;case 35680:case 36300:case 36308:case 36293:return aI;case 36289:case 36303:case 36311:case 36292:return aR}}(t.type)}},az=class{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,i){if(void 0===t)return;let r=this.seq;for(let a=0,o=r.length;a!==o;++a){let o=r[a];o.setValue(e,t[o.id],i)}}},aF=/(\w+)(\])?(\[|\.)?/g;function aN(e,t){e.seq.push(t),e.map[t.id]=t}var aU=class{constructor(e,t){this.seq=[],this.map={};let i=e.getProgramParameter(t,35718);for(let r=0;r<i;++r){let i=e.getActiveUniform(t,r),a=e.getUniformLocation(t,i.name);!function(e,t,i){let r=e.name,a=r.length;for(aF.lastIndex=0;;){let o=aF.exec(r),h=aF.lastIndex,c=o[1],d="]"===o[2],u=o[3];if(d&&(c|=0),void 0===u||"["===u&&h+2===a){aN(i,void 0===u?new aL(c,e,t):new aB(c,e,t));break}{let e=i.map[c];void 0===e&&aN(i,e=new az(c)),i=e}}}(i,a,this)}}setValue(e,t,i,r){let a=this.map[t];void 0!==a&&a.setValue(e,i,r)}setOptional(e,t,i){let r=t[i];void 0!==r&&this.setValue(e,i,r)}static upload(e,t,i,r){for(let a=0,o=t.length;a!==o;++a){let o=t[a],h=i[o.id];!1!==h.needsUpdate&&o.setValue(e,h.value,r)}}static seqWithValue(e,t){let i=[];for(let r=0,a=e.length;r!==a;++r){let a=e[r];a.id in t&&i.push(a)}return i}};function ak(e,t,i){let r=e.createShader(t);return e.shaderSource(r,i),e.compileShader(r),r}var aV=0;function aj(e,t,i){let r=e.getShaderParameter(t,35713),a=e.getShaderInfoLog(t).trim();if(r&&""===a)return"";let o=/ERROR: 0:(\d+)/.exec(a);if(!o)return a;{let r=parseInt(o[1]);return i.toUpperCase()+`
3082
3083`+a+`
3084
3085`+function(e,t){let i=e.split(`
3086`),r=[],a=Math.max(t-6,0),o=Math.min(t+6,i.length);for(let e=a;
3086e<o;e++){let a=e+1;r.push(`${a===t?">":" "} ${a}: ${i[e]}`)}return r.join(`
3087`)}(e.getShaderSource(t),r)}}function aG(e){return""!==e}function aH(e,t){let i=t.numSpotLightShadows+t.numSpotLightMaps-t.numSpotLightShadowsWithMaps;return e.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,t.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,i).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,t.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function aW(e,t){return e.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}var aq=/^[ \t]*#include +<([\w\d./]+)>/gm;function aX(e){return e.replace(aq,aY)}function aY(e,t){let i=sf[t];if(void 0===i)throw Error("Can not resolve #include <"+t+">");return aX(i)}var aQ=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function aZ(e){return e.replace(aQ,aK)}function aK(e,t,i,r){let a="";for(let e=parseInt(t);e<parseInt(i);e++)a+=r.replace(/\[\s*i\s*\]/g,"[ "+e+" ]").replace(/UNROLLED_LOOP_INDEX/g,e);return a}function aJ(e){let t="precision "+e.precision+` float;
3088precision `+e.precision+" int;";return"highp"===e.precision?t+=`
3089#define HIGH_PRECISION`:"mediump"===e.precision?t+=`
3090#define MEDIUM_PRECISION`:"lowp"===e.precision&&(t+=`
3091#define LOW_PRECISION`),t}function a$(e,t,i,r){let a,o,h;let c,d,u=e.getContext(),p=i.defines,f=i.vertexShader,m=i.fragmentShader,g=(a="SHADOWMAP_TYPE_BASIC",1===i.shadowMapType?a="SHADOWMAP_TYPE_PCF":2===i.shadowMapType?a="SHADOWMAP_TYPE_PCF_SOFT":3===i.shadowMapType&&(a="SHADOWMAP_TYPE_VSM"),a),v=function(e){let t="ENVMAP_TYPE_CUBE";if(e.envMap)switch(e.envMapMode){case 301:case 302:t="ENVMAP_TYPE_CUBE";break;case 306:t="ENVMAP_TYPE_CUBE_UV"}return t}(i),y=(o="ENVMAP_MODE_REFLECTION",i.envMap&&302===i.envMapMode&&(o="ENVMAP_MODE_REFRACTION"),o),x=function(e){let t="ENVMAP_BLENDING_NONE";if(e.envMap)switch(e.combine){case 0:t="ENVMAP_BLENDING_MULTIPLY";break;case 1:t="ENVMAP_BLENDING_MIX";break;case 2:t="ENVMAP_BLENDING_ADD"}return t}(i),b=function(e){let t=e.envMapCubeUVHeight;if(null===t)return null;let i=Math.log2(t)-2;return{texelWidth:1/(3*Math.max(Math.pow(2,i),112)),texelHeight:1/t,maxMip:i}}(i),w=i.isWebGL2?"":[i.extensionDerivatives||i.envMapCubeUVHeight||i.bumpMap||i.tangentSpaceNormalMap||i.clearcoatNormalMap||i.flatShading||"physical"===i.shaderID?"#extension GL_OES_standard_derivatives : enable":"",(i.extensionFragDepth||i.logarithmicDepthBuffer)&&i.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",i.extensionDrawBuffers&&i.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(i.extensionShaderTextureLOD||i.envMap||i.transmission)&&i.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(aG).join(`
3092`),S=function(e){let t=[];for(let i in e){let r=e[i];!1!==r&&t.push("#define "+i+" "+r)}return t.join(`
3093`)}(p),_=u.createProgram(),A,M,E=i.glslVersion?"#version "+i.glslVersion+`
3094`:"";i.isRawShaderMaterial?((A=[S].filter(aG).join(`
3095`)).length>0&&(A+=`
3096`),(M=[w,S].filter(aG).join(`
3097`)).length>0&&(M+=`
3098`)):(A=[aJ(i),"#define SHADER_NAME "+i.shaderName,S,i.instancing?"#define USE_INSTANCING":"",i.instancingColor?"#define USE_INSTANCING_COLOR":"",i.supportsVertexTextures?"#define VERTEX_TEXTURES":"",i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp2?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+y:"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.normalMap&&i.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",i.normalMap&&i.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",i.clearcoatMap?"#define USE_CLEARCOATMAP":"",i.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",i.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",i.iridescenceMap?"#define USE_IR
3098IDESCENCEMAP":"",i.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",i.displacementMap&&i.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",i.specularColorMap?"#define USE_SPECULARCOLORMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.transmission?"#define USE_TRANSMISSION":"",i.transmissionMap?"#define USE_TRANSMISSIONMAP":"",i.thicknessMap?"#define USE_THICKNESSMAP":"",i.sheenColorMap?"#define USE_SHEENCOLORMAP":"",i.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",i.vertexTangents?"#define USE_TANGENT":"",i.vertexColors?"#define USE_COLOR":"",i.vertexAlphas?"#define USE_COLOR_ALPHA":"",i.vertexUvs?"#define USE_UV":"",i.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",i.flatShading?"#define FLAT_SHADED":"",i.skinning?"#define USE_SKINNING":"",i.morphTargets?"#define USE_MORPHTARGETS":"",i.morphNormals&&!1===i.flatShading?"#define USE_MORPHNORMALS":"",i.morphColors&&i.isWebGL2?"#define USE_MORPHCOLORS":"",i.morphTargetsCount>0&&i.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",i.morphTargetsCount>0&&i.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+i.morphTextureStride:"",i.morphTargetsCount>0&&i.isWebGL2?"#define MORPHTARGETS_COUNT "+i.morphTargetsCount:"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+g:"",i.sizeAttenuation?"#define USE_SIZEATTENUATION":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&i.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","	attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","	attribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","	attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","	attribute vec4 color;","#elif defined( USE_COLOR )","	attribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","	attribute vec3 morphTarget0;","	attribute vec3 morphTarget1;","	attribute vec3 morphTarget2;","	attribute vec3 morphTarget3;","	#ifdef USE_MORPHNORMALS","		attribute vec3 morphNormal0;","		attribute vec3 morphNormal1;","		attribute vec3 morphNormal2;","		attribute vec3 morphNormal3;","	#else","		attribute vec3 morphTarget4;","		attribute vec3 morphTarget5;","		attribute vec3 morphTarget6;","		attribute vec3 morphTarget7;","	#endif","#endif","#ifdef USE_SKINNING","	attribute vec4 skinIndex;","	attribute vec4 skinWeight;","#endif",`
3099`].filter(aG).join(`
3100`),M=[w,aJ(i),"#define SHADER_NAME "+i.shaderName,S,i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp2?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.matcap?"#define USE_MATCAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+v:"",i.envMap?"#define "+y:"",i.envMap?"#define "+x:"",b?"#define CUBEUV_TEXEL_WIDTH "+b.texelWidth:"",b?"#define CUBEUV_TEXEL_HEIGHT "+b.texelHeight:"",b?"#define CUBEUV_MAX_MIP "+b.maxMip+".0":"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.normalMap&&i.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",i.normalMap&&i.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",i.clearcoat?"#define USE_CLEARCOAT":"",i.clearcoatMap?"#define USE_CLEARCOATMAP":"",i.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",i.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",i.iridescence?"#define USE_IRIDESCENCE":"",i.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",i.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",i.specularColorMap?"#define USE_SPECULARCOLORMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alph
3100aMap?"#define USE_ALPHAMAP":"",i.alphaTest?"#define USE_ALPHATEST":"",i.sheen?"#define USE_SHEEN":"",i.sheenColorMap?"#define USE_SHEENCOLORMAP":"",i.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",i.transmission?"#define USE_TRANSMISSION":"",i.transmissionMap?"#define USE_TRANSMISSIONMAP":"",i.thicknessMap?"#define USE_THICKNESSMAP":"",i.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",i.vertexTangents?"#define USE_TANGENT":"",i.vertexColors||i.instancingColor?"#define USE_COLOR":"",i.vertexAlphas?"#define USE_COLOR_ALPHA":"",i.vertexUvs?"#define USE_UV":"",i.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",i.gradientMap?"#define USE_GRADIENTMAP":"",i.flatShading?"#define FLAT_SHADED":"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+g:"",i.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",i.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&i.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",0!==i.toneMapping?"#define TONE_MAPPING":"",0!==i.toneMapping?sf.tonemapping_pars_fragment:"",0!==i.toneMapping?function(e,t){let i;switch(t){case 1:i="Linear";break;case 2:i="Reinhard";break;case 3:i="OptimizedCineon";break;case 4:i="ACESFilmic";break;case 5:i="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),i="Linear"}return"vec3 "+e+"( vec3 color ) { return "+i+"ToneMapping( color ); }"}("toneMapping",i.toneMapping):"",i.dithering?"#define DITHERING":"",i.opaque?"#define OPAQUE":"",sf.encodings_pars_fragment,"vec4 linearToOutputTexel( vec4 value ) { return LinearTo"+(h=function(e){switch(e){case 3e3:return["Linear","( value )"];case 3001:return["sRGB","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported encoding:",e),["Linear","( value )"]}}(i.outputEncoding))[0]+h[1]+"; }",i.useDepthPacking?"#define DEPTH_PACKING "+i.depthPacking:"",`
3101`].filter(aG).join(`
3102`)),f=aW(f=aH(f=aX(f),i),i),m=aW(m=aH(m=aX(m),i),i),f=aZ(f),m=aZ(m),i.isWebGL2&&!0!==i.isRawShaderMaterial&&(E=`#version 300 es
3103`,A=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(`
3104`)+`
3105`+A,M=["#define varying in",i.glslVersion===tz?"":"layout(location = 0) out highp vec4 pc_fragColor;",i.glslVersion===tz?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(`
3106`)+`
3107`+M);let C=E+A+f,T=E+M+m,P=ak(u,35633,C),D=ak(u,35632,T);if(u.attachShader(_,P),u.attachShader(_,D),void 0!==i.index0AttributeName?u.bindAttribLocation(_,0,i.index0AttributeName):!0===i.morphTargets&&u.bindAttribLocation(_,0,"position"),u.linkProgram(_),e.debug.checkShaderErrors){let e=u.getProgramInfoLog(_).trim(),t=u.getShaderInfoLog(P).trim(),i=u.getShaderInfoLog(D).trim(),r=!0,a=!0;if(!1===u.getProgramParameter(_,35714)){r=!1;let t=aj(u,P,"vertex"),i=aj(u,D,"fragment");console.error("THREE.WebGLProgram: Shader Error "+u.getError()+" - VALIDATE_STATUS "+u.getProgramParameter(_,35715
3107)+`
3108
3109Program Info Log: `+e+`
3110`+t+`
3111`+i)}else""!==e?console.warn("THREE.WebGLProgram: Program Info Log:",e):(""===t||""===i)&&(a=!1);a&&(this.diagnostics={runnable:r,programLog:e,vertexShader:{log:t,prefix:A},fragmentShader:{log:i,prefix:M}})}return u.deleteShader(P),u.deleteShader(D),this.getUniforms=function(){return void 0===c&&(c=new aU(u,_)),c},this.getAttributes=function(){return void 0===d&&(d=function(e,t){let i={},r=e.getProgramParameter(t,35721);for(let a=0;a<r;a++){let r=e.getActiveAttrib(t,a),o=r.name,h=1;35674===r.type&&(h=2),35675===r.type&&(h=3),35676===r.type&&(h=4),i[o]={type:r.type,location:e.getAttribLocation(t,o),locationSize:h}}return i}(u,_)),d},this.destroy=function(){r.releaseStatesOfProgram(this),u.deleteProgram(_),this.program=void 0},this.name=i.shaderName,this.id=aV++,this.cacheKey=t,this.usedTimes=1,this.program=_,this.vertexShader=P,this.fragmentShader=D,this}var a0=0,a1=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){let t=e.vertexShader,i=e.fragmentShader,r=this._getShaderStage(t),a=this._getShaderStage(i),o=this._getShaderCacheForMaterial(e);return!1===o.has(r)&&(o.add(r),r.usedTimes++),!1===o.has(a)&&(o.add(a),a.usedTimes++),this}remove(e){for(let t of this.materialCache.get(e))t.usedTimes--,0===t.usedTimes&&this.shaderCache.delete(t.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache,i=t.get(e);return void 0===i&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){let t=this.shaderCache,i=t.get(e);return void 0===i&&(i=new a2(e),t.set(e,i)),i}},a2=class{constructor(e){this.id=a0++,this.code=e,this.usedTimes=0}};function a3(e,t,i,r,a,o,h){let c=new i8,d=new a1,u=[],p=a.isWebGL2,f=a.logarithmicDepthBuffer,m=a.vertexTextures,g=a.precision,v={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};return{getParameters:function(o,c,u,y,x){let b,w,S,_,A=y.fog,M=x.geometry,E=o.isMeshStandardMaterial?y.environment:null,C=(o.isMeshStandardMaterial?i:t).get(o.envMap||E),T=C&&306===C.mapping?C.image.height:null,P=v[o.type];null!==o.precision&&(g=a.getMaxPrecision(o.precision))!==o.precision&&console.warn("THREE.WebGLProgram.getParameters:",o.precision,"not supported, using",g,"instead.");let D=M.morphAttributes.position||M.morphAttributes.normal||M.morphAttributes.color,O=void 0!==D?D.length:0,I=0;if(void 0!==M.morphAttributes.position&&(I=1),void 0!==M.morphAttributes.normal&&(I=2),void 0!==M.morphAttributes.color&&(I=3),P){let e=sg[P];b=e.vertexShader,w=e.fragmentShader}else b=o.vertexShader,w=o.fragmentShader,d.update(o),S=d.getVertexShaderID(o),_=d.getFragmentShaderID(o);let R=e.getRenderTarget(),L=o.alphaTest>0,B=o.clearcoat>0,z=o.iridescence>0;return{isWebGL2:p,shaderID:P,shaderName:o.type,vertexShader:b,fragmentShader:w,defines:o.defines,customVertexShaderID:S,customFragmentShaderID:_,isRawShaderMaterial:!0===o.isRawShaderMaterial,glslVersion:o.glslVersion,precision:g,instancing:!0===x.isInstancedMesh,instancingColor:!0===x.isInstancedMesh&&null!==x.instanceColor,supportsVertexTextures:m,outputEncoding:null===R?e.outputEncoding:!0===R.isXRRenderTarget?R.texture.encoding:3e3,map:!!o.map,matcap:!!o.matcap,envMap:!!C,envMapMode:C&&C.mapping,envMapCubeUVHeight:T,lightMap:!!o.lightMap,aoMap:!!o.aoMap,emissiveMap:!!o.emissiveMap,bumpMap:!!o.bumpMap,normalMap:!!o.normalMap,objectSpaceNormalMap:1===o.normalMapType,tangentSpaceNormalMap:0===o.normalMapType,decodeVideoTexture:!!o.map&&!0===o.map.isVideoTexture&&3001===o.map.encoding,clearcoat:B,clearcoatMap:B&&!!o.clearcoatMap,clearcoatRoughnessMap:B&&!!o.clearcoatRoughnessMap,clearcoatNormalMap:B&&!!o.clearcoatNormalMap,iridescence:z,iridescenceMap:z&&!!o.iridescenceMap,iridescenceThicknessMap:z&&!!o.iridescenceThicknessMap,displacementMap:!!o.displacementMap,roughnessMap:!!o.roughnessMap,metalnessMap:!!o.metalnessMap,specularMap:!!o.specularMap,specularIntensityMap:!!o.specularIntensityMap,specularColorMap:!!o.specularColorMap,opaque:!1===o.transparent&&1===o.blending,alphaMap:!!o.alphaMap,alphaTest:L,gradientMap:!!o.gradientMap,sheen:o.sheen>0,sheenColorMap:!!o.sheenColorMap,sheenRoughnessMap:!!o.sheenRoughnessMap,transmission:o.transmission>0,transmissionMap:!!o.transmissionMap,thicknessMap:!!o.thicknessMap,combine:o.combine,vertexTangents:!!o.normalMap&&!!M.attributes.tangent,vertexColors:o.vertexColors,vertexAlphas:!0===o.vertexColors&&!!M.attributes.color&&4===M.attributes.color.itemSize,vertexUvs:!!o.map||!!o.bumpMap||!!o.normalMap||!!o.specularMap||!!o.alphaMap||!!o.emissiveMap||!!o.roughnessMap||!!o.metalnessMap||!!o.clearcoatMap||!!o.clearcoatRoughnessMap||!!o.clearcoatNormalMap||!!o.iridescenceMap||!!o.iridescenceThicknessMap||!!o.displacementMap||!!o.transmissionMap||!!o.thicknessMap||!!o.specularIntensityMap||!!o.specularColorMap||!!o.sheenColorMap||!!o.sheenRoughnessMap,uvsVertexOnly:!(o.map||o.bumpMap||o.normalMap||o.specularMap||o.alphaMap||o.emissiveMap||o.roughnessMap||o.metalnessMap||o.clearcoatNormalMap||o.iridescenceMap||o.iridescenceThicknessMap||o.transmission>0||o.transmissionMap||o.thicknessMap||o.specularIntensityMap||o.specularColorMap||o.sheen>0||o.sheenColorMap||o.sheenRoughnessMap)&&!!o.displacementMap,fog:!!A,useFog:!0===o.fog,fogExp2:A&&A.isFogExp2,flatShading:!!o.flatShading,sizeAttenuation:o.sizeAttenuation,logarithmicDepthBuffer:f,skinning:!0===x.isSkinnedMesh,morphTargets:void 0!==M.morphAttributes.position,morphNormals:void 0!==M.morphAttributes.normal,morphColors:void 0!==M.morphAttributes.color,morphTargetsCount:O,morphTextureStride:I,numDirLights:c.directional.length,numPointLights:c.point.length,numSpotLights:c.spot.length,numSpotLightMaps:c.spotLightMap.length,numRectAreaLights:c.rectArea.length,numHemiLights:c.hemi.length,numDirLightShadows:c.directionalShadowMap.length,numPointLightShadows:c.pointShadowMap.length,numSpotLightShadows:c.spotShadowMap.length,numSpotLightShadowsWithMaps:c.numSpotLightShadowsWithMaps,numClippingPlanes:h.numPlanes,numClipIntersection:h.numIntersection,dithering:o.dithering,shadowMapEnabled:e.shadowMap.enabled&&u.length>0,shadowMapType:e.shadowMap.type,toneMapping:o.toneMapped?e.toneMapping:0,physicallyCorrectLights:e.physicallyCorrectLights,premultipliedAlpha:o.premultipliedAlpha,doubleSided:2===o.side,flipSided:1===o.side,useDepthPacking:!!o.depthPacking,depthPacking:o.depthPacking||0,index0AttributeName:o.index0AttributeName,extensionDerivatives:o.extensions&&o.extensions.derivatives,extensionFragDepth:o.extensions&&o.extensions.fragDepth,extensionDrawBuffers:o.extensions&&o.extensions.drawBuffers,extensionShaderTextureLOD:o.extensions&&o.extensions.shaderTextureLOD,rendererExtensionFragDepth:
3111p||r.has("EXT_frag_depth"),rendererExtensionDrawBuffers:p||r.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:p||r.has("EXT_shader_texture_lod"),customProgramCacheKey:o.customProgramCacheKey()}},getProgramCacheKey:function(t){let i=[];if(t.shaderID?i.push(t.shaderID):(i.push(t.customVertexShaderID),i.push(t.customFragmentShaderID)),void 0!==t.defines)for(let e in t.defines)i.push(e),i.push(t.defines[e]);return!1===t.isRawShaderMaterial&&(i.push(t.precision),i.push(t.outputEncoding),i.push(t.envMapMode),i.push(t.envMapCubeUVHeight),i.push(t.combine),i.push(t.vertexUvs),i.push(t.fogExp2),i.push(t.sizeAttenuation),i.push(t.morphTargetsCount),i.push(t.morphAttributeCount),i.push(t.numDirLights),i.push(t.numPointLights),i.push(t.numSpotLights),i.push(t.numSpotLightMaps),i.push(t.numHemiLights),i.push(t.numRectAreaLights),i.push(t.numDirLightShadows),i.push(t.numPointLightShadows),i.push(t.numSpotLightShadows),i.push(t.numSpotLightShadowsWithMaps),i.push(t.shadowMapType),i.push(t.toneMapping),i.push(t.numClippingPlanes),i.push(t.numClipIntersection),i.push(t.depthPacking),c.disableAll(),t.isWebGL2&&c.enable(0),t.supportsVertexTextures&&c.enable(1),t.instancing&&c.enable(2),t.instancingColor&&c.enable(3),t.map&&c.enable(4),t.matcap&&c.enable(5),t.envMap&&c.enable(6),t.lightMap&&c.enable(7),t.aoMap&&c.enable(8),t.emissiveMap&&c.enable(9),t.bumpMap&&c.enable(10),t.normalMap&&c.enable(11),t.objectSpaceNormalMap&&c.enable(12),t.tangentSpaceNormalMap&&c.enable(13),t.clearcoat&&c.enable(14),t.clearcoatMap&&c.enable(15),t.clearcoatRoughnessMap&&c.enable(16),t.clearcoatNormalMap&&c.enable(17),t.iridescence&&c.enable(18),t.iridescenceMap&&c.enable(19),t.iridescenceThicknessMap&&c.enable(20),t.displacementMap&&c.enable(21),t.specularMap&&c.enable(22),t.roughnessMap&&c.enable(23),t.metalnessMap&&c.enable(24),t.gradientMap&&c.enable(25),t.alphaMap&&c.enable(26),t.alphaTest&&c.enable(27),t.vertexColors&&c.enable(28),t.vertexAlphas&&c.enable(29),t.vertexUvs&&c.enable(30),t.vertexTangents&&c.enable(31),t.uvsVertexOnly&&c.enable(32),i.push(c.mask),c.disableAll(),t.fog&&c.enable(0),t.useFog&&c.enable(1),t.flatShading&&c.enable(2),t.logarithmicDepthBuffer&&c.enable(3),t.skinning&&c.enable(4),t.morphTargets&&c.enable(5),t.morphNormals&&c.enable(6),t.morphColors&&c.enable(7),t.premultipliedAlpha&&c.enable(8),t.shadowMapEnabled&&c.enable(9),t.physicallyCorrectLights&&c.enable(10),t.doubleSided&&c.enable(11),t.flipSided&&c.enable(12),t.useDepthPacking&&c.enable(13),t.dithering&&c.enable(14),t.specularIntensityMap&&c.enable(15),t.specularColorMap&&c.enable(16),t.transmission&&c.enable(17),t.transmissionMap&&c.enable(18),t.thicknessMap&&c.enable(19),t.sheen&&c.enable(20),t.sheenColorMap&&c.enable(21),t.sheenRoughnessMap&&c.enable(22),t.decodeVideoTexture&&c.enable(23),t.opaque&&c.enable(24),i.push(c.mask),i.push(e.outputEncoding)),i.push(t.customProgramCacheKey),i.join()},getUniforms:function(e){let t=v[e.type],i;if(t){let e=sg[t];i=r5.clone(e.uniforms)}else i=e.uniforms;return i},acquireProgram:function(t,i){let r;for(let e=0,t=u.length;e<t;e++){let t=u[e];if(t.cacheKey===i){r=t,++r.usedTimes;break}}return void 0===r&&(r=new a$(e,i,t,o),u.push(r)),r},releaseProgram:function(e){if(0==--e.usedTimes){let t=u.indexOf(e);u[t]=u[u.length-1],u.pop(),e.destroy()}},releaseShaderCache:function(e){d.remove(e)},programs:u,dispose:function(){d.dispose()}}}function a4(){let e=new WeakMap;return{get:function(t){let i=e.get(t);return void 0===i&&(i={},e.set(t,i)),i},remove:function(t){e.delete(t)},update:function(t,i,r){e.get(t)[i]=r},dispose:function(){e=new WeakMap}}}function a5(e,t){return e.groupOrder!==t.groupOrder?e.groupOrder-t.groupOrder:e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.material.id!==t.material.id?e.material.id-t.material.id:e.z!==t.z?e.z-t.z:e.id-t.id}function a6(e,t){return e.groupOrder!==t.groupOrder?e.groupOrder-t.groupOrder:e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.z!==t.z?t.z-e.z:e.id-t.id}function a8(){let e=[],t=0,i=[],r=[],a=[];function o(i,r,a,o,h,c){let d=e[t];return void 0===d?(d={id:i.id,object:i,geometry:r,material:a,groupOrder:o,renderOrder:i.renderOrder,z:h,group:c},e[t]=d):(d.id=i.id,d.object=i,d.geometry=r,d.material=a,d.groupOrder=o,d.renderOrder=i.renderOrder,d.z=h,d.group=c),t++,d}return{opaque:i,transmissive:r,transparent:a,init:function(){t=0,i.length=0,r.length=0,a.length=0},push:function(e,t,h,c,d,u){let p=o(e,t,h,c,d,u);h.transmission>0?r.push(p):!0===h.transparent?a.push(p):i.push(p)},unshift:function(e,t,h,c,d,u){let p=o(e,t,h,c,d,u);h.transmission>0?r.unshift(p):!0===h.transparent?a.unshift(p):i.unshift(p)},finish:function(){for(let i=t,r=e.length;i<r;i++){let t=e[i];if(null===t.id)break;t.id=null,t.object=null,t.geometry=null,t.material=null,t.group=null}},sort:function(e,t){i.length>1&&i.sort(e||a5),r.length>1&&r.sort(t||a6),a.length>1&&a.sort(t||a6)}}}function a9(){let e=new WeakMap;return{get:function(t,i){let r=e.get(t),a;return void 0===r?(a=new a8,e.set(t,[a])):i>=r.length?(a=new a8,r.push(a)):a=r[i],a},dispose:function(){e=new WeakMap}}}function a7(){let e={};return{get:function(t){let i;if(void 0!==e[t.id])return e[t.id];switch(t.type){case"DirectionalLight":i={direction:new ib,color:new ia};break;case"SpotLight":i={position:new ib,direction:new ib,color:new ia,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":i={position:new ib,color:new ia,distance:0,decay:0};break;case"HemisphereLight":i={direction:new ib,skyColor:new ia,groundColor:new ia};break;case"RectAreaLight":i={color:new ia,position:new ib,halfWidth:new ib,halfHeight:new ib}}return e[t.id]=i,i}}}var ne=0;function nt(e,t){return(t.castShadow?2:0)-(e.castShadow?2:0)+(t.map?1:0)-(e.map?1:0)}function ni(e,t){let i;let r=new a7,a=(i={},{get:function(e){let t;if(void 0!==i[e.id])return i[e.id];switch(e.type){case"DirectionalLight":case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new tJ};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new tJ,shadowCameraNear:1,shadowCameraFar:1e3}}return i[e.id]=t,t}}),o={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0};for(let e=0;e<9;e++)o.probe.push(new ib);let h=new ib,c=new iZ,d=new iZ;return{setup:function(i,h){let c=0,d=0,u=0;for(let e=0;e<9;e++)o.probe[e].set(0,0,0);let p=0,f=0,m=0,g=0,v=0,y=0,x=0,b=0,w=0,S=0;i.sort(nt);let _=!0!==h?Math.PI:1;for(let e=0,t=i.length;e<t;e++){let t=i[e],h=t.color,A=t.intensity,M=t.distance,E=t.shadow&&t.shadow.map?t.shadow.map.texture:null;if(t.isAmbientLight)c+=h.r*A*_,d+=h.g*A*_,u+=h.b*A*_;else if(t.isLightProbe)for(let e=0;e<9;e++)o.probe[e].addScaledVector(t.sh.coefficients[e],A);else if(t.isDirectionalLight){let e=r.get(t);if(e.color.copy(t.color).multiplyScalar(t.intensity*_),t.castShadow){let e=t.shadow,i=a.get(t);
3111i.shadowBias=e.bias,i.shadowNormalBias=e.normalBias,i.shadowRadius=e.radius,i.shadowMapSize=e.mapSize,o.directionalShadow[p]=i,o.directionalShadowMap[p]=E,o.directionalShadowMatrix[p]=t.shadow.matrix,y++}o.directional[p]=e,p++}else if(t.isSpotLight){let e=r.get(t);e.position.setFromMatrixPosition(t.matrixWorld),e.color.copy(h).multiplyScalar(A*_),e.distance=M,e.coneCos=Math.cos(t.angle),e.penumbraCos=Math.cos(t.angle*(1-t.penumbra)),e.decay=t.decay,o.spot[m]=e;let i=t.shadow;if(t.map&&(o.spotLightMap[w]=t.map,w++,i.updateMatrices(t),t.castShadow&&S++),o.spotLightMatrix[m]=i.matrix,t.castShadow){let e=a.get(t);e.shadowBias=i.bias,e.shadowNormalBias=i.normalBias,e.shadowRadius=i.radius,e.shadowMapSize=i.mapSize,o.spotShadow[m]=e,o.spotShadowMap[m]=E,b++}m++}else if(t.isRectAreaLight){let e=r.get(t);e.color.copy(h).multiplyScalar(A),e.halfWidth.set(.5*t.width,0,0),e.halfHeight.set(0,.5*t.height,0),o.rectArea[g]=e,g++}else if(t.isPointLight){let e=r.get(t);if(e.color.copy(t.color).multiplyScalar(t.intensity*_),e.distance=t.distance,e.decay=t.decay,t.castShadow){let e=t.shadow,i=a.get(t);i.shadowBias=e.bias,i.shadowNormalBias=e.normalBias,i.shadowRadius=e.radius,i.shadowMapSize=e.mapSize,i.shadowCameraNear=e.camera.near,i.shadowCameraFar=e.camera.far,o.pointShadow[f]=i,o.pointShadowMap[f]=E,o.pointShadowMatrix[f]=t.shadow.matrix,x++}o.point[f]=e,f++}else if(t.isHemisphereLight){let e=r.get(t);e.skyColor.copy(t.color).multiplyScalar(A*_),e.groundColor.copy(t.groundColor).multiplyScalar(A*_),o.hemi[v]=e,v++}}g>0&&(t.isWebGL2||!0===e.has("OES_texture_float_linear")?(o.rectAreaLTC1=sm.LTC_FLOAT_1,o.rectAreaLTC2=sm.LTC_FLOAT_2):!0===e.has("OES_texture_half_float_linear")?(o.rectAreaLTC1=sm.LTC_HALF_1,o.rectAreaLTC2=sm.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),o.ambient[0]=c,o.ambient[1]=d,o.ambient[2]=u;let A=o.hash;(A.directionalLength!==p||A.pointLength!==f||A.spotLength!==m||A.rectAreaLength!==g||A.hemiLength!==v||A.numDirectionalShadows!==y||A.numPointShadows!==x||A.numSpotShadows!==b||A.numSpotMaps!==w)&&(o.directional.length=p,o.spot.length=m,o.rectArea.length=g,o.point.length=f,o.hemi.length=v,o.directionalShadow.length=y,o.directionalShadowMap.length=y,o.pointShadow.length=x,o.pointShadowMap.length=x,o.spotShadow.length=b,o.spotShadowMap.length=b,o.directionalShadowMatrix.length=y,o.pointShadowMatrix.length=x,o.spotLightMatrix.length=b+w-S,o.spotLightMap.length=w,o.numSpotLightShadowsWithMaps=S,A.directionalLength=p,A.pointLength=f,A.spotLength=m,A.rectAreaLength=g,A.hemiLength=v,A.numDirectionalShadows=y,A.numPointShadows=x,A.numSpotShadows=b,A.numSpotMaps=w,o.version=ne++)},setupView:function(e,t){let i=0,r=0,a=0,u=0,p=0,f=t.matrixWorldInverse;for(let t=0,m=e.length;t<m;t++){let m=e[t];if(m.isDirectionalLight){let e=o.directional[i];e.direction.setFromMatrixPosition(m.matrixWorld),h.setFromMatrixPosition(m.target.matrixWorld),e.direction.sub(h),e.direction.transformDirection(f),i++}else if(m.isSpotLight){let e=o.spot[a];e.position.setFromMatrixPosition(m.matrixWorld),e.position.applyMatrix4(f),e.direction.setFromMatrixPosition(m.matrixWorld),h.setFromMatrixPosition(m.target.matrixWorld),e.direction.sub(h),e.direction.transformDirection(f),a++}else if(m.isRectAreaLight){let e=o.rectArea[u];e.position.setFromMatrixPosition(m.matrixWorld),e.position.applyMatrix4(f),d.identity(),c.copy(m.matrixWorld),c.premultiply(f),d.extractRotation(c),e.halfWidth.set(.5*m.width,0,0),e.halfHeight.set(0,.5*m.height,0),e.halfWidth.applyMatrix4(d),e.halfHeight.applyMatrix4(d),u++}else if(m.isPointLight){let e=o.point[r];e.position.setFromMatrixPosition(m.matrixWorld),e.position.applyMatrix4(f),r++}else if(m.isHemisphereLight){let e=o.hemi[p];e.direction.setFromMatrixPosition(m.matrixWorld),e.direction.transformDirection(f),p++}}},state:o}}function nr(e,t){let i=new ni(e,t),r=[],a=[];return{init:function(){r.length=0,a.length=0},state:{lightsArray:r,shadowsArray:a,lights:i},setupLights:function(e){i.setup(r,e)},setupLightsView:function(e){i.setupView(r,e)},pushLight:function(e){r.push(e)},pushShadow:function(e){a.push(e)}}}function ns(e,t){let i=new WeakMap;return{get:function(r,a=0){let o=i.get(r),h;return void 0===o?(h=new nr(e,t),i.set(r,[h])):a>=o.length?(h=new nr(e,t),o.push(h)):h=o[a],h},dispose:function(){i=new WeakMap}}}var na=class extends rA{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=3200,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}},nn=class extends rA{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.referencePosition=new ib,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}},no=`void main() {
3112	gl_Position = vec4( position, 1.0 );
3113}`,nl=`uniform sampler2D shadow_pass;
3114uniform vec2 resolution;
3115uniform float radius;
3116#include <packing>
3117void main() {
3118	const float samples = float( VSM_SAMPLES );
3119	float mean = 0.0;
3120	float squared_mean = 0.0;
3121	float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );
3122	float uvStart = samples <= 1.0 ? 0.0 : - 1.0;
3123	for ( float i = 0.0; i < samples; i ++ ) {
3124		float uvOffset = uvStart + i * uvStride;
3125		#ifdef HORIZONTAL_PASS
3126			vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );
3127			mean += distribution.x;
3128			squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;
3129		#else
3130			float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );
3131			mean += depth;
3132			squared_mean += depth * depth;
3133		#endif
3134	}
3135	mean = mean / samples;
3136	squared_mean = squared_mean / samples;
3137	float std_dev = sqrt( squared_mean - mean * mean );
3138	gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );
3139}`;function nh(e,t,i){let r=new sc,a=new tJ,o=new tJ,h=new ip,c=new na({depthPacking:3201}),d=new nn,u={},p=i.maxTextureSize,f={0:1,1:0,2:2},m=new r9({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new tJ},radius:{value:4}},vertexShader:no,fragmentShader:nl}),g=m.clone();g.defines.HORIZONTAL_PASS=1;let v=new rU;v.setAttribute("position",new rT(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let y=new r$(v,m),x=this;function b(t,i,r,a,o,h){let p=null,m=!0===r.isPointLight?t.customDistanceMaterial:t.customDepthMaterial;if(void 0!==m)p=m;else if(p=!0===r.isPointLight?d:c,e.localClippingEnabled&&!0===i.clipShadows&&Array.isArray(i.clippingPlanes)&&0!==i.clippingPlanes.length||i.displacementMap&&0!==i.displacementScale||i.alphaMap&&i.alphaTest>0||i.map&&i.alphaTest>0){let e=p.uuid,t=i.uuid,r=u[e];void 0===r&&(r={},u[e]=r);let a=r[t];void 0===a&&(a=p.clone(),r[t]=a),p=a}return p.visible=i.visible,p.wireframe=i.wireframe,3===h?p.side=null!==i.shadowSide?i.shadowSide:i.side:p.side=null!==i.shadowSide?i.shadowSide:f[i.side],p.alphaMap=i.alphaMap,p.alphaTest=i.alphaTest,p.map=i.map,p.clipShadows=i.clipShadows,p.clippingPlanes=i.clippingPlanes,p.clipIntersection=i.clipIntersection,p.displacementMap=i.displacementMap,p.displacementScale=i.displacementScale,p.displacementBias=i.displacementBias,p.wireframeLinewidth=i.wireframeLinewidth,p.linewidth=i.linewidth,!0===r.isPointLight&&!0===p.isMeshDistanceMaterial&&(p.referencePosition.setFromMatrixPosition(r.matrixWorld),p.nearDistance=a,p.farDistance=o),p}this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=1,this.render=function(i,c,d){if(!1===x.enabled||!1===x.autoUpdate&&!1===x.needsUpdate||0===i.length)return;let u=e.getRenderTarget(),f=e.getActiveCubeFace(),v=e.getActiveMipmapLevel(),w=e.state;w.setBlending(0),w.buffers.color.setClear(1,1,1,1),w.buffers.depth.setTest(!0),w.setScissorTest(!1);for(let u=0,f=i.length;u<f;u++){let f=i[u],v=f.shadow;if(void 0===v){console.warn("THREE.WebGLShadowMap:",f,"has no shadow.");continue}if(!1===v.autoUpdate&&!1===v.needsUpdate)continue;a.copy(v.mapSize);let x=v.getFrameExtents();if(a.multiply(x),o.copy(v.mapSize),(a.x>p||a.y>p)&&(a.x>p&&(o.x=Math.floor(p/x.x),a.x=o.x*x.x,v.mapSize.x=o.x),a.y>p&&(o.y=Math.floor(p/x.y),a.y=o.y*x.y,v.mapSize.y=o.y)),null===v.map){let e=3!==this.type?{minFilter:1003,magFilter:1003}:{};v.map=new im(a.x,a.y,e),v.map.texture.name=f.name+".shadowMap",v.camera.updateProjectionMatrix()}e.setRenderTarget(v.map),e.clear();let S=v.getViewportCount();for(let i=0;i<S;i++){let a=v.getViewport(i);h.set(o.x*a.x,o.y*a.y,o.x*a.z,o.y*a.w),w.viewport(h),v.updateMatrices(f,i),r=v.getFrustum(),function i(a,o,h,c,d){if(!1===a.visible)return;if(a.layers.test(o.layers)&&(a.isMesh||a.isLine||a.isPoints)&&(a.castShadow||a.receiveShadow&&3===d)&&(!a.frustumCulled||r.intersectsObject(a))){a.modelViewMatrix.multiplyMatrices(h.matrixWorldInverse,a.matrixWorld);let i=t.update(a),r=a.material;if(Array.isArray(r)){let t=i.groups;for(let o=0,u=t.length;o<u;o++){let u=t[o],p=r[u.materialIndex];if(p&&p.visible){let t=b(a,p,c,h.near,h.far,d);e.renderBufferDirect(h,null,i,t,a,u)}}}else if(r.visible){let t=b(a,r,c,h.near,h.far,d);e.renderBufferDirect(h,null,i,t,a,null)}}let u=a.children;for(let e=0,t=u.length;e<t;e++)i(u[e],o,h,c,d)}(c,d,v.camera,f,this.type)}!0!==v.isPointLightShadow&&3===this.type&&function(i,r){let o=t.update(y);m.defines.VSM_SAMPLES!==i.blurSamples&&(m.defines.VSM_SAMPLES=i.blurSamples,g.defines.VSM_SAMPLES=i.blurSamples,m.needsUpdate=!0,g.needsUpdate=!0),null===i.mapPass&&(i.mapPass=new im(a.x,a.y)),m.uniforms.shadow_pass.value=i.map.texture,m.uniforms.resolution.value=i.mapSize,m.uniforms.radius.value=i.radius,e.setRenderTarget(i.mapPass),e.clear(),e.renderBufferDirect(r,null,o,m,y,null),g.uniforms.shadow_pass.value=i.mapPass.texture,g.uniforms.resolution.value=i.mapSize,g.uniforms.radius.value=i.radius,e.setRenderTarget(i.map),e.clear(),e.renderBufferDirect(r,null,o,g,
3139y,null)}(v,d),v.needsUpdate=!1}x.needsUpdate=!1,e.setRenderTarget(u,f,v)}}function nc(e,t,i){let r=i.isWebGL2,a=new function(){let t=!1,i=new ip,r=null,a=new ip(0,0,0,0);return{setMask:function(i){r===i||t||(e.colorMask(i,i,i,i),r=i)},setLocked:function(e){t=e},setClear:function(t,r,o,h,c){!0===c&&(t*=h,r*=h,o*=h),i.set(t,r,o,h),!1===a.equals(i)&&(e.clearColor(t,r,o,h),a.copy(i))},reset:function(){t=!1,r=null,a.set(-1,0,0,0)}}},o=new function(){let t=!1,i=null,r=null,a=null;return{setTest:function(e){e?j(2929):G(2929)},setMask:function(r){i===r||t||(e.depthMask(r),i=r)},setFunc:function(t){if(r!==t){switch(t){case 0:e.depthFunc(512);break;case 1:e.depthFunc(519);break;case 2:e.depthFunc(513);break;case 3:default:e.depthFunc(515);break;case 4:e.depthFunc(514);break;case 5:e.depthFunc(518);break;case 6:e.depthFunc(516);break;case 7:e.depthFunc(517)}r=t}},setLocked:function(e){t=e},setClear:function(t){a!==t&&(e.clearDepth(t),a=t)},reset:function(){t=!1,i=null,r=null,a=null}}},h=new function(){let t=!1,i=null,r=null,a=null,o=null,h=null,c=null,d=null,u=null;return{setTest:function(e){t||(e?j(2960):G(2960))},setMask:function(r){i===r||t||(e.stencilMask(r),i=r)},setFunc:function(t,i,h){(r!==t||a!==i||o!==h)&&(e.stencilFunc(t,i,h),r=t,a=i,o=h)},setOp:function(t,i,r){(h!==t||c!==i||d!==r)&&(e.stencilOp(t,i,r),h=t,c=i,d=r)},setLocked:function(e){t=e},setClear:function(t){u!==t&&(e.clearStencil(t),u=t)},reset:function(){t=!1,i=null,r=null,a=null,o=null,h=null,c=null,d=null,u=null}}},c=new WeakMap,d=new WeakMap,u={},p={},f=new WeakMap,m=[],g=null,v=!1,y=null,x=null,b=null,w=null,S=null,_=null,A=null,M=!1,E=null,C=null,T=null,P=null,D=null,O=e.getParameter(35661),I=!1,R=e.getParameter(7938);-1!==R.indexOf("WebGL")?I=parseFloat(/^WebGL (\d)/.exec(R)[1])>=1:-1!==R.indexOf("OpenGL ES")&&(I=parseFloat(/^OpenGL ES (\d)/.exec(R)[1])>=2);let L=null,B={},z=e.getParameter(3088),F=e.getParameter(2978),N=new ip().fromArray(z),U=new ip().fromArray(F);function k(t,i,r){let a=new Uint8Array(4),o=e.createTexture();e.bindTexture(t,o),e.texParameteri(t,10241,9728),e.texParameteri(t,10240,9728);for(let t=0;t<r;t++)e.texImage2D(i+t,0,6408,1,1,0,6408,5121,a);return o}let V={};function j(t){!0!==u[t]&&(e.enable(t),u[t]=!0)}function G(t){!1!==u[t]&&(e.disable(t),u[t]=!1)}V[3553]=k(3553,3553,1),V[34067]=k(34067,34069,6),a.setClear(0,0,0,1),o.setClear(1),h.setClear(0),j(2929),o.setFunc(3),X(!1),Y(1),j(2884),q(0);let H={100:32774,101:32778,102:32779};if(r)H[103]=32775,H[104]=32776;else{let e=t.get("EXT_blend_minmax");null!==e&&(H[103]=e.MIN_EXT,H[104]=e.MAX_EXT)}let W={200:0,201:1,202:768,204:770,210:776,208:774,206:772,203:769,205:771,209:775,207:773};function q(t,i,r,a,o,h,c,d){if(0===t){!0===v&&(G(3042),v=!1);return}if(!1===v&&(j(3042),v=!0),5!==t){if(t!==y||d!==M){if((100!==x||100!==S)&&(e.blendEquation(32774),x=100,S=100),d)switch(t){case 1:e.blendFuncSeparate(1,771,1,771);break;case 2:e.blendFunc(1,1);break;case 3:e.blendFuncSeparate(0,769,0,1);break;case 4:e.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",t)}else switch(t){case 1:e.blendFuncSeparate(770,771,1,771);break;case 2:e.blendFunc(770,1);break;case 3:e.blendFuncSeparate(0,769,0,1);break;case 4:e.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",t)}b=null,w=null,_=null,A=null,y=t,M=d}return}o=o||i,h=h||r,c=c||a,(i!==x||o!==S)&&(e.blendEquationSeparate(H[i],H[o]),x=i,S=o),(r!==b||a!==w||h!==_||c!==A)&&(e.blendFuncSeparate(W[r],W[a],W[h],W[c]),b=r,w=a,_=h,A=c),y=t,M=!1}function X(t){E!==t&&(t?e.frontFace(2304):e.frontFace(2305),E=t)}function Y(t){0!==t?(j(2884),t!==C&&(1===t?e.cullFace(1029):2===t?e.cullFace(1028):e.cullFace(1032))):G(2884),C=t}function Q(t,i,r){t?(j(32823),(P!==i||D!==r)&&(e.polygonOffset(i,r),P=i,D=r)):G(32823)}return{buffers:{color:a,depth:o,stencil:h},enable:j,disable:G,bindFramebuffer:function(t,i){return p[t]!==i&&(e.bindFramebuffer(t,i),p[t]=i,r&&(36009===t&&(p[36160]=i),36160===t&&(p[36009]=i)),!0)},drawBuffers:function(r,a){let o=m,h=!1;if(r){if(void 0===(o=f.get(a))&&(o=[],f.set(a,o)),r.isWebGLMultipleRenderTargets){let e=r.texture;if(o.length!==e.length||36064!==o[0]){for(let t=0,i=e.length;t<i;t++)o[t]=36064+t;o.length=e.length,h=!0}}else 36064!==o[0]&&(o[0]=36064,h=!0)}else 1029!==o[0]&&(o[0]=1029,h=!0);
3139h&&(i.isWebGL2?e.drawBuffers(o):t.get("WEBGL_draw_buffers").drawBuffersWEBGL(o))},useProgram:function(t){return g!==t&&(e.useProgram(t),g=t,!0)},setBlending:q,setMaterial:function(e,t){2===e.side?G(2884):j(2884);let i=1===e.side;t&&(i=!i),X(i),1===e.blending&&!1===e.transparent?q(0):q(e.blending,e.blendEquation,e.blendSrc,e.blendDst,e.blendEquationAlpha,e.blendSrcAlpha,e.blendDstAlpha,e.premultipliedAlpha),o.setFunc(e.depthFunc),o.setTest(e.depthTest),o.setMask(e.depthWrite),a.setMask(e.colorWrite);let r=e.stencilWrite;h.setTest(r),r&&(h.setMask(e.stencilWriteMask),h.setFunc(e.stencilFunc,e.stencilRef,e.stencilFuncMask),h.setOp(e.stencilFail,e.stencilZFail,e.stencilZPass)),Q(e.polygonOffset,e.polygonOffsetFactor,e.polygonOffsetUnits),!0===e.alphaToCoverage?j(32926):G(32926)},setFlipSided:X,setCullFace:Y,setLineWidth:function(t){t!==T&&(I&&e.lineWidth(t),T=t)},setPolygonOffset:Q,setScissorTest:function(e){e?j(3089):G(3089)},activeTexture:function(t){void 0===t&&(t=33984+O-1),L!==t&&(e.activeTexture(t),L=t)},bindTexture:function(t,i,r){void 0===r&&(r=null===L?33984+O-1:L);let a=B[r];void 0===a&&(a={type:void 0,texture:void 0},B[r]=a),(a.type!==t||a.texture!==i)&&(L!==r&&(e.activeTexture(r),L=r),e.bindTexture(t,i||V[t]),a.type=t,a.texture=i)},unbindTexture:function(){let t=B[L];void 0!==t&&void 0!==t.type&&(e.bindTexture(t.type,null),t.type=void 0,t.texture=void 0)},compressedTexImage2D:function(){try{e.compressedTexImage2D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},compressedTexImage3D:function(){try{e.compressedTexImage3D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texImage2D:function(){try{e.texImage2D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texImage3D:function(){try{e.texImage3D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},updateUBOMapping:function(t,i){let r=d.get(i);void 0===r&&(r=new WeakMap,d.set(i,r));let a=r.get(t);void 0===a&&(a=e.getUniformBlockIndex(i,t.name),r.set(t,a))},uniformBlockBinding:function(t,i){let r=d.get(i).get(t);c.get(i)!==r&&(e.uniformBlockBinding(i,r,t.__bindingPointIndex),c.set(i,r))},texStorage2D:function(){try{e.texStorage2D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texStorage3D:function(){try{e.texStorage3D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texSubImage2D:function(){try{e.texSubImage2D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texSubImage3D:function(){try{e.texSubImage3D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},compressedTexSubImage2D:function(){try{e.compressedTexSubImage2D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},compressedTexSubImage3D:function(){try{e.compressedTexSubImage3D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},scissor:function(t){!1===N.equals(t)&&(e.scissor(t.x,t.y,t.z,t.w),N.copy(t))},viewport:function(t){!1===U.equals(t)&&(e.viewport(t.x,t.y,t.z,t.w),U.copy(t))},reset:function(){e.disable(3042),e.disable(2884),e.disable(2929),e.disable(32823),e.disable(3089),e.disable(2960),e.disable(32926),e.blendEquation(32774),e.blendFunc(1,0),e.blendFuncSeparate(1,0,1,0),e.colorMask(!0,!0,!0,!0),e.clearColor(0,0,0,0),e.depthMask(!0),e.depthFunc(513),e.clearDepth(1),e.stencilMask(4294967295),e.stencilFunc(519,0,4294967295),e.stencilOp(7680,7680,7680),e.clearStencil(0),e.cullFace(1029),e.frontFace(2305),e.polygonOffset(0,0),e.activeTexture(33984),e.bindFramebuffer(36160,null),!0===r&&(e.bindFramebuffer(36009,null),e.bindFramebuffer(36008,null)),e.useProgram(null),e.lineWidth(1),e.scissor(0,0,e.canvas.width,e.canvas.height),e.viewport(0,0,e.canvas.width,e.canvas.height),u={},L=null,B={},p={},f=new WeakMap,m=[],g=null,v=!1,y=null,x=null,b=null,w=null,S=null,_=null,A=null,M=!1,E=null,C=null,T=null,P=null,D=null,N.set(0,0,e.canvas.width,e.canvas.height),U.set(0,0,e.canvas.width,e.canvas.height),a.reset(),o.reset(),h.reset()}}}function nd(e,t,i,r,a,o,h){let c=a.isWebGL2,d=a.maxTextures,u=a.maxCubemapSize,p=a.maxTextureSize,f=a.maxSamples,m=t.has("WEBGL_multisampled_render_to_texture")?t.get("WEBGL_multisampled_render_to_texture"):null,g=!(typeof navigator>"u")&&/OculusBrowser/g.test(navigator.userAgent),v=new WeakMap,y,x=new WeakMap,b=!1;try{b="u">typeof OffscreenCanvas&&null!==new OffscreenCanvas(1,1).getContext("2d")}catch{}function w(e,t){return b?new OffscreenCanvas(e,t):t4("canvas")}function S(e,t,i,r){let a=1;if((e.width>r||e.height>r)&&(a=r/Math.max(e.width,e.height)),a<1||!0===t){if(!("u">typeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap))return"data"in e&&c
3139onsole.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e;{let r=t?tY:Math.floor,o=r(a*e.width),h=r(a*e.height);void 0===y&&(y=w(o,h));let c=i?w(o,h):y;return c.width=o,c.height=h,c.getContext("2d").drawImage(e,0,0,o,h),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+e.width+"x"+e.height+") to ("+o+"x"+h+")."),c}}return e}function _(e){return tq(e.width)&&tq(e.height)}function A(e,t){return e.generateMipmaps&&t&&1003!==e.minFilter&&1006!==e.minFilter}function M(t){e.generateMipmap(t)}function E(i,r,a,o,h=!1){if(!1===c)return r;if(null!==i){if(void 0!==e[i])return e[i];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+i+"'")}let d=r;return 6403===r&&(5126===a&&(d=33326),5131===a&&(d=33325),5121===a&&(d=33321)),33319===r&&(5126===a&&(d=33328),5131===a&&(d=33327),5121===a&&(d=33323)),6408===r&&(5126===a&&(d=34836),5131===a&&(d=34842),5121===a&&(d=3001===o&&!1===h?35907:32856),32819===a&&(d=32854),32820===a&&(d=32855)),(33325===d||33326===d||33327===d||33328===d||34842===d||34836===d)&&t.get("EXT_color_buffer_float"),d}function C(e,t,i){return!0===A(e,i)||e.isFramebufferTexture&&1003!==e.minFilter&&1006!==e.minFilter?Math.log2(Math.max(t.width,t.height))+1:void 0!==e.mipmaps&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?t.mipmaps.length:1}function T(e){return 1003===e||1004===e||1005===e?9728:9729}function P(e){let t=e.target;t.removeEventListener("dispose",P),function(e){let t=r.get(e);if(void 0===t.__webglInit)return;let i=e.source,a=x.get(i);if(a){let r=a[t.__cacheKey];r.usedTimes--,0===r.usedTimes&&O(e),0===Object.keys(a).length&&x.delete(i)}r.remove(e)}(t),t.isVideoTexture&&v.delete(t)}function D(t){let i=t.target;i.removeEventListener("dispose",D),function(t){let i=t.texture,a=r.get(t),o=r.get(i);if(void 0!==o.__webglTexture&&(e.deleteTexture(o.__webglTexture),h.memory.textures--),t.depthTexture&&t.depthTexture.dispose(),t.isWebGLCubeRenderTarget)for(let t=0;t<6;t++)e.deleteFramebuffer(a.__webglFramebuffer[t]),a.__webglDepthbuffer&&e.deleteRenderbuffer(a.__webglDepthbuffer[t]);else{if(e.deleteFramebuffer(a.__webglFramebuffer),a.__webglDepthbuffer&&e.deleteRenderbuffer(a.__webglDepthbuffer),a.__webglMultisampledFramebuffer&&e.deleteFramebuffer(a.__webglMultisampledFramebuffer),a.__webglColorRenderbuffer)for(let t=0;t<a.__webglColorRenderbuffer.length;t++)a.__webglColorRenderbuffer[t]&&e.deleteRenderbuffer(a.__webglColorRenderbuffer[t]);a.__webglDepthRenderbuffer&&e.deleteRenderbuffer(a.__webglDepthRenderbuffer)}if(t.isWebGLMultipleRenderTargets)for(let t=0,a=i.length;t<a;t++){let a=r.get(i[t]);a.__webglTexture&&(e.deleteTexture(a.__webglTexture),h.memory.textures--),r.remove(i[t])}r.remove(i),r.remove(t)}(i)}function O(t){let i=r.get(t);e.deleteTexture(i.__webglTexture);let a=t.source,o=x.get(a);delete o[i.__cacheKey],h.memory.textures--}let I=0;function R(e,t){let a,o=r.get(e);if(e.isVideoTexture&&(a=h.render.frame,v.get(e)!==a&&(v.set(e,a),e.update())),!1===e.isRenderTargetTexture&&e.version>0&&o.__version!==e.version){let i=e.image;if(null===i)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(!1===i.complete)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{N(o,e,t);return}}i.bindTexture(3553,o.__webglTexture,33984+t)}let L={1e3:10497,1001:33071,1002:33648},B={1003:9728,1004:9984,1005:9986,1006:9729,1007:9985,1008:9987};function z(i,o,h){if(h?(e.texParameteri(i,10242,L[o.wrapS]),e.texParameteri(i,10243,L[o.wrapT]),(32879===i||35866===i)&&e.texParameteri(i,32882,L[o.wrapR]),e.texParameteri(i,10240,B[o.magFilter]),e.texParameteri(i,10241,B[o.minFilter])):(e.texParameteri(i,10242,33071),e.texParameteri(i,10243,33071),(32879===i||35866===i)&&e.texParameteri(i,32882,33071),(1001!==o.wrapS||1001!==o.wrapT)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),e.texParameteri(i,10240,T(o.magFilter)),e.texParameteri(i,10241,T(o.minFilter)),1003!==o.minFilter&&1006!==o.minFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),!0===t.has("EXT_texture_filter_anisotropic")){let h=t.get("EXT_texture_filter_anisotropic");1003!==o.magFilter&&(1005===o.minFilter||1008===o.minFilter)&&(1015!==o.type||!1!==t.has("OES_texture_float_linear"))&&(!1!==c||1016!==o.type||!1!==t.has("OES_texture_half_float_linear"))&&(o.anisotropy>1||r.get(o).__currentAnisotropy)&&(e.texParameterf(i,h.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(o.anisotropy,a.getMaxAnisotropy())),r.get(o).__currentAnisotropy=o.anisotropy)}}function F(t,i){let r,a=!1;void 0===t.__webglInit&&(t.__webglInit=!0,i.addEventListener("dispose",P));let o=i.source,c=x.get(o);void 0===c&&(c={},x.set(o,c));let d=((r=[]).push(i.wrapS),r.push(i.wrapT),r.push(i.wrapR||0),r.push(i.magFilter),r.push(i.minFilter),r.push(i.anisotropy),r.push(i.internalFormat),r.push(i.format),r.push(i.type),r.push(i.generateMipmaps),r.push(i.premultiplyAlpha),r.push(i.flipY),r.push(i.unpackAlignment),r.push(i.encoding),r.join());if(d!==t.__cacheKey){void 0===c[d]&&(c[d]={texture:e.createTexture(),usedTimes:0},h.memory.textures++,a=!0),c[d].usedTimes++;let r=c[t.__cacheKey];void 0!==r&&(c[t.__cacheKey].usedTimes--,0===r.usedTimes&&O(i)),t.__cacheKey=d,t.__webglTexture=c[d].texture}return a}function N(t,a,h){let d=3553;(a.isDataArrayTexture||a.isCompressedArrayTexture)&&(d=35866),a.isData3DTexture&&(d=32879);let u=F(t,a),f=a.source;i.bindTexture(d,t.__webglTexture,33984+h);let m=r.get(f);if(f.version!==m.__version||!0===u){i.activeTexture(33984+h),e.pixelStorei(37440,a.flipY),e.pixelStorei(37441,a.premultiplyAlpha),e.pixelStorei(3317,a.unpackAlignment),e.pixelStorei(37443,0);let t=!c&&(1001!==a.wrapS||1001!==a.wrapT||1003!==a.minFilter&&1006!==a.minFilter)&&!1===_(a.image),r=S(a.image,t,!1,p),g=_(r=H(a,r))||c,v=o.convert(a.format,a.encoding),y=o.convert(a.type),x=E(a.internalFormat,v,y,a.encoding,a.isVideoTexture);z(d,a,g);let b,w=a.mipmaps,T=c&&!0!==a.isVideoTexture,P=void 0===m.__version||!0===u,D=C(a,r,g);if(a.isDepthTexture)x=6402,c?x=1015===a.type?36012:1014===a.type?33190:1020===a.type?35056:33189:1015===a.type&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),1026===a.format&&6402===x&&1012!==a.type&&1014!==a.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),a.type=1014,y=o.convert(a.type)),1027===a.format&&6402===x&&(x=34041,1020!==a.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),a.type=1020,y=o.convert(a.type))),P&&(T?i.texStorage2D(3553,1,x,r.width,r.height):i.texImage2D(3553,0,x,r.width,r.height,0,v,y,null));else if(a.isDataTexture){if(w.length>0&&g){T&&P&&i.texStorage2D(3553,D,x,w[0].width,w[0].height);for(let e=0,t=w.length;e<t;e++)b=w[e],T?i.texSubImage2D(3553,e,0,0,b.width,b.height,v,y,b.data):i.texImage2D(3553,e,x,b.width,b.height,0,v,y,b.data);a.generateMipmaps=!1}else T?(P&&i.texStorage2D(3553,D,x,r.width,r.height),i.texSubImage2D(3553,0,0,0,r.width,r.height,v,y,r.data)):i.texImage2D(3553,0,x,r.width,r.height,0,v,y,r.data)}else if(a.isCompressedTexture){if(a.isCompressedArrayTexture){T&&P&&i.texStorage3D(35866,D,x,w[0].width,w[0].height,r.depth);for(let e=0,t=w.length;e<t;e++)b=w[e],1023!==a.format?null!==v?T?i.compressedTexSubImage3D(35866,e,0,0,0,b.width,b.height,r.depth,v,b.data,0,0):i.compressedTexImage3D(35866,e,x,b.width,b.height,r.depth,0,b.data,
31390,0):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):T?i.texSubImage3D(35866,e,0,0,0,b.width,b.height,r.depth,v,y,b.data):i.texImage3D(35866,e,x,b.width,b.height,r.depth,0,v,y,b.data)}else{T&&P&&i.texStorage2D(3553,D,x,w[0].width,w[0].height);for(let e=0,t=w.length;e<t;e++)b=w[e],1023!==a.format?null!==v?T?i.compressedTexSubImage2D(3553,e,0,0,b.width,b.height,v,b.data):i.compressedTexImage2D(3553,e,x,b.width,b.height,0,b.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):T?i.texSubImage2D(3553,e,0,0,b.width,b.height,v,y,b.data):i.texImage2D(3553,e,x,b.width,b.height,0,v,y,b.data)}}else if(a.isDataArrayTexture)T?(P&&i.texStorage3D(35866,D,x,r.width,r.height,r.depth),i.texSubImage3D(35866,0,0,0,0,r.width,r.height,r.depth,v,y,r.data)):i.texImage3D(35866,0,x,r.width,r.height,r.depth,0,v,y,r.data);else if(a.isData3DTexture)T?(P&&i.texStorage3D(32879,D,x,r.width,r.height,r.depth),i.texSubImage3D(32879,0,0,0,0,r.width,r.height,r.depth,v,y,r.data)):i.texImage3D(32879,0,x,r.width,r.height,r.depth,0,v,y,r.data);else if(a.isFramebufferTexture){if(P){if(T)i.texStorage2D(3553,D,x,r.width,r.height);else{let e=r.width,t=r.height;for(let r=0;r<D;r++)i.texImage2D(3553,r,x,e,t,0,v,y,null),e>>=1,t>>=1}}}else if(w.length>0&&g){T&&P&&i.texStorage2D(3553,D,x,w[0].width,w[0].height);for(let e=0,t=w.length;e<t;e++)b=w[e],T?i.texSubImage2D(3553,e,0,0,v,y,b):i.texImage2D(3553,e,x,v,y,b);a.generateMipmaps=!1}else T?(P&&i.texStorage2D(3553,D,x,r.width,r.height),i.texSubImage2D(3553,0,0,0,v,y,r)):i.texImage2D(3553,0,x,v,y,r);A(a,g)&&M(d),m.__version=f.version,a.onUpdate&&a.onUpdate(a)}t.__version=a.version}function U(t,a,h,c,d){let u=o.convert(h.format,h.encoding),p=o.convert(h.type),f=E(h.internalFormat,u,p,h.encoding);r.get(a).__hasExternalTextures||(32879===d||35866===d?i.texImage3D(d,0,f,a.width,a.height,a.depth,0,u,p,null):i.texImage2D(d,0,f,a.width,a.height,0,u,p,null)),i.bindFramebuffer(36160,t),G(a)?m.framebufferTexture2DMultisampleEXT(36160,c,d,r.get(h).__webglTexture,0,j(a)):(3553===d||d>=34069&&d<=34074)&&e.framebufferTexture2D(36160,c,d,r.get(h).__webglTexture,0),i.bindFramebuffer(36160,null)}function k(t,i,r){if(e.bindRenderbuffer(36161,t),i.depthBuffer&&!i.stencilBuffer){let a=33189;if(r||G(i)){let t=i.depthTexture;t&&t.isDepthTexture&&(1015===t.type?a=36012:1014===t.type&&(a=33190));let r=j(i);G(i)?m.renderbufferStorageMultisampleEXT(36161,r,a,i.width,i.height):e.renderbufferStorageMultisample(36161,r,a,i.width,i.height)}else e.renderbufferStorage(36161,a,i.width,i.height);e.framebufferRenderbuffer(36160,36096,36161,t)}else if(i.depthBuffer&&i.stencilBuffer){let a=j(i);r&&!1===G(i)?e.renderbufferStorageMultisample(36161,a,35056,i.width,i.height):G(i)?m.renderbufferStorageMultisampleEXT(36161,a,35056,i.width,i.height):e.renderbufferStorage(36161,34041,i.width,i.height),e.framebufferRenderbuffer(36160,33306,36161,t)}else{let t=!0===i.isWebGLMultipleRenderTargets?i.texture:[i.texture];for(let a=0;a<t.length;a++){let h=t[a],c=o.convert(h.format,h.encoding),d=o.convert(h.type),u=E(h.internalFormat,c,d,h.encoding),p=j(i);r&&!1===G(i)?e.renderbufferStorageMultisample(36161,p,u,i.width,i.height):G(i)?m.renderbufferStorageMultisampleEXT(36161,p,u,i.width,i.height):e.renderbufferStorage(36161,u,i.width,i.height)}}e.bindRenderbuffer(36161,null)}function V(t){let a=r.get(t),o=!0===t.isWebGLCubeRenderTarget;if(t.depthTexture&&!a.__autoAllocateDepthBuffer){if(o)throw Error("target.depthTexture not supported in Cube render targets");!function(t,a){if(a&&a.isWebGLCubeRenderTarget)throw Error("Depth Texture with cube render targets is not supported");if(i.bindFramebuffer(36160,t),!(a.depthTexture&&a.depthTexture.isDepthTexture))throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");r.get(a.depthTexture).__webglTexture&&a.depthTexture.image.width===a.width&&a.depthTexture.image.height===a.height||(a.depthTexture.image.width=a.width,a.depthTexture.image.height=a.height,a.depthTexture.needsUpdate=!0),R(a.depthTexture,0);let o=r.get(a.depthTexture).__webglTexture,h=j(a);if(1026===a.depthTexture.format)G(a)?m.framebufferTexture2DMultisampleEXT(36160,36096,3553,o,0,h):e.framebufferTexture2D(36160,36096,3553,o,0);else if(1027===a.depthTexture.format)G(a)?m.framebufferTexture2DMultisampleEXT(36160,33306,3553,o,0,h):e.framebufferTexture2D(36160,33306,3553,o,0);else throw Error("Unknown depthTexture format")}(a.__webglFramebuffer,t)}else if(o){a.__webglDepthbuffer=[];for(let r=0;r<6;r++)i.bindFramebuffer(36160,a.__webglFramebuffer[r]),a.__webglDepthbuffer[r]=e.createRenderbuffer(),k(a.__webglDepthbuffer[r],t,!1)}else i.bindFramebuffer(36160,a.__webglFramebuffer),a.__webglDepthbuffer=e.createRenderbuffer(),k(a.__webglDepthbuffer,t,!1);i.bindFramebuffer(36160,null)}function j(e){return Math.min(f,e.samples)}function G(e){let i=r.get(e);return c&&e.samples>0&&!0===t.has("WEBGL_multisampled_render_to_texture")&&!1!==i.__useRenderToTexture}function H(e,i){let r=e.encoding,a=e.format,o=e.type;return!0===e.isCompressedTexture||!0===e.isVideoTexture||1035===e.format||3e3!==r&&(3001===r?!1===c?!0===t.has("EXT_sRGB")&&1023===a?(e.format=1035,e.minFilter=1006,e.generateMipmaps=!1):i=il.sRGBToLinear(i):(1023!==a||1009!==o)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",r)),i}this.allocateTextureUnit=function(){let e=I;return e>=d&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+d),I+=1,e},this.resetTextureUnits=function(){I=0},this.setTexture2D=R,this.setTexture2DArray=function(e,t){let a=r.get(e);if(e.version>0&&a.__version!==e.version){N(a,e,t);return}i.bindTexture(35866,a.__webglTexture,33984+t)},this.setTexture3D=function(e,t){let a=r.get(e);if(e.version>0&&a.__version!==e.version){N(a,e,t);return}i.bindTexture(32879,a.__webglTexture,33984+t)},this.setTextureCube=function(t,a){let h=r.get(t);if(t.version>0&&h.__version!==t.version){(function(t,a,h){if(6!==a.image.length)return;let d=F(t,a),p=a.source;i.bindTexture(34067,t.__webglTexture,33984+h);let f=r.get(p);if(p.version!==f.__version||!0===d){let t;i.activeTexture(33984+h),e.pixelStorei(37440,a.flipY),e.pixelStorei(37441,a.premultiplyAlpha),e.pixelStorei(3317,a.unpackAlignment),e.pixelStorei(37443,0);let r=a.isCompressedTexture||a.image[0].isCompressedTexture,m=a.image[0]&&a.image[0].isDataTexture,g=[];for(let e=0;e<6;e++)r||m?g[e]=m?a.image[e].image:a.image[e]:g[e]=S(a.image[e],!1,!0,u),g[e]=H(a,g[e]);let v=g[0],y=_(v)||c,x=o.convert(a.format,a.encoding),b=o.convert(a.type),w=E(a.internalFormat,x,b,a.encoding),T=c&&!0!==a.isVideoTexture,P=void 0===f.__version||!0===d,D=C(a,v,y
3139);if(z(34067,a,y),r){T&&P&&i.texStorage2D(34067,D,w,v.width,v.height);for(let e=0;e<6;e++){t=g[e].mipmaps;for(let r=0;r<t.length;r++){let o=t[r];1023!==a.format?null!==x?T?i.compressedTexSubImage2D(34069+e,r,0,0,o.width,o.height,x,o.data):i.compressedTexImage2D(34069+e,r,w,o.width,o.height,0,o.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):T?i.texSubImage2D(34069+e,r,0,0,o.width,o.height,x,b,o.data):i.texImage2D(34069+e,r,w,o.width,o.height,0,x,b,o.data)}}}else{t=a.mipmaps,T&&P&&(t.length>0&&D++,i.texStorage2D(34067,D,w,g[0].width,g[0].height));for(let e=0;e<6;e++)if(m){T?i.texSubImage2D(34069+e,0,0,0,g[e].width,g[e].height,x,b,g[e].data):i.texImage2D(34069+e,0,w,g[e].width,g[e].height,0,x,b,g[e].data);for(let r=0;r<t.length;r++){let a=t[r].image[e].image;T?i.texSubImage2D(34069+e,r+1,0,0,a.width,a.height,x,b,a.data):i.texImage2D(34069+e,r+1,w,a.width,a.height,0,x,b,a.data)}}else{T?i.texSubImage2D(34069+e,0,0,0,x,b,g[e]):i.texImage2D(34069+e,0,w,x,b,g[e]);for(let r=0;r<t.length;r++){let a=t[r];T?i.texSubImage2D(34069+e,r+1,0,0,x,b,a.image[e]):i.texImage2D(34069+e,r+1,w,x,b,a.image[e])}}}A(a,y)&&M(34067),f.__version=p.version,a.onUpdate&&a.onUpdate(a)}t.__version=a.version})(h,t,a);return}i.bindTexture(34067,h.__webglTexture,33984+a)},this.rebindTextures=function(e,t,i){let a=r.get(e);void 0!==t&&U(a.__webglFramebuffer,e,e.texture,36064,3553),void 0!==i&&V(e)},this.setupRenderTarget=function(t){let d=t.texture,u=r.get(t),p=r.get(d);t.addEventListener("dispose",D),!0!==t.isWebGLMultipleRenderTargets&&(void 0===p.__webglTexture&&(p.__webglTexture=e.createTexture()),p.__version=d.version,h.memory.textures++);let f=!0===t.isWebGLCubeRenderTarget,m=!0===t.isWebGLMultipleRenderTargets,g=_(t)||c;if(f){u.__webglFramebuffer=[];for(let t=0;t<6;t++)u.__webglFramebuffer[t]=e.createFramebuffer()}else{if(u.__webglFramebuffer=e.createFramebuffer(),m){if(a.drawBuffers){let i=t.texture;for(let t=0,a=i.length;t<a;t++){let a=r.get(i[t]);void 0===a.__webglTexture&&(a.__webglTexture=e.createTexture(),h.memory.textures++)}}else console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.")}if(c&&t.samples>0&&!1===G(t)){let r=m?d:[d];u.__webglMultisampledFramebuffer=e.createFramebuffer(),u.__webglColorRenderbuffer=[],i.bindFramebuffer(36160,u.__webglMultisampledFramebuffer);for(let i=0;i<r.length;i++){let a=r[i];u.__webglColorRenderbuffer[i]=e.createRenderbuffer(),e.bindRenderbuffer(36161,u.__webglColorRenderbuffer[i]);let h=o.convert(a.format,a.encoding),c=o.convert(a.type),d=E(a.internalFormat,h,c,a.encoding,!0===t.isXRRenderTarget),p=j(t);e.renderbufferStorageMultisample(36161,p,d,t.width,t.height),e.framebufferRenderbuffer(36160,36064+i,36161,u.__webglColorRenderbuffer[i])}e.bindRenderbuffer(36161,null),t.depthBuffer&&(u.__webglDepthRenderbuffer=e.createRenderbuffer(),k(u.__webglDepthRenderbuffer,t,!0)),i.bindFramebuffer(36160,null)}}if(f){i.bindTexture(34067,p.__webglTexture),z(34067,d,g);for(let e=0;e<6;e++)U(u.__webglFramebuffer[e],t,d,36064,34069+e);A(d,g)&&M(34067),i.unbindTexture()}else if(m){let e=t.texture;for(let a=0,o=e.length;a<o;a++){let o=e[a],h=r.get(o);i.bindTexture(3553,h.__webglTexture),z(3553,o,g),U(u.__webglFramebuffer,t,o,36064+a,3553),A(o,g)&&M(3553)}i.unbindTexture()}else{let e=3553;(t.isWebGL3DRenderTarget||t.isWebGLArrayRenderTarget)&&(c?e=t.isWebGL3DRenderTarget?32879:35866:console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")),i.bindTexture(e,p.__webglTexture),z(e,d,g),U(u.__webglFramebuffer,t,d,36064,e),A(d,g)&&M(e),i.unbindTexture()}t.depthBuffer&&V(t)},this.updateRenderTargetMipmap=function(e){let t=_(e)||c,a=!0===e.isWebGLMultipleRenderTargets?e.texture:[e.texture];for(let o=0,h=a.length;o<h;o++){let h=a[o];if(A(h,t)){let t=e.isWebGLCubeRenderTarget?34067:3553,a=r.get(h).__webglTexture;i.bindTexture(t,a),M(t),i.unbindTexture()}}},this.updateMultisampleRenderTarget=function(t){if(c&&t.samples>0&&!1===G(t)){let a=t.isWebGLMultipleRenderTargets?t.texture:[t.texture],o=t.width,h=t.height,c=16384,d=[],u=t.stencilBuffer?33306:36096,p=r.get(t),f=!0===t.isWebGLMultipleRenderTargets;if(f)for(let t=0;t<a.length;t++)i.bindFramebuffer(36160,p.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(36160,36064+t,3
31396161,null),i.bindFramebuffer(36160,p.__webglFramebuffer),e.framebufferTexture2D(36009,36064+t,3553,null,0);i.bindFramebuffer(36008,p.__webglMultisampledFramebuffer),i.bindFramebuffer(36009,p.__webglFramebuffer);for(let i=0;i<a.length;i++){d.push(36064+i),t.depthBuffer&&d.push(u);let m=void 0!==p.__ignoreDepthValues&&p.__ignoreDepthValues;if(!1===m&&(t.depthBuffer&&(c|=256),t.stencilBuffer&&(c|=1024)),f&&e.framebufferRenderbuffer(36008,36064,36161,p.__webglColorRenderbuffer[i]),!0===m&&(e.invalidateFramebuffer(36008,[u]),e.invalidateFramebuffer(36009,[u])),f){let t=r.get(a[i]).__webglTexture;e.framebufferTexture2D(36009,36064,3553,t,0)}e.blitFramebuffer(0,0,o,h,0,0,o,h,c,9728),g&&e.invalidateFramebuffer(36008,d)}if(i.bindFramebuffer(36008,null),i.bindFramebuffer(36009,null),f)for(let t=0;t<a.length;t++){i.bindFramebuffer(36160,p.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(36160,36064+t,36161,p.__webglColorRenderbuffer[t]);let o=r.get(a[t]).__webglTexture;i.bindFramebuffer(36160,p.__webglFramebuffer),e.framebufferTexture2D(36009,36064+t,3553,o,0)}i.bindFramebuffer(36009,p.__webglMultisampledFramebuffer)}},this.setupDepthRenderbuffer=V,this.setupFrameBufferTexture=U,this.useMultisampledRTT=G}function nu(e,t,i){let r=i.isWebGL2;return{convert:function(i,a=null){let o;if(1009===i)return 5121;if(1017===i)return 32819;if(1018===i)return 32820;if(1010===i)return 5120;if(1011===i)return 5122;if(1012===i)return 5123;if(1013===i)return 5124;if(1014===i)return 5125;if(1015===i)return 5126;if(1016===i)return r?5131:null!==(o=t.get("OES_texture_half_float"))?o.HALF_FLOAT_OES:null;if(1021===i)return 6406;if(1023===i)return 6408;if(1024===i)return 6409;if(1025===i)return 6410;if(1026===i)return 6402;if(1027===i)return 34041;if(1035===i)return null!==(o=t.get("EXT_sRGB"))?o.SRGB_ALPHA_EXT:null;if(1028===i)return 6403;if(1029===i)return 36244;if(1030===i)return 33319;if(1031===i)return 33320;if(1033===i)return 36249;if(33776===i||33777===i||33778===i||33779===i){if(3001===a){if(null===(o=t.get("WEBGL_compressed_texture_s3tc_srgb")))return null;if(33776===i)return o.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(33777===i)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(33778===i)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(33779===i)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else{if(null===(o=t.get("WEBGL_compressed_texture_s3tc")))return null;if(33776===i)return o.COMPRESSED_RGB_S3TC_DXT1_EXT;if(33777===i)return o.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(33778===i)return o.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(33779===i)return o.COMPRESSED_RGBA_S3TC_DXT5_EXT}}if(35840===i||35841===i||35842===i||35843===i){if(null===(o=t.get("WEBGL_compressed_texture_pvrtc")))return null;if(35840===i)return o.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(35841===i)return o.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(35842===i)return o.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(35843===i)return o.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(36196===i)return null!==(o=t.get("WEBGL_compressed_texture_etc1"))?o.COMPRESSED_RGB_ETC1_WEBGL:null;if(37492===i||37496===i){if(null===(o=t.get("WEBGL_compressed_texture_etc")))return null;if(37492===i)return 3001===a?o.COMPRESSED_SRGB8_ETC2:o.COMPRESSED_RGB8_ETC2;if(37496===i)return 3001===a?o.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:o.COMPRESSED_RGBA8_ETC2_EAC}if(37808===i||37809===i||37810===i||37811===i||37812===i||37813===i||37814===i||37815===i||37816===i||37817===i||37818===i||37819===i||37820===i||37821===i){if(null===(o=t.get("WEBGL_compressed_texture_astc")))return null;if(37808===i)return 3001===a?o.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:o.COMPRESSED_RGBA_ASTC_4x4_KHR;if(37809===i)return 3001===a?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:o.COMPRESSED_RGBA_ASTC_5x4_KHR;if(37810===i)return 3001===a?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:o.COMPRESSED_RGBA_ASTC_5x5_KHR;if(37811===i)return 3001===a?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:o.COMPRESSED_RGBA_ASTC_6x5_KHR;if(37812===i)return 3001===a?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:o.COMPRESSED_RGBA_ASTC_6x6_KHR;if(37813===i)return 3001===a?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:o.COMPRESSED_RGBA_ASTC_8x5_KHR;if(37814===i)return 3001===a?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:o.COMPRESSED_RGBA_ASTC_8x6_KHR;if(37815===i)return 3001===a?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:o.COMPRESSED_RGBA_ASTC_8x8_KHR;if(37816===i)return 3001===a?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:o.COMPRESSED_RGBA_ASTC_10x5_KHR;if(37817===i)return 3001===a?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:o.COMPRESSED_RGBA_ASTC_10x6_KHR;if(37818===i)return 3001===a?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:o.COMPRESSED_RGBA_ASTC_10x8_KHR;if(37819===i)return 3001===a?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:o.COMPRESSED_RGBA_ASTC_10x10_KHR;if(37820===i)return 3001===a?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:o.COMPRESSED_RGBA_ASTC_12x10_KHR;if(37821===i)return 3001===a?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:o.COMPRESSED_RGBA_ASTC_12x12_KHR}if(36492===i){if(null===(o=t.get("EXT_texture_compression_bptc")))return null;if(36492===i)return 3001===a?o.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:o.COMPRESSED_RGBA_BPTC_UNORM_EXT}if(36283===i||36284===i||36285===i||36286===i){if(null===(o=t.get("EXT_texture_compression_rgtc")))return null;
3139if(36492===i)return o.COMPRESSED_RED_RGTC1_EXT;if(36284===i)return o.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(36285===i)return o.COMPRESSED_RED_GREEN_RGTC2_EXT;if(36286===i)return o.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}return 1020===i?r?34042:null!==(o=t.get("WEBGL_depth_texture"))?o.UNSIGNED_INT_24_8_WEBGL:null:void 0!==e[i]?e[i]:null}}}var np=class extends se{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}},nf=class extends rd{constructor(){super(),this.isGroup=!0,this.type="Group"}},nm={type:"move"},ng=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return null===this._hand&&(this._hand=new nf,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return null===this._targetRay&&(this._targetRay=new nf,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new ib,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new ib),this._targetRay}getGripSpace(){return null===this._grip&&(this._grip=new nf,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new ib,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new ib),this._grip}dispatchEvent(e){return null!==this._targetRay&&this._targetRay.dispatchEvent(e),null!==this._grip&&this._grip.dispatchEvent(e),null!==this._hand&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){let t=this._hand;if(t)for(let i of e.hand.values())this._getHandJoint(t,i)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),null!==this._targetRay&&(this._targetRay.visible=!1),null!==this._grip&&(this._grip.visible=!1),null!==this._hand&&(this._hand.visible=!1),this}update(e,t,i){let r=null,a=null,o=null,h=this._targetRay,c=this._grip,d=this._hand;if(e&&"visible-blurred"!==t.session.visibilityState){if(d&&e.hand){for(let r of(o=!0,e.hand.values())){let e=t.getJointPose(r,i),a=this._getHandJoint(d,r);null!==e&&(a.matrix.fromArray(e.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.jointRadius=e.radius),a.visible=null!==e}let r=d.joints["index-finger-tip"],a=d.joints["thumb-tip"],h=r.position.distanceTo(a.position);d.inputState.pinching&&h>.025?(d.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!d.inputState.pinching&&h<=.015&&(d.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else null!==c&&e.gripSpace&&null!==(a=t.getPose(e.gripSpace,i))&&(c.matrix.fromArray(a.transform.matrix),c.matrix.decompose(c.position,c.rotation,c.scale),a.linearVelocity?(c.hasLinearVelocity=!0,c.linearVelocity.copy(a.linearVelocity)):c.hasLinearVelocity=!1,a.angularVelocity?(c.hasAngularVelocity=!0,c.angularVelocity.copy(a.angularVelocity)):c.hasAngularVelocity=!1);null!==h&&(null===(r=t.getPose(e.targetRaySpace,i))&&null!==a&&(r=a),null!==r&&(h.matrix.fromArray(r.transform.matrix),h.matrix.decompose(h.position,h.rotation,h.scale),r.linearVelocity?(h.hasLinearVelocity=!0,h.linearVelocity.copy(r.linearVelocity)):h.hasLinearVelocity=!1,r.angularVelocity?(h.hasAngularVelocity=!0,h.angularVelocity.copy(r.angularVelocity)):h.hasAngularVelocity=!1,this.dispatchEvent(nm)))}return null!==h&&(h.visible=null!==r),null!==c&&(c.visible=null!==a),null!==d&&(d.visible=null!==o),this}_getHandJoint(e,t){if(void 0===e.joints[t.jointName]){let i=new nf;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}},nv=class extends iu{constructor(e,t,i,r,a,o,h,c,d,u){if(1026!==(u=void 0!==u?u:1026)&&1027!==u)throw Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===i&&1026===u&&(i=1014),void 0===i&&1027===u&&(i=1020),super(null,r,a,o,h,c,u,i,d),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=void 0!==h?h:1003,this.minFilter=void 0!==c?c:1003,this.flipY=!1,this.generateMipmaps=!1}},ny=class extends tF{constructor(e,t){super();let i=this,r=null,a=1,o=null,h="local-floor",c=1,d=null,u=null,p=null,f=null,m=null,g=null,v=t.getContextAttributes(),y=null,x=null,b=[],w=[],S=new Set,_=new Map,A=new se;A.layers.enable(1),A.viewport=new ip;let M=new se;M.layers.enable(2),M.viewport=new ip;let E=[A,M],C=new np;C.layers.enable(1),C.layers.enable(2);let T=null,P=null;function D(e){let t=w.indexOf(e.inputSource);if(-1===t)return;let i=b[t];void 0!==i&&i.dispatchEvent({type:e.type,data:e.inputSource})}function O(){r.removeEventListener("select",D),r.removeEventListener("selectstart",D),r.removeEventListener("selectend",D),r.removeEventListener("squeeze",D),r.removeEventListener("squeezestart",D),r.removeEventListener("squeezeend",D),r.removeEventListener("end",O),r.removeEventListener("inputsourceschange",I);for(let e=0;e<b.length;e++){let t=w[e];null!==t&&(w[e]=null,b[e].disconnect(t))}T=null,P=null,e.setRenderTarget(y),m=null,f=null,p=null,r=null,x=null,F.stop(),i.isPresenting=!1,i.dispatchEvent({type:"sessionend"})}function I(e){for(let t=0;t<e.removed.length;t++){let i=e.removed[t],r=w.indexOf(i);r>=0&&(w[r]=null,b[r].disconnect(i))}for(let t=0;t<e.added.length;t++){let i=e.added[t],r=w.indexOf(i);if(-1===r){for(let e=0;e<b.length;e++)if(e>=w.length){w.push(i),r=e;break}else if(null===w[e]){w[e]=i,r=e;break}if(-1===r)break}let a=b[r];a&&a.connect(i)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let t=b[e];return void 0===t&&(t=new ng,b[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){let t=b[e];return void 0===t&&(t=new ng,b[e]=t),t.getGripSpace()},this.getHand=function(e){let t=b[e];return void 0===t&&(t=new ng,b[e]=t),t.getHandSpace()},this.setFramebufferScaleFactor=function(e){a=e,!0===i.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(e){h=e,!0===i.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return d||o},this.setReferenceSpace=function(e){d=e},this.getBaseLayer=function(){return null!==f?f:m},this.getBinding=function(){return p},this.getFrame=function(){return g}
3139,this.getSession=function(){return r},this.setSession=async function(u){if(null!==(r=u)){if(y=e.getRenderTarget(),r.addEventListener("select",D),r.addEventListener("selectstart",D),r.addEventListener("selectend",D),r.addEventListener("squeeze",D),r.addEventListener("squeezestart",D),r.addEventListener("squeezeend",D),r.addEventListener("end",O),r.addEventListener("inputsourceschange",I),!0!==v.xrCompatible&&await t.makeXRCompatible(),void 0===r.renderState.layers||!1===e.capabilities.isWebGL2){let i={antialias:void 0!==r.renderState.layers||v.antialias,alpha:v.alpha,depth:v.depth,stencil:v.stencil,framebufferScaleFactor:a};m=new XRWebGLLayer(r,t,i),r.updateRenderState({baseLayer:m}),x=new im(m.framebufferWidth,m.framebufferHeight,{format:1023,type:1009,encoding:e.outputEncoding,stencilBuffer:v.stencil})}else{let i=null,o=null,h=null;v.depth&&(h=v.stencil?35056:33190,i=v.stencil?1027:1026,o=v.stencil?1020:1014);let c={colorFormat:32856,depthFormat:h,scaleFactor:a};f=(p=new XRWebGLBinding(r,t)).createProjectionLayer(c),r.updateRenderState({layers:[f]}),x=new im(f.textureWidth,f.textureHeight,{format:1023,type:1009,depthTexture:new nv(f.textureWidth,f.textureHeight,o,void 0,void 0,void 0,void 0,void 0,void 0,i),stencilBuffer:v.stencil,encoding:e.outputEncoding,samples:v.antialias?4:0}),e.properties.get(x).__ignoreDepthValues=f.ignoreDepthValues}x.isXRRenderTarget=!0,this.setFoveation(c),d=null,o=await r.requestReferenceSpace(h),F.setContext(r),F.start(),i.isPresenting=!0,i.dispatchEvent({type:"sessionstart"})}};let R=new ib,L=new ib;function B(e,t){null===t?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){if(null===r)return;C.near=M.near=A.near=e.near,C.far=M.far=A.far=e.far,(T!==C.near||P!==C.far)&&(r.updateRenderState({depthNear:C.near,depthFar:C.far}),T=C.near,P=C.far);let t=e.parent,i=C.cameras;B(C,t);for(let e=0;e<i.length;e++)B(i[e],t);C.matrixWorld.decompose(C.position,C.quaternion,C.scale),e.matrix.copy(C.matrix),e.matrix.decompose(e.position,e.quaternion,e.scale);let a=e.children;for(let e=0,t=a.length;e<t;e++)a[e].updateMatrixWorld(!0);2===i.length?function(e,t,i){R.setFromMatrixPosition(t.matrixWorld),L.setFromMatrixPosition(i.matrixWorld);let r=R.distanceTo(L),a=t.projectionMatrix.elements,o=i.projectionMatrix.elements,h=a[14]/(a[10]-1),c=a[14]/(a[10]+1),d=(a[9]+1)/a[5],u=(a[9]-1)/a[5],p=(a[8]-1)/a[0],f=(o[8]+1)/o[0],m=r/(-p+f),g=-(m*p);t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(g),e.translateZ(m),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert();let v=h+m,y=c+m;e.projectionMatrix.makePerspective(h*p-g,h*f+(r-g),d*c/y*v,u*c/y*v,v,y)}(C,A,M):C.projectionMatrix.copy(A.projectionMatrix)},this.getCamera=function(){return C},this.getFoveation=function(){if(!(null===f&&null===m))return c},this.setFoveation=function(e){c=e,null!==f&&(f.fixedFoveation=e),null!==m&&void 0!==m.fixedFoveation&&(m.fixedFoveation=e)},this.getPlanes=function(){return S};let z=null,F=new sd;F.setAnimationLoop(function(t,r){if(u=r.getViewerPose(d||o),g=r,null!==u){let t=u.views;null!==m&&(e.setRenderTargetFramebuffer(x,m.framebuffer),e.setRenderTarget(x));let i=!1;t.length!==C.cameras.length&&(C.cameras.length=0,i=!0);for(let r=0;r<t.length;r++){let a=t[r],o=null;if(null!==m)o=m.getViewport(a);else{let t=p.getViewSubImage(f,a);o=t.viewport,0===r&&(e.setRenderTargetTextures(x,t.colorTexture,f.ignoreDepthValues?void 0:t.depthStencilTexture),e.setRenderTarget(x))}let h=E[r];void 0===h&&((h=new se).layers.enable(r),h.viewport=new ip,E[r]=h),h.matrix.fromArray(a.transform.matrix),h.projectionMatrix.fromArray(a.projectionMatrix),h.viewport.set(o.x,o.y,o.width,o.height),0===r&&C.matrix.copy(h.matrix),!0===i&&C.cameras.push(h)}}for(let e=0;e<b.length;e++){let t=w[e],i=b[e];null!==t&&void 0!==i&&i.update(t,r,d||o)}if(z&&z(t,r),r.detectedPlanes){i.dispatchEvent({type:"planesdetected",data:r.detectedPlanes});let e=null;for(let t of S)r.detectedPlanes.has(t)||(null===e&&(e=[]),e.push(t));if(null!==e)for(let t of e)S.delete(t),_.delete(t),i.dispatchEvent({type:"planeremoved",data:t});for(let e of r.detectedPlanes)if(S.has(e)){let t=_.get(e);e.lastChangedTime>t&&(_.set(e,e.lastChangedTime),i.dispatchEvent({type:"planechanged",data:e}))}else S.add(e),_.set(e,r.lastChangedTime),i.dispatchEvent({type:"planeadded",data:e})}g=null}),this.setAnimationLoop=function(e){z=e},this.dispose=function(){}}};function nx(e,t){function i(i,r){let a,o;i.opacity.value=r.opacity,r.color&&i.diffuse.value.copy(r.color),r.emissive&&i.emissive.value.copy(r.emissive).multiplyScalar(r.emissiveIntensity),r.map&&(i.map.value=r.map),r.alphaMap&&(i.alphaMap.value=r.alphaMap),r.bumpMap&&(i.bumpMap.value=r.bumpMap,i.bumpScale.value=r.bumpScale,1===r.side&&(i.bumpScale.value*=-1)),r.displacementMap&&(i.displacementMap.value=r.displacementMap,i.displacementScale.value=r.displacementScale,i.displacementBias.value=r.displacementBias),r.emissiveMap&&(i.emissiveMap.value=r.emissiveMap),r.normalMap&&(i.normalMap.value=r.normalMap,i.normalScale.value.copy(r.normalScale),1===r.side&&i.normalScale.value.negate()),r.specularMap&&(i.specularMap.value=r.specularMap),r.alphaTest>0&&(i.alphaTest.value=r.alphaTest);let h=t.get(r).envMap;if(h&&(i.envMap.value=h,i.flipEnvMap.value=h.isCubeTexture&&!1===h.isRenderTargetTexture?-1:1,i.reflectivity.value=r.reflectivity,i.ior.value=r.
3139ior,i.refractionRatio.value=r.refractionRatio),r.lightMap){i.lightMap.value=r.lightMap;let t=!0!==e.physicallyCorrectLights?Math.PI:1;i.lightMapIntensity.value=r.lightMapIntensity*t}r.aoMap&&(i.aoMap.value=r.aoMap,i.aoMapIntensity.value=r.aoMapIntensity),r.map?a=r.map:r.specularMap?a=r.specularMap:r.displacementMap?a=r.displacementMap:r.normalMap?a=r.normalMap:r.bumpMap?a=r.bumpMap:r.roughnessMap?a=r.roughnessMap:r.metalnessMap?a=r.metalnessMap:r.alphaMap?a=r.alphaMap:r.emissiveMap?a=r.emissiveMap:r.clearcoatMap?a=r.clearcoatMap:r.clearcoatNormalMap?a=r.clearcoatNormalMap:r.clearcoatRoughnessMap?a=r.clearcoatRoughnessMap:r.iridescenceMap?a=r.iridescenceMap:r.iridescenceThicknessMap?a=r.iridescenceThicknessMap:r.specularIntensityMap?a=r.specularIntensityMap:r.specularColorMap?a=r.specularColorMap:r.transmissionMap?a=r.transmissionMap:r.thicknessMap?a=r.thicknessMap:r.sheenColorMap?a=r.sheenColorMap:r.sheenRoughnessMap&&(a=r.sheenRoughnessMap),void 0!==a&&(a.isWebGLRenderTarget&&(a=a.texture),!0===a.matrixAutoUpdate&&a.updateMatrix(),i.uvTransform.value.copy(a.matrix)),r.aoMap?o=r.aoMap:r.lightMap&&(o=r.lightMap),void 0!==o&&(o.isWebGLRenderTarget&&(o=o.texture),!0===o.matrixAutoUpdate&&o.updateMatrix(),i.uv2Transform.value.copy(o.matrix))}return{refreshFogUniforms:function(t,i){i.color.getRGB(t.fogColor.value,r4(e)),i.isFog?(t.fogNear.value=i.near,t.fogFar.value=i.far):i.isFogExp2&&(t.fogDensity.value=i.density)},refreshMaterialUniforms:function(e,r,a,o,h){let c,d;r.isMeshBasicMaterial||r.isMeshLambertMaterial?i(e,r):r.isMeshToonMaterial?(i(e,r),r.gradientMap&&(e.gradientMap.value=r.gradientMap)):r.isMeshPhongMaterial?(i(e,r),e.specular.value.copy(r.specular),e.shininess.value=Math.max(r.shininess,1e-4)):r.isMeshStandardMaterial?(i(e,r),e.roughness.value=r.roughness,e.metalness.value=r.metalness,r.roughnessMap&&(e.roughnessMap.value=r.roughnessMap),r.metalnessMap&&(e.metalnessMap.value=r.metalnessMap),t.get(r).envMap&&(e.envMapIntensity.value=r.envMapIntensity),r.isMeshPhysicalMaterial&&(e.ior.value=r.ior,r.sheen>0&&(e.sheenColor.value.copy(r.sheenColor).multiplyScalar(r.sheen),e.sheenRoughness.value=r.sheenRoughness,r.sheenColorMap&&(e.sheenColorMap.value=r.sheenColorMap),r.sheenRoughnessMap&&(e.sheenRoughnessMap.value=r.sheenRoughnessMap)),r.clearcoat>0&&(e.clearcoat.value=r.clearcoat,e.clearcoatRoughness.value=r.clearcoatRoughness,r.clearcoatMap&&(e.clearcoatMap.value=r.clearcoatMap),r.clearcoatRoughnessMap&&(e.clearcoatRoughnessMap.value=r.clearcoatRoughnessMap),r.clearcoatNormalMap&&(e.clearcoatNormalScale.value.copy(r.clearcoatNormalScale),e.clearcoatNormalMap.value=r.clearcoatNormalMap,1===r.side&&e.clearcoatNormalScale.value.negate())),r.iridescence>0&&(e.iridescence.value=r.iridescence,e.iridescenceIOR.value=r.iridescenceIOR,e.iridescenceThicknessMinimum.value=r.iridescenceThicknessRange[0],e.iridescenceThicknessMaximum.value=r.iridescenceThicknessRange[1],r.iridescenceMap&&(e.iridescenceMap.value=r.iridescenceMap),r.iridescenceThicknessMap&&(e.iridescenceThicknessMap.value=r.iridescenceThicknessMap)),r.transmission>0&&(e.transmission.value=r.transmission,e.transmissionSamplerMap.value=h.texture,e.transmissionSamplerSize.value.set(h.width,h.height),r.transmissionMap&&(e.transmissionMap.value=r.transmissionMap),e.thickness.value=r.thickness,r.thicknessMap&&(e.thicknessMap.value=r.thicknessMap),e.attenuationDistance.value=r.attenuationDistance,e.attenuationColor.value.copy(r.attenuationColor)),e.specularIntensity.value=r.specularIntensity,e.specularColor.value.copy(r.specularColor),r.specularIntensityMap&&(e.specularIntensityMap.value=r.specularIntensityMap),r.specularColorMap&&(e.specularColorMap.value=r.specularColorMap))):r.isMeshMatcapMaterial?(i(e,r),r.matcap&&(e.matcap.value=r.matcap)):r.isMeshDepthMaterial?i(e,r):r.isMeshDistanceMaterial?(i(e,r),e.referencePosition.value.copy(r.referencePosition),e.nearDistance.value=r.nearDistance,e.farDistance.value=r.farDistance):r.isMeshNormalMaterial?i(e,r):r.isLineBasicMaterial?(e.diffuse.value.copy(r.color),e.opacity.value=r.opacity,r.isLineDashedMaterial&&(e.dashSize.value=r.dashSize,e.totalSize.value=r.dashSize
3139+r.gapSize,e.scale.value=r.scale)):r.isPointsMaterial?(e.diffuse.value.copy(r.color),e.opacity.value=r.opacity,e.size.value=r.size*a,e.scale.value=.5*o,r.map&&(e.map.value=r.map),r.alphaMap&&(e.alphaMap.value=r.alphaMap),r.alphaTest>0&&(e.alphaTest.value=r.alphaTest),r.map?c=r.map:r.alphaMap&&(c=r.alphaMap),void 0!==c&&(!0===c.matrixAutoUpdate&&c.updateMatrix(),e.uvTransform.value.copy(c.matrix))):r.isSpriteMaterial?(e.diffuse.value.copy(r.color),e.opacity.value=r.opacity,e.rotation.value=r.rotation,r.map&&(e.map.value=r.map),r.alphaMap&&(e.alphaMap.value=r.alphaMap),r.alphaTest>0&&(e.alphaTest.value=r.alphaTest),r.map?d=r.map:r.alphaMap&&(d=r.alphaMap),void 0!==d&&(!0===d.matrixAutoUpdate&&d.updateMatrix(),e.uvTransform.value.copy(d.matrix))):r.isShadowMaterial?(e.color.value.copy(r.color),e.opacity.value=r.opacity):r.isShaderMaterial&&(r.uniformsNeedUpdate=!1)}}}function nb(e,t,i,r){let a={},o={},h=[],c=i.isWebGL2?e.getParameter(35375):0;function d(e){let t={boundary:0,storage:0};return"number"==typeof e?(t.boundary=4,t.storage=4):e.isVector2?(t.boundary=8,t.storage=8):e.isVector3||e.isColor?(t.boundary=16,t.storage=12):e.isVector4?(t.boundary=16,t.storage=16):e.isMatrix3?(t.boundary=48,t.storage=48):e.isMatrix4?(t.boundary=64,t.storage=64):e.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",e),t}function u(t){let i=t.target;i.removeEventListener("dispose",u);let r=h.indexOf(i.__bindingPointIndex);h.splice(r,1),e.deleteBuffer(a[i.id]),delete a[i.id],delete o[i.id]}return{bind:function(e,t){let i=t.program;r.uniformBlockBinding(e,i)},update:function(i,p){let f,m,g,v,y=a[i.id];void 0===y&&(function(e){let t=e.uniforms,i=0,r=0;for(let e=0,a=t.length;e<a;e++){let a=t[e],o={boundary:0,storage:0},h=Array.isArray(a.value)?a.value:[a.value];for(let e=0,t=h.length;e<t;e++){let t=d(h[e]);o.boundary+=t.boundary,o.storage+=t.storage}if(a.__data=new Float32Array(o.storage/Float32Array.BYTES_PER_ELEMENT),a.__offset=i,e>0){let e=16-(r=i%16);0!==r&&e-o.boundary<0&&(i+=16-r,a.__offset=i)}i+=o.storage}(r=i%16)>0&&(i+=16-r),e.__size=i,e.__cache={}}(i),f=function(){for(let e=0;e<c;e++)if(-1===h.indexOf(e))return h.push(e),e;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}(),i.__bindingPointIndex=f,m=e.createBuffer(),g=i.__size,v=i.usage,e.bindBuffer(35345,m),e.bufferData(35345,g,v),e.bindBuffer(35345,null),e.bindBufferBase(35345,f,m),y=m,a[i.id]=y,i.addEventListener("dispose",u));let x=p.program;r.updateUBOMapping(i,x);let b=t.render.frame;o[i.id]!==b&&(function(t){let i=a[t.id],r=t.uniforms,o=t.__cache;e.bindBuffer(35345,i);for(let t=0,i=r.length;t<i;t++){let i=r[t];if(!0===function(e,t,i){let r=e.value;if(void 0===i[t]){if("number"==typeof r)i[t]=r;else{let e=Array.isArray(r)?r:[r],a=[];for(let t=0;t<e.length;t++)a.push(e[t].clone());i[t]=a}return!0}if("number"==typeof r){if(i[t]!==r)return i[t]=r,!0}else{let e=Array.isArray(i[t])?i[t]:[i[t]],a=Array.isArray(r)?r:[r];for(let t=0;t<e.length;t++){let i=e[t];if(!1===i.equals(a[t]))return i.copy(a[t]),!0}}return!1}(i,t,o)){let t=i.__offset,r=Array.isArray(i.value)?i.value:[i.value],a=0;for(let o=0;o<r.length;o++){let h=r[o],c=d(h);"number"==typeof h?(i.__data[0]=h,e.bufferSubData(35345,t+a,i.__data)):h.isMatrix3?(i.__data[0]=h.elements[0],i.__data[1]=h.elements[1],i.__data[2]=h.elements[2],i.__data[3]=h.elements[0],i.__data[4]=h.elements[3],i.__data[5]=h.elements[4],i.__data[6]=h.elements[5],i.__data[7]=h.elements[0],i.__data[8]=h.elements[6],i.__data[9]=h.elements[7],i.__data[10]=h.elements[8],i.__data[11]=h.elements[0]):(h.toArray(i.__data,a),a+=c.storage/Float32Array.BYTES_PER_ELEMENT)}e.bufferSubData(35345,t,i.__data)}}e.bindBuffer(35345,null)}(i),o[i.id]=b)},dispose:function(){for(let t in a)e.deleteBuffer(a[t]);h=[],a={},o={}}}}function nw(e={}){let t,i,r,a,o,h,c,d,u,p,f,m,g,v,y,x,b,w,S,_,A,M,E,C,T;this.isWebGLRenderer=!0;let P=void 0!==e.canvas?e.canvas:((T=t4("canvas")).style.display="block",T),D=void 0!==e.context?e.context:null,O=void 0===e.depth||e.depth,I=void 0===e.stencil||e.stencil,R=void 0!==e.antialias&&e.antialias,L=void 0===e.premultipliedAlpha||e.premultipliedAlpha,B=void 0!==e.preserveDrawingBuffer&&e.preserveDrawingBuffer,z=void 0!==e.powerPreference?e.powerPreference:"default",F=void 0!==e.failIfMajorPerformanceCaveat&&e.failIfMajorPerformanceCaveat,N;
3139N=null!==D?D.getContextAttributes().alpha:void 0!==e.alpha&&e.alpha;let U=null,k=null,V=[],j=[];this.domElement=P,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=3e3,this.physicallyCorrectLights=!1,this.toneMapping=0,this.toneMappingExposure=1;let G=this,H=!1,W=0,q=0,X=null,Y=-1,Q=null,Z=new ip,K=new ip,J=null,$=P.width,ee=P.height,et=1,ei=null,er=null,es=new ip(0,0,$,ee),ea=new ip(0,0,$,ee),en=!1,eo=new sc,el=!1,eh=!1,ec=null,ed=new iZ,eu=new tJ,ep=new ib,ef={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function em(){return null===X?et:1}let eg=D;function ev(e,t){for(let i=0;i<e.length;i++){let r=e[i],a=P.getContext(r,t);if(null!==a)return a}return null}try{if("setAttribute"in P&&P.setAttribute("data-engine","three.js r149"),P.addEventListener("webglcontextlost",eb,!1),P.addEventListener("webglcontextrestored",ew,!1),P.addEventListener("webglcontextcreationerror",eS,!1),null===eg){let e=["webgl2","webgl","experimental-webgl"];if(!0===G.isWebGL1Renderer&&e.shift(),eg=ev(e,{alpha:!0,depth:O,stencil:I,antialias:R,premultipliedAlpha:L,preserveDrawingBuffer:B,powerPreference:z,failIfMajorPerformanceCaveat:F}),null===eg)throw ev(e)?Error("Error creating WebGL context with your selected attributes."):Error("Error creating WebGL context.")}void 0===eg.getShaderPrecisionFormat&&(eg.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(e){throw console.error("THREE.WebGLRenderer: "+e.message),e}function ey(){t=new sU(eg),i=new sw(eg,t,e),t.init(i),M=new nu(eg,t,i),r=new nc(eg,t,i),a=new sj,o=new a4,h=new nd(eg,t,r,o,i,M,a),c=new s_(G),d=new sN(G),u=new su(eg,i),E=new sx(eg,t,u,i),p=new sk(eg,u,a,E),f=new sq(eg,p,u,a),S=new sW(eg,i,h),x=new sS(o),m=new a3(G,c,d,t,i,E,x),g=new nx(G,o),v=new a9,y=new ns(t,i),w=new sy(G,c,d,r,f,N,L),b=new nh(G,f,i),C=new nb(eg,a,i,r),_=new sb(eg,t,a,i),A=new sV(eg,t,a,i),a.programs=m.programs,G.capabilities=i,G.extensions=t,G.properties=o,G.renderLists=v,G.shadowMap=b,G.state=r,G.info=a}ey();let ex=new ny(G,eg);function eb(e){e.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),H=!0}function ew(){console.log("THREE.WebGLRenderer: Context Restored."),H=!1;let e=a.autoReset,t=b.enabled,i=b.autoUpdate,r=b.needsUpdate,o=b.type;ey(),a.autoReset=e,b.enabled=t,b.autoUpdate=i,b.needsUpdate=r,b.type=o}function eS(e){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",e.statusMessage)}function e_(e){let t,i=e.target;i.removeEventListener("dispose",e_),void 0!==(t=o.get(i).programs)&&(t.forEach(function(e){m.releaseProgram(e)}),i.isShaderMaterial&&m.releaseShaderCache(i)),o.remove(i)}this.xr=ex,this.getContext=function(){return eg},this.getContextAttributes=function(){return eg.getContextAttributes()},this.forceContextLoss=function(){let e=t.get("WEBGL_lose_context");e&&e.loseContext()},this.forceContextRestore=function(){let e=t.get("WEBGL_lose_context");e&&e.restoreContext()},this.getPixelRatio=function(){return et},this.setPixelRatio=function(e){void 0!==e&&(et=e,this.setSize($,ee,!1))},this.getSize=function(e){return e.set($,ee)},this.setSize=function(e,t,i){if(ex.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}$=e,ee=t,P.width=Math.floor(e*et),P.height=Math.floor(t*et),!1!==i&&(P.style.width=e+"px",P.style.height=t+"px"),this.setViewport(0,0,e,t)},this.getDrawingBufferSize=function(e){return e.set($*et,ee*et).floor()},this.setDrawingBufferSize=function(e,t,i){$=e,ee=t,et=i,P.width=Math.floor(e*i),P.height=Math.floor(t*i),this.setViewport(0,0,e,t)},this.getCurrentViewport=function(e){return e.copy(Z)},this.getViewport=function(e){return e.copy(es)},this.setViewport=function(e,t,i,a){e.isVector4?es.set(e.x,e.y,e.z,e.w):es.set(e,t,i,a),r.viewport(Z.copy(es).multiplyScalar(et).floor())},this.getScissor=function(e){return e.copy(ea)},this.setScissor=function(e,t,i,a){e.isVector4?ea.set(e.x,e.y,e.z,e.w):ea.set(e,t,i,a),r.scissor(K.copy(ea).multiplyScalar(et).floor())}
3139,this.getScissorTest=function(){return en},this.setScissorTest=function(e){r.setScissorTest(en=e)},this.setOpaqueSort=function(e){ei=e},this.setTransparentSort=function(e){er=e},this.getClearColor=function(e){return e.copy(w.getClearColor())},this.setClearColor=function(){w.setClearColor.apply(w,arguments)},this.getClearAlpha=function(){return w.getClearAlpha()},this.setClearAlpha=function(){w.setClearAlpha.apply(w,arguments)},this.clear=function(e=!0,t=!0,i=!0){let r=0;e&&(r|=16384),t&&(r|=256),i&&(r|=1024),eg.clear(r)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){P.removeEventListener("webglcontextlost",eb,!1),P.removeEventListener("webglcontextrestored",ew,!1),P.removeEventListener("webglcontextcreationerror",eS,!1),v.dispose(),y.dispose(),o.dispose(),c.dispose(),d.dispose(),f.dispose(),E.dispose(),C.dispose(),m.dispose(),ex.dispose(),ex.removeEventListener("sessionstart",eM),ex.removeEventListener("sessionend",eE),ec&&(ec.dispose(),ec=null),eC.stop()},this.renderBufferDirect=function(e,t,a,f,m,v){null===t&&(t=ef);let y=m.isMesh&&0>m.matrixWorld.determinant(),b=function(e,t,a,u,p){var f;!0!==t.isScene&&(t=ef),h.resetTextureUnits();let m=t.fog,v=u.isMeshStandardMaterial?t.environment:null,y=null===X?G.outputEncoding:!0===X.isXRRenderTarget?X.texture.encoding:3e3,b=(u.isMeshStandardMaterial?d:c).get(u.envMap||v),w=!0===u.vertexColors&&!!a.attributes.color&&4===a.attributes.color.itemSize,_=!!u.normalMap&&!!a.attributes.tangent,A=!!a.morphAttributes.position,M=!!a.morphAttributes.normal,E=!!a.morphAttributes.color,T=u.toneMapped?G.toneMapping:0,P=a.morphAttributes.position||a.morphAttributes.normal||a.morphAttributes.color,D=void 0!==P?P.length:0,O=o.get(u),I=k.state.lights;if(!0===el&&(!0===eh||e!==Q)){let t=e===Q&&u.id===Y;x.setState(u,e,t)}let R=!1;u.version===O.__version?(O.needsLights&&O.lightsStateVersion!==I.state.version||O.outputEncoding!==y||p.isInstancedMesh&&!1===O.instancing||!p.isInstancedMesh&&!0===O.instancing||p.isSkinnedMesh&&
3139!1===O.skinning||!p.isSkinnedMesh&&!0===O.skinning||O.envMap!==b||!0===u.fog&&O.fog!==m||void 0!==O.numClippingPlanes&&(O.numClippingPlanes!==x.numPlanes||O.numIntersection!==x.numIntersection)||O.vertexAlphas!==w||O.vertexTangents!==_||O.morphTargets!==A||O.morphNormals!==M||O.morphColors!==E||O.toneMapping!==T||!0===i.isWebGL2&&O.morphTargetsCount!==D)&&(R=!0):(R=!0,O.__version=u.version);let L=O.currentProgram;!0===R&&(L=eD(u,t,p));let B=!1,z=!1,F=!1,N=L.getUniforms(),U=O.uniforms;if(r.useProgram(L.program)&&(B=!0,z=!0,F=!0),u.id!==Y&&(Y=u.id,z=!0),B||Q!==e){if(N.setValue(eg,"projectionMatrix",e.projectionMatrix),i.logarithmicDepthBuffer&&N.setValue(eg,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),Q!==e&&(Q=e,z=!0,F=!0),u.isShaderMaterial||u.isMeshPhongMaterial||u.isMeshToonMaterial||u.isMeshStandardMaterial||u.envMap){let t=N.map.cameraPosition;void 0!==t&&t.setValue(eg,ep.setFromMatrixPosition(e.matrixWorld))}(u.isMeshPhongMaterial||u.isMeshToonMaterial||u.isMeshLambertMaterial||u.isMeshBasicMaterial||u.isMeshStandardMaterial||u.isShaderMaterial)&&N.setValue(eg,"isOrthographic",!0===e.isOrthographicCamera),(u.isMeshPhongMaterial||u.isMeshToonMaterial||u.isMeshLambertMaterial||u.isMeshBasicMaterial||u.isMeshStandardMaterial||u.isShaderMaterial||u.isShadowMaterial||p.isSkinnedMesh)&&N.setValue(eg,"viewMatrix",e.matrixWorldInverse)}if(p.isSkinnedMesh){N.setOptional(eg,p,"bindMatrix"),N.setOptional(eg,p,"bindMatrixInverse");let e=p.skeleton;e&&(i.floatVertexTextures?(null===e.boneTexture&&e.computeBoneTexture(),N.setValue(eg,"boneTexture",e.boneTexture,h),N.setValue(eg,"boneTextureSize",e.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}let V=a.morphAttributes;if((void 0!==V.position||void 0!==V.normal||void 0!==V.color&&!0===i.isWebGL2)&&S.update(p,a,u,L),(z||O.receiveShadow!==p.receiveShadow)&&(O.receiveShadow=p.receiveShadow,N.setValue(eg,"receiveShadow",p.receiveShadow)),u.isMeshGouraudMaterial&&null!==u.envMap&&(U.envMap.value=b,U.flipEnvMap.value=b.isCubeTexture&&!1===b.isRenderTargetTexture?-1:1),z&&(N.setValue(eg,"toneMappingExposure",G.toneMappingExposure),O.needsLights&&(f=F,U.ambientLightColor.needsUpdate=f,U.lightProbe.needsUpdate=f,U.directionalLights.needsUpdate=f,U.directionalLightShadows.needsUpdate=f,U.pointLights.needsUpdate=f,U.pointLightShadows.needsUpdate=f,U.spotLights.needsUpdate=f,U.spotLightShadows.needsUpdate=f,U.rectAreaLights.needsUpdate=f,U.hemisphereLights.needsUpdate=f),m&&!0===u.fog&&g.refreshFogUniforms(U,m),g.refreshMaterialUniforms(U,u,et,ee,ec),aU.upload(eg,O.uniformsList,U,h)),u.isShaderMaterial&&!0===u.uniformsNeedUpdate&&(aU.upload(eg,O.uniformsList,U,h),u.uniformsNeedUpdate=!1),u.isSpriteMaterial&&N.setValue(eg,"center",p.center),N.setValue(eg,"modelViewMatrix",p.modelViewMatrix),N.setValue(eg,"normalMatrix",p.normalMatrix),N.setValue(eg,"modelMatrix",p.matrixWorld),p.previousModelViewMatrix&&N.setValue(eg,"previousModelViewMatrix",p.previousModelViewMatrix),e.previousProjectionMatrix&&N.setValue(eg,"previousProjectionMatrix",e.previousProjectionMatrix),u.isShaderMaterial||u.isRawShaderMaterial){let e=u.uniformsGroups;for(let t=0,r=e.length;t<r;t++)if(i.isWebGL2){let i=e[t];C.update(i,L),C.bind(i,L)}else console.warn("THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.")}return L}(e,t,a,f,m);r.setMaterial(f,y);let w=a.index,M=1;!0===f.wireframe&&(w=p.getWireframeAttribute(a),M=2);let T=a.drawRange,P=a.attributes.position,D=T.start*M,O=(T.start+T.count)*M;null!==v&&(D=Math.max(D,v.start*M),O=Math.min(O,(v.start+v.count)*M)),null!==w?(D=Math.max(D,0),O=Math.min(O,w.count)):null!=P&&(D=Math.max(D,0),O=Math.min(O,P.count));let I=O-D;if(I<0||I===1/0)return;E.setup(m,f,b,a,w);let R,L=_;if(null!==w&&(R=u.get(w),(L=A).setIndex(R)),m.isMesh)!0===f.wireframe?(r.setLineWidth(f.wireframeLinewidth*em()),L.setMode(1)):L.setMode(4);else if(m.isLine){let e=f.linewidth;void 0===e&&(e=1),r.setLineWidth(e*em()),m.isLineSegments?L.setMode(1):m.isLineLoop?L.setMode(2):L.setMode(3)}
3139else m.isPoints?L.setMode(0):m.isSprite&&L.setMode(4);if(m.isInstancedMesh)L.renderInstances(D,I,m.count);else if(a.isInstancedBufferGeometry){let e=void 0!==a._maxInstanceCount?a._maxInstanceCount:1/0,t=Math.min(a.instanceCount,e);L.renderInstances(D,I,t)}else L.render(D,I)},this.compile=function(e,t){function i(e,t,i){!0===e.transparent&&2===e.side&&!1===e.forceSinglePass?(e.side=1,e.needsUpdate=!0,eD(e,t,i),e.side=0,e.needsUpdate=!0,eD(e,t,i),e.side=2):eD(e,t,i)}(k=y.get(e)).init(),j.push(k),e.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(k.pushLight(e),e.castShadow&&k.pushShadow(e))}),k.setupLights(G.physicallyCorrectLights),e.traverse(function(t){let r=t.material;if(r){if(Array.isArray(r))for(let a=0;a<r.length;a++)i(r[a],e,t);else i(r,e,t)}}),j.pop(),k=null};let eA=null;function eM(){eC.stop()}function eE(){eC.start()}let eC=new sd;function eT(e,a,o,c){let d,u,p,f=e.opaque,m=e.transmissive,g=e.transparent;k.setupLightsView(o),!0===el&&x.setGlobalState(G.clippingPlanes,o),m.length>0&&(d=i.isWebGL2,null===ec&&(ec=new im(1,1,{generateMipmaps:!0,type:t.has("EXT_color_buffer_half_float")?1016:1009,minFilter:1008,samples:d&&!0===R?4:0})),G.getDrawingBufferSize(eu),d?ec.setSize(eu.x,eu.y):ec.setSize(tY(eu.x),tY(eu.y)),u=G.getRenderTarget(),G.setRenderTarget(ec),G.clear(),p=G.toneMapping,G.toneMapping=0,eP(f,a,o),G.toneMapping=p,h.updateMultisampleRenderTarget(ec),h.updateRenderTargetMipmap(ec),G.setRenderTarget(u)),c&&r.viewport(Z.copy(c)),f.length>0&&eP(f,a,o),m.length>0&&eP(m,a,o),g.length>0&&eP(g,a,o),r.buffers.depth.setTest(!0),r.buffers.depth.setMask(!0),r.buffers.color.setMask(!0),r.setPolygonOffset(!1)}function eP(e,t,i){let r=!0===t.isScene?t.overrideMaterial:null;for(let a=0,o=e.length;a<o;a++){let o=e[a],h=o.object,c=o.geometry,d=null===r?o.material:r,u=o.group;h.layers.test(i.layers)&&(h.onBeforeRender(G,t,i,c,d,u),h.modelViewMatrix.multiplyMatrices(i.matrixWorldInverse,h.matrixWorld),h.normalMatrix.getNormalMatrix(h.modelViewMatrix),d.onBeforeRender(G,t,i,c,h,u),!0===d.transparent&&2===d.side&&!1===d.forceSinglePass?(d.side=1,d.needsUpdate=!0,G.renderBufferDirect(i,t,c,d,h,u),d.side=0,d.needsUpdate=!0,G.renderBufferDirect(i,t,c,d,h,u),d.side=2):G.renderBufferDirect(i,t,c,d,h,u),h.onAfterRender(G,t,i,c,d,u))}}function eD(e,t,i){!0!==t.isScene&&(t=ef);let r=o.get(e),a=k.state.lights,h=k.state.shadowsArray,u=a.state.version,p=m.getParameters(e,a.state,h,t,i),f=m.getProgramCacheKey(p),g=r.programs;r.environment=e.isMeshStandardMaterial?t.environment:null,r.fog=t.fog,r.envMap=(e.isMeshStandardMaterial?d:c).get(e.envMap||r.environment),void 0===g&&(e.addEventListener("dispose",e_),g=new Map,r.programs=g);let v=g.get(f);if(void 0!==v){if(r.currentProgram===v&&r.lightsStateVersion===u)return eO(e,p),v}else p.uniforms=m.getUniforms(e),e.onBuild(i,p,G),e.onBeforeCompile(p,G),v=m.acquireProgram(p,f),g.set(f,v),r.uniforms=p.uniforms;let y=r.uniforms;(e.isShaderMaterial||e.isRawShaderMaterial)&&!0!==e.clipping||(y.clippingPlanes=x.uniform),eO(e,p),r.needsLights=e.isMeshLambertMaterial||e.isMeshToonMaterial||e.isMeshPhongMaterial||e.isMeshStandardMaterial||e.isShadowMaterial||e.isShaderMaterial&&!0===e.lights,r.lightsStateVersion=u,r.needsLights&&(y.ambientLightColor.value=a.state.ambient,y.lightProbe.value=a.state.probe,y.directionalLights.value=a.state.directional,y.directionalLightShadows.value=a.state.directionalShadow,y.spotLights.value=a.state.spot,y.spotLightShadows.value=a.state.spotShadow,y.rectAreaLights.value=a.state.rectArea,y.ltc_1.value=a.state.rectAreaLTC1,y.ltc_2.value=a.state.rectAreaLTC2,y.pointLights.value=a.state.point,y.pointLightShadows.value=a.state.pointShadow,y.hemisphereLights.value=a.state.hemi,y.directionalShadowMap.value=a.state.directionalShadowMap,y.directionalShadowMatrix.value=a.state.directionalShadowMatrix,y.spotShadowMap.value=a.state.spotShadowMap,y.spotLightMatrix.value=a.state.spotLightMatrix,y.spotLightMap.value=a.state.spotLightMap,y.pointShadowMap.value=a.state.pointShadowMap,y.pointShadowMatrix.value=a.state.pointShadowMatrix);let b=v.getUniforms(),w=aU.seqWithValue(b.seq,y);return r.currentProgram=v,r.uniformsList=w,v}function eO(e,t){let i=o.get(e);i.outputEncoding=t.outputEncoding,i.instancing=t.instancing,i.skinning=t.skinning,i.morphTargets=t.morphTargets,i.morphNormals=t.morphNormals,i.morphColors=t.morphColors,i.morphTargetsCount=t.morphTargetsCount,i.numClippingPlanes=t.numClippingPlanes,i.numIntersection=t.numClipIntersection,i.vertexAlphas=t.vertexAlphas,i.vertexTangents=t.vertexTangents,i.toneMapping=t.toneMapping}eC.setAnimationLoop(function(e){eA&&eA(e)}),"u">typeof self&&eC.setContext(self),this.setAnimationLoop=function(e){eA=e,ex.setAnimationLoop(e),null===e?eC.stop():eC.start()},ex.addEventListener("sessionstart",eM),ex.addEventListener("sessionend",eE),this.render=function(e,t){if(void 0!==t&&!0!==t.isCamera){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(!0===H)return;!0===e.matrixWorldAutoUpdate&&e.updateMatrixWorld(),null===t.parent&&!0===t.matrixWorldAutoUpdate&&t.updateMatrixWorld(),!0===ex.enabled&&!0===ex.isPresenting&&(!0===ex.cameraAutoUpdate&&ex.updateCamera(t),t=ex.getCamera()),!0===e.isScene&&e.onBeforeRender(G,e,t,X),(k=y.get(e,j.length)).init(),j.push(k),ed.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),eo.setFromProjectionMatrix(ed),eh=this.localClippingEnabled,el=x.init(this.clippingPlanes,eh),(U=v.get(e,V.length)).init(),V.push(U),function e(t,i,r,o){if(!1===t.visible)return;if(t.layers.test(i.layers)){if(t.isGroup)r=t.renderOrder;else if(t.isLOD)!0===t.autoUpdate&&t.update(i);else if(t.isLight)k.pushLight(t),t.castShadow&&k.pushShadow(t);else if(t.isSprite){if(!t.frustumCulled||eo.intersectsSprite(t)){o&&ep.setFromMatrixPosition(t.matrixWorld).applyMatrix4(ed);let e=f.update(t),i=t.material;i.visible&&U.push(t,e,i,r,ep.z,null)}}else if((t.isMesh||t.isLine||t.isPoints)&&(t.isSkinnedMesh&&t.skeleton.frame!==a.render.frame&&(t.skeleton.update(),t.skeleton.frame=a.render.frame),!t.frustumCulled||eo.intersectsObject(t))){o&&ep.setFromMatrixPosition(t.matrixWorld).applyMatrix4(ed);let e=f.update(t),i=t.material;if(Array.isArray(i)){let a=e.groups;for(let o=0,h=a.length;o<h;o++){let h=a[o],c=i[h.materialIndex];c&&c.visible&&U.push(t,e,c,r,ep.z,h)}}else i.visible&&U.push(t,e,i,r,ep.z,null)}}let h=t.children;for(let t=0,a=h.length;t<a;t++)e(h[t],i,r,o)}(e,t,0,G.sortObjects),U.finish(),!0===G.sortObjects&&U.sort(ei,er),!0===el&&x.beginShadows();let i=k.state.shadowsArray;if(b.render(i,e,t),!0===el&&x.endShadows(),!0===this.info.autoReset&&this.info.reset(),w.render(U,e),k.setupLights(G.physicallyCorrectLights),t.isArrayCamera){let i=t.cameras;for(let t=0,r=i.length;t<r;t++){let r=i[t];eT(U,e,r,r.viewport)}}else eT(U,e,t);null!==X&&(h.updateMultisampleRenderTarget(X),h.updateRenderTargetMipmap(X)),!0===e.isScene&&e.onAfterRender(G,e,t),E.resetDefaultState(),Y=-1,Q=null,j.pop(),k=j.length>0?j[j.length-1]:null,V.pop(),U=V.length>0?V[V.length-1]:null},this.getActiveCubeFace=function(){return W},this.getActiveMipmapLevel=function(){return q},this.getRenderTarget=function(){return X},this.setRenderTargetTextures=function(e,i,r){o.get(e.texture).__webglTexture=i,o.get(e.depthTexture).__webglTexture=r;let a=o.get(e);a.__hasExternalTextures=!0,a.__hasExternalTextures&&(a.__autoAllocateDepthBuffer=void 0===r,a.__autoAllocateDepthBuffer||!0===t.has("WEBGL_multisampled_render_to_texture")&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),a.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(e,t){let i=o.get(e);i.__webglFramebuffer=t,i.__useDefaultFramebuffer=void 0===t},this.setRenderTarget=function(e,t=0,a=0){X=e,W=t,q=a;let c=!0,d=null,u=!1,p=!1;if(e){let a=o.get(e);void 0!==a.__useDefaultFramebuffer?(r.bindFramebuffer(36160,null),
3139c=!1):void 0===a.__webglFramebuffer?h.setupRenderTarget(e):a.__hasExternalTextures&&h.rebindTextures(e,o.get(e.texture).__webglTexture,o.get(e.depthTexture).__webglTexture);let f=e.texture;(f.isData3DTexture||f.isDataArrayTexture||f.isCompressedArrayTexture)&&(p=!0);let m=o.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(d=m[t],u=!0):d=i.isWebGL2&&e.samples>0&&!1===h.useMultisampledRTT(e)?o.get(e).__webglMultisampledFramebuffer:m,Z.copy(e.viewport),K.copy(e.scissor),J=e.scissorTest}else Z.copy(es).multiplyScalar(et).floor(),K.copy(ea).multiplyScalar(et).floor(),J=en;if(r.bindFramebuffer(36160,d)&&i.drawBuffers&&c&&r.drawBuffers(e,d),r.viewport(Z),r.scissor(K),r.setScissorTest(J),u){let i=o.get(e.texture);eg.framebufferTexture2D(36160,36064,34069+t,i.__webglTexture,a)}else if(p){let i=o.get(e.texture);eg.framebufferTextureLayer(36160,36064,i.__webglTexture,a||0,t||0)}Y=-1},this.readRenderTargetPixels=function(e,a,h,c,d,u,p){if(!(e&&e.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let f=o.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==p&&(f=f[p]),f){r.bindFramebuffer(36160,f);try{let r=e.texture,o=r.format,p=r.type;if(1023!==o&&M.convert(o)!==eg.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let f=1016===p&&(t.has("EXT_color_buffer_half_float")||i.isWebGL2&&t.has("EXT_color_buffer_float"));if(1009!==p&&M.convert(p)!==eg.getParameter(35738)&&!(1015===p&&(i.isWebG
3139L2||t.has("OES_texture_float")||t.has("WEBGL_color_buffer_float")))&&!f){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}a>=0&&a<=e.width-c&&h>=0&&h<=e.height-d&&eg.readPixels(a,h,c,d,M.convert(o),M.convert(p),u)}finally{let e=null!==X?o.get(X).__webglFramebuffer:null;r.bindFramebuffer(36160,e)}}},this.readRenderTargetPixelsAsync=async function(e,t,i,a,h,c,d){if(!(e&&e.isWebGLRenderTarget))throw Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let u=o.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==d&&(u=u[d]),u){let d=e.texture,f=d.format,m=d.type;if(t>=0&&t<=e.width-a&&i>=0&&i<=e.height-h){var p;r.bindFramebuffer(eg.FRAMEBUFFER,u);let e=eg.createBuffer();eg.bindBuffer(eg.PIXEL_PACK_BUFFER,e),eg.bufferData(eg.PIXEL_PACK_BUFFER,c.byteLength,eg.STREAM_READ),eg.readPixels(t,i,a,h,M.convert(f),M.convert(m),0);let d=null!==X?o.get(X).__webglFramebuffer:null;r.bindFramebuffer(eg.FRAMEBUFFER,d);let g=eg.fenceSync(eg.SYNC_GPU_COMMANDS_COMPLETE,0);return eg.flush(),await (p=eg,new Promise(function(e,t){setTimeout(function i(){switch(p.clientWaitSync(g,p.SYNC_FLUSH_COMMANDS_BIT,0)){case p.WAIT_FAILED:t();break;case p.TIMEOUT_EXPIRED:setTimeout(i,4);break;default:e()}},4)})),eg.bindBuffer(eg.PIXEL_PACK_BUFFER,e),eg.getBufferSubData(eg.PIXEL_PACK_BUFFER,0,c),eg.deleteBuffer(e),eg.deleteSync(g),c}throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")}},this.copyFramebufferToTexture=function(e,t,i=0){let a=Math.pow(2,-i),o=Math.floor(t.image.width*a),c=Math.floor(t.image.height*a);h.setTexture2D(t,0),eg.copyTexSubImage2D(3553,i,0,0,e.x,e.y,o,c),r.unbindTexture()},this.copyTextureToTexture=function(e,t,i,a=0){let o=t.image.width,c=t.image.height,d=M.convert(i.format),u=M.convert(i.type);h.setTexture2D(i,0),eg.pixelStorei(37440,i.flipY),eg.pixelStorei(37441,i.premultiplyAlpha),eg.pixelStorei(3317,i.unpackAlignment),t.isDataTexture?eg.texSubImage2D(3553,a,e.x,e.y,o,c,d,u,t.image.data):t.isCompressedTexture?eg.compressedTexSubImage2D(3553,a,e.x,e.y,t.mipmaps[0].width,t.mipmaps[0].height,d,t.mipmaps[0].data):eg.texSubImage2D(3553,a,e.x,e.y,d,u,t.image),0===a&&i.generateMipmaps&&eg.generateMipmap(3553),r.unbindTexture()},this.copyTextureToTexture3D=function(e,t,i,a,o=0){if(G.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let c=e.max.x-e.min.x+1,d=e.max.y-e.min.y+1,u=e.max.z-e.min.z+1,p=M.convert(a.format),f=M.convert(a.type),m;if(a.isData3DTexture)h.setTexture3D(a,0),m=32879;else if(a.isDataArrayTexture)h.setTexture2DArray(a,0),m=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}eg.pixelStorei(37440,a.flipY),eg.pixelStorei(37441,a.premultiplyAlpha),eg.pixelStorei(3317,a.unpackAlignment);let g=eg.getParameter(3314),v=eg.getParameter(32878),y=eg.getParameter(3316),x=eg.getParameter(3315),b=eg.getParameter(32877),w=i.isCompressedTexture?i.mipmaps[0]:i.image;eg.pixelStorei(3314,w.width),eg.pixelStorei(32878,w.height),eg.pixelStorei(3316,e.min.x),eg.pixelStorei(3315,e.min.y),eg.pixelStorei(32877,e.min.z),i.isDataTexture||i.isData3DTexture?eg.texSubImage3D(m,o,t.x,t.y,t.z,c,d,u,p,f,w.data):i.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),eg.compressedTexSubImage3D(m,o,t.x,t.y,t.z,c,d,u,p,w.data)):eg.texSubImage3D(m,o,t.x,t.y,t.z,c,d,u,p,f,w),eg.pixelStorei(3314,g),eg.pixelStorei(32878,v),eg.pixelStorei(3316,y),eg.pixelStorei(3315,x),eg.pixelStorei(32877,b),0===o&&a.generateMipmaps&&eg.generateMipmap(m),r.unbindTexture()},this.initRenderTarget=function(e){void 0===o.get(e).__webglFramebuffer&&h.setupRenderTarget(e)},this.initTexture=function(e){e.isCubeTexture?h.setTextureCube(e,0):e.isData3DTexture?h.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?h.setTexture2DArray(e,0):h.setTexture2D(e,0),r.unbindTexture()},this.resetState=function(){W=0,q=0,X=null,r.reset(),E.reset()},"u">typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}(class extends nw{}).prototype.isWebGL1Renderer=!0;var nS=class{constructor(e,t=1,i=1e3){this.isFog=!0,this.name="",this.color=new ia(e),this.near=t,this.far=i}clone(){return new nS(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}},n_=class extends rd{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.overrideMaterial=null,"u">typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),null!==e.background&&(this.background=e.background.clone()),null!==e.environment&&(this.environment=e.environment.clone()),null!==e.fog&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,null!==e.overrideMaterial&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return null!==this.fog&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(t.object.backgroundIntensity=this.backgroundIntensity),t}get autoUpdate(){return console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate}set autoUpdate(e){console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate=e}},nA=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.usage=35044,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=tj()}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,i){e*=this.stride,i*=t.stride;for(let r=0,a=this.stride;r<a;r++)this.array[e+r]=t.array[i+r];return this}set(e,t=0){return this.array.set(e,t),this}clone(e){void 0===e.arrayBuffers&&(e.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=tj()),void 0===e.arrayBuffers[this.array.buffer._uuid]&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);let t=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),i=new this.constructor(t,this.stride);return i.setUsage(this.usage),i}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return void 0===e.arrayBuffers&&(e.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=tj()),void 0===e.arrayBuffers[this.array.buffer._uuid]&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}},nM=new ib,nE=class{constructor(e,t,i,r=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=e,this.itemSize=t,this.offset=i,this.normalized=r}
3139get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let t=0,i=this.data.count;t<i;t++)nM.fromBufferAttribute(this,t),nM.applyMatrix4(e),this.setXYZ(t,nM.x,nM.y,nM.z);return this}applyNormalMatrix(e){for(let t=0,i=this.count;t<i;t++)nM.fromBufferAttribute(this,t),nM.applyNormalMatrix(e),this.setXYZ(t,nM.x,nM.y,nM.z);return this}transformDirection(e){for(let t=0,i=this.count;t<i;t++)nM.fromBufferAttribute(this,t),nM.transformDirection(e),this.setXYZ(t,nM.x,nM.y,nM.z);return this}setX(e,t){return this.normalized&&(t=tZ(t,this.array)),this.data.array[e*this.data.stride+this.offset]=t,this}setY(e,t){return this.normalized&&(t=tZ(t,this.array)),this.data.array[e*this.data.stride+this.offset+1]=t,this}setZ(e,t){return this.normalized&&(t=tZ(t,this.array)),this.data.array[e*this.data.stride+this.offset+2]=t,this}setW(e,t){return this.normalized&&(t=tZ(t,this.array)),this.data.array[e*this.data.stride+this.offset+3]=t,this}getX(e){let t=this.data.array[e*this.data.stride+this.offset];return this.normalized&&(t=tQ(t,this.array)),t}getY(e){let t=this.data.array[e*this.data.stride+this.offset+1];return this.normalized&&(t=tQ(t,this.array)),t}getZ(e){let t=this.data.array[e*this.data.stride+this.offset+2];return this.normalized&&(t=tQ(t,this.array)),t}getW(e){let t=this.data.array[e*this.data.stride+this.offset+3];return this.normalized&&(t=tQ(t,this.array)),t}setXY(e,t,i){return e=e*this.data.stride+this.offset,this.normalized&&(t=tZ(t,this.array),i=tZ(i,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=i,this}setXYZ(e,t,i,r){return e=e*this.data.stride+this.offset,this.normalized&&(t=tZ(t,this.array),i=tZ(i,this.array),r=tZ(r,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=i,this.data.array[e+2]=r,this}setXYZW(e,t,i,r,a){return e=e*this.data.stride+this.offset,this.normalized&&(t=tZ(t,this.array),i=tZ(i,this.array),r=tZ(r,this.array),a=tZ(a,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=i,this.data.array[e+2]=r,this.data.array[e+3]=a,this}clone(e){if(void 0!==e)return void 0===e.interleavedBuffers&&(e.interleavedBuffers={}),void 0===e.interleavedBuffers[this.data.uuid]&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new nE(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized);{console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.");let e=[];for(let t=0;t<this.count;t++){let i=t*this.data.stride+this.offset;for(let t=0;t<this.itemSize;t++)e.push(this.data.array[i+t])}return new rT(new this.array.constructor(e),this.itemSize,this.normalized)}}toJSON(e){if(void 0!==e)return void 0===e.interleavedBuffers&&(e.interleavedBuffers={}),void 0===e.interleavedBuffers[this.data.uuid]&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized};{console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.");let e=[];for(let t=0;t<this.count;t++){let i=t*this.data.stride+this.offset;for(let t=0;t<this.itemSize;t++)e.push(this.data.array[i+t])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:e,normalized:this.normalized}}}},nC=class extends rd{constructor(){super(),this.isBone=!0,this.type="Bone"}},nT=class extends iu{constructor(e=null,t=1,i=1,r,a,o,h,c,d=1003,u=1003,p,f){super(null,o,h,c,d,u,r,a,p,f),this.isDataTexture=!0,this.image={data:e,width:t,height:i},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},nP=new iZ,nD=new iZ,nO=class{constructor(e=[],t=[]){this.uuid=tj(),this.bones=e.slice(0),this.boneInverses=t,this.boneMatrices=null,this.boneTexture=null,this.boneTextureSize=0,this.frame=-1,this.init()}init(){let e=this.bones,t=this.boneInverses;if(this.boneMatrices=new Float32Array(16*e.length),0===t.length)this.calculateInverses();else if(e.length!==t.length){console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(let e=0,t=this.bones.length;e<t;e++)this.boneInverses.push(new iZ)}}calculateInverses(){this.boneInverses.length=0;for(let e=0,t=this.bones.length;e<t;e++){let t=new iZ;this.bones[e]&&t.copy(this.bones[e].matrixWorld).invert(),this.boneInverses.push(t)}}pose(){for(let e=0,t=this.bones.length;e<t;e++){let t=this.bones[e];t&&t.matrixWorld.copy(this.boneInverses[e]).invert()}for(let e=0,t=this.bones.length;e<t;e++){let t=this.bones[e];t&&(t.parent&&t.parent.isBone?(t.matrix.copy(t.parent.matrixWorld).invert(),t.matrix.multiply(t.matrixWorld)):t.matrix.copy(t.matrixWorld),t.matrix.decompose(t.position,t.quaternion,t.scale))}}update(){let e=this.bones,t=this.boneInverses,i=this.boneMatrices,r=this.boneTexture;for(let r=0,a=e.length;r<a;r++){let a=e[r]?e[r].matrixWorld:nD;nP.multiplyMatrices(a,t[r]),nP.toArray(i,16*r)}null!==r&&(r.needsUpdate=!0)}clone(){return new nO(this.bones,this.boneInverses)}computeBoneTexture(){let e=Math.sqrt(4*this.bones.length),t=new Float32Array((e=Math.max(e=tX(e),4))*e*4);t.set(this.boneMatrices);let i=new nT(t,e,e,1023,1015);return i.needsUpdate=!0,this.boneMatrices=t,this.boneTexture=i,this.boneTextureSize=e,this}getBoneByName(e){for(let t=0,i=this.bones.length;t<i;t++){let i=this.bones[t];if(i.name===e)return i}}dispose(){null!==this.boneTexture&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(e,t){this.uuid=e.uuid;
3139for(let i=0,r=e.bones.length;i<r;i++){let r=e.bones[i],a=t[r];void 0===a&&(console.warn("THREE.Skeleton: No bone found with UUID:",r),a=new nC),this.bones.push(a),this.boneInverses.push(new iZ().fromArray(e.boneInverses[i]))}return this.init(),this}toJSON(){let e={metadata:{version:4.5,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]};e.uuid=this.uuid;let t=this.bones,i=this.boneInverses;for(let r=0,a=t.length;r<a;r++){let a=t[r];e.bones.push(a.uuid);let o=i[r];e.boneInverses.push(o.toArray())}return e}},nI=class extends rT{constructor(e,t,i,r=1){super(e,t,i),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=r}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}toJSON(){let e=super.toJSON();return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}},nR=new iZ,nL=new iZ,nB=[],nz=new iZ,nF=new r$,nN=class extends r${constructor(e,t,i){super(e,t),this.isInstancedMesh=!0,this.instanceMatrix=new nI(new Float32Array(16*i),16),this.instanceColor=null,this.count=i,this.frustumCulled=!1;for(let e=0;e<i;e++)this.setMatrixAt(e,nz)}copy(e,t){return super.copy(e,t),this.instanceMatrix.copy(e.instanceMatrix),null!==e.instanceColor&&(this.instanceColor=e.instanceColor.clone()),this.count=e.count,this}getColorAt(e,t){t.fromArray(this.instanceColor.array,3*e)}getMatrixAt(e,t){t.fromArray(this.instanceMatrix.array,16*e)}raycast(e,t){let i=this.matrixWorld,r=this.count;if(nF.geometry=this.geometry,nF.material=this.material,void 0!==nF.material)for(let a=0;a<r;a++){this.getMatrixAt(a,nR),nL.multiplyMatrices(i,nR),nF.matrixWorld=nL,nF.raycast(e,nB);for(let e=0,i=nB.length;e<i;e++){let i=nB[e];i.instanceId=a,i.object=this,t.push(i)}nB.length=0}}setColorAt(e,t){null===this.instanceColor&&(this.instanceColor=new nI(new Float32Array(3*this.instanceMatrix.count),3)),t.toArray(this.instanceColor.array,3*e)}setMatrixAt(e,t){t.toArray(this.instanceMatrix.array,16*e)}updateMorphTargets(){}dispose(){this.dispatchEvent({type:"dispose"})}},nU=class extends rA{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new ia(16777215),this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}},nk=new ib,nV=new ib,nj=new iZ,nG=new iQ,nH=new iV,nW=class extends rd{constructor(e=new rU,t=new nU){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=e.material,this.geometry=e.geometry,this}computeLineDistances(){let e=this.geometry;if(null===e.index){let t=e.attributes.position,i=[0];for(let e=1,r=t.count;e<r;e++)nk.fromBufferAttribute(t,e-1),nV.fromBufferAttribute(t,e),i[e]=i[e-1],i[e]+=nk.distanceTo(nV);e.setAttribute("lineDistance",new rO(i,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(e,t){let i=this.geometry,r=this.matrixWorld,a=e.params.Line.threshold,o=i.drawRange;if(null===i.boundingSphere&&i.computeBoundingSphere(),nH.copy(i.boundingSphere),nH.applyMatrix4(r),nH.radius+=a,!1===e.ray.intersectsSphere(nH))return;nj.copy(r).invert(),nG.copy(e.ray).applyMatrix4(nj);let h=a/((this.scale.x+this.scale.y+this.scale.z)/3),c=h*h,d=new ib,u=new ib,p=new ib,f=new ib,m=this.isLineSegments?2:1,g=i.index,v=i.attributes.position;if(null!==g){let i=Math.max(0,o.start),r=Math.min(g.count,o.start+o.count);for(let a=i,o=r-1;a<o;a+=m){let i=g.getX(a),r=g.getX(a+1);if(d.fromBufferAttribute(v,i),u.fromBufferAttribute(v,r),nG.distanceSqToSegment(d,u,f,p)>c)continue;
3139f.applyMatrix4(this.matrixWorld);let o=e.ray.origin.distanceTo(f);o<e.near||o>e.far||t.push({distance:o,point:p.clone().applyMatrix4(this.matrixWorld),index:a,face:null,faceIndex:null,object:this})}}else{let i=Math.max(0,o.start),r=Math.min(v.count,o.start+o.count);for(let a=i,o=r-1;a<o;a+=m){if(d.fromBufferAttribute(v,a),u.fromBufferAttribute(v,a+1),nG.distanceSqToSegment(d,u,f,p)>c)continue;f.applyMatrix4(this.matrixWorld);let i=e.ray.origin.distanceTo(f);i<e.near||i>e.far||t.push({distance:i,point:p.clone().applyMatrix4(this.matrixWorld),index:a,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;e<t;e++){let t=i[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}},nq=new ib,nX=new ib,nY=class extends nW{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){let e=this.geometry;if(null===e.index){let t=e.attributes.position,i=[];for(let e=0,r=t.count;e<r;e+=2)nq.fromBufferAttribute(t,e),nX.fromBufferAttribute(t,e+1),i[e]=0===e?0:i[e-1],i[e+1]=i[e]+nq.distanceTo(nX);e.setAttribute("lineDistance",new rO(i,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}},nQ=class extends iu{constructor(e,t,i,r,a,o,h,c,d){super(e,t,i,r,a,o,h,c,d),this.isVideoTexture=!0,this.minFilter=void 0!==o?o:1006,this.magFilter=void 0!==a?a:1006,this.generateMipmaps=!1;let u=this;"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback(function t(){u.needsUpdate=!0,e.requestVideoFrameCallback(t)})}clone(){return new this.constructor(this.image).copy(this)}update(){let e=this.image;"requestVideoFrameCallback"in e==!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}},nZ=class extends iu{constructor(e,t,i,r,a,o,h,c,d){super(e,t,i,r,a,o,h,c,d),this.isCanvasTexture=!0,this.needsUpdate=!0}},nK=class{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){let i=this.getUtoTmapping(e);return this.getPoint(i,t)}getPoints(e=5){let t=[];for(let i=0;i<=e;i++)t.push(this.getPoint(i/e));return t}getSpacedPoints(e=5){let t=[];for(let i=0;i<=e;i++)t.push(this.getPointAt(i/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t=[],i,r=this.getPoint(0),a=0;t.push(0);for(let o=1;o<=e;o++)t.push(a+=(i=this.getPoint(o/e)).distanceTo(r)),r=i;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){let i=this.getLengths(),r=0,a=i.length,o;o=t||e*i[a-1];let h=0,c=a-1,d;for(;h<=c;)if((d=i[r=Math.floor(h+(c-h)/2)]-o)<0)h=r+1;else if(d>0)c=r-1;else{c=r;break}if(i[r=c]===o)return r/(a-1);let u=i[r],p=i[r+1]-u;return(r+(o-u)/p)/(a-1)}getTangent(e,t){let i=e-1e-4,r=e+1e-4;i<0&&(i=0),r>1&&(r=1);let a=this.getPoint(i),o=this.getPoint(r),h=t||(a.isVector2?new tJ:new ib);return h.copy(o).sub(a).normalize(),h}getTangentAt(e,t){let i=this.getUtoTmapping(e);return this.getTangent(i,t)}computeFrenetFrames(e,t){let i=new ib,r=[],a=[],o=[],h=new ib,c=new iZ;for(let t=0;t<=e;t++){let i=t/e;r[t]=this.getTangentAt(i,new ib)}a[0]=new ib,o[0]=new ib;let d=Number.MAX_VALUE,u=Math.abs(r[0].x),p=Math.abs(r[0].y),f=Math.abs(r[0].z);u<=d&&(d=u,i.set(1,0,0)),p<=d&&(d=p,i.set(0,1,0)),f<=d&&i.set(0,0,1),h.crossVectors(r[0],i).normalize(),a[0].crossVectors(r[0],h),o[0].crossVectors(r[0],a[0]);for(let t=1;t<=e;t++){if(a[t]=a[t-1].clone(),o[t]=o[t-1].clone(),h.crossVectors(r[t-1],r[t]),h.length()>Number.EPSILON){h.normalize();let e=Math.acos(tG(r[t-1].dot(r[t]),-1,1));a[t].applyMatrix4(c.makeRotationAxis(h,e))}o[t].crossVectors(r[t],a[t])}if(!0===t){let t=Math.acos(tG(a[0].dot(a[e]),-1,1));t/=e,r[0].dot(h.crossVectors(a[0],a[e]))>0&&(t=-t);for(let i=1;i<=e;i++)a[i].applyMatrix4(c.makeRotationAxis(r[i],t*i)),o[i].crossVectors(r[i],a[i])}return{tangents:r,normals:a,binormals:o}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.t
3139ype,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}},nJ=class extends nK{constructor(e=0,t=0,i=1,r=1,a=0,o=2*Math.PI,h=!1,c=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=i,this.yRadius=r,this.aStartAngle=a,this.aEndAngle=o,this.aClockwise=h,this.aRotation=c}getPoint(e,t){let i=t||new tJ,r=2*Math.PI,a=this.aEndAngle-this.aStartAngle,o=Math.abs(a)<Number.EPSILON;for(;a<0;)a+=r;for(;a>r;)a-=r;a<Number.EPSILON&&(a=o?0:r),!0!==this.aClockwise||o||(a===r?a=-r:a-=r);let h=this.aStartAngle+e*a,c=this.aX+this.xRadius*Math.cos(h),d=this.aY+this.yRadius*Math.sin(h);if(0!==this.aRotation){let e=Math.cos(this.aRotation),t=Math.sin(this.aRotation),i=c-this.aX,r=d-this.aY;c=i*e-r*t+this.aX,d=i*t+r*e+this.aY}return i.set(c,d)}copy(e){return super.copy(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}toJSON(){let e=super.toJSON();return e.aX=this.aX,e.aY=this.aY,e.xRadius=this.xRadius,e.yRadius=this.yRadius,e.aStartAngle=this.aStartAngle,e.aEndAngle=this.aEndAngle,e.aClockwise=this.aClockwise,e.aRotation=this.aRotation,e}fromJSON(e){return super.fromJSON(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}},n$=class extends nJ{constructor(e,t,i,r,a,o){super(e,t,i,i,r,a,o),this.isArcCurve=!0,this.type="ArcCurve"}};function n0(){let e=0,t=0,i=0,r=0;function a(a,o,h,c){e=a,t=h,i=-3*a+3*o-2*h-c,r=2*a-2*o+h+c}return{initCatmullRom:function(e,t,i,r,o){a(t,i,o*(i-e),o*(r-t))},initNonuniformCatmullRom:function(e,t,i,r,o,h,c){let d=(t-e)/o-(i-e)/(o+h)+(i-t)/h,u=(i-t)/h-(r-t)/(h+c)+(r-i)/c;a(t,i,d*=h,u*=h)},calc:function(a){let o=a*a;return e+t*a+i*o+o*a*r}}}var n1=new ib,n2=new n0,n3=new n0,n4=new n0,n5=class extends nK{constructor(e=[],t=!1,i="centripetal",r=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=e,this.closed=t,this.curveType=i,this.tension=r}getPoint(e,t=new ib){let i,r,a=this.points,o=a.length,h=(o-(this.closed?0:1))*e,c=Math.floor(h),d=h-c;this.closed?c+=c>0?0:(Math.floor(Math.abs(c)/o)+1)*o:0===d&&c===o-1&&(c=o-2,d=1),this.closed||c>0?i=a[(c-1)%o]:(n1.subVectors(a[0],a[1]).add(a[0]),i=n1);let u=a[c%o],p=a[(c+1)%o];if(this.closed||c+2<o?r=a[(c+2)%o]:(n1.subVectors(a[o-1],a[o-2]).add(a[o-1]),r=n1),"centripetal"===this.curveType||"chordal"===this.curveType){let e="chordal"===this.curveType?.5:.25,t=Math.pow(i.distanceToSquared(u),e),a=Math.pow(u.distanceToSquared(p),e),o=Math.pow(p.distanceToSquared(r),e);a<1e-4&&(a=1),t<1e-4&&(t=a),o<1e-4&&(o=a),n2.initNonuniformCatmullRom(i.x,u.x,p.x,r.x,t,a,o),n3.initNonuniformCatmullRom(i.y,u.y,p.y,r.y,t,a,o),n4.initNonuniformCatmullRom(i.z,u.z,p.z,r.z,t,a,o)}else"catmullrom"===this.curveType&&(n2.initCatmullRom(i.x,u.x,p.x,r.x,this.tension),n3.initCatmullRom(i.y,u.y,p.y,r.y,this.tension),n4.initCatmullRom(i.z,u.z,p.z,r.z,this.tension));return t.set(n2.calc(d),n3.calc(d),n4.calc(d)),t}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t<i;t++){let i=e.points[t];this.points.push(i.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,i=this.points.length;t<i;t++){let i=this.points[t];e.points.push(i.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,i=e.points.length;t<i;t++){let i=e.points[t];this.points.push(new ib().fromArray(i))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}};function n6(e,t,i,r,a){let o=(r-t)*.5,h=(a-i)*.5,c=e*e;return e*c*(2*i-2*r+o+h)+(-3*i+3*r-2*o-h)*c+o*e+i}function n8(e,t,i,r){let a;return(a=1-e)*a*t+2*(1-e)*e*i+e*e*r}function n9(e,t,i,r,a){let o,h;return(o=1-e)*o*o*t+3*(h=1-e)*h*e*i+3*(1-e)*e*e*r+e*e*e*a}var n7=class extends nK{constructor(e=new tJ,t=new tJ,i=new tJ,r=new tJ){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=e,this.v1=t,this.v2=i,this.v3=r}getPoint(e,t=new tJ){let i=this.v0,r=this.v1,a=this.v2,o=this.v3;return t.set(n9(e,i.x,r.x,a.x,o.x),n9(e,i.y,r.y,a.y,o.y)),t}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}},oe=class extends nK{constructor(e=new ib,t=new ib,i=new ib,r=new ib){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=e,this.v1=t,this.v2=i,this.v3=r}getPoint(e,t=new ib){let i=this.v0,r=this.v1,a=this.v2,o=this.v3;return t.set(n9(e,i.x,r.x,a.x,o.x),n9(e,i.y,r.y,a.y,o.y),n9(e,i.z,r.z,a.z,o.z)),t}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}},ot=class extends nK{constructor(e=new tJ,t=new tJ){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=e,this.v2=t}getPoint(e,t=new tJ){return 1===e?t.copy(this.v2):(t.copy(this.v2).sub(this.v1),t.multiplyScalar(e).add(this.v1)),t}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t){let i=t||new tJ;return i.copy(this.v2).sub(this.v1).normalize(),i}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},oi=class extends nK{constructor(e=new ib,t=new ib){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=e,this.v2=t}getPoint(e,t=new ib){return 1===e?t.copy(this.v2):(t.copy(this.v2).sub(this.v1),t.multiplyScalar(e).add(this.v1)),t}getPointAt(e,t){return this.getPoint(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},or=class extends nK{constructor(e=new tJ,t=new tJ,i=new tJ){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=e,this.v1=t,this.v2=i}
vendor: 8,307 bytes, line 3139
3139getPoint(e,t=new tJ){let i=this.v0,r=this.v1,a=this.v2;return t.set(n8(e,i.x,r.x,a.x),n8(e,i.y,r.y,a.y)),t}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},os=class extends nK{constructor(e=new ib,t=new ib,i=new ib){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=e,this.v1=t,this.v2=i}getPoint(e,t=new ib){let i=this.v0,r=this.v1,a=this.v2;return t.set(n8(e,i.x,r.x,a.x),n8(e,i.y,r.y,a.y),n8(e,i.z,r.z,a.z)),t}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){let e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}},oa=class extends nK{constructor(e=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve",this.points=e}getPoint(e,t=new tJ){let i=this.points,r=(i.length-1)*e,a=Math.floor(r),o=r-a,h=i[0===a?a:a-1],c=i[a],d=i[a>i.length-2?i.length-1:a+1],u=i[a>i.length-3?i.length-1:a+2];return t.set(n6(o,h.x,c.x,d.x,u.x),n6(o,h.y,c.y,d.y,u.y)),t}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t<i;t++){let i=e.points[t];this.points.push(i.clone())}return this}toJSON(){let e=super.toJSON();e.points=[];for(let t=0,i=this.points.length;t<i;t++){let i=this.points[t];e.points.push(i.toArray())}return e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,i=e.points.length;t<i;t++){let i=e.points[t];this.points.push(new tJ().fromArray(i))}return this}},on=Object.freeze({__proto__:null,ArcCurve:n$,CatmullRomCurve3:n5,CubicBezierCurve:n7,CubicBezierCurve3:oe,EllipseCurve:nJ,LineCurve:ot,LineCurve3:oi,QuadraticBezierCurve:or,QuadraticBezierCurve3:os,SplineCurve:oa}),oo=class extends nK{constructor(){super(),this.type="CurvePath",this.curves=[],this.autoClose=!1}add(e){this.curves.push(e)}closePath(){let e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);e.equals(t)||this.curves.push(new ot(t,e))}getPoint(e,t){let i=e*this.getLength(),r=this.getCurveLengths(),a=0;for(;a<r.length;){if(r[a]>=i){let e=r[a]-i,o=this.curves[a],h=o.getLength(),c=0===h?0:1-e/h;return o.getPointAt(c,t)}a++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let i=0,r=this.curves.length;i<r;i++)e.push(t+=this.curves[i].getLength());return this.cacheLengths=e,e}getSpacedPoints(e=40){let t=[];for(let i=0;i<=e;i++)t.push(this.getPoint(i/e));return this.autoClose&&t.push(t[0]),t}getPoints(e=12){let t=[],i;for(let r=0,a=this.curves;r<a.length;r++){let o=a[r],h=o.isEllipseCurve?2*e:o.isLineCurve||o.isLineCurve3?1:o.isSplineCurve?e*o.points.length:e,c=o.getPoints(h);for(let e=0;e<c.length;e++){let r=c[e];i&&i.equals(r)||(t.push(r),i=r)}}return this.autoClose&&t.length>1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,i=e.curves.length;t<i;t++){let i=e.curves[t];this.curves.push(i.clone())}return this.autoClose=e.autoClose,this}toJSON(){let e=super.toJSON();e.autoClose=this.autoClose,e.curves=[];for(let t=0,i=this.curves.length;t<i;t++){let i=this.curves[t];e.curves.push(i.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.autoClose=e.autoClose,this.curves=[];for(let t=0,i=e.curves.length;t<i;t++){let i=e.curves[t];this.curves.push(new on[i.type]().fromJSON(i))}return this}},ol=class extends oo{constructor(e){super(),this.type="Path",this.currentPoint=new tJ,e&&this.setFromPoints(e)}setFromPoints(e){this.moveTo(e[0].x,e[0].y);for(let t=1,i=e.length;t<i;t++)this.lineTo(e[t].x,e[t].y);return this}moveTo(e,t){return this.currentPoint.set(e,t),this}lineTo(e,t){let i=new ot(this.currentPoint.clone(),new tJ(e,t));return this.curves.push(i),this.currentPoint.set(e,t),this}quadraticCurveTo(e,t,i,r){let a=new or(this.currentPoint.clone(),new tJ(e,t),new tJ(i,r));return this.curves.push(a),this.currentPoint.set(i,r),this}bezierCurveTo(e,t,i,r,a,o){let h=new n7(this.currentPoint.clone(),new tJ(e,t),new tJ(i,r),new tJ(a,o));return this.curves.push(h),this.currentPoint.set(a,o),this}splineThru(e){let t=new oa([this.currentPoint.clone()].concat(e));return this.curves.push(t),this.currentPoint.copy(e[e.length-1]),this}arc(e,t,i,r,a,o){let h=this.currentPoint.x,c=this.currentPoint.y;return this.absarc(e+h,t+c,i,r,a,o),this}absarc(e,t,i,r,a,o){return this.absellipse(e,t,i,i,r,a,o),this}ellipse(e,t,i,r,a,o,h,c){let d=this.currentPoint.x,u=this.currentPoint.y;return this.absellipse(e+d,t+u,i,r,a,o,h,c),this}absellipse(e,t,i,r,a,o,h,c){let d=new nJ(e,t,i,r,a,o,h,c);if(this.curves.length>0){let e=d.getPoint(0);e.equals(this.currentPoint)||this.lineTo(e.x,e.y)}this.curves.push(d);let u=d.getPoint(1);return this.currentPoint.copy(u),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}},oh=class extends rU{constructor(e=[new tJ(0,-.5),new tJ(.5,0),new tJ(0,.5)],t=12,i=0,r=2*Math.PI){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:i,phiLength:r},t=Math.floor(t),r=tG(r,0,2*Math.PI);let a=[],o=[],h=[],c=[],d=[],u=1/t,p=new ib,f=new tJ,m=new ib,g=new ib,v=new ib,y=0,x=0;for(let t=0;t<=e.length-1;t++)switch(t){case 0:y=e[t+1].x-e[t].x,x=e[t+1].y-e[t].y,m.x=1*x,m.y=-y,m.z=0*x,v.copy(m),m.normalize(),c.push(m.x,m.y,m.z);break;case e.length-1:c.push(v.x,v.y,v.z);break;default:y=e[t+1].x-e[t].x,x=e[t+1].y-e[t].y,m.x=1*x,m.y=-y,m.z=0*x,g.copy(m),m.x+=v.x,m.y+=v.y,m.z+=v.z,m.normalize(),c.push(m.x,m.y,m.z),v.copy(g)}for(let a=0;a<=t;a++){let m=i+a*u*r,g=Math.sin(m),v=Math.cos(m);for(let i=0;i<=e.length-1;i++){p.x=e[i].x*g,p.y=e[i].y,p.z=e[i].x*v,o.push(p.x,p.y,p.z),f.x=a/t,f.y=i/(e.length-1),h.push(f.x,f.y);let r=c[3*i+0]*g,u=c[3*i+1],m=c[3*i+0]*v;d.push(r,u,m)}}for(let i=0;i<t;i++)for(let t=0;t<e.length-1;t++){let r=t+i*e.length,o=r+e.length,h=r+e.length+1,c=r+1;a.push(r,o,c),a.push(h,c,o)}this.setIndex(a),this.setAttribute("position",new rO(o,3)),this.setAttribute("uv",new rO(h,2)),this.setAttribute("normal",new rO(d,3))}static fromJSON(e){return new oh(e.points,e.segments,e.phiStart,e.phiLength)}},oc=class extends rU{constructor(e=1,t=1,i=1,r=32,a=1,o=!1,h=0,c=2*Math.PI){super(),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:t,height:i,radialSegments:r,heightSegments:a,openEnded:o,thetaStart:h,thetaLength:c};let d=this;r=Math.floor(r),a=Math.floor(a);let u=[],p=[],f=[],m=[],g=0,v=[],y=i/2,x=0;function b(i){let a=g,o=new tJ,v=new ib,b=0,w=!0===i?e:t,S=!0===i?1:-1;for(let e=1;e<=r;e++)p.push(0,y*S,0),f.push(0,S,0),m.push(.5,.5),g++;let _=g;for(let e=0;e<=r;e++){let t=e/r*c+h,i=Math.cos(t),a=Math.sin(t);v.x=w*a,v.y=y*S,v.z=w*i,p.push(v.x,v.y,v.z),f.push(0,S,0),o.x=.5*i+.5,o.y=.5*a*S+.5,m.push(o.x,o.y),g++}for(let e=0;e<r;e++){let t=a+e,r=_+e;!0===i?u.push(r,r+1,t):u.push(r+1,r,t),b+=3}d.addGroup(x,b,!0===i?1:2),x+=b}(function(){let o=new ib,b=new ib,w=0,S=(t-e)/i;for(let d=0;d<=a;d++){let u=[],x=d/a,w=x*(t-e)+e;for(let e=0;e<=r;e++){let t=e/r,a=t*c+h,d=Math.sin(a),v=Math.cos(a);b.x=w*d,b.y=-x*i+y,b.z=w*v,p.push(b.x,b.y,b.z),o.set(d,S,v).normalize(),f.push(o.x,o.y,o.z),m.push(t,1-x),u.push(g++)}v.push(u)}for(let e=0;e<r;e++)for(let t=0;t<a;t++){let i=v[t][e],r=v[t+1][e],a=v[t+1][e+1],o=v[t][e+1];u.push(i,r,o),u.push(r,a,o),w+=6}d.addGroup(x,w,0),x+=w})(),!1===o&&(e>0&&b(!0),t>0&&b(!1)),this.setIndex(u),this.setAttribute("position",new rO(p,3)),this.setAttribute("normal",new rO(f,3)),this.setAttribute("uv",new rO(m,2))}static fromJSON(e){return new oc(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},od=class extends oc{constructor(e=1,t=1,i=32,r=1,a=!1,o=0,h=2*Math.PI){super(0,e,t,i,r,a,o,h),this.type="C
3139oneGeometry",this.parameters={radius:e,height:t,radialSegments:i,heightSegments:r,openEnded:a,thetaStart:o,thetaLength:h}}static fromJSON(e){return new od(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},ou=class extends rU{constructor(e=[],t=[],i=1,r=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:i,detail:r};let a=[],o=[];function h(e){a.push(e.x,e.y,e.z)}function c(t,i){let r=3*t;i.x=e[r+0],i.y=e[r+1],i.z=e[r+2]}function d(e,t,i,r){r<0&&1===e.x&&(o[t]=e.x-1),0===i.x&&0===i.z&&(o[t]=r/2/Math.PI+.5)}function u(e){return Math.atan2(e.z,-e.x)}(function(e){let i=new ib,r=new ib,a=new ib;for(let o=0;o<t.length;o+=3)c(t[o+0],i),c(t[o+1],r),c(t[o+2],a),function(e,t,i,r){let a=r+1,o=[];for(let r=0;r<=a;r++){o[r]=[];let h=e.clone().lerp(i,r/a),c=t.clone().lerp(i,r/a),d=a-r;for(let e=0;e<=d;e++)0===e&&r===a?o[r][e]=h:o[r][e]=h.clone().lerp(c,e/d)}for(let e=0;e<a;e++)for(let t=0;t<2*(a-e)-1;t++){let i=Math.floor(t/2);t%2==0?(h(o[e][i+1]),h(o[e+1][i]),h(o[e][i])):(h(o[e][i+1]),h(o[e+1][i+1]),h(o[e+1][i]))}}(i,r,a,e)})(r),function(e){let t=new ib;for(let i=0;i<a.length;i+=3)t.x=a[i+0],t.y=a[i+1],t.z=a[i+2],t.normalize().multiplyScalar(e),a[i+0]=t.x,a[i+1]=t.y,a[i+2]=t.z}(i),function(){let e=new ib;for(let t=0;t<a.length;t+=3){e.x=a[t+0],e.y=a[t+1],e.z=a[t+2];let i=u(e)/2/Math.PI+.5,r=Math.atan2(-e.y,Math.sqrt(e.x*e.x+e.z*e.z))/Math.PI+.5;o.push(i,1-r)}(function(){let e=new ib,t=new ib,i=new ib,r=new ib,h=new tJ,c=new tJ,p=new tJ;for(let f=0,m=0;f<a.length;f+=9,m+=6){e.set(a[f+0],a[f+1],a[f+2]),t.set(a[f+3],a[f+4],a[f+5]),i.set(a[f+6],a[f+7],a[f+8]),h.set(o[m+0],o[m+1]),c.set(o[m+2],o[m+3]),p.set(o[m+4],o[m+5]),r.copy(e).add(t).add(i).divideScalar(3);let g=u(r);d(h,m+0,e,g),d(c,m+2,t,g),d(p,m+4,i,g)}})(),function(){for(let e=0;e<o.length;e+=6){let t=o[e+0],i=o[e+2],r=o[e+4],a=Math.max(t,i,r),h=Math.min(t,i,r);a>.9&&h<.1&&(t<.2&&(o[e+0]+=1),i<.2&&(o[e+2]+=1),r<.2&&(o[e+4]+=1))}}()}(),this.setAttribute("position",new rO(a,3)),this.setAttribute("normal",new rO(a.slice(),3)),this.setAttribute("uv",new rO(o,2)),0===r?this.computeVertexNormals():this.normalizeNormals()}static fromJSON(e){return new ou(e.vertices,e.indices,e.radius,e.details)}},op=class extends ou{constructor(e=1,t=0){let i=(1+Math.sqrt(5))/2,r=1/i;super([-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,-r,-i,0,-r,i,0,r,-i,0,r,i,-r,-i,0,-r,i,0,r,-i,0,r,i,0,-i,0,-r,i,0,-r,-i,0,r,i,0,r],[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,
313919,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new op(e.radius,e.detail)}},of=class extends ol{constructor(e){super(e),this.uuid=tj(),this.type="Shape",this.holes=[]}getPointsHoles(e){let t=[];for(let i=0,r=this.holes.length;i<r;i++)t[i]=this.holes[i].getPoints(e);return t}extractPoints(e){return{shape:this.getPoints(e),holes:this.getPointsHoles(e)}}copy(e){super.copy(e),this.holes=[];for(let t=0,i=e.holes.length;t<i;t++){let i=e.holes[t];this.holes.push(i.clone())}return this}toJSON(){let e=super.toJSON();e.uuid=this.uuid,e.holes=[];for(let t=0,i=this.holes.length;t<i;t++){let i=this.holes[t];e.holes.push(i.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.uuid=e.uuid,this.holes=[];for(let t=0,i=e.holes.length;t<i;t++){let i=e.holes[t];this.holes.push(new ol().fromJSON(i))}return this}},om=function(e,t,i=2){let r,a,o,h,c,d,u,p=t&&t.length,f=p?t[0]*i:e.length,m=og(e,0,f,i,!0),g=[];if(!m||m.next===m.prev)return g;if(p&&(m=function(e,t,i,r){let a=[],o,h,c,d,u;for(o=0,h=t.length;o<h;o++)c=t[o]*r,d=o<h-1?t[o+1]*r:e.length,(u=og(e,c,d,r,!1))===u.next&&(u.steiner=!0),a.push(function(e){let t=e,i=e;do(t.x<i.x||t.x===i.x&&t.y<i.y)&&(i=t),t=t.next;while(t!==e);return i}(u));for(a.sort(oy),o=0;o<a.length;o++)i=function(e,t){let i=function(e,t){let i=t,r=-1/0,a,o=e.x,h=e.y;do{if(h<=i.y&&h>=i.next.y&&i.next.y!==i.y){let e=i.x+(h-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(e<=o&&e>r&&(r=e,a=i.x<i.next.x?i:i.next,e===o))return a}i=i.next}while(i!==t);if(!a)return null;let c=a,d=a.x,u=a.y,p=1/0,f;i=a;do{var m,g;o>=i.x&&i.x>=d&&o!==i.x&&ob(h<u?o:r,h,d,u,h<u?r:o,h,i.x,i.y)&&(f=Math.abs(h-i.y)/(o-i.x),oE(i,e)&&(f<p||f===p&&(i.x>a.x||i.x===a.x&&(m=a,g=i,0>ow(m.prev,m,g.prev)&&0>ow(g.next,m,m.next))))&&(a=i,p=f)),i=i.next}while(i!==c);return a}(e,t);if(!i)return t;let r=oC(i,e);return ov(r,r.next),ov(i,i.next)}(a[o],i);return i}(e,t,m,i)),e.length>80*i){r=o=e[0],a=h=e[1];for(let t=i;t<f;t+=i)c=e[t],d=e[t+1],c<r&&(r=c),d<a&&(a=d),c>o&&(o=c),d>h&&(h=d);u=0!==(u=Math.max(o-r,h-a))?32767/u:0}return function e(t,i,r,a,o,h,c){if(!t)return;!c&&h&&function(e,t,i,r){let a=e;do 0===a.z&&(a.z=ox(a.x,a.y,t,i,r)),a.prevZ=a.prev,a.nextZ=a.next,a=a.next;while(a!==e);a.prevZ.nextZ=null,a.prevZ=null,function(e){let t,i,r,a,o,h,c,d,u=1;do{for(i=e,e=null,o=null,h=0;i;){for(h++,r=i,c=0,t=0;t<u&&(c++,r=r.nextZ);t++);for(d=u;c>0||d>0&&r;)0!==c&&(0===d||!r||i.z<=r.z)?(a=i,i=i.nextZ,c--):(a=r,r=r.nextZ,d--),o?o.nextZ=a:e=a,a.prevZ=o,o=a;i=r}o.nextZ=null,u*=2}while(h>1)}(a)}(t,a,o,h);let d=t,u,p;for(;t.prev!==t.next;){if(u=t.prev,p=t.next,h?function(e,t,i,r){let a=e.prev,o=e.next;if(ow(a,e,o)>=0)return!1;let h=a.x,c=e.x,d=o.x,u=a.y,p=e.y,f=o.y,m=h<c?h<d?h:d:c<d?c:d,g=u<p?u<f?u:f:p<f?p:f,v=h>c?h>d?h:d:c>d?c:d,y=u>p?u>f?u:f:p>f?p:f,x=ox(m,g,t,i,r),b=ox(v,y,t,i,r),w=e.prevZ,S=e.nextZ;for(;w&&w.z>=x&&S&&S.z<=b;){if(w.x>=m&&w.x<=v&&w.y>=g&&w.y<=y&&w!==a&&w!==o&&ob(h,u,c,p,d,f,w.x,w.y)&&ow(w.prev,w,w.next)>=0||(w=w.prevZ,S.x>=m&&S.x<=v&&S.y>=g&&S.y<=y&&S!==a&&S!==o&&ob(h,u,c,p,d,f,S.x,S.y)&&ow(S.prev,S,S.next)>=0))return!1;S=S.nextZ}for(;w&&w.z>=x;){if(w.x>=m&&w.x<=v&&w.y>=g&&w.y<=y&&w!==a&&w!==o&&ob(h,u,c,p,d,f,w.x,w.y)&&ow(w.prev,w,w.next)>=0)return!1;w=w.prevZ}for(;S&&S.z<=b;){if(S.x>=m&&S.x<=v&&S.y>=g&&S.y<=y&&S!==a&&S!==o&&ob(h,u,c,p,d,f,S.x,S.y)&&ow(S.prev,S,S.next)>=0)return!1;S=S.nextZ}return!0}(t,a,o,h):function(e){let t=e.prev,i=e.next;if(ow(t,e,i)>=0)return!1;let r=t.x,a=e.x,o=i.x,h=t.y,c=e.y,d=i.y,u=r<a?r<o?r:o:a<o?a:o,p=h<c?h<d?h:d:c<d?c:d,f=r>a?r>o?r:o:a>o?a:o,m=h>c?h>d?h:d:c>d?c:d,g=i.next;for(;g!==t;){if(g.x>=u&&g.x<=f&&g.y>=p&&g.y<=m&&ob(r,h,a,c,o,d,g.x,g.y)&&ow(g.prev,g,g.next)>=0)return!1;g=g.next}return!0}(t)){i.push(u.i/r|0),i.push(t.i/r|0),i.push(p.i/r|0),oP(t),t=p.next,d=p.next;continue}if((t=p)===d){c?1===c?e(t=function(e,t,i){let r=e;do{let a=r.prev,o=r.next.next;!oS(a,o)&&o_(a,r,r.next,o)&&oE(a,o)&&oE(o,a)&&(t.push(a.i/i|0),t.push(r.i/i|0),t.push(o.i/i|0),oP(r),oP(r.next),r=e=o),r=r.next}while(r!==e);return ov(r)}(ov(t),i,r),i,r,a,o,h,2):2===c&&function(t,i,r,a,o,h){let c=t;do{let t=c.next.next;for(;t!==c.prev;){var d,u;if(c.i!==t.i&&(d=c,u=t,d.next.i!==u.i&&d.prev.i!==u.i&&!function(e,t){let i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&o_(i,i.next,e,t))return!0;
3139i=i.next}while(i!==e);return!1}(d,u)&&(oE(d,u)&&oE(u,d)&&function(e,t){let i=e,r=!1,a=(e.x+t.x)/2,o=(e.y+t.y)/2;do i.y>o!=i.next.y>o&&i.next.y!==i.y&&a<(i.next.x-i.x)*(o-i.y)/(i.next.y-i.y)+i.x&&(r=!r),i=i.next;while(i!==e);return r}(d,u)&&(ow(d.prev,d,u.prev)||ow(d,u.prev,u))||oS(d,u)&&ow(d.prev,d,d.next)>0&&ow(u.prev,u,u.next)>0))){let d=oC(c,t);c=ov(c,c.next),d=ov(d,d.next),e(c,i,r,a,o,h,0),e(d,i,r,a,o,h,0);return}t=t.next}c=c.next}while(c!==t)}(t,i,r,a,o,h):e(ov(t),i,r,a,o,h,1);break}}}(m,g,i,r,a,u,0),g};function og(e,t,i,r,a){let o,h;if(a===function(e,t,i,r){let a=0;for(let o=t,h=i-r;o<i;o+=r)a+=(e[h]-e[o])*(e[o+1]+e[h+1]),h=o;return a}(e,t,i,r)>0)for(o=t;o<i;o+=r)h=oT(o,e[o],e[o+1],h);else for(o=i-r;o>=t;o-=r)h=oT(o,e[o],e[o+1],h);return h&&oS(h,h.next)&&(oP(h),h=h.next),h}function ov(e,t){if(!e)return e;t||(t=e);let i=e,r;do if(r=!1,!i.steiner&&(oS(i,i.next)||0===ow(i.prev,i,i.next))){if(oP(i),(i=t=i.prev)===i.next)break;r=!0}else i=i.next;while(r||i!==t);return t}function oy(e,t){return e.x-t.x}function ox(e,t,i,r,a){return(e=((e=((e=((e=((e=(e-i)*a|0)|e<<8)&16711935)|e<<4)&252645135)|e<<2)&858993459)|e<<1)&1431655765)|(t=((t=((t=((t=((t=(t-r)*a|0)|t<<8)&16711935)|t<<4)&252645135)|t<<2)&858993459)|t<<1)&1431655765)<<1}function ob(e,t,i,r,a,o,h,c){return(a-h)*(t-c)>=(e-h)*(o-c)&&(e-h)*(r-c)>=(i-h)*(t-c)&&(i-h)*(o-c)>=(a-h)*(r-c)}function ow(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function oS(e,t){return e.x===t.x&&e.y===t.y}function o_(e,t,i,r){let a=oM(ow(e,t,i)),o=oM(ow(e,t,r)),h=oM(ow(i,r,e)),c=oM(ow(i,r,t));return!!(a!==o&&h!==c||0===a&&oA(e,i,t)||0===o&&oA(e,r,t)||0===h&&oA(i,e,r)||0===c&&oA(i,t,r))}function oA(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function oM(e){return e>0?1:e<0?-1:0}function oE(e,t){return 0>ow(e.prev,e,e.next)?ow(e,t,e.next)>=0&&ow(e,e.prev,t)>=0:0>ow(e,t,e.prev)||0>ow(e,e.next,t)}function oC(e,t){let i=new oD(e.i,e.x,e.y),r=new oD(t.i,t.x,t.y),a=e.next,o=t.prev;return e.next=t,t.prev=e,i.next=a,a.prev=i,r.next=i,i.prev=r,o.next=r,r.prev=o,r}function oT(e,t,i,r){let a=new oD(e,t,i);return r?(a.next=r.next,a.prev=r,r.next.prev=a,r.next=a):(a.prev=a,a.next=a),a}function oP(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function oD(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}var oO=class{static area(e){let t=e.length,i=0;for(let r=t-1,a=0;a<t;r=a++)i+=e[r].x*e[a].y-e[a].x*e[r].y;return .5*i}static isClockWise(e){return 0>oO.area(e)}static triangulateShape(e,t){let i=[],r=[],a=[];oI(e),oR(i,e);let o=e.length;t.forEach(oI);for(let e=0;e<t.length;e++)r.push(o),o+=t[e].length,oR(i,t[e]);let h=om(i,r);for(let e=0;e<h.length;e+=3)a.push(h.slice(e,e+3));return a}};function oI(e){let t=e.length;t>2&&e[t-1].equals(e[0])&&e.pop()}function oR(e,t){for(let i=0;i<t.length;i++)e.push(t[i].x),e.push(t[i].y)}var oL=class extends ou{constructor(e=1,t=0){let i=(1+Math.sqrt(5))/2;super([-1,i,0,1,i,0,-1,-i,0,1,-i,0,0,-1,i,0,1,i,0,-1,-i,0,1,-i,i,0,-1,i,0,1,-i,0,-1,-i,0,1],[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],e,t),this.type="IcosahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new oL(e.radius,e.detail)}},oB=class extends rU{constructor(e=1,t=32,i=16,r=0,a=2*Math.PI,o=0,h=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:e,widthSegments:t,heightSegments:i,phiStart:r,phiLength:a,thetaStart:o,thetaLength:h},t=Math.max(3,Math.floor(t)),i=Math.max(2,Math.floor(i));let c=Math.min(o+h,Math.PI),d=0,u=[],p=new ib,f=new ib,m=[],g=[],v=[],y=[];for(let m=0;m<=i;m++){let x=[],b=m/i,w=0;0==m&&0==o?w=.5/t:m==i&&c==Math.PI&&(w=-.5/t);for(let i=0;i<=t;i++){let c=i/t;p.x=-e*Math.cos(r+c*a)*Math.sin(o+b*h),p.y=e*Math.cos(o+b*h),p.z=e*Math.sin(r+c*a)*Math.sin(o+b*h),g.push(p.x,p.y,p.z),f.copy(p).normalize(),v.push(f.x,f.y,f.z),y.push(c+w,1-b),x.push(d++)}u.push(x)}for(let e=0;e<i;e++)for(let r=0;r<t;r++){let t=u[e][r+1],a=u[e][r],h=u[e+1][r],d=u[e+1][r+1];(0!==e||o>0)&&m.push(t,a,d),(e!==i-1||c<Math.PI)&&m.push(a,h,d)}this.setIndex(m),this.setAttribute("position",new rO(g,3)),this.setAttribute("normal",new rO(v,3)),this.setAttribute("uv",new rO(y,2))}static fromJSON(e){return new oB(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}},oz=class extends rU{constructor(e=1,t=.4,i=12,r=48,a=2*Math.PI){super(),this.type="TorusGeometry",this.parameters={radiu
3139s:e,tube:t,radialSegments:i,tubularSegments:r,arc:a},i=Math.floor(i),r=Math.floor(r);let o=[],h=[],c=[],d=[],u=new ib,p=new ib,f=new ib;for(let o=0;o<=i;o++)for(let m=0;m<=r;m++){let g=m/r*a,v=o/i*Math.PI*2;p.x=(e+t*Math.cos(v))*Math.cos(g),p.y=(e+t*Math.cos(v))*Math.sin(g),p.z=t*Math.sin(v),h.push(p.x,p.y,p.z),u.x=e*Math.cos(g),u.y=e*Math.sin(g),f.subVectors(p,u).normalize(),c.push(f.x,f.y,f.z),d.push(m/r),d.push(o/i)}for(let e=1;e<=i;e++)for(let t=1;t<=r;t++){let i=(r+1)*e+t-1,a=(r+1)*(e-1)+t-1,h=(r+1)*(e-1)+t,c=(r+1)*e+t;o.push(i,a,c),o.push(a,h,c)}this.setIndex(o),this.setAttribute("position",new rO(h,3)),this.setAttribute("normal",new rO(c,3)),this.setAttribute("uv",new rO(d,2))}static fromJSON(e){return new oz(e.radius,e.tube,e.radialSegments,e.tubularSegments,e.arc)}},oF=class extends rU{constructor(e=1,t=.4,i=64,r=8,a=2,o=3){super(),this.type="TorusKnotGeometry",this.parameters={radius:e,tube:t,tubularSegments:i,radialSegments:r,p:a,q:o},i=Math.floor(i),r=Math.floor(r);let h=[],c=[],d=[],u=[],p=new ib,f=new ib,m=new ib,g=new ib,v=new ib,y=new ib,x=new ib;for(let h=0;h<=i;++h){let w=h/i*a*Math.PI*2;b(w,a,o,e,m),b(w+.01,a,o,e,g),y.subVectors(g,m),x.addVectors(g,m),v.crossVectors(y,x),x.crossVectors(v,y),v.normalize(),x.normalize();for(let e=0;e<=r;++e){let a=e/r*Math.PI*2,o=-t*Math.cos(a),g=t*Math.sin(a);p.x=m.x+(o*x.x+g*v.x),p.y=m.y+(o*x.y+g*v.y),p.z=m.z+(o*x.z+g*v.z),c.push(p.x,p.y,p.z),f.subVectors(p,m).normalize(),d.push(f.x,f.y,f.z),u.push(h/i),u.push(e/r)}}for(let e=1;e<=i;e++)for(let t=1;t<=r;t++){let i=(r+1)*(e-1)+(t-1),a=(r+1)*e+(t-1),o=(r+1)*e+t,c=(r+1)*(e-1)+t;h.push(i,a,c),h.push(a,o,c)}function b(e,t,i,r,a){let o=Math.cos(e),h=Math.sin(e),c=i/t*e,d=Math.cos(c);a.x=r*(2+d)*.5*o,a.y=r*(2+d)*h*.5,a.z=r*Math.sin(c)*.5}this.setIndex(h),this.setAttribute("position",new rO(c,3)),this.setAttribute("normal",new rO(d,3)),this.setAttribute("uv",new rO(u,2))}static fromJSON(e){return new oF(e.radius,e.tube,e.tubularSegments,e.radialSegments,e.p,e.q)}},oN=class extends r9{constructor(e){super(e),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}};function oU(e,t,i){return oV(e)?new e.constructor(e.subarray(t,void 0!==i?i:e.length)):e.slice(t,i)}function ok(e,t,i){return e&&(i||e.constructor!==t)?"number"==typeof t.BYTES_PER_ELEMENT?new t(e):Array.prototype.slice.call(e):e}function oV(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function oj(e,t,i){let r=e.length,a=new e.constructor(r);for(let o=0,h=0;h!==r;++o){let r=i[o]*t;for(let i=0;i!==t;++i)a[h++]=e[r+i]}return a}function oG(e,t,i,r){let a=1,o=e[0];for(;void 0!==o&&void 0===o[r];)o=e[a++];if(void 0===o)return;let h=o[r];if(void 0!==h){if(Array.isArray(h))do void 0!==(h=o[r])&&(t.push(o.time),i.push.apply(i,h)),o=e[a++];while(void 0!==o);else if(void 0!==h.toArray)do void 0!==(h=o[r])&&(t.push(o.time),h.toArray(i,i.length)),o=e[a++];while(void 0!==o);else do void 0!==(h=o[r])&&(t.push(o.time),i.push(h)),o=e[a++];while(void 0!==o)}}var oH=class{constructor(e,t,i,r){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=void 0!==r?r:new t.constructor(i),this.sampleValues=t,this.valueSize=i,this.settings=null,this.DefaultSettings_={}}evaluate(e){let t=this.parameterPositions,i=this._cachedIndex,r=t[i],a=t[i-1];e:{t:{let o;i:{r:if(!(e<r)){for(let o=i+2;;){if(void 0===r){if(e<a)break r;return i=t.length,this._cachedIndex=i,this.copySampleValue_(i-1)}if(i===o)break;if(a=r,e<(r=t[++i]))break t}o=t.length;break i}if(!(e>=a)){let h=t[1];e<h&&(i=2,a=h);for(let o=i-2;;){if(void 0===a)return this._cachedIndex=0,this.copySampleValue_(0);if(i===o)break;if(r=a,e>=(a=t[--i-1]))break t}o=i,i=0;break i}break e}for(;i<o;){let r=i+o>>>1;e<t[r]?o=r:i=r+1}if(r=t[i],void 0===(a=t[i-1]))return this._cachedIndex=0,this.copySampleValue_(0);if(void 0===r)return i=t.length,this._cachedIndex=i,this.copySampleValue_(i-1)}this._cachedIndex=i,this.intervalChanged_(i,a,r)}return this.interpolate_(i,a,e,r)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){let t=this.resultBuffer,i=this.sampleValues,r=this.valueSize,a=e*r;for(let e=0;e!==r;++e)t[e]=i[a+e];return t}interpolate_(){throw Error("call to abstract method")}intervalChanged_(){}},oW=class extends oH{constructor(e,t,i,r){super(e,t,i,r),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:2400,endingEnd:2400}}intervalChanged_(e,t,i){let r=this.parameterPositions,a=e-2,o=e+1,h=r[a],c=r[o];if(void 0===h)switch(this.getSettings_().endingStart){case 2401:a=e,h=2*t-i;break;case 2402:a=r.length-2,h=t+r[a]-r[a+1];break;default:a=e,h=i}if(void 0===c)switch(this.getSettings_().endingEnd){case 2401:o=e,c=2*i-t;break;case 2402:o=1,c=i+r[1]-r[0];break;default:o=e-1,c=t}let d=(i-t)*.5,u=this.valueSize;this._weightPrev=d/(t-h),this._weightNext=d/(c-i),this._offsetPrev=a*u,this._offsetNext=o*u}interpolate_(e,t,i,r){let a=this.resultBuffer,o=this.sampleValues,h=this.valueSize,c=e*h,d=c-h,u=this._offsetPrev,p=this._offsetNext,f=this._weightPrev,m=this._weightNext,g=(i-t)/(r-t),v=g*g,y=v*g,x=-f*y+2*f*v-f*g,b=(1+f)*y+(-1.5-2*f)*v+(-.5+f)*g+1,w=(-1-m)*y+(1.5+m)*v+.5*g,S=m*y-m*v;for(let e=0;e!==h;++e)a[e]=x*o[u+e]+b*o[d+e]+w*o[c+e]+S*o[p+e];return a}},oq=class extends oH{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){let a=this.resultBuffer,o=this.sampleValues,h=this.valueSize,c=e*h,d=c-h,u=(i-t)/(r-t),p=1-u;for(let e=0;e!==h;++e)a[e]=o[d+e]*p+o[c+e]*u;return a}},oX=class extends oH{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e){return this.copySampleValue_(e-1)}},oY=class{constructor(e,t,i,r){if(void 0===e)throw Error("THREE.KeyframeTrack: track name is undefined");if(void 0===t||0===t.length)throw Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=ok(t,this.TimeBufferType),this.values=ok(i,this.ValueBufferType),this.setInterpolation(r||this.DefaultInterpolation)}static toJSON(e){let t=e.constructor,i;if(t.toJSON!==this.toJSON)i=t.toJSON(e);else{i={name:e.name,times:ok(e.times,Array),values:ok(e.values,Array)};let t=e.getInterpolation();t!==e.DefaultInterpolation&&(i.interpolation=t)}return i.type=e.ValueTypeName,i}InterpolantFactoryMethodDiscrete(e){return new oX(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new oq(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new oW(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case 2300:t=this.InterpolantFactoryMethodDiscrete;break;case 2301:t=this.InterpolantFactoryMethodLinear;break;case 2302:t=this.InterpolantFactoryMethodSmooth}if(void 0===t){let t="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(void 0===this.createInterpolant){if(e!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw Error(t)}return console.warn("THREE.KeyframeTrack:",t),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return 2300;case this.InterpolantFactoryMethodLinear:return 2301;case this.InterpolantFactoryMethodSmooth:return 2302}}getValueSize(){return this.values.length/this.times.length}shift(e){if(0!==e){let t=this.times;for(let i=0,r=t.length;i!==r;++i)t[i]+=e}return this}scale(e){if(1!==e){let t=this.times;for(let i=0,r=t.length;i!==r;++i)t[i]*=e}return this}trim(e,t){let i=this.times,r=i.length,a=0,o=r-1;for(;a!==r&&i[a]<e;)++a;for(;-1!==o&&i[o]>t;)--o;if(++o,0!==a||o!==r){a>=o&&(a=(o=Math.max(o,1))-1);let e=this.getValueSize();this.times=oU(i,a,o),this.values=oU(this.values,a*e,o*e)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let i=this.times,r=this.values,a=i.length;0===a&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let t=0;t!==a;t++){let r=i[t];if("number"==typeof r&&isNaN(r)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,t,r),e=!1;break}if(null!==o&&o>r){console.error("THREE.KeyframeTrack: Out of order keys.",this,t,r,o),e=!1;break}o=r}if(void 0!==r&&oV(r))for(let t=0,i=r.length;t!==i;++t){let i=r[t];if(isNaN(i)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,t,i),e=!1;break}}return e}optimize(){let e=oU(this.times),t=oU(this.values),i=this.getValueSize(),r=2302===this.getInterpolation(),a=e.length-1,o=1;for(let h=1;h<a;++h){let a=!1,c=e[h];if(c!==e[h+1]&&(1!==h||c!==e[0])){if(r)a=!0;else{let e=h*i,r=e-i,o=e+i;for(let h=0;h!==i;++h){let i=t[e+h];if(i!==t[r+h]||i!==t[o+h]){a=!0;break}}}}if(a){if(h!==o){e[o]=e[h];let r=h*i,a=o*i;for(let e=0;e!==i;++e)t[a+e]=t[r+e]}++o}}if(a>0){e[o]=e[a];for(let e=a*i,r=o*i,h=0;h!==i;++h)t[r+h]=t[e+h];++o}return o!==e.length?(this.times=oU(e,0,o),this.values=oU(t,0,o*i)):(this.times=e,this.values=t),this}clone(){let e=oU(this.times,0),t=oU(this.values,0),i=new this.constructor(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}};oY.prototype.TimeBufferType=Float32Array,oY.prototype.ValueBufferType=Float32Array,oY.prototype.DefaultInterpolation=2301;var oQ=class extends oY{};oQ.prototype.ValueTypeName="bool",oQ.prototype.ValueBufferType=Array,oQ.prototype.DefaultInterpolation=2300,oQ.prototype.InterpolantFactoryMethodLinear=void 0,oQ.prototype.InterpolantFactoryMethodSmooth=void 0;var oZ=class extends oY{};oZ.prototype.ValueTypeName="color";var oK=class extends oY{};oK.prototype.ValueTypeName="number";var oJ=class extends oH{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){let a=this.resultBuffer,o=this.sampleValues,h=this.valueSize,c=(i-t)/(r-t),d=e*h;for(let e=d+h;d!==e;d+=4)ix.slerpFlat(a,0,o,d-h,o,d,c);return a}},o$=class extends oY{InterpolantFactoryMethodLinear(e){return new oJ(this.times,this.values,this.getValueSize(),e)}};o$.prototype.ValueTypeName="quaternion",o$.prototype.DefaultInterpolation=2301,o$.prototype.InterpolantFactoryMethodSmooth=void 0;var o0=class extends oY{};o0.prototype.ValueTypeName="string",o0.prototype.ValueBufferType=Array,o0.prototype.DefaultInterpolation=2300,o0.prototype.InterpolantFactoryMethodLinear=void 0,o0.prototype.InterpolantFactoryMethodSmooth=void 0;var o1=class extends oY{};o1.prototype.ValueTypeName="vector";var o2=class{constructor(e,t=-1,i,r=2500){this.name=e,this.tracks=i,this.duration=t,this.blendMode=r,this.uuid=tj(),this.duration<0&&this.resetDuration()}static parse(e){let t=[],i=e.tracks,r=1/(e.fps||1);for(let e=0,a=i.length;e!==a;++e)t.push((function(e){if(void 0===e.type)throw Error("THREE.KeyframeTrack: track type undefined, can not parse");let t=function(e){switch(e.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return oK;
3139case"vector":case"vector2":case"vector3":case"vector4":return o1;case"color":return oZ;case"quaternion":return o$;case"bool":case"boolean":return oQ;case"string":return o0}throw Error("THREE.KeyframeTrack: Unsupported typeName: "+e)}(e.type);if(void 0===e.times){let t=[],i=[];oG(e.keys,t,i,"value"),e.times=t,e.values=i}return void 0!==t.parse?t.parse(e):new t(e.name,e.times,e.values,e.interpolation)})(i[e]).scale(r));let a=new this(e.name,e.duration,t,e.blendMode);return a.uuid=e.uuid,a}static toJSON(e){let t=[],i=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let e=0,r=i.length;e!==r;++e)t.push(oY.toJSON(i[e]));return r}static CreateFromMorphTargetSequence(e,t,i,r){let a=t.length,o=[];for(let e=0;e<a;e++){let h=[],c=[];h.push((e+a-1)%a,e,(e+1)%a),c.push(0,1,0);let d=function(e){let t=e.length,i=Array(t);for(let e=0;e!==t;++e)i[e]=e;return i.sort(function(t,i){return e[t]-e[i]}),i}(h);h=oj(h,1,d),c=oj(c,1,d),r||0!==h[0]||(h.push(a),c.push(c[0])),o.push(new oK(".morphTargetInfluences["+t[e].name+"]",h,c).scale(1/i))}return new this(e,-1,o)}static findByName(e,t){let i=e;Array.isArray(e)||(i=e.geometry&&e.geometry.animations||e.animations);for(let e=0;e<i.length;e++)if(i[e].name===t)return i[e];return null}static CreateClipsFromMorphTargetSequences(e,t,i){let r={},a=/^([\w-]*?)([\d]+)$/;for(let t=0,i=e.length;t<i;t++){let i=e[t],o=i.name.match(a);if(o&&o.length>1){let e=o[1],t=r[e];t||(r[e]=t=[]),t.push(i)}}let o=[];for(let e in r)o.push(this.CreateFromMorphTargetSequence(e,r[e],t,i));return o}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;let i=function(e,t,i,r,a){if(0!==i.length){let o=[],h=[];oG(i,o,h,r),0!==o.length&&a.push(new e(t,o,h))}},r=[],a=e.name||"default",o=e.fps||30,h=e.blendMode,c=e.length||-1,d=e.hierarchy||[];for(let e=0;e<d.length;e++){let a=d[e].keys;if(!(!a||0===a.length)){if(a[0].morphTargets){let e={},t;for(t=0;t<a.length;t++)if(a[t].morphTargets)for(let i=0;i<a[t].morphTargets.length;i++)e[a[t].morphTargets[i]]=-1;for(let i in e){let e=[],o=[];for(let r=0;r!==a[t].morphTargets.length;++r){let r=a[t];e.push(r.time),o.push(r.morphTarget===i?1:0)}r.push(new oK(".morphTargetInfluence["+i+"]",e,o))}c=e.length*o}else{let o=".bones["+t[e].name+"]";i(o1,o+".position",a,"pos",r),i(o$,o+".quaternion",a,"rot",r),i(o1,o+".scale",a,"scl",r)}}}return 0===r.length?null:new this(a,c,r,h)}resetDuration(){let e=this.tracks,t=0;for(let i=0,r=e.length;i!==r;++i){let e=this.tracks[i];t=Math.max(t,e.times[e.times.length-1])}return this.duration=t,this}trim(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].trim(0,this.duration);return this}validate(){let e=!0;for(let t=0;t<this.tracks.length;t++)e=e&&this.tracks[t].validate();return e}optimize(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].optimize();return this}clone(){let e=[];for(let t=0;t<this.tracks.length;t++)e.push(this.tracks[t].clone());return new this.constructor(this.name,this.duration,e,this.blendMode)}toJSON(){return this.constructor.toJSON(this)}},o3={enabled:!1,files:{},add:function(e,t){!1!==this.enabled&&(this.files[e]=t)},get:function(e){if(!1!==this.enabled)return this.files[e]}},o4=class{constructor(e,t,i){let r=this,a=!1,o=0,h=0,c,d=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=i,this.itemStart=function(e){h++,!1===a&&void 0!==r.onStart&&r.onStart(e,o,h),a=!0},this.itemEnd=function(e){o++,void 0!==r.onProgress&&r.onProgress(e,o,h),o===h&&(a=!1,void 0!==r.onLoad&&r.onLoad())},this.itemError=function(e){void 0!==r.onError&&r.onError(e)},this.resolveURL=function(e){return c?c(e):e},this.setURLModifier=function(e){return c=e,this},this.addHandler=function(e,t){return d.push(e,t),this},this.removeHandler=function(e){let t=d.indexOf(e);return -1!==t&&d.splice(t,2),this},this.getHandler=function(e){for(let t=0,i=d.length;t<i;t+=2){let i=d[t],r=d[t+1];if(i.global&&(i.lastIndex=0),i.test(e))return r}return null}}},o5=new o4,o6=class{constructor(e){this.manager=void 0!==e?e:o5,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,t){let i=this;
3139return new Promise(function(r,a){i.load(e,r,t,a)})}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}},o8={},o9=class extends Error{constructor(e,t){super(e),this.response=t}},o7=class extends o6{constructor(e){super(e)}load(e,t,i,r){void 0===e&&(e=""),void 0!==this.path&&(e=this.path+e),e=this.manager.resolveURL(e);let a=o3.get(e);if(void 0!==a)return this.manager.itemStart(e),setTimeout(()=>{t&&t(a),this.manager.itemEnd(e)},0),a;if(void 0!==o8[e]){o8[e].push({onLoad:t,onProgress:i,onError:r});return}o8[e]=[],o8[e].push({onLoad:t,onProgress:i,onError:r});let o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),h=this.mimeType,c=this.responseType;fetch(o).then(t=>{if(200===t.status||0===t.status){if(0===t.status&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||void 0===t.body||void 0===t.body.getReader)return t;let i=o8[e],r=t.body.getReader(),a=t.headers.get("Content-Length")||t.headers.get("X-File-Size"),o=a?parseInt(a):0,h=0!==o,c=0;return new Response(new ReadableStream({start(e){(function t(){r.read().then(({done:r,value:a})=>{if(r)e.close();else{let r=new ProgressEvent("progress",{lengthComputable:h,loaded:c+=a.byteLength,total:o});for(let e=0,t=i.length;e<t;e++){let t=i[e];t.onProgress&&t.onProgress(r)}e.enqueue(a),t()}})})()}}))}throw new o9(`fetch for "${t.url}" responded with ${t.status}: ${t.statusText}`,t)}).then(e=>{switch(c){case"arraybuffer":return e.arrayBuffer();case"blob":return e.blob();case"document":return e.text().then(e=>new DOMParser().parseFromString(e,h));case"json":return e.json();default:if(void 0===h)return e.text();{let t=/charset="?([^;"\s]*)"?/i.exec(h),i=new TextDecoder(t&&t[1]?t[1].toLowerCase():void 0);return e.arrayBuffer().then(e=>i.decode(e))}}}).then(t=>{o3.add(e,t);let i=o8[e];delete o8[e];for(let e=0,r=i.length;e<r;e++){let r=i[e];r.onLoad&&r.onLoad(t)}}).catch(t=>{let i=o8[e];if(void 0===i)throw this.manager.itemError(e),t;delete o8[e];for(let e=0,r=i.length;e<r;e++){let r=i[e];r.onError&&r.onError(t)}this.manager.itemError(e)}).finally(()=>{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}},le=class extends o6{constructor(e){super(e)}load(e,t,i,r){void 0!==this.path&&(e=this.path+e),e=this.manager.resolveURL(e);let a=this,o=o3.get(e);if(void 0!==o)return a.manager.itemStart(e),setTimeout(function(){t&&t(o),a.manager.itemEnd(e)},0),o;let h=t4("img");function c(){u(),o3.add(e,this),t&&t(this),a.manager.itemEnd(e)}function d(t){u(),r&&r(t),a.manager.itemError(e),a.manager.itemEnd(e)}function u(){h.removeEventListener("load",c,!1),h.removeEventListener("error",d,!1)}return h.addEventListener("load",c,!1),h.addEventListener("error",d,!1),"data:"!==e.slice(0,5)&&void 0!==this.crossOrigin&&(h.crossOrigin=this.crossOrigin),a.manager.itemStart(e),h.src=e,h}},lt=class extends o6{constructor(e){super(e)}load(e,t,i,r){let a=new iu,o=new le(this.manager);return o.setCrossOrigin(this.crossOrigin),o.setPath(this.path),o.load(e,function(e){a.image=e,a.needsUpdate=!0,void 0!==t&&t(a)},i,r),a}},li=class extends rd{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new ia(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){let t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,void 0!==this.groundColor&&(t.object.groundColor=this.groundColor.getHex()),void 0!==this.distance&&(t.object.distance=this.distance),void 0!==this.angle&&(t.object.angle=this.angle),void 0!==this.decay&&(t.object.decay=this.decay),void 0!==this.penumbra&&(t.object.penumbra=this.penumbra),void 0!==this.shadow&&(t.object.shadow=this.shadow.toJSON()),t}},lr=class extends li{constructor(e,t,i){super(e,i),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(rd.DEFAULT_UP),this.updateMatrix(),this.groundColor=new ia(t)}copy(e,t){return super.copy(e,t),this.groundColor.copy(e.groundColor),this}},ls=new iZ,la=new ib,ln=new ib,lo=class{constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new tJ(512,512),this.map=null,this.mapPass=null,this.matrix=new iZ,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new sc,this._frameExtents=new tJ(1,1),this._viewportCount=1,this._viewports=[new ip(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){let t=this.camera,i=this.matrix;la.setFromMatrixPosition(e.matrixWorld),t.position.copy(la),ln.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(ln),t.updateMatrixWorld(),ls.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(ls),i.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),i.multiply(ls)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){let e={};return 0!==this.bias&&(e.bias=this.bias),0!==this.normalBias&&(e.normalBias=this.normalBias),1!==this.radius&&(e.radiu
3139s=this.radius),(512!==this.mapSize.x||512!==this.mapSize.y)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}},ll=class extends lo{constructor(){super(new se(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(e){let t=this.camera,i=2*tV*e.angle*this.focus,r=this.mapSize.width/this.mapSize.height,a=e.distance||t.far;(i!==t.fov||r!==t.aspect||a!==t.far)&&(t.fov=i,t.aspect=r,t.far=a,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}},lh=class extends li{constructor(e,t,i=0,r=Math.PI/3,a=0,o=2){super(e,t),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(rd.DEFAULT_UP),this.updateMatrix(),this.target=new rd,this.distance=i,this.angle=r,this.penumbra=a,this.decay=o,this.map=null,this.shadow=new ll}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}},lc=new iZ,ld=new ib,lu=new ib,lp=class extends lo{constructor(){super(new se(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new tJ(4,2),this._viewportCount=6,this._viewports=[new ip(2,1,1,1),new ip(0,1,1,1),new ip(3,1,1,1),new ip(1,1,1,1),new ip(3,0,1,1),new ip(1,0,1,1)],this._cubeDirections=[new ib(1,0,0),new ib(-1,0,0),new ib(0,0,1),new ib(0,0,-1),new ib(0,1,0),new ib(0,-1,0)],this._cubeUps=[new ib(0,1,0),new ib(0,1,0),new ib(0,1,0),new ib(0,1,0),new ib(0,0,1),new ib(0,0,-1)]}updateMatrices(e,t=0){let i=this.camera,r=this.matrix,a=e.distance||i.far;a!==i.far&&(i.far=a,i.updateProjectionMatrix()),ld.setFromMatrixPosition(e.matrixWorld),i.position.copy(ld),lu.copy(i.position),lu.add(this._cubeDirections[t]),i.up.copy(this._cubeUps[t]),i.lookAt(lu),i.updateMatrixWorld(),r.makeTranslation(-ld.x,-ld.y,-ld.z),lc.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),this._frustum.setFromProjectionMatrix(lc)}},lf=class extends li{constructor(e,t,i=0,r=2){super(e,t),this.isPointLight=!0,this.type="PointLight",this.distance=i,this.decay=r,this.shadow=new lp}get power(){return 4*this.intensity*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}},lm=class extends lo{constructor(){super(new sA(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}},lg=class extends li{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(rd.DEFAULT_UP),this.updateMatrix(),this.target=new rd,this.shadow=new lm}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}},lv=class extends rU{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}toJSON(){let e=super.toJSON();return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}},ly=class extends o6{constructor(e){super(e)}load(e,t,i,r){let a=this,o=new o7(a.manager);o.setPath(a.path),o.setRequestHeader(a.requestHeader),o.setWithCredentials(a.withCredentials),o.load(e,function(i){try{t(a.parse(JSON.parse(i)))}catch(t){r?r(t):console.error(t),a.manager.itemError(e)}},i,r)}parse(e){let t={},i={};function r(e,r){if(void 0!==t[r])return t[r];let a=e.interleavedBuffers[r],o=function(e,t){if(void 0!==i[t])return i[t];let r=new Uint32Array(e.arrayBuffers[t]).buffer;return i[t]=r,r}(e,a.buffer),h=new nA(t3(a.type,o),a.stride);return h.uuid=a.uuid,t[r]=h,h}let a=e.isInstancedBufferGeometry?new lv:new rU,o=e.data.index;if(void 0!==o){let e=t3(o.type,o.array);a.setIndex(new rT(e,1))}let h=e.data.attributes;for(let t in h){let i=h[t],o;if(i.isInterleavedBufferAttribute)o=new nE(r(e.data,i.data),i.itemSize,i.offset,i.normalized);else{let e=t3(i.type,i.array);o=new(i.isInstancedBufferAttribute?nI:rT)(e,i.itemSize,i.normalized)}void 0!==i.name&&(o.name=i.name),void 0!==i.usage&&o.setUsage(i.usage),void 0!==i.updateRange&&(o.updateRange.offset=i.updateRange.offset,o.updateRange.count=i.updateRange.count),a.setAttribute(t,o)}let c=e.data.morphAttributes;if(c)for(let t in c){let i=c[t],o=[];for(let t=0,a=i.length;t<a;t++){let a=i[t],h;h=a.isInterleavedBufferAttribute?new nE(r(e.data,a.data),a.itemSize,a.offset,a.normalized):new rT(t3(a.type,a.array),a.itemSize,a.normalized),void 0!==a.name&&(h.name=a.name),o.push(h)}a.morphAttributes[t]=o}e.data.morphTargetsRelative&&(a.morphTargetsRelative=!0);let d=e.data.groups||e.data.drawcalls||e.data.offsets;if(void 0!==d)for(let e=0,t=d.length;e!==t;++e){let t=d[e];a.addGroup(t.start,t.count,t.materialIndex)}let u=e.data.boundingSphere;if(void 0!==u){let e=new ib;void 0!==u.center&&e.fromArray(u.center),a.boundingSphere=new iV(e,u.radius)}return e.name&&(a.name=e.name),e.userData&&(a.userData=e.userData),a}},lx=class{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=lb(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){let t=lb();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}};function lb(){return(typeof performance>"u"?Date:performance).now()}var lw=class{constructor(e,t,i){let r,a,o;switch(this.binding=e,this.valueSize=i,t){case"quaternion":r=this._slerp,a=this._slerpAdditive,o=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(6*i),this._workIndex=5;break;case"string":case"bool":r=this._select,a=this._select,o=this._setAdditiveIdentityOther,this.buffer=Array(5*i);break;default:r=this._lerp,a=this._lerpAdditive,o=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(5*i)}this._mixBufferRegion=r,this._mixBufferRegionAdditive=a,this._setIdentity=o,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(e,t){let i=this.buffer,r=this.valueSize,a=e*r+r,o=this.cumulativeWeight;if(0===o){for(let e=0;e!==r;++e)i[a+e]=i[e];o=t}else{o+=t;let e=t/o;this._mixBufferRegion(i,a,0,e,r)}this.cumulativeWeight=o}accumulateAdditive(e){let t=this.buffer,i=this.valueSize,r=i*this._addIndex;0===this.cumulativeWeightAdditive&&this._setIdentity(),this._mixBufferRegionAdditive(t,r,0,e,i),this.cumulativeWeightAdditive+=e}apply(e){let t=this.valueSize,i=this.buffer,r=e*t+t,a=this.cumulativeWeight,o=this.cumulativeWeightAdditive,h=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,a<1){let e=t*this._origIndex;this._mixBufferRegion(i,r,e,1-a,t)}o>0&&this._mixBufferRegionAdditive(i,r,this._addIndex*t,1,t);for(let e=t,a=t+t;e!==a;++e)if(i[e]!==i[e+t]){h.setValue(i,r);break}}saveOriginalState(){let e=this.binding,t=this.buffer,i=this.valueSize,r=i*this._origIndex;e.getValue(t,r);for(let e=i;e!==r;++e)t[e]=t[r+e%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let e=3*this.valueSize;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){let e=this._addIndex*this.valueSize,t=e+this.valueSize;
3139for(let i=e;i<t;i++)this.buffer[i]=0}_setAdditiveIdentityQuaternion(){this._setAdditiveIdentityNumeric(),this.buffer[this._addIndex*this.valueSize+3]=1}_setAdditiveIdentityOther(){let e=this._origIndex*this.valueSize,t=this._addIndex*this.valueSize;for(let i=0;i<this.valueSize;i++)this.buffer[t+i]=this.buffer[e+i]}_select(e,t,i,r,a){if(r>=.5)for(let r=0;r!==a;++r)e[t+r]=e[i+r]}_slerp(e,t,i,r){ix.slerpFlat(e,t,e,t,e,i,r)}_slerpAdditive(e,t,i,r,a){let o=this._workIndex*a;ix.multiplyQuaternionsFlat(e,o,e,t,e,i),ix.slerpFlat(e,t,e,t,e,o,r)}_lerp(e,t,i,r,a){let o=1-r;for(let h=0;h!==a;++h){let a=t+h;e[a]=e[a]*o+e[i+h]*r}}_lerpAdditive(e,t,i,r,a){for(let o=0;o!==a;++o){let a=t+o;e[a]=e[a]+e[i+o]*r}}},lS="\\[\\]\\.:\\/",l_=RegExp("["+lS+"]","g"),lA="[^"+lS+"]",lM="[^"+lS.replace("\\.","")+"]",lE=RegExp("^"+/((?:WC+[\/:])*)/.source.replace("WC",lA)+/(WCOD+)?/.source.replace("WCOD",lM)+/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",lA)+/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",lA)+"$"),lC=["material","materials","bones","map"],lT=class{constructor(e,t,i){let r=i||lP.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();let i=this._targetGroup.nCachedObjects_,r=this._bindings[i];void 0!==r&&r.getValue(e,t)}setValue(e,t){let i=this._bindings;for(let r=this._targetGroup.nCachedObjects_,a=i.length;r!==a;++r)i[r].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}},lP=class{constructor(e,t,i){this.path=t,this.parsedPath=i||lP.parseTrackName(t),this.node=lP.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new lP.Composite(e,t,i):new lP(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(l_,"")}static parseTrackName(e){let t=lE.exec(e);if(null===t)throw Error("PropertyBinding: Cannot parse trackName: "+e);let i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=i.nodeName&&i.nodeName.lastIndexOf(".");if(void 0!==r&&-1!==r){let e=i.nodeName.substring(r+1);-1!==lC.indexOf(e)&&(i.nodeName=i.nodeName.substring(0,r),i.objectName=e)}if(null===i.propertyName||0===i.propertyName.length)throw Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(void 0===t||""===t||"."===t||-1===t||t===e.name||t===e.uuid)return e;if(e.skeleton){let i=e.skeleton.getBoneByName(t);if(void 0!==i)return i}if(e.children){let i=function(e){for(let r=0;r<e.length;r++){let a=e[r];if(a.name===t||a.uuid===t)return a;let o=i(a.children);if(o)return o}return null},r=i(e.children);if(r)return r}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(e,t){e[t]=this.targetObject[this.propertyName]}_getValue_array(e,t){let i=this.resolvedProperty;for(let r=0,a=i.length;r!==a;++r)e[t++]=i[r]}_getValue_arrayElement(e,t){e[t]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(e,t){this.resolvedProperty.toArray(e,t)}_setValue_direct(e,t){this.targetObject[this.propertyName]=e[t]}_setValue_direct_setNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(e,t){let i=this.resolvedProperty;for(let r=0,a=i.length;r!==a;++r)i[r]=e[t++]}_setValue_array_setNeedsUpdate(e,t){let i=this.resolvedProperty;for(let r=0,a=i.length;r!==a;++r)i[r]=e[t++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(e,t){let i=this.resolvedProperty;for(let r=0,a=i.length;r!==a;++r)i[r]=e[t++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(e,t){this.resolvedProperty[this.propertyIndex]=e[t]}_setValue_arrayElement_setNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(e,t){this.resolvedProperty.fromArray(e,t)}_setValue_fromArray_setNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.needsUpdate=!0}
3139_setValue_fromArray_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(e,t){this.bind(),this.getValue(e,t)}_setValue_unbound(e,t){this.bind(),this.setValue(e,t)}bind(){let e=this.node,t=this.parsedPath,i=t.objectName,r=t.propertyName,a=t.propertyIndex;if(e||(e=lP.findNode(this.rootNode,t.nodeName)||this.rootNode,this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!e){console.error("THREE.PropertyBinding: Trying to update node for track: "+this.path+" but it wasn't found.");return}if(i){let r=t.objectIndex;switch(i){case"materials":if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}e=e.material.materials;break;case"bones":if(!e.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}e=e.skeleton.bones;for(let t=0;t<e.length;t++)if(e[t].name===r){r=t;break}break;case"map":if("map"in e){e=e.map;break}if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.map){console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);return}e=e.material.map;break;default:if(void 0===e[i]){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}e=e[i]}if(void 0!==r){if(void 0===e[r]){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,e);return}e=e[r]}}let o=e[r];if(void 0===o){console.error("THREE.PropertyBinding: Trying to update property for track: "+t.nodeName+"."+r+" but it wasn't found.",e);return}let h=this.Versioning.None;this.targetObject=e,void 0!==e.needsUpdate?h=this.Versioning.NeedsUpdate:void 0!==e.matrixWorldNeedsUpdate&&(h=this.Versioning.MatrixWorldNeedsUpdate);let c=this.BindingType.Direct;if(void 0!==a){if("morphTargetInfluences"===r){if(!e.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!e.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}void 0!==e.morphTargetDictionary[a]&&(a=e.morphTargetDictionary[a])}c=this.BindingType.ArrayElement,this.resolvedProperty=o,this.propertyIndex=a}else void 0!==o.fromArray&&void 0!==o.toArray?(c=this.BindingType.HasFromToArray,this.resolvedProperty=o):Array.isArray(o)?(c=this.BindingType.EntireArray,this.resolvedProperty=o):this.propertyName=r;this.getValue=this.GetterByBindingType[c],this.setValue=this.SetterByBindingTypeAndVersioning[c][h]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}};lP.Composite=lT,lP.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},lP.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},lP.prototype.GetterByBindingType=[lP.prototype._getValue_direct,lP.prototype._getValue_array,lP.prototype._getValue_arrayElement,lP.prototype._getValue_toArray],lP.prototype.SetterByBindingTypeAndVersioning=[[lP.prototype._setValue_direct,lP.prototype._setValue_direct_setNeedsUpdate,lP.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[lP.prototype._setValue_array,lP.prototype._setValue_array_setNeedsUpdate,lP.prototype._setValue_array_setMatrixWorldNeedsUpdate],[lP.prototype._setValue_arrayElement,lP.prototype._setValue_arrayElement_setNeedsUpdate,lP.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[lP.prototype._setValue_fromArray,lP.prototype._setValue_fromArray_setNeedsUpdate,lP.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];var lD=class{constructor(e,t,i=null,r=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=i,this.blendMode=r;let a=t.tracks,o=a.length,h=Array(o),c={endingStart:2400,endingEnd:2400};for(let e=0;e!==o;++e){let t=a[e].createInterpolant(null);h[e]=t,t.settings=c}this._interpolantSettings=c,this._interpolants=h,this._propertyBindings=Array(o),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=2201,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}
3139fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,i){if(e.fadeOut(t),this.fadeIn(t),i){let i=this._clip.duration,r=e._clip.duration;e.warp(1,r/i,t),this.warp(i/r,1,t)}return this}crossFadeTo(e,t,i){return e.crossFadeFrom(this,t,i)}stopFading(){let e=this._weightInterpolant;return null!==e&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,i){let r=this._mixer,a=r.time,o=this.timeScale,h=this._timeScaleInterpolant;null===h&&(h=r._lendControlInterpolant(),this._timeScaleInterpolant=h);let c=h.parameterPositions,d=h.sampleValues;return c[0]=a,c[1]=a+i,d[0]=e/o,d[1]=t/o,this}stopWarping(){let e=this._timeScaleInterpolant;return null!==e&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,i,r){if(!this.enabled){this._updateWeight(e);return}let a=this._startTime;if(null!==a){let r=(e-a)*i;r<0||0===i?t=0:(this._startTime=null,t=i*r)}t*=this._updateTimeScale(e);let o=this._updateTime(t),h=this._updateWeight(e);if(h>0){let e=this._interpolants,t=this._propertyBindings;if(2501===this.blendMode)for(let i=0,r=e.length;i!==r;++i)e[i].evaluate(o),t[i].accumulateAdditive(h);else for(let i=0,a=e.length;i!==a;++i)e[i].evaluate(o),t[i].accumulate(r,h)}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;let i=this._weightInterpolant;if(null!==i){let r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopFading(),0===r&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;let i=this._timeScaleInterpolant;null!==i&&(t*=i.evaluate(e)[0],e>i.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t))}return this._effectiveTimeScale=t,t}_updateTime(e){let t=this._clip.duration,i=this.loop,r=this.time+e,a=this._loopCount,o=2202===i;if(0===e)return -1===a?r:o&&(1&a)==1?t-r:r;if(2200===i){-1===a&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(r>=t)r=t;else if(r<0)r=0;else{this.time=r;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(-1===a&&(e>=0?(a=0,this._setEndings(!0,0===this.repetitions,o)):this._setEndings(0===this.repetitions,!0,o)),r>=t||r<0){let i=Math.floor(r/t);r-=t*i,a+=Math.abs(i);let h=this.repetitions-a;if(h<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,r=e>0?t:0,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(1===h){let t=e<0;this._setEndings(t,!t,o)}else this._setEndings(!1,!1,o);this._loopCount=a,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:i})}}else this.time=r;if(o&&(1&a)==1)return t-r}return r}_setEndings(e,t,i){let r=this._interpolantSettings;i?(r.endingStart=2401,r.endingEnd=2401):(e?r.endingStart=this.zeroSlopeAtStart?2401:2400:r.endingStart=2402,t?r.endingEnd=this.zeroSlopeAtEnd?2401:2400:r.endingEnd=2402)}_scheduleFading(e,t,i){let r=this._mixer,a=r.time,o=this._weightInterpolant;null===o&&(o=r._lendControlInterpolant(),this._weightInterpolant=o);let h=o.parameterPositions,c=o.sampleValues;return h[0]=a,c[0]=t,h[1]=a+e,c[1]=i,this}},lO=new Float32Array(1),lI=class extends tF{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){let i=e._localRoot||this._root,r=e._clip.tracks,a=r.length,o=e._propertyBindings,h=e._interpolants,c=i.uuid,d=this._bindingsByRootAndName,u=d[c];void 0===u&&(u={},d[c]=u);for(let e=0;e!==a;++e){let a=r[e],d=a.name,p=u[d];if(void 0!==p)++p.referenceCount,o[e]=p;
vendor: 6,265 bytes, line 3139
3139else{if(void 0!==(p=o[e])){null===p._cacheIndex&&(++p.referenceCount,this._addInactiveBinding(p,c,d));continue}let r=t&&t._propertyBindings[e].binding.parsedPath;p=new lw(lP.create(i,d,r),a.ValueTypeName,a.getValueSize()),++p.referenceCount,this._addInactiveBinding(p,c,d),o[e]=p}h[e].resultBuffer=p.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(null===e._cacheIndex){let t=(e._localRoot||this._root).uuid,i=e._clip.uuid,r=this._actionsByClip[i];this._bindAction(e,r&&r.knownActions[0]),this._addInactiveAction(e,i,t)}let t=e._propertyBindings;for(let e=0,i=t.length;e!==i;++e){let i=t[e];0==i.useCount++&&(this._lendBinding(i),i.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){let t=e._propertyBindings;for(let e=0,i=t.length;e!==i;++e){let i=t[e];0==--i.useCount&&(i.restoreOriginalState(),this._takeBackBinding(i))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){let t=e._cacheIndex;return null!==t&&t<this._nActiveActions}_addInactiveAction(e,t,i){let r=this._actions,a=this._actionsByClip,o=a[t];if(void 0===o)o={knownActions:[e],actionByRoot:{}},e._byClipCacheIndex=0,a[t]=o;else{let t=o.knownActions;e._byClipCacheIndex=t.length,t.push(e)}e._cacheIndex=r.length,r.push(e),o.actionByRoot[i]=e}_removeInactiveAction(e){let t=this._actions,i=t[t.length-1],r=e._cacheIndex;i._cacheIndex=r,t[r]=i,t.pop(),e._cacheIndex=null;let a=e._clip.uuid,o=this._actionsByClip,h=o[a],c=h.knownActions,d=c[c.length-1],u=e._byClipCacheIndex;d._byClipCacheIndex=u,c[u]=d,c.pop(),e._byClipCacheIndex=null;let p=h.actionByRoot,f=(e._localRoot||this._root).uuid;delete p[f],0===c.length&&delete o[a],this._removeInactiveBindingsForAction(e)}_removeInactiveBindingsForAction(e){let t=e._propertyBindings;for(let e=0,i=t.length;e!==i;++e){let i=t[e];0==--i.referenceCount&&this._removeInactiveBinding(i)}}_lendAction(e){let t=this._actions,i=e._cacheIndex,r=this._nActiveActions++,a=t[r];e._cacheIndex=r,t[r]=e,a._cacheIndex=i,t[i]=a}_takeBackAction(e){let t=this._actions,i=e._cacheIndex,r=--this._nActiveActions,a=t[r];e._cacheIndex=r,t[r]=e,a._cacheIndex=i,t[i]=a}_addInactiveBinding(e,t,i){let r=this._bindingsByRootAndName,a=this._bindings,o=r[t];void 0===o&&(o={},r[t]=o),o[i]=e,e._cacheIndex=a.length,a.push(e)}_removeInactiveBinding(e){let t=this._bindings,i=e.binding,r=i.rootNode.uuid,a=i.path,o=this._bindingsByRootAndName,h=o[r],c=t[t.length-1],d=e._cacheIndex;c._cacheIndex=d,t[d]=c,t.pop(),delete h[a],0===Object.keys(h).length&&delete o[r]}_lendBinding(e){let t=this._bindings,i=e._cacheIndex,r=this._nActiveBindings++,a=t[r];e._cacheIndex=r,t[r]=e,a._cacheIndex=i,t[i]=a}_takeBackBinding(e){let t=this._bindings,i=e._cacheIndex,r=--this._nActiveBindings,a=t[r];e._cacheIndex=r,t[r]=e,a._cacheIndex=i,t[i]=a}_lendControlInterpolant(){let e=this._controlInterpolants,t=this._nActiveControlInterpolants++,i=e[t];return void 0===i&&((i=new oq(new Float32Array(2),new Float32Array(2),1,lO)).__cacheIndex=t,e[t]=i),i}_takeBackControlInterpolant(e){let t=this._controlInterpolants,i=e.__cacheIndex,r=--this._nActiveControlInterpolants,a=t[r];e.__cacheIndex=r,t[r]=e,a.__cacheIndex=i,t[i]=a}clipAction(e,t,i){let r=t||this._root,a=r.uuid,o="string"==typeof e?o2.findByName(r,e):e,h=null!==o?o.uuid:e,c=this._actionsByClip[h],d=null;if(void 0===i&&(i=null!==o?o.blendMode:2500),void 0!==c){let e=c.actionByRoot[a];if(void 0!==e&&e.blendMode===i)return e;d=c.knownActions[0],null===o&&(o=d._clip)}if(null===o)return null;let u=new lD(this,o,t,i);return this._bindAction(u,d),this._addInactiveAction(u,h,a),u}existingAction(e,t){let i=t||this._root,r=i.uuid,a="string"==typeof e?o2.findByName(i,e):e,o=a?a.uuid:e,h=this._actionsByClip[o];return void 0!==h&&h.actionByRoot[r]||null}stopAllAction(){let e=this._actions,t=this._nActiveActions;for(let i=t-1;i>=0;--i)e[i].stop();return this}update(e){e*=this.timeScale;let t=this._actions,i=this._nActiveActions,r=this.time+=e,a=Math.sign(e),o=this._accuIndex^=1;for(let h=0;h!==i;++h)t[h]._update(r,e,a,o);let h=this._bindings,c=this._nActiveBindings;for(let e=0;e!==c;++e)h[e].apply(o);return this}setTime(e){this.time=0;for(let e=0;e<this._actions.length;e++)this._actions[e].time=0;return this.update(e)}getRoot(){return this._root}uncacheClip(e){let t=this._actions,i=e.uuid,r=this._actionsByClip,a=r[i];if(void 0!==a){let e=a.knownActions;for(let i=0,r=e.length;i!==r;++i){let r=e[i];this._deactivateAction(r);let a=r._cacheIndex,o=t[t.length-1];r._cacheIndex=null,r._byClipCacheIndex=null,o._cacheIndex=a,t[a]=o,t.pop(),this._removeInactiveBindingsForAction(r)}delete r[i]}}uncacheRoot(e){let t=e.uuid,i=this._actionsByClip;for(let e in i){let r=i[e].actionByRoot[t];void 0!==r&&(this._deactivateAction(r),this._removeInactiveAction(r))}let r=this._bindingsByRootAndName[t];if(void 0!==r)for(let e in r){let t=r[e];t.restoreOriginalState(),this._removeInactiveBinding(t)}}uncacheAction(e,t){let i=this.existingAction(e,t);null!==i&&(this._deactivateAction(i),this._removeInactiveAction(i))}},lR=class{constructor(e){this.value=e}clone(){return new lR(void 0===this.value.clone?this.value:this.value.clone())}},lL=class{constructor(e,t,i=0,r=1/0){this.ray=new iQ(e,t),this.near=i,this.far=r,this.camera=null,this.layers=new i8,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error("THREE.Raycaster: 
3139Unsupported camera type: "+t.type)}intersectObject(e,t=!0,i=[]){return lz(e,this,i,t),i.sort(lB),i}intersectObjects(e,t=!0,i=[]){for(let r=0,a=e.length;r<a;r++)lz(e[r],this,i,t);return i.sort(lB),i}};function lB(e,t){return e.distance-t.distance}function lz(e,t,i,r){if(e.layers.test(t.layers)&&e.raycast(t,i),!0===r){let r=e.children;for(let e=0,a=r.length;e<a;e++)lz(r[e],t,i,!0)}}var lF=class{constructor(e=1,t=0,i=0){return this.radius=e,this.phi=t,this.theta=i,this}set(e,t,i){return this.radius=e,this.phi=t,this.theta=i,this}copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}makeSafe(){return this.phi=Math.max(1e-6,Math.min(Math.PI-1e-6,this.phi)),this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,i){return this.radius=Math.sqrt(e*e+t*t+i*i),0===this.radius?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,i),this.phi=Math.acos(tG(t/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}},lN=new tJ,lU=class{constructor(e=new tJ(1/0,1/0),t=new tJ(-1/0,-1/0)){this.isBox2=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromPoints(e){this.makeEmpty();for(let t=0,i=e.length;t<i;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){let i=lN.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(i),this.max.copy(e).add(i),this}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}getCenter(e){return this.isEmpty()?e.set(0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}containsPoint(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y)}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return lN.copy(e).clamp(this.min,this.max).sub(e).length()}intersect(e){return this.min.max(e.min),this.max.min(e.max),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}},lk=new ib,lV=new ib,lj=class{constructor(e=new ib,t=new ib){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){lk.subVectors(e,this.start),lV.subVectors(this.end,this.start);let i=lV.dot(lV),r=lV.dot(lk)/i;return t&&(r=tG(r,0,1)),r}closestPointToPoint(e,t,i){let r=this.closestPointToPointParameter(e,t);return this.delta(i).multiplyScalar(r).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}},lG=new ib,lH=class extends rd{constructor(e,t){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";let i=new rU,r=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let e=0,t=1;e<32;e++,t++){let i=e/32*Math.PI*2,a=t/32*Math.PI*2;r.push(Math.cos(i),Math.sin(i),1,Math.cos(a),Math.sin(a),1)}i.setAttribute("position",new rO(r,3));let a=new nU({fog:!1,toneMapped:!1});this.cone=new nY(i,a),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1);let e=this.light.distance?this.light.distance:1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),lG.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(lG),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}},lW=class extends r${constructor(e,t,i){super(new oB(t,4,2),new rM({wireframe:!0,fog:!1,toneMapped:!1})),this.light=e,this.color=i,this.type="PointLightHelper",this.matrix=this.light.matrixWorld,this.matrixAutoUpdate=!1,this.update()}dispose(){this.geometry.dispose(),this.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),void 0!==this.color?this.material.color.set(this.color):this.material.color.copy(this.light.color)}},lq=new ib,lX=new ib,lY=new ib,lQ=class extends rd{constructor(e,t,i){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=i,this.type="DirectionalLightHelper",void 0===t&&(t=1);let r=new rU;r.setAttribute("position",new rO([-t,t,0,t,t,0,t,-t,0,-t,-t,0,-t,t,0],3));let a=new nU({fog:!1,toneMapped:!1});this.lightPlane=new nW(r,a),this.add(this.lightPlane),(r=new rU).setAttribute("position",new rO([0,0,0,0,0,1],3)),this.targetLine=new nW(r,a),this.add(this.targetLine),this.update()}dispose(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),lq.setFromMatrixPosition(this.light.matrixWorld),lX.setFromMatrixPosition(this.light.target.matrixWorld),lY.subVectors(lX,lq),this.lightPlane.lookAt(lX),void 0!==this.color?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(lX),this.targetLine.scale.z
3139=lY.length()}},lZ=new ib,lK=new r7,lJ=class extends nY{constructor(e){let t=new rU,i=new nU({color:16777215,vertexColors:!0,toneMapped:!1}),r=[],a=[],o={};function h(e,t){c(e),c(t)}function c(e){r.push(0,0,0),a.push(0,0,0),void 0===o[e]&&(o[e]=[]),o[e].push(r.length/3-1)}h("n1","n2"),h("n2","n4"),h("n4","n3"),h("n3","n1"),h("f1","f2"),h("f2","f4"),h("f4","f3"),h("f3","f1"),h("n1","f1"),h("n2","f2"),h("n3","f3"),h("n4","f4"),h("p","n1"),h("p","n2"),h("p","n3"),h("p","n4"),h("u1","u2"),h("u2","u3"),h("u3","u1"),h("c","t"),h("p","c"),h("cn1","cn2"),h("cn3","cn4"),h("cf1","cf2"),h("cf3","cf4"),t.setAttribute("position",new rO(r,3)),t.setAttribute("color",new rO(a,3)),super(t,i),this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=o,this.update();let d=new ia(16755200),u=new ia(16711680),p=new ia(43775),f=new ia(16777215),m=new ia(3355443);this.setColors(d,u,p,f,m)}setColors(e,t,i,r,a){let o=this.geometry.getAttribute("color");o.setXYZ(0,e.r,e.g,e.b),o.setXYZ(1,e.r,e.g,e.b),o.setXYZ(2,e.r,e.g,e.b),o.setXYZ(3,e.r,e.g,e.b),o.setXYZ(4,e.r,e.g,e.b),o.setXYZ(5,e.r,e.g,e.b),o.setXYZ(6,e.r,e.g,e.b),o.setXYZ(7,e.r,e.g,e.b),o.setXYZ(8,e.r,e.g,e.b),o.setXYZ(9,e.r,e.g,e.b),o.setXYZ(10,e.r,e.g,e.b),o.setXYZ(11,e.r,e.g,e.b),o.setXYZ(12,e.r,e.g,e.b),o.setXYZ(13,e.r,e.g,e.b),o.setXYZ(14,e.r,e.g,e.b),o.setXYZ(15,e.r,e.g,e.b),o.setXYZ(16,e.r,e.g,e.b),o.setXYZ(17,e.r,e.g,e.b),o.setXYZ(18,e.r,e.g,e.b),o.setXYZ(19,e.r,e.g,e.b),o.setXYZ(20,e.r,e.g,e.b),o.setXYZ(21,e.r,e.g,e.b),o.setXYZ(22,e.r,e.g,e.b),o.setXYZ(23,e.r,e.g,e.b),o.setXYZ(24,t.r,t.g,t.b),o.setXYZ(25,t.r,t.g,t.b),o.setXYZ(26,t.r,t.g,t.b),o.setXYZ(27,t.r,t.g,t.b),o.setXYZ(28,t.r,t.g,t.b),o.setXYZ(29,t.r,t.g,t.b),o.setXYZ(30,t.r,t.g,t.b),o.setXYZ(31,t.r,t.g,t.b),o.setXYZ(32,i.r,i.g,i.b),o.setXYZ(33,i.r,i.g,i.b),o.setXYZ(34,i.r,i.g,i.b),o.setXYZ(35,i.r,i.g,i.b),o.setXYZ(36,i.r,i.g,i.b),o.setXYZ(37,i.r,i.g,i.b),o.setXYZ(38,r.r,r.g,r.b),o.setXYZ(39,r.r,r.g,r.b),o.setXYZ(40,a.r,a.g,a.b),o.setXYZ(41,a.r,a.g,a.b),o.setXYZ(42,a.r,a.g,a.b),o.setXYZ(43,a.r,a.g,a.b),o.setXYZ(44,a.r,a.g,a.b),o.setXYZ(45,a.r,a.g,a.b),o.setXYZ(46,a.r,a.g,a.b),o.setXYZ(47,a.r,a.g,a.b),o.setXYZ(48,a.r,a.g,a.b),o.setXYZ(49,a.r,a.g,a.b),o.needsUpdate=!0}update(){let e=this.geometry,t=this.pointMap;lK.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),l$("c",t,e,lK,0,0,-1),l$("t",t,e,lK,0,0,1),l$("n1",t,e,lK,-1,-1,-1),l$("n2",t,e,lK,1,-1,-1),l$("n3",t,e,lK,-1,1,-1),l$("n4",t,e,lK,1,1,-1),l$("f1",t,e,lK,-1,-1,1),l$("f2",t,e,lK,1,-1,1),l$("f3",t,e,lK,-1,1,1),l$("f4",t,e,lK,1,1,1),l$("u1",t,e,lK,.7,1.1,-1),l$("u2",t,e,lK,-.7,1.1,-1),l$("u3",t,e,lK,0,2,-1),l$("cf1",t,e,lK,-1,0,1),l$("cf2",t,e,lK,1,0,1),l$("cf3",t,e,lK,0,-1,1),l$("cf4",t,e,lK,0,1,1),l$("cn1",t,e,lK,-1,0,-1),l$("cn2",t,e,lK,1,0,-1),l$("cn3",t,e,lK,0,-1,-1),l$("cn4",t,e,lK,0,1,-1),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function l$(e,t,i,r,a,o,h){lZ.set(a,o,h).unproject(r);let c=t[e];if(void 0!==c){let e=i.getAttribute("position");for(let t=0,i=c.length;t<i;t++)e.setXYZ(c[t],lZ.x,lZ.y,lZ.z)}}var l0=class extends nY{constructor(e,t=16776960){let i=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),r=new rU;r.setIndex(new rT(i,1)),r.setAttribute("position",new rO([1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],3)),super(r,new nU({color:t,toneMapped:!1})),this.box=e,this.type="Box3Helper",this.geometry.computeBoundingSphere()}updateMatrixWorld(e){let t=this.box;t.isEmpty()||(t.getCenter(this.position),t.getSize(this.scale),this.scale.multiplyScalar(.5),super.updateMatrixWorld(e))}dispose(){this.geometry.dispose(),this.material.dispose()}},l1=class extends nY{constructor(e=1){let t=new rU;t.setAttribute("position",new rO([0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],3)),t.setAttribute("color",new rO([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),super(t,new nU({vertexColors:!0,toneMapped:!1})),this.type="AxesHelper"}setColors(e,t,i){let r=new ia,a=this.geometry.attributes.color.array;return r.set(e),r.toArray(a,0),r.toArray(a,3),r.set(t),r.toArray(a,6),r.toArray(a,9),r.set(i),r.toArray(a,12),r.toArray(a,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}},l2=function(){let e=new ArrayBuffer(4),t=new Float32Array(e),i=new Uint32Array(e),r=new Uint32Array(512),a=new Uint32Array(512);for(let e=0;e<256;++e){let t=e-127;t<-27?(r[e]=0,r[256|e]=32768,a[e]=24,a[256|e]=24):t<-14?(r[e]=1024>>-t-14,r[256|e]=1024>>-t-14|32768,a[e]=-t-1,a[256|e]=-t-1):t<=15?(r[e]=t+15<<10,r[256|e]=t+15<<10|32768,a[e]=13,a[256|e]=13):t<128?(r[e]=31744,r[256|e]=64512,a[e]=24,a[256|e]=24):(r[e]=31744,r[256|e]=64512,a[e]=13,a[256|e]=13)}let o=new Uint32Array(2048),h=new Uint32Array(64),c=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,i=0;for(;(8388608&t)==0;)t<<=1,i-=8388608;t&=-8388609,i+=947912704,o[e]=t|i}for(let e=1024;e<2048;++e)o[e]=939524096+(e-1024<<13);for(let e=1;e<31;++e)h[e]=e<<23;h[31]=1199570944,h[32]=2147483648;for(let e=33;e<63;++e)h[e]=2147483648+(e-32<<23);h[63]=3347054592;for(let e=1;e<64;++e)32!==e&&(c[e]=1024);return{floatView:t,uint32View:i,baseTable:r,shiftTable:a,mantissaTable:o,exponentTable:h,offsetTable:c}}(),l3=Object.freeze({__proto__:null,fromHalfFloat:function(e){let t=e>>10;return l2.uint32View[0]=l2.mantissaTable[l2.offsetTable[t]+(1023&e)]+l2.exponentTable[t],l2.floatView[0]},toHalfFloat:function(e){Math.abs(e)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),e=tG(e,-65504,65504),l2.floatView[0]=e;let t=l2.uint32View[0],i=t>>23&511;return l2.baseTable[i]+((8388607&t)>>l2.shiftTable[i])}});"u">typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:"149"}})),"u">typeof window&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__="
3139149");var l4=Symbol("target"),l5=Symbol("unsubscribe");function l6(e){return e instanceof Date||e instanceof Set||e instanceof Map||e instanceof WeakSet||e instanceof WeakMap||ArrayBuffer.isView(e)}var l8=Array.isArray;function l9(e){return"symbol"==typeof e}var l7={after:(e,t)=>l8(e)?e.slice(t.length):""===t?e:e.slice(t.length+1),concat:(e,t)=>l8(e)?(e=[...e],t&&e.push(t),e):t&&void 0!==t.toString?(""!==e&&(e+="."),l9(t)?e+t.toString():e+t):e,initial:e=>{if(l8(e))return e.slice(0,-1);if(""===e)return e;let t=e.lastIndexOf(".");return -1===t?"":e.slice(0,t)},last:e=>{if(l8(e))return e[e.length-1]||"";if(""===e)return e;let t=e.lastIndexOf(".");return -1===t?e:e.slice(t+1)},walk:(e,t)=>{if(l8(e))for(let i of e)t(i);else if(""!==e){let i=0,r=e.indexOf(".");if(-1===r)t(e);else for(;i<e.length;)-1===r&&(r=e.length),t(e.slice(i,r)),i=r+1,r=e.indexOf(".",i)}},get(e,t){return this.walk(t,t=>{e&&(e=e[t])}),e}};function he(e,t,i){return e.isUnsubscribed||t.ignoreSymbols&&l9(i)||t.ignoreUnderscores&&"_"===i.charAt(0)||"ignoreKeys"in t&&t.ignoreKeys.includes(i)}var ht=class{constructor(e){this._equals=e,this._proxyCache=new WeakMap,this._pathCache=new WeakMap,this.isUnsubscribed=!1}_getDescriptorCache(){return void 0===this._descriptorCache&&(this._descriptorCache=new WeakMap),this._descriptorCache}_getProperties(e){let t=this._getDescriptorCache(),i=t.get(e);return void 0===i&&(i={},t.set(e,i)),i}_getOwnPropertyDescriptor(e,t){if(this.isUnsubscribed)return Reflect.getOwnPropertyDescriptor(e,t);let i=this._getProperties(e),r=i[t];return void 0===r&&(r=Reflect.getOwnPropertyDescriptor(e,t),i[t]=r),r}getProxy(e,t,i,r){if(this.isUnsubscribed)return e;let a=e[r],o=a||e;this._pathCache.set(o,t);let h=this._proxyCache.get(o);return void 0===h&&(h=void 0===a?new Proxy(e,i):e,this._proxyCache.set(o,h)),h}getPath(e){return this.isUnsubscribed?void 0:this._pathCache.get(e)}isDetached(e,t){return!Object.is(e,l7.get(t,this.getPath(e)))}defineProperty(e,t,i){return!!Reflect.defineProperty(e,t,i)&&(this.isUnsubscribed||(this._getProperties(e)[t]=i),!0)}setProperty(e,t,i,r,a){if(!this._equals(a,i)||!(t in e)){let a=this._getOwnPropertyDescriptor(e,t);return void 0!==a&&"set"in a?Reflect.set(e,t,i,r):Reflect.set(e,t,i)}return!0}deleteProperty(e,t,i){if(Reflect.deleteProperty(e,t)){if(!this.isUnsubscribed){let r=this._getDescriptorCache().get(e);r&&(delete r[t],this._pathCache.delete(i))}return!0}return!1}isSameDescriptor(e,t,i){let r=this._getOwnPropertyDescriptor(t,i);return void 0!==e&&void 0!==r&&Object.is(e.value,r.value)&&(e.writable||!1)===(r.writable||!1)&&(e.enumerable||!1)===(r.enumerable||!1)&&(e.configurable||!1)===(r.configurable||!1)&&e.get===r.get&&e.set===r.set}isGetInvariant(e,t){let i=this._getOwnPropertyDescriptor(e,t);return void 0!==i&&!0!==i.configurable&&!0!==i.writable}unsubscribe(){this._descriptorCache=null,this._pathCache=null,this._proxyCache=null,this.isUnsubscribed=!0}};function hi(e){return"[object Object]"===toString.call(e)}function hr(){return!0}function hs(e,t){return e.length!==t.length||e.some((e,i)=>t[i]!==e)}var ha=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]),hn=new Set(["concat","includes","indexOf","join","keys","lastIndexOf"]),ho={push:hr,pop:hr,shift:hr,unshift:hr,copyWithin:hs,reverse:hs,sort:hs,splice:hs,flat:hs,fill:hs},hl=new Set([...ha,...hn,...Object.keys(ho)]);function hh(e,t){if(e.size!==t.size)return!0;for(let i of e)if(!t.has(i))return!0;return!1}var hc=["keys","values","entries"],hd=new Set(["has","toString"]),hu={add:hh,clear:hh,delete:hh,forEach:hh},hp=new Set([...hd,...Object.keys(hu),...hc]);function hf(e,t){let i;if(e.size!==t.size)return!0;for(let[r,a]of e)if((i=t.get(r))!==a||void 0===i&&!t.has(r))return!0;return!1}var hm=new Set([...hd,"get"]),hg={set:hf,clear:hf,delete:hf,forEach:hf},hv=new Set([...hm,...Object.keys(hg),...hc]),hy=class{constructor(e,t,i,r){this._path=t,this._isChanged=!1,this._clonedCache=new Set,this._hasOnValidate=r,this._changes=r?[]:null,this.clone=void 0===t?e:this._shallowClone(e)}static isHandledMethod(e){return ha.has(e)}_shallowClone(e){let t=e;if(hi(e))t={...e};else if(l8(e))t=[...e];else if(e instanceof Date)t=new Date(e);else if(e instanceof Set)t=new Set([...e].map(e=>this._shallowClone(e)));else if(e instanceof Map)for(let[i,r]of(t=new Map,e.entries()))t.set(i,this._shallowClone(r));return this._clonedCache.add(t),t}preferredThisArg(e,t,i,r){return e?(l8(r)?this._onIsChanged=ho[t]:r instanceof Set?this._onIsChanged=hu[t]:r instanceof Map&&(this._onIsChanged=hg[t]),r):i}update(e,t,i){let r=l7.after(e,this._path);if("length"!==t){let e=this.clone;l7.walk(r,t=>{e&&e[t]&&(this._clonedCache.has(e[t])||(e[t]=this._shallowClone(e[t])),e=e[t])}),this._hasOnValidate&&this._changes.push({path:r,property:t,previous:i}),e&&e[t]&&(e[t]=i)}this._isChanged=!0}undo(e){let t;for(let i=this._changes.length-1;-1!==i;i--)t=this._changes[i],l7.get(e,t.path)[t.property]=t.previous}isChanged(e){return void 0===this._onIsChanged?this._isChanged:this._onIsChanged(this.clone,e)}},hx=class extends hy{static isHandledMethod(e){return hl.has(e)}},hb=class extends hy{undo(e){e.setTime(this.clone.getTime())}isChanged(e,t){return!t(this.clone.valueOf(),e.valueOf())}},hw=class extends hy{static isHandledMethod(e){return hp.has(e)}undo(e){for(let t of this.clone)e.add(t);for(let t of e)this.clone.has(t)||e.delete(t)}},hS=class extends hy{static isHandledMethod(e){return hv.has(e)}undo(e){for(let[t,i]of this.clone.entries())e.set(t,i);for(let t of e.keys())this.clone.has(t)||e.delete(t)}}
3139,h_=class extends hy{constructor(e,t,i,r){super(void 0,t,i,r),this._arg1=i[0],this._weakValue=e.has(this._arg1)}isChanged(e){return this._weakValue!==e.has(this._arg1)}undo(e){this._weakValue&&!e.has(this._arg1)?e.add(this._arg1):e.delete(this._arg1)}},hA=class extends hy{constructor(e,t,i,r){super(void 0,t,i,r),this._weakKey=i[0],this._weakHas=e.has(this._weakKey),this._weakValue=e.get(this._weakKey)}isChanged(e){return this._weakValue!==e.get(this._weakKey)}undo(e){let t=e.has(this._weakKey);this._weakHas&&!t?e.set(this._weakKey,this._weakValue):!this._weakHas&&t?e.delete(this._weakKey):this._weakValue!==e.get(this._weakKey)&&e.set(this._weakKey,this._weakValue)}},hM=class{constructor(e){this._stack=[],this._hasOnValidate=e}static isHandledType(e){return hi(e)||l8(e)||l6(e)}static isHandledMethod(e,t){return hi(e)?hy.isHandledMethod(t):l8(e)?hx.isHandledMethod(t):e instanceof Set?hw.isHandledMethod(t):e instanceof Map?hS.isHandledMethod(t):l6(e)}get isCloning(){return this._stack.length>0}start(e,t,i){let r=hy;l8(e)?r=hx:e instanceof Date?r=hb:e instanceof Set?r=hw:e instanceof Map?r=hS:e instanceof WeakSet?r=h_:e instanceof WeakMap&&(r=hA),this._stack.push(new r(e,t,i,this._hasOnValidate))}update(e,t,i){this._stack[this._stack.length-1].update(e,t,i)}preferredThisArg(e,t,i){let{name:r}=e,a=hM.isHandledMethod(i,r);return this._stack[this._stack.length-1].preferredThisArg(a,r,t,i)}isChanged(e,t,i){return this._stack[this._stack.length-1].isChanged(e,t,i)}undo(e){void 0!==this._previousClone&&this._previousClone.undo(e)}stop(){return this._previousClone=this._stack.pop(),this._previousClone.clone}},hE={equals:Object.is,isShallow:!1,pathAsArray:!1,ignoreSymbols:!1,ignoreUnderscores:!1,ignoreDetached:!1,details:!1},hC=(e,t,i={})=>{i={...hE,...i};let r=Symbol("ProxyTarget"),{equals:a,isShallow:o,ignoreDetached:h,details:c}=i,d=new ht(a),u="function"==typeof i.onValidate,p=new hM(u),f=(e,t,r,a,o)=>!u||p.isCloning||!0===i.onValidate(l7.concat(d.getPath(e),t),r,a,o),m=(t,r,a,o)=>{he(d,i,r)||h&&d.isDetached(t,e)||g(d.getPath(t),r,a,o)},g=(e,i,r,a,o)=>{p.isCloning?p.update(e,i,a):t(l7.concat(e,i),r,a,o)},v=e=>e&&(e[r]||e),y=(t,a,c,u)=>("object"==typeof t?null===t:"function"!=typeof t)||t instanceof RegExp||"constructor"===c||o&&!hM.isHandledMethod(a,c)||he(d,i,c)||d.isGetInvariant(a,c)||h&&d.isDetached(a,e)?t:(void 0===u&&(u=d.getPath(a)),d.getProxy(t,l7.concat(u,c),x,r)),x={get(e,t,i){if(l9(t)){if(t===r||t===l4)return e;if(t===l5&&!d.isUnsubscribed&&0===d.getPath(e).length)return d.unsubscribe(),e}return y(l6(e)?Reflect.get(e,t):Reflect.get(e,t,i),e,t)},set(e,t,i,o){i=v(i);let h=e[r]||e,c=h[t];if(a(c,i)&&t in e)return!0;let u=f(e,t,i,c);return u&&d.setProperty(h,t,i,o,c)?(m(e,t,e[t],c),!0):!u},defineProperty(e,t,i){if(!d.isSameDescriptor(i,e,t)){let r=e[t];f(e,t,i.value,r)&&d.defineProperty(e,t,i,r)&&m(e,t,i.value,r)}return!0},deleteProperty(e,t){if(!Reflect.has(e,t))return!0;let i=Reflect.get(e,t),r=f(e,t,void 0,i);return r&&d.deleteProperty(e,t,i)?(m(e,t,void 0,i),!0):!r},apply(t,i,o){let h=i[r]||i;if(d.isUnsubscribed)return Reflect.apply(t,h,o);if((!1===c||!0!==c&&!c.includes(t.name))&&hM.isHandledType(h)){var u;let r=l7.initial(d.getPath(t)),c=hM.isHandledMethod(h,t.name);p.start(h,r,o);let m=Reflect.apply(t,p.preferredThisArg(t,i,h),c?o.map(e=>v(e)):o),b=p.isChanged(h,a),w=p.stop();if(hM.isHandledType(m)&&c&&(i instanceof Map&&"get"===t.name&&(r=l7.concat(r,o[0])),m=d.getProxy(m,r,x)),b){let i={name:t.name,args:o,result:m},a=p.isCloning?l7.initial(r):r,c=p.isCloning?l7.last(r):"";f(l7.get(e,a),c,h,w,i)?g(a,c,h,w,i):p.undo(h)}return(i instanceof Map||i instanceof Set)&&"object"==typeof(u=m)&&"function"==typeof u.next?function(e,t,i,r,a){let o=e.next;if("entries"===t.name)e.next=function(){let e=o.call(this);return!1===e.done&&(e.value[0]=a(e.value[0],t,e.value[0],r),e.value[1]=a(e.value[1],t,e.value[0],r)),e};else if("values"===t.name){let h=i[l4].keys();e.next=function(){let e=o.call(this);return!1===e.done&&(e.value=a(e.value,t,h.next().value,r)),e}}else e.next=function(){let e=o.call(this);return!1===e.done&&(e.value=a(e.value,t,e.value,r)),e};return e}(m,t,i,r,y):m}return Reflect.apply(t,i,o)}},b=d.getProxy(e,i.pathAsArray?[]:"",x);return t=t.bind(b),u&&(i.onValidate=i.onValidate.bind(b)),b};hC.target=e=>e&&e[l4]||e,hC.unsubscribe=e=>e[l5]||e;var hT="object"==typeof global&&global&&global.Object===Object&&global,hP="object"==typeof self&&self&&self.Object===Object&&self,hD=hT||hP||Function("return this")(),hO=hD.Symbol,hI=Object.prototype,hR=hI.hasOwnProperty,hL=hI.toString,hB=hO?hO.toStringTag:void 0,hz=function(e){var t=hR.call(e,hB),i=e[hB];try{e[hB]=void 0;var r=!0}catch{}var a=hL.call(e);return r&&(t?e[hB]=i:delete e[hB]),a},hF=Object.prototype.toString,hN=hO?hO.toStringTag:void 0,hU=function(e){return null==e?void 0===e?"[object Undef
3139ined]":"[object Null]":hN&&hN in Object(e)?hz(e):hF.call(e)},hk=function(e){return null!=e&&"object"==typeof e},hV=function(e){return"symbol"==typeof e||hk(e)&&"[object Symbol]"==hU(e)},hj=function(e,t){for(var i=-1,r=null==e?0:e.length,a=Array(r);++i<r;)a[i]=t(e[i],i,e);return a},hG=Array.isArray,hH=1/0,hW=hO?hO.prototype:void 0,hq=hW?hW.toString:void 0,hX=function e(t){if("string"==typeof t)return t;if(hG(t))return hj(t,e)+"";if(hV(t))return hq?hq.call(t):"";var i=t+"";return"0"==i&&1/t==-hH?"-0":i},hY=/\s/,hQ=function(e){for(var t=e.length;t--&&hY.test(e.charAt(t)););return t},hZ=/^\s+/,hK=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},hJ=0/0,h$=/^[-+]0x[0-9a-f]+$/i,h0=/^0b[01]+$/i,h1=/^0o[0-7]+$/i,h2=parseInt,h3=function(e){if("number"==typeof e)return e;if(hV(e))return hJ;if(hK(e)){var t,i="function"==typeof e.valueOf?e.valueOf():e;e=hK(i)?i+"":i}if("string"!=typeof e)return 0===e?e:+e;e=(t=e)&&t.slice(0,hQ(t)+1).replace(hZ,"");var r=h0.test(e);return r||h1.test(e)?h2(e.slice(2),r?2:8):h$.test(e)?hJ:+e},h4=function(e){return e},h5=function(e){if(!hK(e))return!1;var t=hU(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t},h6=hD["__core-js_shared__"],h8=(p_=/[^.]+$/.exec(h6&&h6.keys&&h6.keys.IE_PROTO||""))?"Symbol(src)_1."+p_:"",h9=Function.prototype.toString,h7=function(e){if(null!=e){try{return h9.call(e)}catch{}try{return e+""}catch{}}return""},ce=/^\[object .+?Constructor\]$/,ct=Object.prototype,ci=Function.prototype.toString,cr=ct.hasOwnProperty,cs=RegExp("^"+ci.call(cr).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ca=function(e,t){var i,r=e?.[t];return hK(i=r)&&(!h8||!(h8 in i))&&(h5(i)?cs:ce).test(h7(i))?r:void 0},cn=ca(hD,"WeakMap"),co=Object.create,cl=function(){function e(){}return function(t){if(!hK(t))return{};if(co)return co(t);e.prototype=t;var i=new e;return e.prototype=void 0,i}}(),ch=function(e,t,i){switch(i.length){case 0:return e.call(t);case 1:return e.call(t,i[0]);case 2:return e.call(t,i[0],i[1]);case 3:return e.call(t,i[0],i[1],i[2])}return e.apply(t,i)},cc=function(e,t){var i=-1,r=e.length;for(t||(t=Array(r));++i<r;)t[i]=e[i];return t},cd=Date.now,cu=function(){try{var e=ca(Object,"defineProperty");return e({},"",{}),e}catch{}}(),cp=(pA=cu?function(e,t){return cu(e,"toString",{configurable:!0,enumerable:!1,value:function(){return t},writable:!0})}:h4,pM=0,pE=0,function(){var e=cd(),t=16-(e-pE);if(pE=e,t>0){if(++pM>=800)return arguments[0]}else pM=0;return pA.apply(void 0,arguments)}),cf=function(e,t){for(var i=-1,r=null==e?0:e.length;++i<r&&!1!==t(e[i],i,e););return e},cm=function(e,t,i,r){for(var a=e.length,o=i+(r?1:-1);r?o--:++o<a;)if(t(e[o],o,e))return o;return -1},cg=function(e){return e!=e},cv=function(e,t,i){for(var r=i-1,a=e.length;++r<a;)if(e[r]===t)return r;return -1},cy=/^(?:0|[1-9]\d*)$/,cx=function(e,t){var i=typeof e;return!!(t=t??9007199254740991)&&("number"==i||"symbol"!=i&&cy.test(e))&&e>-1&&e%1==0&&e<t},cb=function(e,t,i){"__proto__"==t&&cu?cu(e,t,{configurable:!0,enumerable:!0,value:i,writable:!0}):e[t]=i},cw=function(e,t){return e===t||e!=e&&t!=t},cS=Object.prototype.hasOwnProperty,c_=function(e,t,i){var r=e[t];cS.call(e,t)&&cw(r,i)&&(void 0!==i||t in e)||cb(e,t,i)},cA=function(e,t,i,r){var a=!i;i||(i={});for(var o=-1,h=t.length;++o<h;){var c=t[o],d=r?r(i[c],e[c],c,i,e):void 0;void 0===d&&(d=e[c]),a?cb(i,c,d):c_(i,c,d)}return i},cM=Math.max,cE=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991},cC=function(e){return null!=e&&cE(e.length)&&!h5(e)},cT=Object.prototype,cP=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||cT)},cD=function(e,t){for(var i=-1,r=Array(e);++i<e;)r[i]=t(i);return r},cO=function(e){return hk(e)&&"[object Arguments]"==hU(e)},cI=Object.prototype,cR=cI.hasOwnProperty,cL=cI.propertyIsEnumerable,cB=cO(function(){return arguments}())?cO:function(e){return hk(e)&&cR.call(e,"callee")&&!cL.call(e,"callee")},cz="object"==typeof exports&&exports&&!exports.nodeType&&exports,cF=cz&&"object"==typeof module&&module&&!module.nodeType&&module,cN=cF&&cF.exports===cz?hD.Buffer:void 0,cU=(cN?cN.isBuffer:void 0)||function(){return!1},ck={};
3139ck["[object Float32Array]"]=ck["[object Float64Array]"]=ck["[object Int8Array]"]=ck["[object Int16Array]"]=ck["[object Int32Array]"]=ck["[object Uint8Array]"]=ck["[object Uint8ClampedArray]"]=ck["[object Uint16Array]"]=ck["[object Uint32Array]"]=!0,ck["[object Arguments]"]=ck["[object Array]"]=ck["[object ArrayBuffer]"]=ck["[object Boolean]"]=ck["[object DataView]"]=ck["[object Date]"]=ck["[object Error]"]=ck["[object Function]"]=ck["[object Map]"]=ck["[object Number]"]=ck["[object Object]"]=ck["[object RegExp]"]=ck["[object Set]"]=ck["[object String]"]=ck["[object WeakMap]"]=!1;var cV=function(e){return function(t){return e(t)}},cj="object"==typeof exports&&exports&&!exports.nodeType&&exports,cG=cj&&"object"==typeof module&&module&&!module.nodeType&&module,cH=cG&&cG.exports===cj&&hT.process,cW=function(){try{return cG&&cG.require&&cG.require("util").types||cH&&cH.binding&&cH.binding("util")}catch{}}(),cq=cW&&cW.isTypedArray,cX=cq?cV(cq):function(e){return hk(e)&&cE(e.length)&&!!ck[hU(e)]},cY=Object.prototype.hasOwnProperty,cQ=function(e,t){var i=hG(e),r=!i&&cB(e),a=!i&&!r&&cU(e),o=!i&&!r&&!a&&cX(e),h=i||r||a||o,c=h?cD(e.length,String):[],d=c.length;for(var u in e)(t||cY.call(e,u))&&!(h&&("length"==u||a&&("offset"==u||"parent"==u)||o&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||cx(u,d)))&&c.push(u);return c},cZ=function(e,t){return function(i){return e(t(i))}},cK=cZ(Object.keys,Object),cJ=Object.prototype.hasOwnProperty,c$=function(e){if(!cP(e))return cK(e);var t=[];for(var i in Object(e))cJ.call(e,i)&&"constructor"!=i&&t.push(i);return t},c0=function(e){return cC(e)?cQ(e):c$(e)},c1=function(e){var t=[];if(null!=e)for(var i in Object(e))t.push(i);return t},c2=Object.prototype.hasOwnProperty,c3=function(e){if(!hK(e))return c1(e);var t=cP(e),i=[];for(var r in e)"constructor"==r&&(t||!c2.call(e,r))||i.push(r);return i},c4=function(e){return cC(e)?cQ(e,!0):c3(e)},c5=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,c6=/^\w*$/,c8=function(e,t){if(hG(e))return!1;var i=typeof e;return!!("number"==i||"symbol"==i||"boolean"==i||null==e||hV(e))||c6.test(e)||!c5.test(e)||null!=t&&e in Object(t)},c9=ca(Object,"create"),c7=Object.prototype.hasOwnProperty,de=Object.prototype.hasOwnProperty;function dt(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t<i;){var r=e[t];this.set(r[0],r[1])}}dt.prototype.clear=function(){this.__data__=c9?c9(null):{},this.size=0},dt.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},dt.prototype.get=function(e){var t=this.__data__;if(c9){var i=t[e];return"__lodash_hash_undefined__"===i?void 0:i}return c7.call(t,e)?t[e]:void 0},dt.prototype.has=function(e){var t=this.__data__;return c9?void 0!==t[e]:de.call(t,e)},dt.prototype.set=function(e,t){var i=this.__data__;return this.size+=this.has(e)?0:1,i[e]=c9&&void 0===t?"__lodash_hash_undefined__":t,this};var di=function(e,t){for(var i=e.length;i--;)if(cw(e[i][0],t))return i;return -1},dr=Array.prototype.splice;function ds(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t<i;){var r=e[t];this.set(r[0],r[1])}}ds.prototype.clear=function(){this.__data__=[],this.size=0},ds.prototype.delete=function(e){var t=this.__data__,i=di(t,e);return!(i<0)&&(i==t.length-1?t.pop():dr.call(t,i,1),--this.size,!0)},ds.prototype.get=function(e){var t=this.__data__,i=di(t,e);return i<0?void 0:t[i][1]},ds.prototype.has=function(e){return di(this.__data__,e)>-1},ds.prototype.set=function(e,t){var i=this.__data__,r=di(i,e);return r<0?(++this.size,i.push([e,t])):i[r][1]=t,this};var da=ca(hD,"Map"),dn=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e},dl=function(e,t){var i=e.__data__;return dn(t)?i["string"==typeof t?"string":"hash"]:i.map};function dh(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t<i;){var r=e[t];this.set(r[0],r[1])}}function dc(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw TypeError("Expected a function");var i=function(){var r=arguments,a=t?t.apply(this,r):r[0],o=i.cache;if(o.has(a))return o.get(a);var h=e.apply(this,r);return i.cache=o.set(a,h)||o,h};return i.cache=new(dc.Cache||dh),i}dh.prototype.clear=function(){this.size=0,this.__data__={hash:new dt,map:new(da||ds),string:new dt}},dh.prototype.delete=function(e){var t=dl(this,e).delete(e);return this.size-=t?1:0,t},dh.prototype.get=function(e){return dl(this,e).get(e)},dh.prototype.has=function(e){return dl(this,e).has(e)},dh.prototype.set=function(e,t){var i=dl(this,e),r=i.size;return i.set(e,t),this.size+=i.size==r?0:1,this},dc.Cache=dh;var dd=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,du=/\\(\\)?/g,dp=(pT=(pC=dc(function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(dd,function(e,i,r,a){t.push(r?a.replace(du,"$1"):i||e)}),t},function(e){return 500===pT.size&&pT.clear(),e})).cache,pC),df=function(e){return null==e?"":hX(e)},dm=function(e,t){return hG(e)?e:c8(e,t)?[e]:dp(df(e))},dg=1/0,dv=function(e){if("string"==typeof e||hV(e))return e;var t=e+"";return"0"==t&&1/e==-dg?"-0":t},dy=function(e,t){t=dm(t,e);for(var i=0,r=t.length;null!=e&&i<r;)e=e[dv(t[i++])];return i&&i==r?e:void 0},dx=function(e,t){for(var i=-1,r=t.length,a=e.length;++i<r;)e[a+i]=t[i];return e},db=hO?hO.isConcatSpreadable:void 0,dw=function(e){return hG(e)||cB(e)||!!(db&&e&&e[db])},dS=function e(t,i,r,a,o){var h=-1,c=t.length;for(r||(r=dw),o||(o=[]);++h<c;){var d=t[h];i>0&&r(d)?i>1?e(d,i-1,r,a,o):dx(o,d):a||(o[o.length]=d)}return o},d_=function(e){var t;return cp((t=cM((t=void 0,e.length-1),0),function(){for(var i,r=arguments,a=-1,o=cM(r.length-t,0),h=Array(o);++a<o;)h[a]=r[t+a];a=-1;for(var c=Array(t+1);++a<t;)c[a]=r[a];return c[t]=(null==(i=h)?0:i.length)?dS(i,1):[],ch(e,this,c)}),e+"")},dA=cZ(Object.getPrototypeOf,Object),dM=Object.prototype,dE=Function.prototype.toString,dC=dM.hasOwnProperty,dT=dE.call(Object),dP=function(e){if(!hk(e)||"[object Object]"!=hU(e))return!1;var t=dA(e);if(null===t)return!0;var i=dC.call(t,"constructor")&&t.constructor;return"function"==typeof i&&i instanceof i&&dE.call(i)==dT},dD=function(e,t,i){var r=-1,a=e.length;t<0&&(t=-t>a?0:a+t),(i=i>a?a:i)<0&&(i+=a),a=t>i?0:i-t>>>0,t>>>=0;for(var o=Array(a);++r<a;)o[r]=e[r+t];return o},dO=function(e,t,i){var r=e.length;return i=void 0===i?r:i,!t&&i>=r?e:dD(e,t,i)},dI=RegExp("[\\u200d\ud800-\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),dR="\ud800-\udfff",dL="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",dB="\ud83c[\udffb-\udfff]",dz="[^"+dR+"]",dF="(?:\ud83c[\udde6-\uddff]){2}",dN="[\ud800-\udbff][\udc00-\udfff]",dU="(?:"+dL+"|"+dB+")?",dk="[\\ufe0e\\ufe0f]?",dV="(?:\\u200d(?:"+[dz,dF,dN].join("|")+")"+dk+dU+")*",dj=RegExp(dB+"(?="+dB+")|(?:"+[dz+dL+"?",dL,dF,dN,"["+dR+"]"].join("|")+")"+(dk+dU+dV),"g"),dG=function(e){return dI.test(e)?e.match(dj)||[]:e.split("")};function dH(e){var t=this.__data__=new ds(e);this.size=t.size}dH.prototype.clear=function(){this.__data__=new ds,this.size=0},dH.prototype.delete=function(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i},dH.prototype.get=function(e){return this.__data__.get(e)},dH.prototype.has=function(e){return this.__data__.has(e)},dH.prototype.set=function(e,t){var i=this.__data__;if(i instanceof ds){var r=i.__data__;if(!da||r.length<199)return r.push([e,t]),this.size=++i.size,this;i=this.__data__=new dh(r)}return i.set(e,t),this.size=i.size,this};var dW="object"==typeof exports&&exports&&!exports.nodeType&&exports,dq=dW&&"object"==typeof module&&module&&!module.nodeType&&module,dX=dq&&dq.exports===dW?hD.Buffer:void 0,dY=dX?dX.allocUnsafe:void 0,dQ=function(e,t){if(t)return e.slice();var i=e.length,r=dY?dY(i):new e.constructor(i);return e.copy(r),r},dZ=function(e,t){for(var i=-1,r=null==e?0:e.length,a=0,o=[];++i<r;){var h=e[i];t(h,i,e)&&(o[a++]=h)}return o},dK=function(){return[]},dJ=Object.prototype.propertyIsEnumerable,d$=Object.getOwnPropertySymbols,d0=d$?function(e){return null==e?[]:dZ(d$(e=Object(e)),function(t){return dJ.call(e,t)})}:dK,d1=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)dx(t,d0(e)),e=dA(e);return t}:dK,d2=function(e,t,i){var r=t(e);return hG(e)?r:dx(r,i(e))},d3=function(e){return d2(e,c0,d0)},d4=function(e){return d2(e,c4,d1)},d5=ca(hD,"DataView"),d6=ca(hD,"Promise"),d8=ca(hD,"Set"),d9="[object Map]",d7="[object Promise]",ue="[object Set]",ut="[object WeakMap]",ui="[object DataView]",ur=h7(d5),us=h7(da),ua=h7(d6),un=h7(d8),uo=h7(cn),ul=hU;(d5&&ul(new d5(new ArrayBuffer(1)))!=ui||da&&ul(new da)!=d9||d6&&ul(d6.resolve())!=d7||d8&&ul(new d8)!=ue||cn&&ul(new cn)!=ut)&&(ul=function(e){var t=hU(e),i="[object Object]"==t?e.constructor:void 0,r=i?h7(i):"";if(r)switch(r){case ur:return ui;case us:return d9;case ua:return d7;case un:return ue;case uo:return ut}return t});var uh=ul,uc=Object.prototype.hasOwnProperty,ud=function(e){var t=e.length,i=new e.constructor(t);return t&&"string"==typeof e[0]&&uc.call(e,"index")&&(i.index=e.index,i.input=e.input),i},uu=hD.Uint8Array,up=function(e){var t=new e.constructor(e.byteLength);return new uu(t).set(new uu(e)),t},uf=function(e,t){var i=t?up(e.buffer):e.buffer;return new e.constructor(i,e.byteOffset,e.byteLength)},um=/\w*$/,ug=function(e){var t=new e.constructor(e.source,um.exec(e));return t.lastIndex=e.lastIndex,t},uv=hO?hO.prototype:void 0,uy=uv?uv.valueOf:void 0,ux=function(e,t){var i=t?up(e.buffer):e.buffer;return new e.constructor(i,e.byteOffset,e.length)},ub=function(e,t,i){var r=e.constructor;switch(t){case"[object ArrayBuffer]":return up(e);case"[object Boolean]":case"[object Date]":return new r(+e);case"[object DataView]":return uf(e,i);
3139case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return ux(e,i);case"[object Map]":case"[object Set]":return new r;case"[object Number]":case"[object String]":return new r(e);case"[object RegExp]":return ug(e);case"[object Symbol]":return uy?Object(uy.call(e)):{}}},uw=cW&&cW.isMap,uS=uw?cV(uw):function(e){return hk(e)&&"[object Map]"==uh(e)},u_=cW&&cW.isSet,uA=u_?cV(u_):function(e){return hk(e)&&"[object Set]"==uh(e)},uM="[object Arguments]",uE="[object Function]",uC="[object Object]",uT={};uT[uM]=uT["[object Array]"]=uT["[object ArrayBuffer]"]=uT["[object DataView]"]=uT["[object Boolean]"]=uT["[object Date]"]=uT["[object Float32Array]"]=uT["[object Float64Array]"]=uT["[object Int8Array]"]=uT["[object Int16Array]"]=uT["[object Int32Array]"]=uT["[object Map]"]=uT["[object Number]"]=uT[uC]=uT["[object RegExp]"]=uT["[object Set]"]=uT["[object String]"]=uT["[object Symbol]"]=uT["[object Uint8Array]"]=uT["[object Uint8ClampedArray]"]=uT["[object Uint16Array]"]=uT["[object Uint32Array]"]=!0,uT["[object Error]"]=uT[uE]=uT["[object WeakMap]"]=!1;var uP=function e(t,i,r,a,o,h){var c,d=1&i,u=2&i,p=4&i;if(r&&(c=o?r(t,a,o,h):r(t)),void 0!==c)return c;if(!hK(t))return t;var f=hG(t);if(f){if(c=ud(t),!d)return cc(t,c)}else{var m,g,v,y,x=uh(t),b=x==uE||"[object GeneratorFunction]"==x;if(cU(t))return dQ(t,d);if(x==uC||x==uM||b&&!o){if(c=u||b?{}:"function"!=typeof t.constructor||cP(t)?{}:cl(dA(t)),!d)return u?(g=(m=c)&&cA(t,c4(t),m),cA(t,d1(t),g)):(y=(v=c)&&cA(t,c0(t),v),cA(t,d0(t),y))}else{if(!uT[x])return o?t:{};c=ub(t,x,d)}}h||(h=new dH);var w=h.get(t);if(w)return w;h.set(t,c),uA(t)?t.forEach(function(a){c.add(e(a,i,r,a,t,h))}):uS(t)&&t.forEach(function(a,o){c.set(o,e(a,i,r,o,t,h))});var S=p?u?d4:d3:u?c4:c0,_=f?void 0:S(t);return cf(_||t,function(a,o){_&&(a=t[o=a]),c_(c,o,e(a,i,r,o,t,h))}),c},uD=function(e){return uP(e,5)};function uO(e){var t=-1,i=null==e?0:e.length;for(this.__data__=new dh;++t<i;)this.add(e[t])}uO.prototype.add=uO.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},uO.prototype.has=function(e){return this.__data__.has(e)};var uI=function(e,t){for(var i=-1,r=null==e?0:e.length;++i<r;)if(t(e[i],i,e))return!0;return!1},uR=function(e,t,i,r,a,o){var h=1&i,c=e.length,d=t.length;if(c!=d&&!(h&&d>c))return!1;var u=o.get(e),p=o.get(t);if(u&&p)return u==t&&p==e;var f=-1,m=!0,g=2&i?new uO:void 0;for(o.set(e,t),o.set(t,e);++f<c;){var v=e[f],y=t[f];if(r)var x=h?r(y,v,f,t,e,o):r(v,y,f,e,t,o);if(void 0!==x){if(x)continue;m=!1;break}if(g){if(!uI(t,function(e,t){if(!g.has(t)&&(v===e||a(v,e,i,r,o)))return g.push(t)})){m=!1;break}}else if(!(v===y||a(v,y,i,r,o))){m=!1;break}}return o.delete(e),o.delete(t),m},uL=function(e){var t=-1,i=Array(e.size);return e.forEach(function(e,r){i[++t]=[r,e]}),i},uB=function(e){var t=-1,i=Array(e.size);return e.forEach(function(e){i[++t]=e}),i},uz=hO?hO.prototype:void 0,uF=uz?uz.valueOf:void 0,uN=function(e,t,i,r,a,o,h){switch(i){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)break;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!o(new uu(e),new uu(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return cw(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var c=uL;case"[object Set]":var d=1&r;if(c||(c=uB),e.size!=t.size&&!d)break;var u=h.get(e);if(u)return u==t;r|=2,h.set(e,t);var p=uR(c(e),c(t),r,a,o,h);return h.delete(e),p;case"[object Symbol]":if(uF)return uF.call(e)==uF.call(t)}return!1},uU=Object.prototype.hasOwnProperty,uk=function(e,t,i,r,a,o){var h=1&i,c=d3(e),d=c.length;if(d!=d3(t).length&&!h)return!1;for(var u=d;u--;){var p=c[u];if(!(h?p in t:uU.call(t,p)))return!1}var f=o.get(e),m=o.get(t);if(f&&m)return f==t&&m==e;var g=!0;o.set(e,t),o.set(t,e);for(var v=h;++u<d;){var y=e[p=c[u]],x=t[p];if(r)var b=h?r(x,y,p,t,e,o):r(y,x,p,e,t,o);if(!(void 0===b?y===x||a(y,x,i,r,o):b)){g=!1;break}v||(v="constructor"==p)}if(g&&!v){var w=e.constructor,S=t.constructor;w!=S&&"constructor"in e&&"constructor"in t&&!("function"==typeof w&&w instanceof w&&"function"==typeof S&&S instanceof S)&&(g=!1)}return o.delete(e),o.delete(t),g},uV="[object Arguments]",uj="[object Array]",uG="[object Object]",uH=Object.prototype.hasOwnProperty,uW=function(e,t,i,r,a,o){var h=
3139hG(e),c=hG(t),d=h?uj:uh(e),u=c?uj:uh(t);d=d==uV?uG:d,u=u==uV?uG:u;var p=d==uG,f=u==uG,m=d==u;if(m&&cU(e)){if(!cU(t))return!1;h=!0,p=!1}if(m&&!p)return o||(o=new dH),h||cX(e)?uR(e,t,i,r,a,o):uN(e,t,d,i,r,a,o);if(!(1&i)){var g=p&&uH.call(e,"__wrapped__"),v=f&&uH.call(t,"__wrapped__");if(g||v){var y=g?e.value():e,x=v?t.value():t;return o||(o=new dH),a(y,x,i,r,o)}}return!!m&&(o||(o=new dH),uk(e,t,i,r,a,o))},uq=function(e,t){return null!=e&&t in Object(e)},uX=function(e,t,i){t=dm(t,e);for(var r=-1,a=t.length,o=!1;++r<a;){var h=dv(t[r]);if(!(o=null!=e&&i(e,h)))break;e=e[h]}return o||++r!=a?o:!!(a=null==e?0:e.length)&&cE(a)&&cx(h,a)&&(hG(e)||cB(e))},uY=function(){return hD.Date.now()},uQ=Math.max,uZ=Math.min,uK=function(e,t,i){var r,a,o,h,c,d,u=0,p=!1,f=!1,m=!0;if("function"!=typeof e)throw TypeError("Expected a function");function g(t){var i=r,o=a;return r=a=void 0,u=t,h=e.apply(o,i)}function v(e){var i=e-d,r=e-u;return void 0===d||i>=t||i<0||f&&r>=o}function y(){var e,i,r,a=uY();if(v(a))return x(a);c=setTimeout(y,(e=a-d,i=a-u,r=t-e,f?uZ(r,o-i):r))}function x(e){return c=void 0,m&&r?g(e):(r=a=void 0,h)}function b(){var e,i=uY(),o=v(i);if(r=arguments,a=this,d=i,o){if(void 0===c)return u=e=d,c=setTimeout(y,t),p?g(e):h;if(f)return clearTimeout(c),c=setTimeout(y,t),g(d)}return void 0===c&&(c=setTimeout(y,t)),h}return t=h3(t)||0,hK(i)&&(p=!!i.leading,o=(f="maxWait"in i)?uQ(h3(i.maxWait)||0,t):o,m="trailing"in i?!!i.trailing:m),b.cancel=function(){void 0!==c&&clearTimeout(c),u=0,r=d=a=c=void 0},b.flush=function(){return void 0===c?h:x(uY())},b},uJ=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0},u$=function(e,t){return e>t},u0=function(e,t){return function e(t,i,r,a,o){return t===i||(null!=t&&null!=i&&(hk(t)||hk(i))?uW(t,i,r,a,e,o):t!=t&&i!=i)}(e,t)},u1=function(e,t,i){for(var r=-1,a=e.length;++r<a;){var o=e[r],h=t(o);if(null!=h&&(void 0===c?h==h&&!hV(h):i(h,c)))var c=h,d=o}return d},u2=function(e,t){var i,r;return t=dm(t,e),i=e,null==(e=(r=t).length<2?i:dy(i,dD(r,0,-1)))||delete e[dv(uJ(t))]},u3=function(e){return dP(e)?void 0:e},u4=d_(function(e,t){var i={};if(null==e)return i;var r=!1;t=hj(t,function(t){return t=dm(t,e),r||(r=t.length>1),t}),cA(e,d4(e),i),r&&(i=uP(i,7,u3));for(var a=t.length;a--;)u2(i,t[a]);return i}),u5=function(e,t,i,r){if(!hK(e))return e;t=dm(t,e);for(var a=-1,o=t.length,h=o-1,c=e;null!=c&&++a<o;){var d=dv(t[a]),u=i;if("__proto__"===d||"constructor"===d||"prototype"===d)break;if(a!=h){var p=c[d];void 0===(u=r?r(p,d,c):void 0)&&(u=hK(p)?p:cx(t[a+1])?[]:{})}c_(c,d,u),c=c[d]}return e},u6=function(e,t,i){for(var r=-1,a=t.length,o={};++r<a;){var h=t[r],c=dy(e,h);i(c,h)&&u5(o,dm(h,e),c)}return o},u8=d_(function(e,t){return null==e?{}:u6(e,t,function(t,i){return null!=e&&uX(e,i,uq)})}),u9=function(e,t,i){var r=!0,a=!0;if("function"!=typeof e)throw TypeError("Expected a function");return hK(i)&&(r="leading"in i?!!i.leading:r,a="trailing"in i?!!i.trailing:a),uK(e,t,{leading:r,maxWait:t,trailing:a})},u7=function(e,t){for(var i,r=e.length;r--&&((i=e[r])==i?cv(t,i,0):cm(t,cg,0))>-1;);return r},pe=function(e,t,i){if((e=df(e))&&(i||void 0===t))return e.slice(0,hQ(e)+1);if(!e||!(t=hX(t)))return e;var r=dG(e),a=u7(r,dG(t))+1;return dO(r,0,a).join("")};function pt(e){for(let t of Object.keys(e))void 0===e[t]&&delete e[t];return e}function pi(e,t){return Object.setPrototypeOf(e,t),e}var pr=!(typeof window>"u")&&window.navigator.userAgent.toLowerCase().includes(" electron/"),ps=(pr&&(()=>{if(typeof window>"u")return;let e=new URLSearchParams(window.location.search).get("desktop-app-version");return e?(window.localStorage.setItem("desktop-app-version",e),e):window.localStorage.getItem("desktop-app-version")??"0.0.6"})(),!(typeof window>"u")&&window.navigator.platform.toUpperCase().includes("MAC")),pa=!(typeof window>"u")&&(/iPad|iPhone|iPod/.test(window.navigator.userAgent)||ps&&"ontouchend"in document),pn=!(typeof window>"u")&&window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1,po=!(typeof window>"u")&&("ontouchstart"in window||navigator.maxTouchPoints>0),pl=(()=>{if(typeof window>"u")return!1;let e=navigator.userAgent,t=navigator.vendor;return/Safari/i.test(e)&&/Apple Computer/.test(t)})(),ph=Number((()=>
3139{if(typeof window>"u")return null;let e=navigator.userAgent.match(/Version\/(\d+\.\d)/);return e&&e[1]})());function pc(e){return Array.isArray(e)?e:[e]}function pd(e,t){let i=0;for(;i<e.length&&i<t.length;){if(e[i]<t[i])return -1;if(e[i]>t[i])return 1;i+=1}return i!==t.length?-1:i!==e.length?1:0}function pu(e){return ps?e.metaKey:e.ctrlKey}var pp=[],pf={},pm={},pg={};function pv(e){pp.includes(e)||pp.push(e)}function py(e){delete pf[e.pointerId];for(let t=0;t<pp.length;t++)if(pp[t].pointerId===e.pointerId){pp.splice(t,1);break}}function px(e){if("touch"!==e.pointerType)return;let t=pf[e.pointerId];void 0===t&&(t={x:0,y:0},pf[e.pointerId]=t),t.x=e.pageX,t.y=e.pageY}function pb(e){return pf[(e.pointerId===pp[0].pointerId?pp[1]:pp[0]).pointerId]}function pw(e){pm[e.key]=!0,pg[e.key]=void 0===pg[e.key]?1:pg[e.key]+1}function pS(e){if(ps&&pm.Meta)for(let e in pm)pm[e]=!1;else pm[e.key]=!1;pg={}}var p_,pA,pM,pE,pC,pT,pP,pD,pO,pI=new Promise(e=>{pP=e}),pR=new Promise(e=>{pO=e}),pL=class{modifyById(e,t){if(void 0===this[e])throw Error("not expected");{let i={...this,[e]:t};return Object.setPrototypeOf(i,pL.prototype),i}}add(e,t){return this.runOp({type:1,id:e,data:t})?.data??this}runOp(e){if(1===e.type){let t=this[e.id],i;i=void 0===t?{type:2,id:e.id}:{type:1,id:e.id,data:t};let{id:r,data:a}=e,o={...this,[r]:a};return Object.setPrototypeOf(o,pL.prototype),{data:o,actual:e,reverse:i}}if(2===e.type){let{id:t}=e,i=this[t];if(void 0===i)return null;{let r={...this};return Object.setPrototypeOf(r,pL.prototype),delete r[t],{data:r,actual:e,reverse:{type:1,id:t,data:i}}}}return null}};function pB(e){if(void 0!==e.deepFreeze){e.deepFreeze(e);return}for(let t of Object.getOwnPropertyNames(e)){let i=e[t];i&&"object"==typeof i&&pB(i)}return Object.freeze(e)}var pz=class extends Error{};function pF(e){let t={...e};return Object.setPrototypeOf(t,Object.getPrototypeOf(e)),t}function pN(e,t,i){if(void 0===e?void 0===t?(e=0,t=10):e=t-10:void 0===t&&(t=e+10),e>t){let i=e;e=t,t=i}let r=[],a=1/(i+1);for(let o=0;o<i;o++){let i=e+(t-e)*(o+.75+.5*Math.random())*a;r.push(i)}return r}function pU(e){return e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Float32Array||e instanceof Float64Array}var pk=class extends Array{constructor(...e){super(...e),Object.setPrototypeOf(this,pk.prototype)}deepFreeze(){let e=0;for(;e<this.length;)pB(this[e]),e++}fillCaches0(e,t){for(let i of(this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t),e.children))this.fillCaches0(i,e.id)}fillCaches(){if(void 0===this.objCaches)for(let e of(this.objCaches=new Map,this.parentCaches=new Map,this))this.fillCaches0(e,null)}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(0!==e.length)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,t){if(!this.has(e))return!0;for(;e;){let i=this.parent(e);if(i===t)return!0;e=i}return!1}rootAcestor(e){for(;e;){let t=this.parent(e);if(t)e=t;else break}return e}isDescendantOf(e,t){for(;e;){let i=this.parent(e);if(i===t)return!0;e=i}return!1}data(e){return this.get(e)?.data}has(e){return void 0!==this.childrenOf(e)}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return null===e?this:this.get(e)?.children}traverseFrom(e,t){if(null===e)this.traverse(t);else{let i=this.get(e);i&&function e(t,i){if(!0!==i(t.id,t.data))for(let r of t.children)e(r,i)}(i,t)}}traverse(e){!function e(t,i){for(let r of t)!0!==i(r.id,r.data)&&e(r.children,i)}(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return null===e?this:this.get(e).children}modifyById(e,t){if(void 0===this.get(e))throw Error("not expected");{let i=this.parent(e),r=this.childrenArray(i),a=r.findIndex(t=>t.id===e);if(a<0)throw Error("not expected");let o=r[a];return(r=[...r])[a]={...o,data:t},this.modifyArrayBy(i,r)}}modifyArrayBy(e,t){let i=e,r=t;for(;null!==i;){let e=r,t=i;if(void 0===(i=this.parent(i)))throw Error();let a=(r=this.childrenArray(i)).findIndex(e=>e.id===t);if(a<0)throw Error();(r=[...r])[a]={...r[a],children:e}}Object.setPrototypeOf(r,pk.prototype);let a=r;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:t}){if(void 0!==this.get(e))return!0;for(let e of t)if(this.checkDuplicatedIdRec(e))return!0;return!1}
3139addOp(e){let{parent:t,fi:i,id:r,data:a,children:o}=e;if(null!==t&&void 0===this.get(t)||this.checkDuplicatedIdRec(e))return null;{let h=this.childrenArray(t),c={fi:i,id:r,data:a,children:o};return(h=[...h,c]).sort((e,t)=>e.fi-t.fi),e.localIndex=h.indexOf(c),{data:this.modifyArrayBy(t,h),actual:e,reverse:{type:8,id:r}}}}deleteOp(e){let{id:t}=e;if(null===this.get(t))return null;{let i=this.parent(t);if(void 0===i)return null;let r=this.childrenArray(i),a=r.findIndex(e=>e.id===t);e.localIndex=a;let o=(r=[...r]).splice(a,1)[0];return{data:this.modifyArrayBy(i,r),actual:e,reverse:{type:7,...o,parent:i}}}}moveOp(e){let{parent:t,fi:i,id:r}=e;if(null!==t&&void 0===this.get(t))return this.deleteOp({type:8,id:r});if(null!==t){let e=t;for(;null!==e;){if(void 0===e)throw Error();if(e===r)throw new pz("cyclic tree");e=this.parent(e)}}let a=this.parent(r);if(void 0===a)return null;let o=a,h=this.childrenArray(a),c=h.findIndex(e=>e.id===r),d=(h=[...h]).splice(c,1)[0],u=this.modifyArrayBy(a,h);a=t,h=u.childrenArray(a);let p=d.fi;return(h=[...h,d={...d,fi:i}]).sort((e,t)=>e.fi-t.fi),e.localIndex=h.indexOf(d),{data:u=u.modifyArrayBy(a,h),actual:e,reverse:{type:9,parent:o,fi:p,id:r}}}previous(e,t){if(null===t){let t=this.childrenArray(e);return 0===t.length?null:t[t.length-1].id}let i=null;for(let r of this.childrenArray(e)){if(r.id===t)return i;i=r.id}return null}traverseSortNext(e){let t=this.parent(e);if(void 0!==t){let i=this.childrenArray(t),r=i.findIndex(t=>t.id===e)+1;if(r<i.length)return i[r].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(void 0!==t){let i=this.childrenArray(t),r=i.findIndex(t=>t.id===e)-1;return r>=0?this.traverseSortPrevious(i[r].id):t}}getAllSorted(e){let t=[];for(let i of e){let e=this.getWithSortKey(i.id);void 0!==e&&t.push({...i,...e})}for(let e of(t.sort((e,t)=>(function(e,t){let i=0;for(;i<e.length&&i<t.length;){if(e[i]<t[i])return -1;if(e[i]>t[i])return 1;i+=1}return i!==t.length?-1:i!==e.length?1:0})(e.sortKey,t.sortKey)),t))delete e.sortKey;return t}getWithSortKey(e){var t=e;let i=[],r=this.get(t),a=r;if(void 0!==r){for(;t;)i.splice(0,0,r.fi),null!==(t=this.parent(t))&&(r=this.get(t));return{...a,sortKey:i}}}insertBeforeHelper(e,t,i){return this.insertAfterHelper(e,this.previous(e,t),i)}insertAfterHelper(e,t,i){let r=this.childrenArray(e);if(null===t){if(0===r.length)return pN(0,i,i);{let e=r[0].fi;return pN(e-i,e,i)}}{let a=this.get(t);if(void 0===a||this.parent(t)!==e)throw Error("illegal args");let o=r.find(e=>e.fi>a.fi);if(void 0!==o)return pN(a.fi,o.fi,i);{let e=r[r.length-1].fi;return pN(e,e+i,i)}}}};(pH||(pH={})).runOp=function(e,t){if(0!==t.type)return null;if(Array.isArray(e)){let i=t.props,r={},a=[...e],o=!1;if(i)for(let e of Object.keys(i)){let t=parseInt(e);if(isNaN(t))throw Error("wrong index");r[e]=a[t],a[t]=i[e],o=!0}return o?{data:a,actual:t,reverse:{type:0,props:r}}:null}{let i=t.props,r={},a={...e},o=!1;if(i)for(let e of Object.keys(i)){r[e]=a[e];let t=i[e];void 0===t?delete a[e]:a[e]=t,o=!0}return o?{data:a,actual:t,reverse:{type:0,props:r}}:null}};var pV=class extends Array{constructor(...e){super(...e),Object.setPrototypeOf(this,pV.prototype)}deepFreeze(){let e=0;for(;e<this.length;)pB(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(void 0===this.objCaches)for(let e of(this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1,this))this.fillCaches0(e)}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(0!==e.length)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,t){if(void 0===this.get(e))throw Error("not expected");{let i=this,r=i.findIndex(t=>t.id===e);if(r<0)throw Error("not expected");let a=i[r];return(i=[...i])[r]={...a,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){return Object.setPrototypeOf(e,pV.prototype),"u">typeof tp||e.fillCaches(),e}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:t,id:i,data:r}=e,a=this,o={fi:t,id:i,data:r};return(a=[...a,o]).sort((e,t)=>
3139e.fi-t.fi),e.localIndex=a.indexOf(o),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:i}}}deleteOp(e){let{id:t}=e,i=this,r=i.findIndex(e=>e.id===t);if(-1===r)return null;e.localIndex=r;let a=(i=[...i]).splice(r,1)[0];return{data:this.modifyArrayBy(i),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:t,id:i}=e,r=this,a=(r=[...r]).findIndex(e=>e.id===i);if(-1===a)return null;let o=r[a].fi,h={...r[a],fi:t};return r[a]=h,r.sort((e,t)=>e.fi-t.fi),e.localIndex=r.indexOf(h),{data:this.modifyArrayBy(r),actual:e,reverse:{type:6,fi:o,id:i}}}previous(e){if(null===e)return 0===this.length?null:this[this.length-1].id;let t=null;for(let i of this){if(i.id===e)return t;t=i.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){if(null===e){if(0===this.length)return pN(0,t,t);{let e=this[0].fi;return pN(e-t,e,t)}}{let i=this.get(e);if(void 0===i)throw Error("illegal args");let r=this.find(e=>e.fi>i.fi);if(void 0!==r)return pN(i.fi,r.fi,t);{let e=this[this.length-1].fi;return pN(e,e+t,t)}}}};function pj(e){return e&&"object"==typeof e&&e instanceof pq}var pG,pH,pW,pq=class{unusedFunOverridesTable(e){}runOp(e){let t=[],i=this,r=0,a={};for(;r<e.path.length;){if(t.push(i),void 0!==(i=void 0===i?void 0:i[e.path[r]])&&!pj(i))return null;r+=1}for(let[t,r]of(i=i?pF(i):new pq,Object.entries(e.props))){let e=i[t];a[t]=e,void 0===r?delete i[t]:i[t]=r}for(;r>0;){if(0===Object.keys(i).length){let a=t[r-1];a&&(i=pF(a),delete i[e.path[r-1]])}else{let a=t[r-1];if(a){let t=pF(a);t[e.path[r-1]]=i,i=t}else{let t=new pq;t[e.path[r-1]]=i,i=t}}r-=1}let o=Object.setPrototypeOf(i,pq.prototype),h={...e,props:a};return{data:o,actual:e,reverse:h}}};function pX(e,t){if(void 0===t)return;let i=!1,r=e.map(e=>{let r=e.id,a=pY(e.data,t[r]);if(i=i||void 0!==a,void 0===a&&(a=e.data),!e.children)return{...e,id:r,data:a};{let o=pX(e.children,t);return void 0!==o?i=!0:o=e.children,{...e,id:r,data:a,children:o}}});if(i)return r}function pY(e,t){if(!pj(t))return t;if(e instanceof pk){let i=pX(e,t);return void 0!==i&&Object.setPrototypeOf(i,Object.getPrototypeOf(e)),i}if(e instanceof pV)return function(e,t){if(void 0===t)return;let i=!1,r=e.map(e=>{let r=e.id,a=pY(e.data,t[r]);return i=i||void 0!==a,void 0===a&&(a=e.data),{...e,id:r,data:a}});if(i)return Object.setPrototypeOf(r,Object.getPrototypeOf(e)),r}(e,t);if(Array.isArray(e)){let i=!1,r=e.map((e,r)=>{let a=pY(e,t[r]);return i=i||void 0!==a,void 0===a&&(a=e),a});return i?(Object.setPrototypeOf(r,Object.getPrototypeOf(e)),r):void 0}if(e instanceof pq)return pQ(e,t);if(e&&"object"==typeof e){let i={},r=!1;for(let[a,o]of Object.entries(e)){let e=pY(o,t[a]);r=r||void 0!==e,void 0===e&&(e=o),i[a]=e}return r?(Object.setPrototypeOf(i,Object.getPrototypeOf(e)),i):void 0}}function pQ(e,t){if(void 0===e)return t;if(void 0===t)return e;if(!pj(t))return t;if(!pj(e))return pW.apply(e,t);let i=new Set;for(let t of Object.keys(e))i.add(t);for(let e of Object.keys(t))i.add(e);let r=new pq;for(let a of i){let i=pQ(void 0===e?void 0:e[a],void 0===t?void 0:t[a]);r[a]=i}return r}function pZ(e,t){return null===e?null:(e.cur[e.len]=t,e.len+=1,e)}function pK(e){e&&(e.len-=1)}(fh=pW||(pW={})).apply=function(e,t){return pY(e,t)??e},fh.merge=function(e,t){return pQ(e,t)},fh.filterOp=function(e,t){let i=0,r=t.path,a=e;for(;i<r.length&&void 0!==a;){if(void 0===(a=fp.zoomOnce(a,r[i])))return t;if(!pj(a))return;i+=1}if(void 0===a)return t;if(pj(a)){if(0===t.type){let e={...t.props};for(let t of Object.keys(a))delete e[t];return{...t,props:e}}{if(1!==t.type&&4!==t.type&&7!==t.type)return t;let e=pX([t],a);return e?e[0]:t}}},(fc||(fc={})).replaceProps=function(e,t){let i=fp.zoom(t,e.path);if("object"!=typeof i)return{...e,props:{}};{let t={};for(let r of Object.keys(e.props))t[r]=i[r];return{...e,props:t}}},(e=>{function t(e,t){let i=t.path;for(var r=[];;){let a;if(e instanceof pq&&0===t.type&&null===(a=e.runOp({...t,path:i.slice(r.length)}))&&(a=void 0),void 0===a&&r.length===i.length&&(a=e instanceof pk||e instanceof pV||e instanceof pL?e.runOp(t):pH.runOp(e,t)),void 0!==a){if(null===a)return null;{let e=a.data;for(let t=r.length-1;t>=0;t--){let a=i[t],o=r[t];if(o instanceof pk){if("number"==typeof a)throw Error("illegal arg");e=o.modifyById(a,e)}else if(o instanceof pV){if("number"==typeof a)throw Error("illegal arg");e=o.modifyById(a,e)}
3139else if(o instanceof pL){if("number"==typeof a)throw Error("illegal arg");e=o.modifyById(a,e)}else if(o instanceof pq)e=Object.setPrototypeOf({...o,[a]:e},pq.prototype);else if("object"!=typeof o)return null;else if(Array.isArray(o)){if("string"==typeof a&&isNaN(a=parseInt(a)))throw Error("Invalid path");let t=e;(e=[...o])[a]=t}else e={...o,[a]:e}}return{data:e,actual:{...a.actual,path:i},reverse:{...a.reverse,path:i}}}}let o=i[r.length],h;if(e instanceof pk){if("number"==typeof o)throw Error("");h=e.get(o)?.data}else if(e instanceof pV){if("number"==typeof o)throw Error("");h=e.get(o)?.data}else null!==e&&(h=e[o]);if(void 0===h)return null;r.push(e),e=h}}function i(e,t){for(let i=0;i<e.length&&i<t.length;i++)if(e[i]!==t[i])return!0;return!1}function r(e,t){if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(e[i]!==t[i])return!1;return!0}e.drop=function(e,t){return{...e,path:e.path.slice(t)}},e.applySimple=function(e,i){return t(e,i)?.data??e},e.apply=t,e.pathDisjoint=i,e.pathEq=r,e.commutative=function(e,t){return i(e.path,t.path)},e.subsumed=function(e,t){return!!(0===e.type&&0===t.type&&r(e.path,t.path))&&Object.keys(e.props).every(e=>void 0!==t.props[e])}})(fd||(fd={})),(e=>{function t(e,t){var i=e;let r=[],a=[];for(let e of t)try{if(3===e.type||5===e.type&&"variables"===e.path[e.path.length-1]){let t,o,h;if(3===e.type?(t=fp.zoom(i,[...e.path,e.id]),h=fd.apply(i,{...e,type:2})):(t=fp.zoom(i,[...e.path,e.id,"value"]),h=fd.apply(i,e)),null!==h){i=h.data;let[c,d]=function(e,t){let i={cur:[],result:[],len:0};return[e=function e(t,i,r){if(t instanceof pk){let a=function t(i,r,a){let o=!1,h=i.map(i=>{let h=i.id,c=r[h];if(void 0!==c&&"string"==typeof c&&(o=!0,h=c,null!==a))throw Error("not supported");let d=e(i.data,r,pZ(a,h));pK(a),o=o||void 0!==d,void 0===d&&(d=i.data);let u=t(i.children,r,a);return void 0!==u?o=!0:u=i.children,{...i,id:h,data:d,children:u}});if(o)return h}(t,i,r);return void 0!==a&&Object.setPrototypeOf(a,Object.getPrototypeOf(t)),a}if(t instanceof pV)return function(t,i,r){let a=!1,o=t.map(t=>{let o=t.id,h=i[o];if(void 0!==h&&"string"==typeof h&&(a=!0,o=h,null!==r))throw Error("not supported");let c=e(t.data,i,pZ(r,o));return pK(r),a=a||void 0!==c,void 0===c&&(c=t.data),{...t,id:o,data:c}});if(a)return Object.setPrototypeOf(o,Object.getPrototypeOf(t)),o}(t,i,r);if(Array.isArray(t)){let a=!1,o=t.map((t,o)=>{let h=e(t,i,pZ(r,o));return pK(r),a=a||void 0!==h,void 0===h&&(h=t),h});return a?(Object.setPrototypeOf(o,Object.getPrototypeOf(t)),o):void 0}if(t&&"object"==typeof t&&!pU(t)){let a={},o=!1;for(let[h,c]of Object.entries(t))if("name"!==h&&"variableId"!==h){let t=i[h];if("string"==typeof t){if(null!==r)throw Error("not supported");o=!0,h=t}let d=e(c,i,pZ(r,h));pK(r),o=o||void 0!==d,void 0===d&&(d=c),a[h]=d}else a[h]=c;return o?(Object.setPrototypeOf(a,Object.getPrototypeOf(t)),a):void 0}{var a;if("string"!=typeof t)return;let e=i[t];return void 0!==e&&(a=r,null!==a&&a.result.push(a.cur.slice(0,a.len))),e}}(e,t,i)??e,i.result]}(i,{[e.id]:t});i=c;for(let h=0;h<d.length;h++){let c=d[h],u=c.pop();if("number"==typeof u){let r=[u];for(let e=h+1;e<d.length;e++){let t=d[e],i=t[t.length-1];if("number"==typeof i&&fp.equal(c,t.slice(0,t.length-1)))r.push(i),d.splice(e,1);else break}let a=fp.zoom(i,c);o=a.map((t,i)=>r.includes(i)?e.id:t),t=a,u=c.pop()}else{if("alphaOverride"===u||"alpha"===u){let e=t/=100,r=fp.zoom(i,c.slice(0,c.length-2)),a=r.layers.map(t=>t.id===c[c.length-1]?{...t,data:{...t.data,[u]:e}}:t);Object.setPrototypeOf(a,Object.getPrototypeOf(r.layers)),r.layers=a}o=e.id}r.push({type:0,path:c,props:{[u]:t}}),a.push({type:0,path:c,props:{[u]:o}})}a.push(h.reverse),r.push(h.actual)}}else{let t=fd.apply(i,e);null!==t&&(r.push(t.actual),i=t.data,a.push(t.reverse))}}catch(e){if(e instanceof pz)return null;throw e}return{data:i,actual:r,reverse:a.reverse()}}e.empty=function(){return[]},e.removePrefix=function(e,t){let i=[];for(let r of e){let[e,...a]=r.path;e===t&&i.push({...r,path:a})}return i},e.addPrefix=function(e,t){return e.map(e=>({...e,path:[t,...e.path]}))},e.concat=function(e,t){return[...e,...t]},e.compress=function(e,t){return[...e.filter(e=>!t.some(t=>fd.subsumed(e,t))),...t]},e.commutative=function(e,t){return e.every(e=>t.every(t=>fd.commutative(e,t)))},e.applyAll=function(e,i){for(let r of i){let i=t(e,r);null!==i&&(e=i.data)}return e},e.apply=t})(fu||(fu={}));var pJ=Symbol(),p$=Symbol(),p0=Symbol(),p1=class{reportOp(e,t,i=[]){let r=this;if(null!==t){for(r._current=t.data;!(r instanceof fe);){let e=r._path,t=r._current;if(""!==e&&i.splice(0,0,e),null===(r=r._parent))return;r.update(e,t)}r.push(i,e,t.actual,t.reverse)}}deleteChildren(e){if(this._children){let t=this._children[e];if(t){let i=t[p0];i&&i(),delete this._children[e]}}}},p2=class extends p1{constructor(e,t,i){super(),this._parent=e,this._path=t,this._current=i}update(e,t){if(Array.isArray(this._current)){if("string"==typeof e&&isNaN(e=parseInt(e)))throw Error("Invalid path");this._current=[...this._current],this._current[e]=t}else if(this._current instanceof pq){let i={...this._current,[e]:t};this._current=Object.setPrototypeOf(i,pq.prototype)}else this._current={...this._current,[e]:t}}runOp(e){this.reportOp(e,pH.runOp(this._current,e),e.path)}},p3=class extends p1{constructor(e,t,i){super(),this._parent=e,this._path=t,this._current=i}update(e,t){this._current={...this._current,[e]:t},Object.setPrototypeOf(this._current,pL.prototype)}runOp(e){this.reportOp(e,this._current.runOp(e))}},p4={get(e,t){if(t===p0)return()=>{e._parent=null};if(t===pJ)return e._current;if(t===p$)return e;let{_current:i,_children:r}=e;if("push"===t&&Array.isArray(i))throw Error("not supported to expand array");let a=void 0===r?void 0:r[t];if(void 0!==a)return a;let o=i[t],h=ft(e,t,o);return h!==o?(void 0===r&&(r={},e._children=r),r[t]=h,h):o},has:(e,t)=>t in e._current,ownKeys:e=>Reflect.ownKeys(e._current),defineProperty(){throw Error("not supported")},getPrototypeOf:e=>Object.getPrototypeOf(e._current),setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(e,t){let i=e._current,r=Reflect.getOwnPropertyDescriptor(i,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:i[t]}}},p5={...p4,set(e,t,i){let r={type:0,props:{[t]:fs(i)??i}};return e.deleteChildren(t),e.runOp(r),!0},deleteProperty:(e,t)=>(e.deleteChildren(t),e.runOp({type:0,props:{[t]:void 0}}),!0)},p6={...p4,set(e,t,i){return void 0===i?this.deleteProperty(e,t):(e.deleteChildren(t),e.runOp({type:1,id:t,data:i})),!0},deleteProperty:(e,t)=>(e.runOp({type:2,id:t}),!0)},p8=class extends p1{constructor(e,t,i){super(),this._children={},this._parent=e,this._path=t,this._current=i,this[p0]=()=>{this._parent=null}}unproxy(){return this._current}update(e,t){this._current=this._current.modifyById(e,t)}runOp(e){this.reportOp(e,this._current.runOp(e))}randomId(){return this._current.randomId()}isDescendantOf(e,t){return this._current.isDescendantOf(e,t)}
3139childrenOf(e){return this._current.childrenOf(e)}traverse(e){return this._current.traverse(e)}get(e){return this._current.get(e)}parent(e){return this._current.parent(e)}traverse(e){this._current.traverse((t,i)=>{e(t,this.data(t))})}data(e){let{_current:t,_children:i}=this,r=void 0===i?void 0:i[e];if(void 0!==r)return r;let a=t.get(e)?.data,o=ft(this,e,a);return o!==a?(void 0===i&&(i={},this._children=i),i[e]=o,o):a}add(e,t,i,r,a){this.runOp({type:7,parent:e,fi:t,id:i,data:r,children:a})}move(e,t,i){this.runOp({type:9,parent:e,fi:t,id:i})}insertAfter(e,t,i){let r=this._current.insertAfterHelper(e,t,i.length);for(let t=0;t<i.length;t++){let a=i[t];this.add(e,r[t],a.id,a.data,a.children)}}insertBefore(e,t,i){let r=this._current.insertBeforeHelper(e,t,i.length);for(let t=0;t<i.length;t++){let a=i[t];this.add(e,r[t],a.id,a.data,a.children)}}moveAfter(e,t,i){let r=this._current.insertAfterHelper(e,t,i.length);for(let t=0;t<i.length;t++){let a=i[t];this.move(e,r[t],a)}}moveBefore(e,t,i){let r=this._current.insertBeforeHelper(e,t,i.length);for(let t=0;t<i.length;t++){let a=i[t];this.move(e,r[t],a)}}delete(e){this.deleteChildren(e),this.runOp({type:8,id:e})}sortNext(e){return this._current.sortNext(e)}sortPrevious(e){return this._current.sortPrevious(e)}getAllSorted(e){return this._current.getAllSorted(e)}},p9=class extends p1{constructor(e,t,i){super(),this._children={},this._parent=e,this._path=t,this._current=i,this[p0]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(e){let t=this.length;for(let i=0;i<t;i++){let t=this._current[i].id,r=this._current[i].fi;e(this.data(this._current[i].id),t,r)}}find(e){let t=this.length;for(let i=0;i<t;i++){let t=this._current[i].id;if(e(this.data(t),t))return this.get(t)}}update(e,t){this._current=this._current.modifyById(e,t)}randomId(){return this._current.randomId()}get(e){return{...this._current.get(e),data:this.data(e)}}data(e){let{_current:t,_children:i}=this,r=void 0===i?void 0:i[e];if(void 0!==r)return r;let a=t.get(e)?.data,o=ft(this,e,a);return o!==a?(void 0===i&&(i={},this._children=i),i[e]=o,o):a}runOp(e){this.reportOp(e,this._current.runOp(e))}add(e,t,i){this.runOp({type:4,fi:e,id:t,data:i})}move(e,t){this.runOp({type:6,fi:e,id:t})}insertAfter(e,t){let i=this._current.insertAfterHelper(e,t.length);for(let e=0;e<t.length;e++){let r=t[e];this.add(i[e],r.id,r.data)}}insertBefore(e,t){let i=this._current.insertBeforeHelper(e,t.length);for(let e=0;e<t.length;e++){let r=t[e];this.add(i[e],r.id,r.data)}}moveAfter(e,t){let i=this._current.insertAfterHelper(e,t.length);for(let e=0;e<t.length;e++){let r=t[e];this.move(i[e],r)}}moveBefore(e,t){let i=this._current.insertBeforeHelper(e,t.length);for(let e=0;e<t.length;e++){let r=t[e];this.move(i[e],r)}}delete(e){this.deleteChildren(e),this.runOp({type:5,id:e})}};function p7(e,t,i){if(e.length>0){let r=e[e.length-1];if(0===r.type&&0===t.type&&fp.equal(r.path,i)){Object.assign(r.props,t.props);return}}e.push({...t,path:i})}var fe=class extends p1{constructor(e){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=e}update(e,t){if(""!==e)throw Error("");this._current=t}push(e,t,i,r){p7(this.ts,t,e),p7(this.actual,i,e),p7(this.reverse,r,e)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function ft(e,t,i){return i instanceof pk?new p8(e,t,i):i instanceof pV?new p9(e,t,i):i instanceof pL?new Proxy(new p3(e,t,i),p6):null!==i&&"object"==typeof i?pU(i)?i:new Proxy(new p2(e,t,i),p5):i}function fi(e){let t=new fe(e);return[ft(t,"",e),t]}function fr(e,t){let[i,r]=fi(e);return t(i),r.result()}function fs(e){return e instanceof p8||e instanceof p9?e._current:null!==e&&"object"==typeof e?e[pJ]:e}function fa(e,t){let i=[];if(!(t.length<=e.length))return null;for(var r=0;r<t.length;){if("*"===t[r])i.push(e[r]);else if(e[r]!==t[r])return null;r+=1}return i}(e=>{function t(e,t){return(e instanceof pk||e instanceof p8)&&"string"==typeof t||(e instanceof pV||e instanceof p9)&&"string"==typeof t?e.data(t):"number"==typeof t&&Array.isArray(e)||"string"==typeof t&&"object"==typeof e&&null!==e?e[t]:void 0}function i(e,i,r=0){for(;r<i.length&&void 0!==e;)e=t(e,i[r]),r+=1;return e}e.equal=function(e,t){if(t.length!==e.length)return!1;for(var i=0;i<e.length;){if(e[i]!==t[i])return!1;i+=1}return!0},e.removeOverridden=function(e,t,r){let a=i(r,e);if(void 0===a||"object"!=typeof a||null===a)return t;{let e={...t};
3139return Object.keys(a).forEach(t=>{delete e[t]}),e}},e.zoomOnce=t,e.zoom=i})(fp||(fp={}));var fn=class{},fo=class extends fn{constructor(e){super(),this.id=e}},fl=class extends fn{constructor(e){super(),this.data=e}};try{ff=new TextDecoder}catch{}var fh,fc,fd,fu,fp,ff,fm,fg,fv,fy,fx,fb,fw,fS=0,f_=[],fA=f_,fM=0,fE={},fC=0,fT=0,fP=[],fD={useRecords:!1,mapsAsObjects:!0},fO=class{},fI=new fO;fI.name="MessagePack 0xC1";var fR=!1,fL=class{constructor(e){e&&(!1===e.useRecords&&void 0===e.mapsAsObjects&&(e.mapsAsObjects=!0),e.structures?e.structures.sharedLength=e.structures.length:e.getStructures&&((e.structures=[]).uninitialized=!0,e.structures.sharedLength=0)),Object.assign(this,e)}unpack(e,t){if(fm)return f5(()=>(f6(),this?this.unpack(e,t):fL.prototype.unpack.call(fD,e,t)));fg=t>-1?t:e.length,fS=0,fM=0,fT=0,fy=null,fA=f_,fx=null,fm=e;try{fw=e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))}catch(t){throw fm=null,e instanceof Uint8Array?t:Error("Source must be a Uint8Array or Buffer but was a "+(e&&"object"==typeof e?e.constructor.name:typeof e))}if(this instanceof fL){if(fE=this,this.structures)return fv=this.structures,fB();(!fv||fv.length>0)&&(fv=[])}else fE=fD,(!fv||fv.length>0)&&(fv=[]);return fB()}unpackMultiple(e,t){let i,r=0;try{fR=!0;let a=e.length,o=this?this.unpack(e,a):f9.unpack(e,a);if(t){for(t(o);fS<a;)if(r=fS,!1===t(fB()))return}else{for(i=[o];fS<a;)r=fS,i.push(fB());return i}}catch(e){throw e.lastPosition=r,e.values=i,e}finally{fR=!1,f6()}}_mergeStructures(e,t){e=e||[];for(let t=0,i=e.length;t<i;t++){let i=e[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}for(let i in e.sharedLength=e.length,t||[])if(i>=0){let r=e[i],a=t[i];a&&(r&&((e.restoreStructures||(e.restoreStructures=[]))[i]=r),e[i]=a)}return this.structures=e}decode(e,t){return this.unpack(e,t)}};function fB(){try{if(!fE.trusted&&!fR){let e=fv.sharedLength||0;e<fv.length&&(fv.length=e)}let e=fF();if(fS==fg)fv.restoreStructures&&fz(),fv=null,fm=null,fb&&(fb=null);else if(fS>fg){let e=Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}else if(!fR)throw Error("Data read, but end of buffer not reached");return e}catch(e){throw fv.restoreStructures&&fz(),f6(),(e instanceof RangeError||e.message.startsWith("Unexpected end of buffer"))&&(e.incomplete=!0),e}}function fz(){for(let e in fv.restoreStructures)fv[e]=fv.restoreStructures[e];fv.restoreStructures=null}function fF(){let e=fm[fS++];if(e<160){if(e<128){if(e<64)return e;{let t=fv[63&e]||fE.getStructures&&fV()[63&e];return t?(t.read||(t.read=fU(t,63&e)),t.read()):e}}if(e<144){if(e-=128,fE.mapsAsObjects){let t={};for(let i=0;i<e;i++)t[f1()]=fF();return t}{let t=new Map;for(let i=0;i<e;i++)t.set(fF(),fF());return t}}{let t=Array(e-=144);for(let i=0;i<e;i++)t[i]=fF();return t}}if(e<192){let t=e-160;if(fT>=fS)return fy.slice(fS-fC,(fS+=t)-fC);if(0==fT&&fg<140){let e=t<16?fK(t):fZ(t);if(null!=e)return e}return fj(t)}{let t;switch(e){case 192:return null;case 193:return fx?(t=fF())>0?fx[1].slice(fx.position1,fx.position1+=t):fx[0].slice(fx.position0,fx.position0-=t):fI;case 194:return!1;case 195:return!0;case 196:return fJ(fm[fS++]);case 197:return t=fw.getUint16(fS),fS+=2,fJ(t);case 198:return t=fw.getUint32(fS),fS+=4,fJ(t);case 199:return f$(fm[fS++]);case 200:return t=fw.getUint16(fS),fS+=2,f$(t);case 201:return t=fw.getUint32(fS),fS+=4,f$(t);case 202:if(t=fw.getFloat32(fS),fE.useFloat32>2){let e=f8[(127&fm[fS])<<1|fm[fS+1]>>7];return fS+=4,(e*t+(t>0?.5:-.5)>>0)/e}return fS+=4,t;case 203:return t=fw.getFloat64(fS),fS+=8,t;case 204:return fm[fS++];case 205:return t=fw.getUint16(fS),fS+=2,t;case 206:return t=fw.getUint32(fS),fS+=4,t;case 207:return t=fE.int64AsNumber?4294967296*fw.getUint32(fS)+fw.getUint32(fS+4):fw.getBigUint64(fS),fS+=8,t;case 208:return fw.getInt8(fS++);case 209:return t=fw.getInt16(fS),fS+=2,t;case 210:return t=fw.getInt32(fS),fS+=4,t;case 211:return t=fE.int64AsNumber?4294967296*fw.getInt32(fS)+fw.getUint32(fS+4):fw.getBigInt64(fS),fS+=8,t;case 212:if(114==(t=fm[fS++]))return f2(63&fm[fS++]);{let e=fP[t];if(e)return e.read?(fS++,e.read(fF())):e.noBuffer?(fS++,e()):e(fm.subarray(fS,
3139++fS));throw Error("Unknown extension "+t)}case 213:return 114==(t=fm[fS])?(fS++,f2(63&fm[fS++],fm[fS++])):f$(2);case 214:return f$(4);case 215:return f$(8);case 216:return f$(16);case 217:return t=fm[fS++],fT>=fS?fy.slice(fS-fC,(fS+=t)-fC):fG(t);case 218:return t=fw.getUint16(fS),fS+=2,fT>=fS?fy.slice(fS-fC,(fS+=t)-fC):fH(t);case 219:return t=fw.getUint32(fS),fS+=4,fT>=fS?fy.slice(fS-fC,(fS+=t)-fC):fW(t);case 220:return t=fw.getUint16(fS),fS+=2,fX(t);case 221:return t=fw.getUint32(fS),fS+=4,fX(t);case 222:return t=fw.getUint16(fS),fS+=2,fY(t);case 223:return t=fw.getUint32(fS),fS+=4,fY(t);default:if(e>=224)return e-256;if(void 0===e){let e=Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw Error("Unknown MessagePack token "+e)}}}var fN=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function fU(e,t){function i(){if(i.count++>2){let i=e.read=Function("r","return function(){return {"+e.map(e=>fN.test(e)?e+":r()":"["+JSON.stringify(e)+"]:r()").join(",")+"}}")(fF);return 0===e.highByte&&(e.read=fk(t,e.read)),i()}let r={};for(let t=0,i=e.length;t<i;t++)r[e[t]]=fF();return r}return i.count=0,0===e.highByte?fk(t,i):i}var fk=(e,t)=>function(){let i=fm[fS++];if(0===i)return t();let r=e<32?-(e+(i<<5)):e+(i<<5),a=fv[r]||fV()[r];if(!a)throw Error("Record id is not defined for "+r);return a.read||(a.read=fU(a,e)),a.read()};function fV(){let e=f5(()=>(fm=null,fE.getStructures()));return fv=fE._mergeStructures(e,fv)}var fj=fq,fG=fq,fH=fq,fW=fq;function fq(e){let t;if(e<16&&(t=fK(e)))return t;if(e>64&&ff)return ff.decode(fm.subarray(fS,fS+=e));let i=fS+e,r=[];for(t="";fS<i;){let e=fm[fS++];if((128&e)==0)r.push(e);else if((224&e)==192){let t=63&fm[fS++];r.push((31&e)<<6|t)}else if((240&e)==224){let t=63&fm[fS++],i=63&fm[fS++];r.push((31&e)<<12|t<<6|i)}else if((248&e)==240){let t=(7&e)<<18|(63&fm[fS++])<<12|(63&fm[fS++])<<6|63&fm[fS++];t>65535&&(t-=65536,r.push(t>>>10&1023|55296),t=56320|1023&t),r.push(t)}else r.push(e);r.length>=4096&&(t+=fQ.apply(String,r),r.length=0)}return r.length>0&&(t+=fQ.apply(String,r)),t}function fX(e){let t=Array(e);for(let i=0;i<e;i++)t[i]=fF();return t}function fY(e){if(fE.mapsAsObjects){let t={};for(let i=0;i<e;i++)t[f1()]=fF();return t}{let t=new Map;for(let i=0;i<e;i++)t.set(fF(),fF());return t}}var fQ=String.fromCharCode;function fZ(e){let t=fS,i=Array(e);for(let r=0;r<e;r++){let e=fm[fS++];if((128&e)>0){fS=t;return}i[r]=e}return fQ.apply(String,i)}function fK(e){if(e<4){if(e<2){if(0===e)return"";{let e=fm[fS++];if((128&e)>1){fS-=1;return}return fQ(e)}}{let t=fm[fS++],i=fm[fS++];if((128&t)>0||(128&i)>0){fS-=2;return}if(e<3)return fQ(t,i);let r=fm[fS++];if((128&r)>0){fS-=3;return}return fQ(t,i,r)}}{let t=fm[fS++],i=fm[fS++],r=fm[fS++],a=fm[fS++];if((128&t)>0||(128&i)>0||(128&r)>0||(128&a)>0){fS-=4;return}if(e<6){if(4===e)return fQ(t,i,r,a);{let e=fm[fS++];if((128&e)>0){fS-=5;return}return fQ(t,i,r,a,e)}}if(e<8){let o=fm[fS++],h=fm[fS++];if((128&o)>0||(128&h)>0){fS-=6;return}if(e<7)return fQ(t,i,r,a,o,h);let c=fm[fS++];if((128&c)>0){fS-=7;return}return fQ(t,i,r,a,o,h,c)}{let o=fm[fS++],h=fm[fS++],c=fm[fS++],d=fm[fS++];if((128&o)>0||(128&h)>0||(128&c)>0||(128&d)>0){fS-=8;return}if(e<10){if(8===e)return fQ(t,i,r,a,o,h,c,d);{let e=fm[fS++];if((128&e)>0){fS-=9;return}return fQ(t,i,r,a,o,h,c,d,e)}}if(e<12){let u=fm[fS++],p=fm[fS++];if((128&u)>0||(128&p)>0){fS-=10;return}if(e<11)return fQ(t,i,r,a,o,h,c,d,u,p);let f=fm[fS++];if((128&f)>0){fS-=11;return}return fQ(t,i,r,a,o,h,c,d,u,p,f)}{let u=fm[fS++],p=fm[fS++],f=fm[fS++],m=fm[fS++];if((128&u)>0||(128&p)>0||(128&f)>0||(128&m)>0){fS-=12;return}if(e<14){if(12===e)return fQ(t,i,r,a,o,h,c,d,u,p,f,m);{let e=fm[fS++];if((128&e)>0){fS-=13;return}return fQ(t,i,r,a,o,h,c,d,u,p,f,m,e)}}{let g=fm[fS++],v=fm[fS++];if((128&g)>0||(128&v)>0){fS-=14;return}if(e<15)return fQ(t,i,r,a,o,h,c,d,u,p,f,m,g,v);let y=fm[fS++];if((128&y)>0){fS-=15;return}return fQ(t,i,r,a,o,h,c,d,u,p,f,m,g,v,y)}}}}}function fJ(e){return fE.copyBuffers?Uint8Array.prototype.slice.call(fm,fS,fS+=e):fm.subarray(fS,fS+=e)}function f$(e){let t=fm[fS++];if(fP[t])return fP[t](fm.subarray(fS,fS+=e));throw Error("Unknown extension type "+t)}var f0=Array(4096);function f1(){let e=fm[fS++];if(!(e>=160)||!(e<192))return fS--,fF();if(e-=160,fT>=fS)return fy.slice(fS-fC,(fS+=e)-fC);
3139if(!(0==fT&&fg<180))return fj(e);let t=(e<<5^(e>1?fw.getUint16(fS):e>0?fm[fS]:0))&4095,i=f0[t],r=fS,a=fS+e-3,o,h=0;if(i&&i.bytes==e){for(;r<a;){if((o=fw.getUint32(r))!=i[h++]){r=1879048192;break}r+=4}for(a+=3;r<a;)if((o=fm[r++])!=i[h++]){r=1879048192;break}if(r===a)return fS=r,i.string;a-=3,r=fS}for(i=[],f0[t]=i,i.bytes=e;r<a;)o=fw.getUint32(r),i.push(o),r+=4;for(a+=3;r<a;)o=fm[r++],i.push(o);let c=e<16?fK(e):fZ(e);return null!=c?i.string=c:i.string=fj(e)}var f2=(e,t)=>{var i=fF();let r=e;void 0!==t&&(e=e<32?-((t<<5)+e):(t<<5)+e,i.highByte=t);let a=fv[e];return a&&a.isShared&&((fv.restoreStructures||(fv.restoreStructures=[]))[e]=a),fv[e]=i,i.read=fU(i,r),i.read()},f3="object"==typeof self?self:global;fP[0]=()=>{},fP[0].noBuffer=!0,fP[101]=()=>{let e=fF();return(f3[e[0]]||Error)(e[1])},fP[105]=e=>{let t=fw.getUint32(fS-4);fb||(fb=new Map);let i=fm[fS],r,a={target:r=i>=144&&i<160||220==i||221==i?[]:{}};fb.set(t,a);let o=fF();return a.used?Object.assign(r,o):(a.target=o,o)},fP[112]=e=>{let t=fw.getUint32(fS-4),i=fb.get(t);return i.used=!0,i.target},fP[115]=()=>new Set(fF());var f4=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(e=>e+"Array");function f5(e){let t=fg,i=fS,r=fM,a=fC,o=fT,h=fy,c=fA,d=fb,u=fx,p=new Uint8Array(fm.slice(0,fg)),f=fv,m=fv.slice(0,fv.length),g=fE,v=fR,y=e();
3139return fg=t,fS=i,fM=r,fC=a,fT=o,fy=h,fA=c,fb=d,fx=u,fm=p,fR=v,(fv=f).splice(0,fv.length,...m),fE=g,fw=new DataView(fm.buffer,fm.byteOffset,fm.byteLength),y}function f6(){fm=null,fb=null,fv=null}fP[116]=e=>{let t=e[0],i=f4[t];if(!i)throw Error("Could not find typed array for code "+t);return new f3[i](Uint8Array.prototype.slice.call(e,1).buffer)},fP[120]=()=>{let e=fF();return new RegExp(e[0],e[1])},fP[98]=e=>{let t=(e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3],i=fS;fS+=t-4,(fx=[fF(),fF()]).position0=0,fx.position1=0;let r=fS;fS=i;try{return fF()}finally{fS=r}},fP[255]=e=>new Date(4==e.length?(16777216*e[0]+(e[1]<<16)+(e[2]<<8)+e[3])*1e3:8==e.length?((e[0]<<22)+(e[1]<<14)+(e[2]<<6)+(e[3]>>2))/1e6+((3&e[3])*4294967296+16777216*e[4]+(e[5]<<16)+(e[6]<<8)+e[7])*1e3:12==e.length?((e[0]<<24)+(e[1]<<16)+(e[2]<<8)+e[3])/1e6+((128&e[4]?-281474976710656:0)+1099511627776*e[6]+4294967296*e[7]+16777216*e[8]+(e[9]<<16)+(e[10]<<8)+e[11])*1e3:"invalid");var f8=Array(147);for(let e=0;e<256;e++)f8[e]=+("1e"+Math.floor(45.15-.30103*e));var f9=new fL({useRecords:!1});new Uint8Array((f9.unpack,f9.unpackMultiple,f9.unpack,new Float32Array(1)).buffer,0,4);try{f7=new TextEncoder}catch{}var f7,me,mt,mi,mr,ms,ma="u">typeof tf,mn=ma?tf.allocUnsafeSlow:Uint8Array,mo=ma?tf:Uint8Array,ml=ma?4294967296:2144337920,mh=0,mc=null,md=/[\u0080-\uFFFF]/,mu=Symbol("record-id"),mp=class extends fL{constructor(e){super(e),this.offset=0;let t,i,r,a,o,h=0,c=mo.prototype.utf8Write?function(e,t,i){return mi.utf8Write(e,t,i)}:!!f7&&!!f7.encodeInto&&function(e,t){return f7.encodeInto(e,mi.subarray(t)).written},d=this;e||(e={});let u=e&&e.sequential,p=e.structures||e.saveStructures,f=e.maxSharedStructures;if(null==f&&(f=p?32:0),f>8160)throw Error("Maximum maxSharedStructure is 8160");let m=e.maxOwnStructures;null==m&&(m=p?32:64),u&&!e.saveStructures&&(this.structures=[]);let g=f>32||m+f>64,v=f+64,y=f+m+64;if(y>8256)throw Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],b=0,w=0;this.pack=this.encode=function(e,c){if(mi||(mr=new DataView((mi=new mn(8192)).buffer,0,8192),mh=0),(ms=mi.length-10)-mh<2048?(mr=new DataView((mi=new mn(mi.length)).buffer,0,mi.length),ms=mi.length-10,mh=0):mh=mh+7&2147483640,t=mh,o=d.structuredClone?new Map:null,d.bundleStrings?(mc=["",""],mi[mh++]=214,mi[mh++]=98,mc.position=mh-t,mh+=4):mc=null,i=d.structures){i.uninitialized&&(i=d._mergeStructures(d.getStructures()));let e=i.sharedLength||0;if(e>f)throw Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+i.sharedLength);if(!i.transitions){i.transitions=Object.create(null);for(let t=0;t<e;t++){let e=i[t];if(!e)continue;let r,a=i.transitions;for(let t=0,i=e.length;t<i;t++){let i=e[t];(r=a[i])||(r=a[i]=Object.create(null)),a=r}a[mu]=t+64}h=e}u||(i.nextId=e+64)}r&&(r=!1),a=i||[];try{if(S(e),mc){mr.setUint32(mc.position+t,mh-mc.position-t);let e=mc;mc=null,S(e[0]),S(e[1])}if(d.offset=mh,o&&o.idsToInsert){(mh+=6*o.idsToInsert.length)>ms&&A(mh),d.offset=mh;let e=function(e,t){let i,r=6*t.length,a=e.length-r;for(t.sort((e,t)=>e.offset>t.offset?1:-1);i=t.pop();){let t=i.offset,o=i.id;e.copyWithin(t+r,t,a);let h=t+(r-=6);e[h++]=214,e[h++]=105,e[h++]=o>>24,e[h++]=o>>16&255,e[h++]=o>>8&255,e[h++]=255&o,a=t}return e}(mi.subarray(t,mh),o.idsToInsert);return o=null,e}return c&mS?(mi.start=t,mi.end=mh,mi):mi.subarray(t,mh)}finally{if(i){if(w<10&&w++,b>1e4)i.transitions=null,w=0,b=0,x.length>0&&(x=[]);else if(x.length>0&&!u){for(let e=0,t=x.length;e<t;e++)x[e][mu]=0;x=[]}if(r&&d.saveStructures){let r=i.sharedLength||f;i.length>r&&(i=i.slice(0,r));let a=mi.subarray(t,mh);return!1===d.saveStructures(i,h)?(d._mergeStructures(d.getStructures()),d.pack(e)):(h=r,a)}}c&m_&&(mh=t)}};let S=e=>{mh>ms&&(mi=A(mh));var i,r=typeof e;if("string"===r){let t,r=e.length;if(mc&&r>=8&&r<4096){let t=md.test(e);mc[t?0:1]+=e,mi[mh++]=193,S(t?-r:r);return}t=r<32?1:r<256?2:r<65536?3:5;let a=3*r;if(mh+a>ms&&(mi=A(mh+a)),r<64||!c){let a,o,h,c=mh+t;for(a=0;a<r;a++)(o=e.charCodeAt(a))<128?mi[c++]=o:(o<2048?mi[c++]=o>>6|192:((64512&o)==55296&&(64512&(h=e.charCodeAt(a+1)))==56320?(o=65536+((1023&o)<<10)+(1023&h),a++,mi[c++]=o>>18|240,mi[c++]=o>>12&63|128):mi[c++]=o>>12|224,mi[c++]=o>>6&63|128),mi[c++]=63&o|128);i=c-mh-t}else i=c(e,mh+t,a);i<32?mi[mh++]=160|i:i<256?(t<2&&mi.copyWithin(mh+2,mh+1,mh+1+i),mi[mh++]=217,mi[mh++]=i):i<65536?(t<3&&mi.copyWithin(mh+3,mh+2,mh+2+i),mi[mh++]=218,mi[mh++]=i>>8,mi[mh++]=255&i):(t<5&&mi.copyWithin(mh+5,mh+3,mh+3+i),mi[mh++]=219,mr.setUint32(mh,i),mh+=4),mh+=i}else if("number"===r){if(e>>>0===e)e<64?mi[mh++]=e:e<256?(mi[mh++]=204,mi[mh++]=e):e<65536?(mi[mh++]=205,mi[mh++]=e>>8,mi[mh++]=255&e):(mi[mh++]=206,mr.setUint32(mh,e),mh+=4);else if(e>>0===e)e>=-32?mi[mh++]=256+e:e>=-128?(mi[mh++]=208,mi[mh++]=e+256):e>
3139=-32768?(mi[mh++]=209,mr.setInt16(mh,e),mh+=2):(mi[mh++]=210,mr.setInt32(mh,e),mh+=4);else{let t;if((t=this.useFloat32)>0&&e<4294967296&&e>=-2147483648){let i;if(mi[mh++]=202,mr.setFloat32(mh,e),t<4||(i=e*f8[(127&mi[mh])<<1|mi[mh+1]>>7])>>0===i){mh+=4;return}mh--}mi[mh++]=203,mr.setFloat64(mh,e),mh+=8}}else if("object"===r){if(e){if(o){let i=o.get(e);if(i){if(!i.id){let e=o.idsToInsert||(o.idsToInsert=[]);i.id=e.push(i)}mi[mh++]=214,mi[mh++]=112,mr.setUint32(mh,i.id),mh+=4;return}o.set(e,{offset:mh-t})}let r=e.constructor;if(r===Object)_(e,!0);else if(r===Array){(i=e.length)<16?mi[mh++]=144|i:i<65536?(mi[mh++]=220,mi[mh++]=i>>8,mi[mh++]=255&i):(mi[mh++]=221,mr.setUint32(mh,i),mh+=4);for(let t=0;t<i;t++)S(e[t])}else if(r===Map)for(let[t,r]of((i=e.size)<16?mi[mh++]=128|i:i<65536?(mi[mh++]=222,mi[mh++]=i>>8,mi[mh++]=255&i):(mi[mh++]=223,mr.setUint32(mh,i),mh+=4),e))S(t),S(r);else{for(let t=0,i=me.length;t<i;t++)if(e instanceof mt[t]){let i,r=me[t];if(r.write){r.type&&(mi[mh++]=212,mi[mh++]=r.type,mi[mh++]=0),S(r.write.call(this,e));return}let a=mi,o=mr,h=mh;mi=null;try{i=r.pack.call(this,e,e=>(mi=a,a=null,(mh+=e)>ms&&A(mh),{target:mi,targetView:mr,position:mh-e}),S)}finally{a&&(mi=a,mr=o,mh=h,ms=mi.length-10)}i&&(i.length+mh>ms&&A(i.length+mh),mh=function(e,t,i,r){let a=e.length;switch(a){case 1:t[i++]=212;break;case 2:t[i++]=213;break;case 4:t[i++]=214;break;case 8:t[i++]=215;break;case 16:t[i++]=216;break;default:a<256?(t[i++]=199,t[i++]=a):(a<65536?(t[i++]=200,t[i++]=a>>8):(t[i++]=201,t[i++]=a>>24,t[i++]=a>>16&255,t[i++]=a>>8&255),t[i++]=255&a)}return t[i++]=r,t.set(e,i),i+=a}(i,mi,mh,r.type));return}_(e,!e.hasOwnProperty)}}else mi[mh++]=192}else if("boolean"===r)mi[mh++]=e?195:194;else if("bigint"===r){if(e<BigInt(1)<<BigInt(63)&&e>=-(BigInt(1)<<BigInt(63)))mi[mh++]=211,mr.setBigInt64(mh,e);else if(e<BigInt(1)<<BigInt(64)&&e>0)mi[mh++]=207,mr.setBigUint64(mh,e);else if(this.largeBigIntToFloat)mi[mh++]=203,mr.setFloat64(mh,Number(e));else throw RangeError(e+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");mh+=8}else if("undefined"===r)this.encodeUndefinedAsNil?mi[mh++]=192:(mi[mh++]=212,mi[mh++]=0,mi[mh++]=0);else if("function"===r)S(this.writeFunction&&this.writeFunction());else throw Error("Unknown type: "+r)},_=!1===this.useRecords?this.variableMapSize?e=>{let t,i=Object.keys(e),r=i.length;r<16?mi[mh++]=128|r:r<65536?(mi[mh++]=222,mi[mh++]=r>>8,mi[mh++]=255&r):(mi[mh++]=223,mr.setUint32(mh,r),mh+=4);for(let a=0;a<r;a++)S(t=i[a]),S(e[t])}:(e,i)=>{mi[mh++]=222;let r=mh-t;mh+=2;let a=0;for(let t in e)(i||e.hasOwnProperty(t))&&(S(t),S(e[t]),a++);mi[r+++t]=a>>8,mi[r+t]=255&a}:e=>{let t=Object.keys(e),i,o=a.transitions||(a.transitions=Object.create(null)),h=0;for(let e=0,r=t.length;e<r;e++){let r=t[e];(i=o[r])||(i=o[r]=Object.create(null),h++),o=i}let c=o[mu];if(c)c>=96&&g?(mi[mh++]=(31&(c-=96))+96,mi[mh++]=c>>5):mi[mh++]=c;else{(c=a.nextId)||(c=64),c<v&&this.shouldShareStructure&&!this.shouldShareStructure(t)?((c=a.nextOwnId)<y||(c=v),a.nextOwnId=c+1):(c>=y&&(c=v),a.nextId=c+1);let e=t.highByte=c>=96&&g?c-96>>5:-1;o[mu]=c,a[c-64]=t,c<v?(t.isShared=!0,a.sharedLength=c-63,r=!0,e>=0?(mi[mh++]=(31&c)+96,mi[mh++]=e):mi[mh++]=c):(e>=0?(mi[mh++]=213,mi[mh++]=114,mi[mh++]=(31&c)+96,mi[mh++]=e):(mi[mh++]=212,mi[mh++]=114,mi[mh++]=c),h&&(b+=w*h),x.length>=m&&(x.shift()[mu]=0),x.push(o),S(t))}for(let i=0,r=t.length;i<r;i++)S(e[t[i]])},A=e=>{let i;if(e>16777216){if(e-t>ml)throw Error("Packed buffer would be larger than maximum buffer size");i=Math.min(ml,4096*Math.round(Math.max((e-t)*(e>67108864?1.25:2),4194304)/4096))}else i=(Math.max(e-t<<2,mi.length-1)>>12)+1<<12;let r=new mn(i);return mr=new DataView(r.buffer,0,i),mi.copy?mi.copy(r,0,t,e):r.set(mi.slice(t,e)),mh-=t,t=0,ms=r.length-10,mi=r}}useBuffer(e){mr=new DataView((mi=e).buffer,mi.byteOffset,mi.byteLength),mh=0}};function mf(e,t,i,r){let a=e.byteLength;if(a+1<256){var{target:o,position:h}=i(4+a);o[h++]=199,o[h++]=a+1}else if(a+1<65536){var{target:o,position:h}=i(5+a);o[h++]=200,o[h++]=a+1>>8,o[h++]=a+1&255}else{var{target:o,position:h,targetView:c}=i(7+a);o[h++]=201,c.setUint32(h,a+1),h+=4}o[h++]=116,o[h++]=t,o.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength),h)}function mm(e,t){let i=e.byteLength;if(i<256){var r,a,{target:r,position:a}=t(i+2);r[a++]=196,r[a++]=i}else if(i<65536){var{target:r,position:a}=t(i+3);r[a++]=197,r[a++]=i>>8,r[a++]=255&i}else{var{target:r,position:a,targetView:o}=t(i+5);r[a++]=198,o.setUint32(a,i),a+=4}r.set(e,a)}function mg(e){if(e.Class){if(!e.pack&&!e.write)throw Error("Extension has no pack or write function");if(e.pack&&!e.type)throw Error("Extension has no type (numeric code to identify the extension)");mt.unshift(e.Class),me.unshift(e)}e.unpack?fP[e.type]=e.unpack:fP[e.type]=e}mt=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,fO],me=[{pack(e,t,i){let r=e.getTime()/1e3;if((this.useTimestamp32||0===e.getMilliseconds())&&r>=0&&r<4294967296){let{target:e,targetView:i,position:a}=t(6);e[a++]=214,e[a++]=255,i.setUint32(a,r)}else if(r>0&&r<17179869184){let{target:i,targetView:a,position:o}=t(10);i[o++]=215,i[o++]=255,a.setUint32(o,4e6*e.getMilliseconds()+(r/1e3/4294967296>>0)),a.setUint32(o+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),i(this.onInvalidDate());let{target:e,targetView:r,position:a}=t(3);e[a++]=212,e[a++]=255,e[a++]=255}else{let{target:i,targetView:a,position:o}=t(15);i[o++]=199,i[o++]=12,i[o++]=255,a.setUint32(o,1e6*e.getMilliseconds()),a.setBigInt64(o+4,BigInt(Math.floor(r)))}}},{pack(e,t,i){let r=Array.from(e),{target:a,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(a[o++]=212,a[o++]=115,a[o++]=0),i(r)}},{pack(e,t,i){let{target:r,position:a}=t(this.structuredClone?3:0);this.structuredClone&&(r[a++]=212,r[a++]=101,r[a++]=0),i([e.name,e.message])}},{pack(e,t,i){let{target:r,position:a}=t(this.structuredClone?3:0);this.structuredClone&&(r[a++]=212,r[a++]=120,r[a++]=0),i([e.source,e.flags])}},{pack(e,t){this.structuredClone?mf(e,16,t):mm(ma?tf.from(e):new Uint8Array(e),t)}},{pack(e,t){let i=e.constructor;i!==mo&&this.structuredClone?mf(e,f4.indexOf(i.name),t):mm(e,t)}},{pack(e,t){let{target:i,position:r}=t(1);i[r]=193}}];var mv=new mp({useRecords:!1});mv.pack,mv.pack;var{NEVER:my,ALWAYS:mx,DECIMAL_ROUND:mb,DECIMAL_FIT:mw}={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},mS=512,m_=1024,mA=new mp({structuredClone:!0});function mM(e){return"MouseDown"===e||"MouseUp"===e||"KeyDown"===e||"KeyUp"===e||"Collision"===e||"Trigger"===e}mg({Class:pL.prototype.constructor,type:1,write:e=>({...e}),read:e=>
3139(Object.setPrototypeOf(e,pL.prototype),e)}),mg({Class:pV.prototype.constructor,type:2,write:e=>[...e],read:e=>(Object.setPrototypeOf(e,pV.prototype),e)}),mg({Class:pk.prototype.constructor,type:3,write:e=>[...e],read:e=>(Object.setPrototypeOf(e,pk.prototype),e)}),mg({Class:fo.prototype.constructor,type:4,write:e=>e.id,read:e=>new fo(e)}),mg({Class:fl.prototype.constructor,type:5,write:e=>e.data,read:e=>new fl(e)}),mg({Class:pq.prototype.constructor,type:6,write:e=>({...e}),read:e=>(Object.setPrototypeOf(e,pq.prototype),e)}),(e=>{function t(e){return mA.pack(e)}e.serialize=t,e.deserialize=function(e){return mA.unpack(e)},e.checksum=function(e){return(function(e){var t=0;if(0===e.length)return t;for(let i=0;i<e.length;i++)t=(t<<5)-t+e[i],t&=t;return t})(t(function e(t){if(pU(t))return t;if(Array.isArray(t))return t.map(e);if("object"!=typeof t||null===t)return t;{let i={};for(let r of Object.keys(t).sort())i[r]=e(t[r]);return Object.setPrototypeOf(i,Object.getPrototypeOf(t)),i}}(e))).toString()}})(mC||(mC={})),(mE=mT||(mT={})).toEventUIType=function(e){return"Conditional"===e.type?"Distance"===e.condition.type?"Distance":"StateChange":e.type},mE.fromEventUIType=function(e){return"Distance"===e||"StateChange"===e?"Conditional":e};var mE,mC,mT,mP,mD={LookAt:[],Follow:["Create"],DragDrop:["Transition","Animation","Audio","Particles","Create","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],MouseHover:["Transition","Animation","TimelineAnimation","Particles","Create","Destroy","SwitchCamera","SceneTransition","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],Scroll:["Transition","Animation","TimelineAnimation","Create","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],Start:["Transition","Animation","TimelineAnimation","Audio","Particles","Video","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],Conditional:["Transition","Animation","TimelineAnimation","Audio","Particles","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],MouseDown:["Transition","Animation","TimelineAnimation","Audio","Particles","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],MouseUp:["Transition","Animation","TimelineAnimation","Audio","Particles","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],MousePress:["Transition","Animation","TimelineAnimation","Audio","Particles","Video","Link","Create","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],KeyDown:["Transition","Animation","TimelineAnimation","Audio","Particles","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],KeyUp:["Transition","Animation","TimelineAnimation","Audio","Particles","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],KeyPress:["Transition","Animation","Audio","Particles","Video","Link","Create","SwitchCamera","Reset","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],GameControl:["Transition","Animation","TimelineAnimation","Audio","Particles","Create","Conditional"],Collision:["Transition","Animation","TimelineAnimation","Audio","Particles","Video","Create","Destroy","Reset","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],Trigger:["Transition","Audio","Particles","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],Resize:["Transition","Animation","Audio","Particles","Video","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],VariableChange:["Transition","Animation","Audio","Particles","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],API:["Transition","Animation","Audio","Particles","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],WEBHOOK:["Transition","Animation","Audio","Particles","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"],AIAssistantListener:["SetVariable"],AIAssistantTrigger:["Transition","Animation","Audio","Particles","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional","ClearLocalStorage","UserAPI"]};(mR=mP||(mP={})).is=function(e){return"MouseDown"===e.type||"MouseUp"===e.type||"MousePress"===e.type||"KeyDown"===e.type||"KeyUp"===e.type||"KeyPress"===e.type},mR.defaultData=function(e){return"MouseDown"===e||"MouseUp"===e||"MousePress"===e?{type:e,mode:"Object",disabled:!1,name:"",actions:new pV}
vendor: 4,293 bytes, line 3139
3139:{type:e,disabled:!1,name:"",key:void 0,actions:new pV}},(mL=m$||(m$={})).propertyDefaultData=function(e){return{type:"Property",value:[e??null,"position","x"]}},mL.valueDefaultData={type:"Literal",value:0},(mB=m0||(m0={})).comparisonDefaultData=function(e){return{type:"Comparison",operator:"==",lOperand:m$.propertyDefaultData(e),rOperand:{...m$.valueDefaultData}}},mB.distanceDefaultData=function(e){return{type:"Distance",toObject:e??null,fromObject:e??null,distance:200}},mB.stateDefaultData=function(e,t){return{type:"State",object:e??null,state:t??null}},(m1||(m1={})).isConditionalSubActions=function(e){return void 0!==e.find(e=>"ifActions"===e||"elseActions"===e)},(mz=m2||(m2={})).is=function(e){return"Conditional"===e.type},mz.defaultData=function(e){return{type:"Conditional",disabled:!1,name:"",inActions:new pV,outActions:new pV,condition:m0.distanceDefaultData(e)}},(m3||(m3={})).defaultData={type:"DragDrop",name:"",cursor:"hand",disabled:!1,dampingFactor:1,objects:[],snapTo:"center",snapSurfaceMode:"bbox",snapSurfaceOffset:0,dropOn:"all",autoOrient:!0,dropDestinations:[],plane:"adaptive",planeMode:"locked",referenceFrame:"global",limits:[-1/0,1/0,-1/0,1/0,-1/0,1/0],drop:!1,resetOnSnapFail:!1,snapSpeed:20,resetSpeed:20,dragDropActions:{drag:new pV,drop:new pV}},(m4||(m4={})).defaultData={type:"Follow",disabled:!1,name:"",maxDelta:0,dampingFactor:1,target:"cursor",plane:"custom",resetOnPointerLeave:!0,resetAfterDistanceLimit:!0,enabledTranslation:[!0,!0,!0],limitDistanceEnabled:!1,limitDistance:1e3,snapDelay:0,resetSpeed:5,actions:new pV},(m5||(m5={})).defaultData={type:"LookAt",disabled:!1,name:"",distance:1e3,dampingFactor:1,target:"cursor",tilt:"up",axis:"z",plane:"custom",resetOnPointerLeave:!0,resetAfterDistanceLimit:!0,enabledRotation:[!0,!0,!0],limitDistanceEnabled:!1,limitDistance:1e3,snapDelay:0,resetSpeed:5},(mF=m6||(m6={})).is=function(e){return"MouseHover"===e.type},mF.defaultData=function(){return{type:"MouseHover",disabled:!1,name:"",actions:new pV}},(mN=m8||(m8={})).is=function(e){return"Scroll"===e.type},mN.defaultData=function(){return{type:"Scroll",disabled:!1,name:"",steps:100,trigger:"load",startFrom:"enter",enterAnchor:"top",startOffset:0,endAfter:400,actions:new pV}},(mU=m9||(m9={})).is=function(e){return"Start"===e.type},mU.defaultData=function(){return{type:"Start",disabled:!1,name:"",actions:new pV}},(mk=m7||(m7={})).is=function(e){return"Collision"===e.type},mk.defaultData=function(){return{type:"Collision",disabled:!1,name:"",target:"character",actions:new pV}},(mV=ge||(ge={})).is=function(e){return"Trigger"===e.type},mV.defaultData=function(e,t){return{type:"Trigger",name:"",disabled:!1,target:"all",triggeringObjects:[],actions:new pV,triggerZone:"box",position:t.toArray(),rotation:[0,0,0],size:e.toArray(),radius:e.length()/2,helperVisible:!0}},(mj=gt||(gt={})).defaultSizes={mobile:[480,480],tablet:[768,768],desktop:[1200,1200],custom:[769,1200]},mj.is=function(e){return"Resize"===e.type},mj.sizeToDevice=function(e){return"string"==typeof e?e:"custom"},mj.deviceToSize=function(e){return"string"==typeof e?[...mj.defaultSizes[e]]:[...e]},mj.defaultData=function(){let e={size:"mobile",operator:"<",actions:new pV},t={size:"tablet",operator:"<",actions:new pV},i={size:[...mj.defaultSizes.custom],operator:"<>",actions:new pV},r=new pV;return r.push({id:tK.generateUUID(),fi:0,data:e},{id:tK.generateUUID(),fi:1,data:t},{id:tK.generateUUID(),fi:2,data:i}),{type:"Resize",disabled:!1,name:"",orientation:"horizontal",breakpoints:r}},mj.defaultBreakpointData=function(){return{size:[...mj.defaultSizes.custom],operator:"<>",actions:new pV}},(mG=gi||(gi={})).propertyPaths={Position:["position"],"Position X":["position","x"],"Position Y":["position","y"],"Position Z":["position","z"],Rotation:["rotation"],"Rotation X":["rotation","x"],"Rotation Y":["rotation","y"],"Rotation Z":["rotation","z"],Scale:["scale"],"Scale X":["scale","x"],"Scale Y":["scale","y"],"Scale Z":["scale","z"],Width:["width"],Height:["height"],Depth:["depth"],"Mouse Position X":["mouse","x"],"Mouse Position Y":["mouse","y"],"Mouse Pressed":["mouse","pressed"],"Screen Width":["mouse","width"],"Screen Height":["mouse","height"],"Hit Position X":["raycast","x"],"Hit Position Y":["raycast","y"],"Hit Position Z":["raycast","z"],"Hit Ob
3139ject Position X":["raycast","objX"],"Hit Object Position Y":["raycast","objY"],"Hit Object Position Z":["raycast","objZ"]},mG.is=function(e){return"VariableChange"===e.type},mG.defaultData=function(){return{disabled:!1,type:"VariableChange",name:"",actions:new pV,variableId:"",objectId:null,property:"Position X"}},(mH=gr||(gr={})).is=function(e){return"API"===e.type},mH.defaultData=function(){return{disabled:!1,type:"API",name:"",successActions:new pV,errorActions:new pV,userAPIId:""}},(mW=gs||(gs={})).is=function(e){return"WEBHOOK"===e.type},mW.defaultData=function(){return{disabled:!1,type:"WEBHOOK",name:"",actions:new pV,userWebhookId:""}},(mq=ga||(ga={})).is=function(e){return"AIAssistantListener"===e.type},mq.defaultData=function(){return{disabled:!1,type:"AIAssistantListener",name:"",actions:new pV,analysis:"average",analysisRange:[0,71],analysisSingle:0}},(mX=gn||(gn={})).is=function(e){return"AIAssistantTrigger"===e.type},mX.defaultData=function(){return{disabled:!1,description:"",name:"",type:"AIAssistantTrigger",actions:new pV}};var mO="personal camera",mI="a218fcc3-276b-49b9-b485-49037fd14f5f";(e=>{function t(e,t){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)}function i(e,i){return Math.sqrt(t(e,i))}function r(t,i,r){let a=e.sub(i,t),o=e.sub(r,t),h=e.dot(a,o)/e.dot(a,a),c=e.scalarMultiply(a,h);return e.add(t,c)}e.isEqual=function(e,t){return e[0]===t[0]&&e[1]===t[1]},e.lerp=function(e,t,i){return[e[0]+(t[0]-e[0])*i,e[1]+(t[1]-e[1])*i]},e.add=function(e,t){return[e[0]+t[0],e[1]+t[1]]},e.sub=function(e,t){return[e[0]-t[0],e[1]-t[1]]},e.multiply=function(e,t){return[e[0]*t[0],e[1]*t[1]]},e.divide=function(e,t){return[e[0]/t[0],e[1]/t[1]]},e.distanceSquared=t,e.distance=i,e.dot=function(e,t){return e[0]*t[0]+e[1]*t[1]},e.scalarMultiply=function(e,t){return[e[0]*t,e[1]*t]},e.projectionOnto=r,e.projectionOntoDistance=function(e,t,a){return i(e,r(e,t,a))},e.center=function(e,t){return[(e[0]+t[0])*.5,(e[1]+t[1])*.5]}})(go||(go={})),(mY=gl||(gl={})).isEqual=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]},mY.add=function(e,t){return[e[0]+t[0],e[1]+t[1],e[2]+t[2]]},mY.sub=function(e,t){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]},mY.div=function(e,t){return[e[0]/t[0],e[1]/t[1],e[2]/t[2]]},mY.mul=function(e,t){return[e[0]*t[0],e[1]*t[1],e[2]*t[2]]},mY.dist=function(e,t){return Math.hypot(e[0]-t[0],e[1]-t[1],e[2]-t[2])},mY.lerp=function(e,t,i){return[e[0]+(t[0]-e[0])*i,e[1]+(t[1]-e[1])*i,e[2]+(t[2]-e[2])*i]},(mQ=gh||(gh={})).isEqual=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]},mQ.lerp=function(e,t,i){return[e[0]+(t[0]-e[0])*i,e[1]+(t[1]-e[1])*i,e[2]+(t[2]-e[2])*i,e[3]+(t[3]-e[3])*i]},(e=>{let t=180/Math.PI,i=Math.PI/180;function r(e){return"number"==typeof e?e*t:e}function a(e){return"number"==typeof e?e*i:e}e.radToDeg=function(e){return[r(e[0]),r(e[1]),r(e[2])]},e.degToRad=function(e){return[a(e[0]),a(e[1]),a(e[2])]}})(gc||(gc={})),(mZ=gd||(gd={})).identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],mZ.isEqual=function(e,t){for(let i=0;i<16;i++)if(e[i]!==t[i])return!1;return!0},mZ.simplify=function(e){return e??mZ.identity},mZ.applyMatrix4=function(e,t){let i=t.slice(0);for(var r=0,a=t.length;r<a;r+=3){let a=e[3]*t[r]+e[7]*t[r+1]+e[11]*t[r+2]+e[15];i[r]=(e[0]*t[r]+e[4]*t[r+1]+e[8]*t[r+2]+e[12])/a,i[r+1]=(e[1]*t[r]+e[5]*t[r+1]+e[9]*t[r+2]+e[13])/a,i[r+2]=(e[2]*t[r]+e[6]*t[r+1]+e[10]*t[r+2]+e[14])/a}return i},(mK=gu||(gu={})).isRGB=function(e){return"object"==typeof e&&"number"==typeof e.r&&"number"==typeof e.g&&"number"==typeof e.b},mK.white={r:1,g:1,b:1},mK.red={r:1,g:0,b:0},mK.black={r:0,g:0,b:0},mK.toRgb255a1=function(e){return{r:Math.round(255*e.r),g:Math.round(255*e.g),b:Math.round(255*e.b),a:1}},mK.clone=function(e){return{r:e.r,g:e.g,b:e.b}},mK.fromHex=function(e){return{r:((e=Math.floor(e))>>16&255)/255,g:(e>>8&255)/255,b:(255&e)/255}},mK.toHex=function(e){return 65536*Math.round(255*e.r)+256*Math.round(255*e.g)+Math.round(255*e.b)},mK.equals=function(e,t){return e.r===t.r&&e.g===t.g&&e.b===t.b},mK.equalsFixed=function(e,t){return e.r.toFixed(2)===t.r.toFixed(2)&&e.g.toFixed(2)===t.g.toFixed(2)&&e.b.toFixed(2)===t.b.toFixed(2)},mK.lerp=function(e,t,i){return{r:e.r+(t.r-e.r)*i,g:e.g+(t.g-e.g)*i,b:e.b+(t.b-e.b)*i}},mK.is=function(e){return!!hK(e)&&"r"in e&&"g"in e&&"b"in e&&!("a"in e)},(mJ=gp||(gp={})).white={...gu.white,a:1},mJ.is=function(e){return!!hK(e)&&"r"in e&&"g"in e&&"b"in e&&"a"in e},mJ.transparent={...gu.white,a:0},mJ.from0to1=function(e){return{r:e[0],g:e[1],b:e[2],a:e[3]}},mJ.fromHexAndA=function(e,t){return{...gu.fromHex(e),a:t}},mJ.toRgb255a1=function(e){return{r:Math.round(255*e.r),g:Math.round(255*e.g),b:Math.round(255*e.b),a:e.a}},mJ.equals=function(e,t){return gu.equals(e,t)&&e.a===t.a},mJ.equalsFixed=function(e,t){return gu.equalsFixed(e,t)&&e.a.toFixed(2)===t.a.toFixed(2)},mJ.lerp=function(e,t,i){return{r:e.r+(t.r-e.r)*i,g:e.g+(t.g-e.g)*i,b:e.b+(t.b-e.b)*i,a:e.a+(t.a-e.a)*i}},mJ.toStyle=function({r:e,g:t,b:i,a:r}=mJ.white){return`rgba(${255*e}, ${255*t}, ${255*i}, ${r})`},(gf||(gf={})).identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]};var mR,mL,mB,mz,mF,mN,mU,mk,mV,mj,mG,mH,mW,mq,mX,mY,mQ,mZ,mK,mJ,m$,m0,m1,m2,m3,m4,m5,m6,m8,m9,m7,ge,gt,gi,gr,gs,ga,gn,go,gl,gh,gc,gd,gu,gp,gf,gm,gg=((r=gg||{})[r.LINEAR=0]="LINEAR",r[r.EASE=1]="EASE",r[r.EASE_IN=2]="EASE_IN",r[r.EASE_OUT=3]="EASE_OUT",r[r.EASE_IN_O
3139UT=4]="EASE_IN_OUT",r[r.CUBIC=5]="CUBIC",r[r.SPRING=6]="SPRING",r[r.ARC=7]="ARC",r[r.NONE=8]="NONE",r);function gv(e){return"string"==typeof e&&36===e.length&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}(gm||(gm={})).defaultData={mass:1,stiffness:80,damping:10,velocity:0},(gO||(gO={})).defaultData={control1:[.5,0],control2:[.5,1]},(a=gI||(gI={})).linear=[0,0,1,1],a.ease=[.25,.1,.25,1],a.easeIn=[.42,0,1,1],a.easeOut=[0,0,.58,1],a.easeInOut=[.42,0,.58,1],(gA=gR||(gR={})).all=["PerspectiveCamera","OrthographicCamera"],gA.is=function(e){return gA.all.includes(e)},(gM=gL||(gL={})).DefaultUp=[0,1,0],gM.DefaultTargetOffset=1e3,gM.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:gM.DefaultUp,isUpVectorFlipped:!1,targetOffset:gM.DefaultTargetOffset},gM.getZoom=function(e){return"PerspectiveCamera"===e.type?e.perspective?.zoom??1:e.orthographic?.zoom??1},(gE=gB||(gB={})).defaultData=function(e,t=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:2*Math.max(e[0],e[1]),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:[e[0]+e[0]*t,0,0]},grid:{count:[2,2,2],size:e.map(e=>e*(1+t)),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"}}},gE.merge=function(e,t){let i={...e};if(gy.forEach(r=>{Object.assign(i,{[r]:t[r]??e[r]})}),i.radial={...e.radial},t.radial){let r=e.radial,a=t.radial;gx.forEach(e=>{Object.assign(i.radial,{[e]:a[e]??r[e]})})}if(i.linear={...e.linear},t.linear){let r=e.linear,a=t.linear;gb.forEach(e=>{Object.assign(i.linear,{[e]:a[e]??r[e]})})}if(i.grid={...e.grid},t.grid){let r=e.grid,a=t.grid;gw.forEach(e=>{Object.assign(i.grid,{[e]:a[e]??r[e]})})}if(i.toObject={...e.toObject},t.toObject){let r=e.toObject,a=t.toObject;gS.forEach(e=>{Object.assign(i.toObject,{[e]:a[e]??r[e]})})}if(i.randomnessObject={...e.randomnessObject},t.randomnessObject){let r=e.randomnessObject,a=t.randomnessObject;g_.forEach(e=>{Object.assign(i.randomnessObject,{[e]:a[e]??r[e]})})}return i},gE.isPartial=function(e){return!!(e.randomnessObject||e.toObject)},(gC=gz||(gz={})).defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}},o=["radial","linear","grid","toObject","randomnessObject"],gC.toOps=function(e,t){let i=[];for(let r of(void 0!==e.count&&i.push({type:0,path:t,props:{count:e.count}}),o)){let a=e[r];a&&Object.keys(a).length>0&&i.push({type:0,path:[...t,r],props:a})}return i};var gy=["count"],gx=["radius","start","end","position","scale","rotation"],gb=["position","scale","rotation"],gw=["count","size"],gS=["count","position","scale","rotation"],g_=["strength","scale","rotation","position","movement","seed","freqScale"];(gT=gF||(gF={})).all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"],gT.is=function(e){return gT.all.includes(e)},(gN||(gN={})).defaultData=function(e){return function(e){if("PointLight"===e)return{type:e,color:gp.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if("SpotLight"===e)return{type:e,color:gp.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("DirectionalLight"===e)return{type:e,color:gp.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw Error("not implemented")}(e)},(h=gU||(gU={})).defaultShapeData={type:"PlaneEmitterShape",size:[100,100,100]},h.defaultCollisionData={colliderEntityId:null,collisionBounce:.75},h.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:h.defaultShapeData,autoPlay:!0,emitTimeDelay:0,emitTimeCycle:"infinity",emitTimeDuration:1,...h.defaultCollisionData},(gk||(gk={})).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]},(gP=gV||(gV={})).defaultData={castShadow:!0,receiveShadow:!0}
vendor: 4,416 bytes, line 3139
3139,gP.equals=function(e,t){return e.castShadow===t.castShadow&&e.receiveShadow===t.receiveShadow},(gD=gj||(gj={})).defaultData={flatShading:!1,wireframe:!1,side:0},gD.equals=function(e,t){return e.flatShading===t.flatShading&&e.side===t.side&&e.wireframe===t.wireframe},(gG||(gG={})).defaultData={...gj.defaultData,...gV.defaultData},(gH||(gH={})).getMaterialData=function(e,t){let i=[];if("material"in e){let r="string"==typeof e.material?t.materials[e.material]??t.lib.materials[e.material]?.asset:e.material;r&&i.push(r)}else if("materials"in e)for(let r of e.materials){let e="string"==typeof r?t.materials[r]??t.lib.materials[r]?.asset:r;e&&i.push(e)}return i},(c=gW||(gW={})).defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},c.maxSize=3e7,(gq||(gq={})).is=function(e){return"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"===e},(gX||(gX={})).is=function(e){return"phong"===e||"toon"===e||"lambert"===e||"physical"===e};var gA,gM,gE,gC,gT,gP,gD,gO,gI,gR,gL,gB,gz,gF,gN,gU,gk,gV,gj,gG,gH,gW,gq,gX,gY,gQ=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],gZ=["wrapping","image","video","name","minFilter","magFilter"];(g1=gY||(gY={})).patch=function(e,t){let{texture:i,...r}=t;if(Object.assign(e,r),i){let t=e.texture;t&&Object.assign(t,i)}},g1.defaultData=function(e,t){return"light"===e&&t?function(e){let t={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(e){case"phong":return{...t,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...t,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...t,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...t,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}(t):function(e){let t={alpha:1,mode:0,isMask:!1,visible:!0};switch(e){case"texture":return{...t,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],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"video":return{...t,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:gW.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006},crop:!1};case"color":return{...t,type:"color",color:gu.fromHex(5526619)};case"depth":return{...t,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{...t,type:"normal",cnormal:[1,1,1]};case"gradient":return{...t,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{...t,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...gu.fromHex(6710886),a:1},colorB:{...gu.fromHex(6710886),a:1},colorC:{...gu.fromHex(16777215),a:1},colorD:{...gu.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{...t,type:"fresnel",color:gp.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...t,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...t,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:gp.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...t,type:"outline",outlineColor:gp.fromHexAndA(0,1),contourColor:gp.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0}
3139;case"matcap":return{...t,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0],rotation:0,minFilter:1008,magFilter:1006}};case"transmission":return{...t,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{...t,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...gu.fromHex(0),a:1},colorB:{...gu.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}}}(e)},(e=>{function t(e,t="layer1",i="layer2"){let r=new pV;return r.push({fi:0,data:gY.defaultData("light",e),id:t}),r.push({fi:1,data:gY.defaultData("color"),id:i}),{layers:r}}e.isMergable=function(e){return!e.layers.some(e=>"texture"===e.data.type&&0!==e.data.projection||"depth"===e.data.type&&!e.data.isWorldSpace||"noise"===e.data.type||"displace"===e.data.type)},e.getHash=function(e){let t="";return e.layers.forEach(e=>{Object.entries(e.data).forEach(([e,i])=>{t+=`${e}${i}`,Array.isArray(i)?i.forEach(e=>t+=`${e}`):"object"==typeof i?Object.values(i).forEach(e=>{"number"==typeof e?t+=`${e.toFixed(4)}`:t+=`${e}`}):t+=`${i}`})}),t},e.defaultEmptyData=function(){return{layers:new pV}},e.defaultData=function(e="layer1",i="layer2"){return t("phong",e,i)},e.withName=function(e,t){return{...e,name:t}},e.defaultTwoLayerData=t,e.defaultUIObjectMaterial=function(e){let t=gY.defaultData("texture");e&&Object.assign(t.texture,{image:e});let i=new pV;return i.push({fi:0,data:t,id:"layer1"}),i.push({fi:1,data:{...gY.defaultData("transmission"),alpha:1},id:"layer2"}),i.push({fi:2,data:{...gY.defaultData("light","lambert"),alpha:0},id:"layer3"}),{layers:i}},e.defaultTwoLayerTextureData=function(e,t="phong",i="layer1",r="layer2"){let a=gY.defaultData("texture");Object.assign(a.texture,{image:e});let o=new pV;return o.push({fi:0,data:a,id:i}),o.push({fi:1,data:gY.defaultData("light",t),id:r}),{layers:o}},e.defaultTwoLayerVideoTextureData=function(e,t="phong",i="layer1",r="layer2"){let a=gY.defaultData("video");Object.assign(a.texture,{video:e});let o=new pV;return o.push({fi:0,data:a,id:i}),o.push({fi:1,data:gY.defaultData("light",t),id:r}),{layers:o}}})(g6||(g6={})),(g8||(g8={})).defaultData=function(){return{points:new pV,roundness:0,shapeHoles:[],isClosed:!1}},(g9||(g9={})).defaultData=function(){return{points:new pV,lastInsertionPlane:null,subdivisions:12,isClosed:!1}};var gK={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};(g7||(g7={})).merge=function(e,t){let i={...e};return g$.forEach(r=>{Object.assign(i,{[r]:t[r]??e[r]})}),i};var gJ={shape:gK,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},g$=["depth","offset","angle","twist","startScale","endScale"];(g2=ve||(ve={})).is2DParametricMesh=function(e){return"PolygonGeometry"===e||"RectangleGeometry"===e||"StarGeometry"===e||"TriangleGeometry"===e||"EllipseGeometry"===e||"UIGeometry"===e},g2.isParametricMesh=function(e){return"PolygonGeometry"===e||"RectangleGeometry"===e||"StarGeometry"===e||"TriangleGeometry"===e||"EllipseGeometry"===e||"PathGeometry"===e||"VectorGeometry"===e||"ConeGeometry"===e||"CubeGeometry"===e||"CylinderGeometry"===e||"DodecahedronGeometry"===e||"HelixGeometry"===e||"IcosahedronGeometry"===e||"LatheGeometry"===e||"PyramidGeometry"===e||"SphereGeometry"===e||"PlaneGeometry"===e||"BackdropGeometry"===e||"TorusGeometry"===e||"TorusKnotGeometry"===e||"BooleanGeometry"===e||"TextGeometry"===e||"InputGeometry"===e},g2.isSwappableGeometry=function(e){return"PolygonGeometry"===e||"RectangleGeometry"===e||"StarGeometry"===e||"TriangleGeometry"===e||"EllipseGeometry"===e||"PathGeometry"===e||"VectorGeometry"===e||"ConeGeometry"===e||"CubeGeometry"===e||"CylinderGeometry"===e||"DodecahedronGeometry"===e||"HelixGeometry"===e||"IcosahedronGeometry"===e||"LatheGeometry"===e||"PyramidGeometry"===e||"SphereGeometry"===e||"PlaneGeometry"===e||"BackdropGeometry"===e||"TorusGeometry"===e||"TorusKnotGeometry"===e||"TextGeometry"===e||"SubdivGeometry"===e||"NonParametricGeometry"===e},(vt||(vt={})).merge=function(e,t){let i={...e};return Object.assign(i,t),"PathGeometry"===i.type&&"extrusion"in t&&t.extrusion&&(i.extrusion={...e.extrusion},Object.assign(i.extrusion,g7.merge(i.extrusion,t.extrusion))),i},(g3=vi||(vi={})).defaultData=function(e){if("RectangleGeometry"===e)return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if("UIGeometry"===e)return{type:e,frame:"",cornerRadius:[0,0,0,0],cornerType:0,width:1,height:1};if("PathGeometry"===e)return{type:e,width:1,height:1,depth:1,path:g9.defaultData(),extrusion:gJ};if("VectorGeometry"===e)return{width:1,height:1,type:e,subdivisions:12,shape:g8.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if("BooleanGeometry"===e)return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if("ShapeBlendGeometry"===e)return{type:e,width:0,height:0,depth:0,resolutionLevel:6,blendRange:100,useChildrenColors:!1};if("TextGeometry"===e)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",editable:!1,extrudeBevelSize:0,extrudeBevelSegments:1};if("InputGeometry"===e)return{...g3.defaultData("TextGeometry"),type:e,editable:!0};if("SphereGeometry"===e)return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw Error("not implemented")};var g0=["width","height","depth"];(vr||(vr={}
vendor: 4,193 bytes, line 3139
3139)).defaultData={enabled:!1,useBackgroundColor:!1,color:gu.white,near:.1,far:2e3},d={opacity:1,blendFunction:13,enabled:!1},(vs||(vs={})).defaultData={enabled:!1,pixelation:{...d,blendFunction:16,granularity:15},bloom:{...d,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...d,offset:[2,2]},vignette:{...d,darkness:1,offset:0},hueSaturation:{...d,hue:3,saturation:0},brightnessContrast:{...d,brightness:.25,contrast:0},depthOfField:{...d,focusDistance:100,focalLength:20,bokehScale:5},noise:{...d,blendFunction:16}},(va||(va={})).defaultData={softShadowQuality:"low"},(vn||(vn={})).defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75},(vo||(vo={})).defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}},(vl||(vl={})).defaultData={usePhysics:!1,gravity:-10},(vh||(vh={})).defaultData={playCamera:mO,gameControlObject:null},(vc||(vc={})).defaultData={backgroundColor:gp.fromHexAndA(2960946,1),postprocessing:vs.defaultData,fog:vr.defaultData,globalPhysics:vl.defaultData,ambient:vn.defaultData,ao:vo.defaultData,shadow:va.defaultData,publish:vh.defaultData},(vd||(vd={})).defaultData={colliderType:"box",size:[100,100,100],colliderHelperVisible:!0,forceType:"collider",forceRange:"global",forceIntensity:.5,forceDambing:.95},(g4=vu||(vu={})).isComponentRelated=function(e){return"Component"===e||"Instance"===e},g4.isEmptyOrComponent=function(e){return"Empty"===e||"Instance"===e},(g5=vp||(vp={})).identity={...gf.identity,hiddenMatrix:gd.identity},g5.fromObject=function(e){return{position:e.position,rotation:e.rotation,scale:e.scale,hiddenMatrix:e.hiddenMatrix}},g5.merge=function(e,t){return{position:t?.position||e.position,rotation:t?.rotation||e.rotation,scale:t?.scale||e.scale,hiddenMatrix:t?.hiddenMatrix||e.hiddenMatrix}},g5.diff=function(e,t){return pt({position:gl.isEqual(e.position,t.position)?void 0:t.position,rotation:gl.isEqual(e.rotation,t.rotation)?void 0:t.rotation,scale:gl.isEqual(e.scale,t.scale)?null:t.scale,hiddenMatrix:gd.isEqual(e.hiddenMatrix,t.hiddenMatrix)?void 0:t.hiddenMatrix})};var g1,g2,g3,g4,g5,g6,g8,g9,g7,ve,vt,vi,vr,vs,va,vn,vo,vl,vh,vc,vd,vu,vp,vf,vm=["slide","offset"];function vg(e){e.layers.forEach(e=>{if("depth"===e.type&&void 0!==e.colorA){let t=e.colorA,i=e.colorB,r=[[t.r,t.g,t.b,t.a],[i.r,i.g,i.b,i.a]],a=[0,1];for(let e=2;e<10;e++)r.push(r[1]),a.push(1);let o={...u8(fs(e),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,e.near),far:Math.max(0,e.far),colors:r,steps:a,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(e,o)}else if("depth"===e.type&&1===e.gradientType&&(e.near<0||e.far<0)){let t={...fs(e),near:Math.max(e.near,0),far:Math.max(e.far,0)};Object.assign(e,t)}})}function vv(e,t){Object.values(e.shared.materials).forEach(e=>t(e))}function vy(e,t){e.scene.objects.traverse((e,i)=>{"materials"in i?i.materials.forEach((e,r)=>{void 0===e&&(i.materials[r]=g6.defaultData(),e=i.materials[r]),"string"!=typeof e&&t(e)}):"material"in i?"string"!=typeof i.material&&(void 0===i.material&&(i.material=g6.defaultData()),t(i.material)):"Mesh"===i.type&&(void 0===i.material&&(i.material=g6.defaultData()),t(i.material)),"overrides"in i&&Object.values(i.overrides).forEach(e=>{e.material&&"string"!=typeof e.material&&Object.getPrototypeOf(e.material)!==pq.prototype&&t(e.material)})})}function vx(e){void 0===e.layers&&Object.assign(e,g6.defaultTwoLayerData("lambert"))}function vb(e){e.layers&&e.layers.forEach(e=>{if("depth"===e.type&&10===e.colors.length){let t=[...e.colors];t.push(e.colors[9]);let i=[...e.steps];i.push(e.steps[9]);let r={...fs(e),colors:t,steps:i};Object.assign(e,r)}})}function vw(e){e.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(e=>{"string"!=typeof e&&vb(e)}):"material"in t&&"string"!=typeof t.material&&vb(t.material)}),Object.values(e.shared.materials).forEach(e=>vb(e))}function vS(e){e.layers&&e.layers.forEach(e=>{"depth"===e.type&&void 0!==e.num&&(e.colors=e.colors.slice(0,e.num),e.steps=e.steps.slice(0,e.num),delete e.num)})}
3139function v_(e){e.layers&&e.layers.forEach(e=>{"displace"!==e.type&&void 0===e.isMask&&(e.isMask=!1),("texture"===e.type||"video"===e.type)&&void 0===e.blending&&(e.blending=0),("noise"===e.type||"displace"===e.type&&"noise"===e.displacementType)&&(void 0===e.voronoiStyle&&(e.voronoiStyle=0),void 0===e.highCut&&(e.highCut=1),void 0===e.lowCut&&(e.lowCut=0),void 0===e.smoothness&&(e.smoothness=.3),void 0===e.seed&&(e.seed=0),void 0===e.quality&&(e.quality=1))})}function vA(e){let t=e.layers.find(e=>"light"===e.type)?.data;t?.category==="basic"&&(Object.assign(t,gY.defaultData("light","phong")),t.visible=!1)}function vM(e){vv(e,vA),vy(e,vA)}function vE(e){e.layers.forEach(e=>{"light"===e.type&&"toon"!==e.category&&void 0===e.occlusion&&(e.occlusion=!0)})}function vC(e){e.layers&&e.layers.forEach(e=>{"light"===e.type&&void 0===e.bumpMapIntensity&&(e.bumpMapIntensity=5)})}function vT(e){e.layers&&e.layers.forEach(e=>{"light"===e.type&&void 0===e.alphaOverride&&(e.alphaOverride=1)})}(vf||(vf={})).defaultData={states:new pV,events:new pV,timelineAnimations:new pL,visible:!0,raycastLock:!1,physics:gk.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...vp.identity,cloner:null},(yE||(yE={})).defaultData={type:"Empty",...vf.defaultData},(yC||(yC={})).defaultData={type:"ParticleCollider",...vd.defaultData,...vf.defaultData},(yT||(yT={})).defaultData={type:"Component",...vf.defaultData},(yP||(yP={})).defaultData={type:"Particle",...vf.defaultData,...gU.defaultData},(yD||(yD={})).defaultData={type:"Mesh",...vf.defaultData,...gG.defaultData},(yO||(yO={})).defaultData={...vf.defaultData,...vp.identity,position:[0,0,gL.DefaultTargetOffset],...gL.defaultData},(ym=yI||(yI={})).defaultData=function(e){return{...vf.defaultData,...gN.defaultData(e)}},ym.defaultDirectionalLightData={...ym.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7},(e=>{function t(e,t,i=0){for(;i<t.length;){let r=e?e[t[i]]:void 0;if(t.length===i+1)return r;if(!r)return;e=r.descendants,i+=1}}e.resolveWithDes=t,e.resolve=function(e,i,r=0){let a=t(e,i,r);if(a){let e=Object.keys(a);if(1===e.length&&"descendants"===e[0])return}return a}})(yR||(yR={})),(e=>{function t(e,t){return{...vf.defaultData,...t,component:e,overrides:new pq,physics:void 0,events:void 0,type:"Instance"}}e.rootOverrideProps=["physics","events"],e.compositeNonOptionalOverrideProps=["geometry"],e.compositeEntireOverrideOverrideProps=["material"],e.ofComponent=t,e.fromComponentData=function(e){let i=vp.fromObject(e.data);return t(e.id,i)}})(yL||(yL={})),(yg=yB||(yB={})).defaultData={type:"Page",...vf.defaultData,physics:{...gk.defaultData,fusedBody:!1},...vc.defaultData,camera:yO.defaultData},yg.isUIPage=function(e){return void 0!==e.uiScene},(u=yz||(yz={})).defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:gd.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:gk.defaultData,states:new pV,events:new pV,timelineAnimations:new pL,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...gL.defaultData},u.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"]},u.defaultMeshObject={name:"Rectangle",...vf.defaultData,...yD.defaultData,geometry:vi.defaultData("RectangleGeometry"),material:g6.defaultTwoLayerData("phong","layer1","layer2")},u.defaultBooleanObject={name:"Boolean",...vf.defaultData,...yD.defaultData,geometry:vi.defaultData("BooleanGeometry"),material:g6.defaultTwoLayerData("phong","layer1","layer2")},u.defaultShapeBlendObject={name:"Shape Blend",...vf.defaultData,...yD.defaultData,geometry:vi.defaultData("ShapeBlendGeometry"),material:g6.defaultTwoLayerData("phong","layer1","layer2")},u.defaultTextObject={name:"Text",...vf.defaultData,...yD.defaultData,geometry:vi.defaultData("TextGeometry"),material:g
vendor: 1,502 bytes, line 3139
31396.defaultTwoLayerData("phong","layer1","layer2")},u.defaultInputObject={name:"Input",...vf.defaultData,...yD.defaultData,geometry:vi.defaultData("InputGeometry"),material:g6.defaultTwoLayerData("phong","layer1","layer2")},(yv=yF||(yF={})).newEmpty=function(e,t){let i={name:t};return"Mesh"===e.type?(i.geometry={},"material"in e&&(i.material={layers:new pq}),"materials"in e&&(i.materials=e.materials.map(e=>({layers:new pq})))):gR.is(e.type)&&(i.perspective={},i.orthographic={}),i},yv.toOps=function(e,t){let i,r=[],a={orthographic:0,perspective:0,geometry:0};function o(e,t){for(let[i,a]of Object.entries(t.layers)){let{texture:t,...o}=a;if(void 0!==t&&Object.keys(t).length>0){let a={path:[...e,"layers",i,"texture"],props:t,type:0};r.push(a)}if(Object.keys(o).length>0){let t={path:[...e,"layers",i],props:o,type:0};r.push(t)}}}for(let[e,h]of Object.entries(t))if("name"!==e){if("cloner"===e)r.push(...gz.toOps(h,["cloner"]));else if("pathSnapping"===e)r.push({path:[e],props:{slide:h.slide,offset:h.offset},type:0});else if("material"===e)o(["material"],h);else if("materials"===e)for(let[e,t]of Object.entries(h))o(["materials",e],t);else if(0===a[e]){if("geometry"===e&&void 0!==h.extrusion){let t={path:[e,"extrusion"],props:h.extrusion,type:0};r.push(t),h={...h},delete h.extrusion}if(Object.keys(h).length>0){let t={path:[e],props:h,type:0};r.push(t)}}else void 0===i&&(i={path:[],props:{},type:0},r.push(i)),i.props[e]=h}return r},yv.patch=function(e,t){if(void 0===t)return e;let i={...e};
3139return(Object.assign(i,vp.merge(i,t)),Object.assign(i,{pathSnapping:Object.assign({},i.pathSnapping,{slide:t.pathSnapping?.slide??i.pathSnapping?.slide??0,offset:t.pathSnapping?.offset??i.pathSnapping?.offset??0})}),gR.is(e.type))?(i.orthographic={...i.orthographic},i.perspective={...i.perspective},t.orthographic?.zoom!==void 0&&(i.orthographic.zoom=t.orthographic.zoom),t.perspective?.zoom!==void 0&&(i.perspective.zoom=t.perspective.zoom),void 0!==t.isUpVectorFlipped&&(i.isUpVectorFlipped=t.isUpVectorFlipped),void 0!==t.targetOffset&&(i.targetOffset=t.targetOffset)):"Mesh"===e.type?("geometry"in t&&Object.assign(i,{geometry:vt.merge(i.geometry,t.geometry)}),(t.material||t.materials)&&(i=function(e,t){if(void 0===t)return e;let i={...e};return"material"in i&&"material"in t&&t.material&&(i.material=fr(i.material,e=>{if("string"!=typeof e)for(let[i,r]of Object.entries(t.material.layers)){let t=e.layers.data(i);t&&gY.patch(t,r)}}).data),i.materials&&t.materials&&(i.materials=fr(i.materials,e=>{for(let r=0;r<i.materials.length;r++){let i=t.materials[r];if("string"!=typeof i)for(let[t,a]of Object.entries(i.layers)){let i=e[r]?.layers?.data(t);i&&gY.patch(i,a)}}}).data),i}(i,t)),i.cloner&&"cloner"in t&&Object.assign(i,{cloner:gB.merge(i.cloner,t.cloner)})):"Empty"===e.type?i.cloner&&"cloner"in t&&Object.assign(i,{cloner:gB.merge(i.cloner,t.cloner)}):gF.is(e.type)&&(void 0!==t.intensity&&(i.intensity=t.intensity),void 0!==t.color&&("string"==typeof t.color?i.color=t.color:i.color=gu.clone(t.color))),i},(yN||(yN={})).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},(yU||(yU={})).defaultData={orbitControls:yN.defaultData,playPage:mI,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let i=0,r=0;return t<5?r=-30:t<10&&(r=30),0===t||10===t||5===t?i=30:(4===t||11===t||9===t)&&(i=-30),[120,[i,r],"show"]}),settings:{image:{format:"jpg",ratio:1,colorSpace:"display-p3"},videoStatic:{fps:60,mbps:150,ratio:1,duration:1e3,format:"mp4",imageFormat:"jpg",activeTimeline:null,colorSpace:"display-p3"},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,"u">typeof window?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1,imageQuality:70,pixelRatioMobile:0,pixelRatioDesktop:0}},stopRaycast:!0,hdTransmission:!1},(yk||(yk={})).defaultData={id:"basic",label:"Basic",style:"None",prompt:""},(yV||(yV={})).defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0},(p=yj||(yj={})).defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...yk.defaultData},isRandomSeed:!0,seed:p.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:yV.defaultData}),p.generateSeed=()=>Math.round(1e5*Math.random()),(yy=yG||(yG={})).physicsEnabled=function(e){return void 0!==e.find(e=>"Page"===e.data.type&&e.data.globalPhysics.usePhysics)},yy.traverseModuleInstances=function(e,t,i){e.scene.objects.traverseFrom(t,(t,r)=>{if("Instance"===r.type){let a=y2.getComponentData(e,r.component)?.data;a&&i(t,r,a.events)}else i(t,r,r.events)})},(e=>{function t(t=!0,i=[]){let r=[],a=yz.defaultMeshObject;t&&(r.push({...e.defaultLight}),r.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:a,children:[]})),r.push(...i);let o=new pk;return o.push({fi:1,id:mI,data:{...yB.defaultData,name:"Scene 1"},children:r}),o}function i(t){return{...e.defaultData,objects:pi(t,pk.prototype)}}e.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222",e.defaultLight={fi:-1,data:yI.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]},e.createDefaultObjectTreeWithPage=t,e.defaultData={objects:t(),publish:yU.defaultData,styles:yj.defaultData()},e.emptyDataWithoutPage=function(){return{objects:new pk,publish:yU.defaultData,styles:yj.defaultData()}},e.emptyDataWithPage=function(e=!0){return{objects:t(e),publish:yU.defaultData,styles:yj.defaultData()}},e.emptyData=function(){return{objects:new pk,publish:{...yU.defaultData},styles:yj.defaultData()}},e.withObjs=i,e.withObj=function(e,t){return i([{id:e,data:t,children:[],fi:0}])}})(yH||(yH={})),(yW||(yW={})).defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}},(f=yq||(yq={})).defaultData=e=>({url:e,name:"New Webhook",parametersSchemas:new pV}),f.defaultParameterValueByType=e=>"number"===e?0:"boolean"!==e&&"",(yX||(yX={})).defaultData=(e,t="GET")=>({url:e,method:t,name:"New API",headers:new pV,queries:new pV,autoStart:!0}),(e=>{function t(e){return void 0!==e.textValue}function i(e){return"boolean"==typeof e}e.isTextValue=t,e.isNumber=function(e){return"number"==typeof e},e.isBoolean=i,e.typeOfVariable=function(e){return t(e)?"string":i(e)?"boolean":"number"},e.getDisplayedValue=function(t){return e.isTextValue(t)?Array.isArray(t.textValue)?t.textValue.map(e=>e.toString().padStart(t.padding??2,"0")).join(t.deliminator??":")+(void 0!==t.suffix?" "+t.suffix:""):t.textValue.toString():e.isBoolean(t)?t?"True":"False":e.isNumber(t)?parseFloat(t.toFixed(3)).toString():t.toString()}})(yY||(yY={})),(yQ||(yQ={})).all=["images","videos","colors","audios","particles","fonts","materials","variables"],(yZ||(yZ={}
3139)).all=[...yQ.all,"components"],(yK||(yK={})).defaultData=function(){return{images:new pL,videos:new pL,colors:new pL,audios:new pL,particles:new pL,fonts:new pL,materials:new pL,components:new pL,variables:new pL,userAPIs:new pL,userWebhooks:new pL,timelineAnimations:new pL}},(yJ||(yJ={})).defaultData=function(){return{images:new pL,videos:new pL,colors:new pL,audios:new pL,particles:new pL,fonts:new pL,materials:new pL,components:new pL,variables:new pL,userAPIs:new pL,userWebhooks:new pL,timelineAnimations:new pL}},(yx=y$||(y$={})).defaultColors=function(){let e={};return e["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},pi(e,pL.prototype)},yx.defaultImages=function(){return pi({},pL.prototype)},yx.emptyData=function(){return{catelogs:new pL,materials:new pL,images:new pL,videos:new pL,colors:new pL,timelineAnimations:new pL,audios:new pL,particles:new pL,fonts:new pL,variables:new pV,userAPIs:new pL,userWebhooks:new pL,lib:yJ.defaultData()}},yx.defaultVariables=function(e){switch(e){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 t=[0,0,0];return{name:"Time",value:{textValue:t,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:t,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",e)}},yx.getFormattedTimerTime=function(e,t){if("HH:mm:ss"===t.format){let t=Math.floor(e/3600),i=Math.floor((e-3600*t)/60),r=Math.round(e-3600*t-60*i);return{textValue:[t,i,r]}}if("mm:ss"!==t.format)return e="number"===t.format?Math.round(e):Math.round(1e3*e)/1e3;{let t=Math.floor(e/60),i=Math.round(e-60*t);return{textValue:[t,i]}}},(y0||(y0={})).list=["idle","move","jump","run"],(m=y1||(y1={})).defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},m.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","▲"],["rotPosY","◀"],["rotNegX","▼"],["rotNegY","▶"],["jump","Space"],["run","⇧"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:m.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 pV,move:new pV,jump:new pV,run:new pV},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:gp.fromHexAndA(3728051,1)}};var vP=180/Math.PI;function vD(e){e.rotation=e.rotation.slice(0,3).map(e=>e*vP)}function vO(e){vD(e),"Page"===e.type&&vD(e.camera),e.states?.forEach(e=>{void 0===e.rotation||null===e.rotation||(e.rotation=e.rotation.slice(0,3).map(e=>e*vP))});let t=e.geometry;t&&"SphereGeometry"===t.type&&(t.thetaLength=(t.thetaLength??180)*vP),t&&"TorusGeometry"===t.type&&(t.arc=t.arc*vP),t&&"PathGeometry"===t.type&&(t.extrusion.angle*=vP,t.extrusion.twist*=vP),"Mesh"===e.type&&"TextGeometry"===e.geometry.type&&(e.geometry.text={textValue:e.geometry.text}),Array.isArray(fs(e.events))&&e.events?.forEach(e=>{("MouseDown"===e.type||"MouseUp"===e.type||"MousePress"===e.type||"KeyDown"===e.type||"KeyUp"===e.type||"KeyPress"===e.type||"Collision"===e.type||"Trigger"===e.type)&&(e.runMode=e.toggle?"Toggle":"Repeat")})}function vI(e,t){for(let i of(t(e.data),e.children))vI(i,t)}function vR(e){e.timelineAnimations=pi({},pL.prototype)}function vL(e){let t=e.schema??0;if(120!==t){let i;for(let i of(console.warn("updating from ",t,"to ",120),function(e,t){let i,r;if(t<1&&(vy(e,vg),vv(e,vg),e.schema=1),t<2&&(Object.assign(e.scene.publish,{orbitControls:{...yN.defaultData,...fs(e.scene.publish.orbitControls)}}
3139),e.schema=2),t<3&&(function(e){function t(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[e,i]of Object.entries(t))if((gQ.includes(e)||"boolean"==typeof i)&&delete t[e],"texture"===e)for(let[e,t]of Object.entries(i))(gZ.includes(e)||"boolean"==typeof t)&&delete i[e]}}}e.scene.objects.traverse((e,i)=>{i.states.forEach(e=>{e.material?t(e.material):e.materials&&e.materials.forEach(e=>{t(e)})})})}(e),e.schema=3),t<4&&(e.scene.publish.withBackground=!0,e.schema=4),t<5&&(e.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1},e.schema=5),t<6&&(function(e){e.scene.objects.traverse((e,t)=>{let i=t.cloner;i&&(i.radial.scale=i.radial.scale.map(e=>e+1),i.linear.scale=i.linear.scale.map(e=>e+1))})}(e),e.schema=6),t<7&&(function(e){e.scene.objects.traverse((e,t)=>{let i=t.geometry;i&&("DodecahedronGeometry"===i.type||"IcosahedronGeometry"===i.type)&&(i.detail=Math.round(i.detail))})}(e),e.schema=7),t<8&&(e.schema=8),t<9&&(vw(e),e.schema=9),t<10&&(function(e){e.scene.objects.traverse((e,t)=>{"Mesh"===t.type&&("BooleanGeometry"===t.geometry.type||"SubdivGeometry"===t.geometry.type)&&(t.geometry.phongAngle=35)})}(e),e.schema=10),t<11&&(e.scene.environment.ambientLight.softShadows=!1,e.scene.environment.ambientLight.softShadowQuality="low",e.scene.objects.traverse((e,t)=>{("DirectionalLight"===t.type||"SpotLight"===t.type)&&(t.shadowResolution=1024,t.shadowRadius=1,t.depth=1e5)}),e.shared.penumbraSize=[,,,,,].fill(.5),e.schema=11),t<12&&(vw(e),e.schema=12),t<13&&(e.shared.audios=pi({},pL.prototype),e.schema=13),t<14&&(Object.entries(i=e.shared.materials).forEach(([e,t])=>{t.layers||Object.assign(i,{[e]:{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"}]}})}),e.schema=14),t<15&&(Object.entries(fs(e.shared.images)).filter(e=>!1===e[1].asset).map(e=>e[0]).forEach(t=>{delete e.shared.images[t]}),Object.entries(fs(e.shared.audios)).filter(e=>!1===e[1].asset).map(e=>e[0]).forEach(t=>{delete e.shared.audios[t]}),e.schema=15),t<16&&(e.scene.publish.settings.web.preload=!1,e.schema=16),t<17&&(vy(e,vS),vv(e,vS),e.schema=17),t<18&&(vy(e,vx),vv(e,vx),e.schema=18),t<19&&(Object.assign(e.scene.publish.settings,{video:{...yU.defaultData.settings.video,...fs(e.scene.publish.settings.video)}}),e.schema=19),t<20&&(e.shared.fonts=pi({},pL.prototype),r=[],e.scene.objects.traverse((t,i)=>{if("TextFrame"===i.type){let a=g6.defaultTwoLayerData("phong"),o="string"==typeof i.color?e.shared.colors[i.color]:i.color;a.layers[1].data.color={r:o.r,g:o.g,b:o.b},a.layers[1].data.alpha=i.alpha;let h=i.font.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(" ");void 0===e.shared.fonts[h]&&(e.shared.fonts[h]={name:h});let c={name:i.name,...vf.defaultData,...yD.defaultData,flatShading:!1,wireframe:!1,geometry:{...vi.defaultData("TextGeometry"),width:i.width,height:i.height,font:h,depth:0,horizontalAlign:i.horizontalAlign,verticalAlign:i.verticalAlign,fontSize:1.40625*i.fontSize,lineHeight:i.lineHeight/1.40625,letterSpacing:i.letterSpacing-1,text:i.text,textTransform:i.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:a,states:fs(i.states),events:fs(i.events),visible:i.visible,raycastLock:i.raycastLock,position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix},d=fs(e.scene.objects).parent(t);e.scene.objects.insertAfter(d??null,t,[{id:t+"new",data:c,children:[]}]),r.push(t)}}),r.forEach(t=>{e.scene.objects.delete(t)}),e.schema=20),t<21&&(function(e){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};e.scene.objects.traverse((e,i)=>
3139{i.events.forEach(e=>{if(t[Number(e.type)]){if(Object.assign(e,{type:t[Number(e.type)]}),"Audio"===e.type&&"audioEvent"in e&&(Object.assign(e,{playAudio:e.audioEvent}),delete e.audioEvent),"GameControl"===e.type)Object.assign(e,{gameActions:{idle:new pV,move:new pV,jump:new pV}});else{let t=new pV;Object.assign(e,{actions:t}),("MouseDown"===e.type||"MouseUp"===e.type||"KeyDown"===e.type||"KeyUp"===e.type)&&"url"in e&&t.push({fi:0,id:tK.generateUUID(),data:{type:"Link",url:e.url,delay:0}}),"targets"in e&&(e.targets.forEach((e,i,r)=>{let a={easing:e.easing,duration:e.duration};6===e.easing?Object.assign(a,u8(e,"mass","stiffness","damping","velocity")):5===e.easing&&Object.assign(a,{control1:{...e.control1},control2:{...e.control2}});let o={repeat:e.repeat?-1:0,delay:e.delay,delayDirection:e.delayDirection,direction:e.cycle&&e.rewind?"pingpong-rewind":e.cycle?"pingpong":"normal"},h={state:e.state,...o,...a},c={allowSlerp:!0,type:"Transition",object:e.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new pV({fi:0,id:tK.generateUUID(),data:{state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4}},{fi:1,id:tK.generateUUID(),data:h})};t.push({fi:r,id:i,data:c})}),delete e.targets)}}})})}(e),function(e){e.scene.objects.traverse((e,t)=>{function i(e,i){let r=new pV,a=[];if(t.events.forEach((e,t,o)=>{if("Audio"===e.type&&e.trigger===i){let i;a.push(t),"play"===e.interaction?i={...u8(e,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in e?e.after:void 0,toggle:"after"in e?e.toggle:void 0,type:"Audio"}:("pause"===e.interaction||"stop"===e.interaction)&&(i={...u8(e,"interaction","delay","object","playAudio"),type:"Audio"}),i&&r.push({fi:o,id:t,data:i})}}),a.forEach(e=>t.events.delete(e)),r.length){let i=t.events.find(t=>t.type===e)?.data;i?"actions"in i&&i.actions.insertBefore(null,r):t.events.insertBefore(null,[{id:tK.generateUUID(),data:{type:e,actions:r}}])}}i("Start","start"),i("MouseDown","mouseDown"),i("MouseUp","mouseUp"),i("KeyDown","keyDown"),i("KeyUp","keyUp")})}(e),e.schema=21),t<22&&(vM(e),e.schema=22),t<23&&(function(e){e.scene.objects.traverse((e,t)=>{"Mesh"===t.type&&"SubdivGeometry"===t.geometry.type&&(t.geometry.scaleBaked||(t.geometry.scaleBaked=[1,1,1]))})}(e),e.schema=23),t<24&&(function(e){e.scene.objects.traverse((e,t)=>{"Empty"!==t.type&&"Mesh"!==t.type||!t.cloner||t.cloner.randomnessObject||t.cloner.toObject||t.cloner.randomness||(t.cloner={...t.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"}})})}(e),e.schema=24),(t<25||void 0===e.shared.videos)&&(e.shared.videos=pi({},pL.prototype),t<25&&(e.schema=25)),t<26&&(function(e){e.scene.objects.traverse((t,i)=>{let r=e.scene.objects.unproxy().parent(t);if(r){let t=fs(e.scene.objects.data(r));t&&"Mesh"===t.type&&"BooleanGeometry"===t.geometry.type&&"Mesh"===i.type&&(i.visible=!0!==fs(i).booleanExclude)}})}(e),e.schema=26),t<27&&(function(e){e.scene.objects.traverse((e,t)=>{"Mesh"===t.type&&("NonParametricGeometry"===t.geometry.type?void 0!==t.material&&delete t.material:void 0!==t.materials&&delete t.materials)})}(e),e.schema=27),t<28&&(vM(e),e.schema=28),t<29&&(function(e){function t(e){for(let i in Object.setPrototypeOf(e,pq.prototype),e){var t;Object.setPrototypeOf(t=e[i],pq.prototype),t.texture&&Object.setPrototypeOf(t.texture,pq.prototype)}}e.scene.objects.traverse((e,i)=>{i.states.forEach(e=>{if(e.material){let i=fs(e.material).layers;t(i),e.material.layers=i}if(e.materials)for(let i=0;i<e.materials.length;i++){let r=e.materials[i],a=fs(r).layers;t(a),r.layers=a}})})}(e),e.schema=29),t<30&&(function(e){e.scene.objects.traverse((e,t)=>{"Mesh"!==t.type||"NonParametricGeometry"!==t.geometry.type||"material"in t||"materials"in t||(t.material=g6.defaultTwoLayerData("phong"))})}(e),e.schema=30),t<31&&(void 0===e.scene.publish.orbitControls.autoZoom&&(e.scene.publish.orbitControls.autoZoom=!1),e.scene.objects.traverse((e,t)=>
3139{("OrthographicCamera"===t.type||"PerspectiveCamera"===t.type)&&(void 0===t.orthographic.autoZoom&&(t.orthographic.autoZoom=!1),void 0===t.orthographic.autoZoomFrustumSize&&(t.orthographic.autoZoomFrustumSize=790))}),e.schema=31),t<33&&(function(e){e.scene.objects.traverse((e,t)=>{void 0===t.pathSnapping&&(t.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),void 0===t.pathSnapping.offset&&(t.pathSnapping.offset=0)})}(e),e.schema=33),t<34&&(void 0===e.scene.publish.mouseEventTarget&&(e.scene.publish.mouseEventTarget="canvas"),void 0===e.scene.publish.settings.web.hint&&(e.scene.publish.settings.web.hint=!1),e.schema=34),t<35&&(function(e){let{video:t}=e.scene.publish.settings;"gif"===t.format&&t.fps>48&&(t.fps=15)}(e),e.schema=35),t<36&&(function(e){e.scene.objects.traverse((e,t)=>{t.events.forEach(e=>{"GameControl"===e.type&&(e.resetYPosition=Math.abs(e.resetYPosition-t.position[1]))})})}(e),e.schema=36),t<37&&(function(e){let t=e.scene.environment.usePhysics;e.scene.objects.traverse((e,i)=>{t&&null===i.physics?i.collision=!1:i.collision="visibility"})}(e),e.schema=37),t<38&&(vy(e,v_),vv(e,v_),e.schema=38),t<39&&(function(e){e.scene.objects.traverse((e,t)=>{t.events.forEach(e=>{"GameControl"===e.type&&(e.navmesh=y1.defaultDataThirdPerson.navmesh)})})}(e),e.schema=39),t<40&&(e.scene.styles||(e.scene.styles=yj.defaultData()),e.schema=40),t<41&&(void 0===e.scene.environment.ambientLight.occlusion&&(e.scene.environment.ambientLight.occlusion=!1),void 0===e.scene.environment.ambientLight.aoFullRes&&(e.scene.environment.ambientLight.aoFullRes=!1),void 0===e.scene.environment.ambientLight.radius&&(e.scene.environment.ambientLight.radius=256),void 0===e.scene.environment.ambientLight.bias&&(e.scene.environment.ambientLight.bias=.5),void 0===e.scene.environment.ambientLight.aoColor&&(e.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),vy(e,vE),vv(e,vE),e.schema=41),t<42&&(function(e){e.scene.objects.traverse((e,t)=>{t.events.forEach(e=>{"GameControl"===e.type&&Object.assign(e.gameActions,{run:new pV})})})}(e),e.schema=42),t<43&&(function(e){e.scene.objects.traverse((e,t)=>{t.events.forEach(e=>{"GameControl"===e.type&&(e.keyAssignments=[...e.keyAssignments,["run","⇧"],["none","Ctrl"]])})})}(e),e.schema=43),t<99){vy(e,vC),vv(e,vC),null===e.scene.publish.playCamera&&(e.scene.publish.playCamera=mO);let t=fs(e.scene.objects),i=e.scene.objects;for(let r of(e.scene.publish.playPage=mI,i.insertBefore(null,null,[{id:mI,data:{...yB.defaultData,backgroundColor:e.scene.backgroundColor,fog:e.scene.fog,postprocessing:e.scene.postprocessing,ao:u8(e.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:e.scene.publish.playCamera,gameControlObject:e.scene.publish.gameControlObject},shadow:u8(e.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...vl.defaultData,...u8(e.scene.environment,"usePhysics","gravity")},camera:fs(e.scene.ownerCamera)??yB.defaultData.camera,name:"Scene"},children:[]}]),t))r.id!==yH.TRASH_CAN_ID&&i.move(mI,r.fi,r.id);let r=0,a=0;
vendor: 8,265 bytes, line 3139
3139e.shared.penumbraSize&&e.scene.objects.traverse((t,i)=>{"DirectionalLight"===i.type?(i.penumbraSize=e.shared.penumbraSize[Math.min(r,2)],r+=1):"SpotLight"===i.type&&(i.penumbraSize=e.shared.penumbraSize[3+Math.min(a,1)],a+=1),(void 0===i.physics||null===i.physics)&&"Instance"!==i.type&&(i.physics={},Object.assign(i.physics,gk.defaultData)),void 0!==i.physics&&null!==i.physics&&(i.physics.enabled=i.collision??"visibility",delete i.collision)}),e.schema=99}}(e,t),t<100&&(void 0===e.scene.publish.joystickSizeAndXYOffset&&(e.scene.publish.joystickSizeAndXYOffset=yU.defaultData.joystickSizeAndXYOffset),e.schema=100),t<101&&(vy(e,vT),vv(e,vT),e.schema=101),t<102&&(function(e){e.scene.objects.traverse((e,t)=>{let i=t.geometry;i&&"PathGeometry"===i.type&&(i.extrusion.capType="flat",i.extrusion.bevel=50,i.extrusion.bevelSides=6,"Custom"===i.extrusion.shape.type&&(i.extrusion.shape.shapeQuality="low"))})}(e),e.schema=102),t<104&&(e.shared.catelogs=new pL,e.shared.lib=yJ.defaultData(),e.schema=104),t<105&&(e.shared.variables=pi({},pL.prototype),e.scene.objects.traverse((e,t)=>{vO(t)}),e.schema=105),Object.values(e.shared.lib.components)))!function(e){let t=e.schema??104;120!==t&&(t<105&&(vI(e.asset,vO),e.schema=105),t<118&&(vI(e.asset,vR),e.schema=118))}(i);t<106&&(i=fs(e.shared.variables),e.shared.variables=pi(Object.entries(i??{}).map(([e,t],i)=>({fi:i,id:e,data:t})),pV.prototype),e.schema=106),t<107&&(e.shared.lib.variables=yJ.defaultData().variables,e.schema=107),t<109&&(e.shared.particles=pi({},pL.prototype),e.shared.lib&&(e.shared.lib.particles=yJ.defaultData().particles),e.schema=109),t<110&&(function(e){e.scene.objects.traverse((e,t)=>{"Particle"===t.type&&"number"==typeof t.renderMaterial.size&&Object.assign(t.renderMaterial,{size:[t.renderMaterial.size,t.renderMaterial.size]})})}(e),e.schema=110),t<111&&(e.scene.objects.traverse((e,t)=>{Array.isArray(fs(t.events))&&t.events?.forEach(e=>{"disabled"in e||(e.disabled=!1),("MouseDown"===e.type||"MouseUp"===e.type||"MousePress"===e.type)&&(e.mode=e.mode||"Object")})}),e.schema=111),t<112&&(function(e){e.scene.objects.traverse((e,t)=>{"Page"===t.type&&(t.postprocessing.depthOfField.focusDistance=100,t.postprocessing.depthOfField.focalLength=20,t.postprocessing.depthOfField.bokehScale=5)})}(e),e.schema=112),t<113&&(function(e){e.scene.objects.traverse((e,t)=>{!1!==Array.isArray(fs(t.events))&&t.events?.forEach(e=>{let t=e.runMode;"MouseDown"===e.type||"MouseUp"===e.type||"KeyDown"===e.type||"KeyUp"===e.type||"Collision"===e.type||"Trigger"===e.type?e.actions?.forEach(e=>{"Transition"===e.type&&(e.runMode=t??"Repeat"),("Animation"===e.type||"SwitchCamera"===e.type)&&(e.runMode="Toggle"===t?"Toggle":"Normal")}):"MouseHover"===e.type||"MousePress"===e.type||"KeyPress"===e.type?e.actions?.forEach(e=>{("Transition"===e.type||"Animation"===e.type||"SwitchCamera"===e.type)&&(e.runMode="Toggle")}):"GameControl"===e.type?(delete e.actions,Object.keys(e.gameActions).forEach(t=>{e.gameActions[t]?.forEach(e=>{"Transition"===e.type&&(e.runMode="Repeat"),"Animation"===e.type&&(e.runMode="Normal")})})):"DragDrop"===e.type?(delete e.actions,e.dragDropActions?.drag?.forEach(e=>{("Transition"===e.type||"Animation"===e.type||"SwitchCamera"===e.type)&&(e.runMode="Toggle")}),e.dragDropActions?.drop?.forEach(e=>{("Transition"===e.type||"Animation"===e.type||"SwitchCamera"===e.type)&&(e.runMode="Toggle")})):"Resize"===e.type?(delete e.actions,e.breakpoints?.forEach(e=>{e.actions?.forEach(e=>{("Transition"===e.type||"Animation"===e.type||"SwitchCamera"===e.type)&&(e.runMode="Toggle")})})):"Start"===e.type?e.actions?.forEach(e=>{"Transition"===e.type&&(e.runMode="Once"),("Animation"===e.type||"SwitchCamera"===e.type)&&(e.runMode="Normal")}):"VariableChange"===e.type||"Scroll"===e.type?e.actions?.forEach(e=>{"Transition"===e.type&&(e.runMode="Repeat"),("Animation"===e.type||"SwitchCamera"===e.type)&&(e.runMode="Normal")}):"Conditional"===e.type&&(delete e.actions,e.inActions?.forEach(e=>{"Transition"===e.type&&(e.runMode="Repeat"),("Animation"===e.type||"SwitchCamera"===e.type)&&(e.runMode="Normal")}),e.outActions?.forEach(e=>{"Transition"===e.type&&(e.runMode="Repeat"),("Animation"===e.type||"SwitchCamera"===e.type)&&(e.runMode="Normal")}))})})}(e),e.schema=113),t<114&&(void 0===e.scene.publish.settings.web.imageQuality&&(e.scene.publish.settings.web.imageQuality=70),e.schema=114),t<115&&(e.shared.userAPIs=pi({},pL.prototype),e.shared.userWebhooks=pi({},pL.prototype),e.shared.lib&&(e.shared.lib.userAPIs=yJ.defaultData().userAPIs,e.shared.lib.userWebhooks=yJ.defaultData().userWebhooks),e.schema=115),t<116&&(void 0===e.scene.publish.settings.videoStatic&&(e.scene.publish.settings.videoStatic=yU.defaultData.settings.videoStatic),e.schema=116),t<117&&(void 0===e.scene.publish.settings.web.pixelRatioMobile&&(e.scene.publish.settings.web.pixelRatioMobile=0),void 0===e.scene.publish.settings.web.pixelRatioDesktop&&(e.scene.publish.settings.web.pixelRatioDesktop=0),e.schema=117),t<118&&(e.shared.timelineAnimations=pi({},pL.prototype),e.scene.objects.traverse((e,t)=>{vR(t)}),e.schema=118),t<119&&(e.scene.publish.settings.videoStatic.format=y2.defaultData.scene.publish.settings.videoStatic.format,e.scene.publish.settings.videoStatic.imageFormat=y2.defaultData.scene.publish.settings.videoStatic.imageFormat,e.schema=119),t<120&&(e.scene.publish.settings.image.colorSpace="display-p3",e.scene.publish.settings.videoStatic.colorSpace="display-p3",e.schema=120)}}function vB(e,t=!1){let i=null!==e[0].index,r=new Set(Object.keys(e[0].attributes)),a=new Set(Object.keys(e[0].morphAttributes)),o={},h={},c=e[0].morphTargetsRelative,d=new rU,u=0;for(let p=0;p<e.length;++p){let f=e[p],m=0;if(i!==(null!==f.index))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+p+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(let e in f.attributes){if(!r.has(e))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+p+'. All geometries must have compatible attributes; make sure "'+e+'" attribute exists among all geometries, or in none of them.'),null;void 0===o[e]&&(o[e]=[]),o[e].push(f.attributes[e]),m++}if(m!==r.size)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+p+". Make sure all geometries have the same number of attributes."),null;if(c!==f.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+p+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(let e in f.morphAttributes){if(!a.has(e))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+p+".  .morphAttributes must be consistent throughout all geometries."),null;void 0===h[e]&&(h[e]=[]),h[e].push(f.morphAttributes[e])}if(t){let e;if(i)e=f.index.count;else{if(void 0===f.attributes.position)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+p+". The geometry must have either an index or a position attribute"),null;e=f.attributes.position.count}d.addGroup(u,e,p),u+=e}}if(i){let t=0,i=[];for(let r=0;r<e.length;++r){let a=e[r].index;for(let e=0;e<a.count;++e)i.push(a.getX(e)+t);t+=e[r].attributes.position.count}d.setIndex(i)}for(let e in o){let t=vz(o[e]);if(!t)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+e+" attribute."),null;d.setAttribute(e,t)}for(let e in h){let t=h[e][0].length;if(0===t)break;d.morphAttributes=d.morphAttributes||{},d.morphAttributes[e]=[];for(let i=0;i<t;++i){let t=[];for(let r=0;r<h[e].length;++r)t.push(h[e][r][i]);let r=vz(t);if(!r)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+e+" morphAttribute."),null;d.morphAttributes[e].push(r)}}return d}function vz(e){let t,i,r,a=0;for(let o=0;o<e.length;++o){let h=e[o];if(h.isInterleavedBufferAttribute)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. InterleavedBufferAttributes are not supported."),null;
3139if(void 0===t&&(t=h.array.constructor),t!==h.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(void 0===i&&(i=h.itemSize),i!==h.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(void 0===r&&(r=h.normalized),r!==h.normalized)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;a+=h.array.length}let o=new t(a),h=0;for(let t=0;t<e.length;++t)o.set(e[t].array,h),h+=e[t].array.length;return new rT(o,i,r)}(yb=y2||(y2={})).defaultData={schema:120,scene:yH.defaultData,frames:new pL().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",yW.defaultData),shared:{...y$.emptyData(),colors:y$.defaultColors()}},yb.emptyDataForImports=function(){return{schema:120,scene:yH.emptyDataWithPage(),frames:new pL().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",yW.defaultData),shared:{...y$.emptyData(),colors:y$.defaultColors(),images:y$.defaultImages()}}},yb.emptyData=function(){return{schema:120,scene:yH.emptyDataWithPage(),frames:new pL().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",yW.defaultData),shared:y$.emptyData()}},yb.clipboard2dData=function(){return{schema:120,scene:yH.emptyData(),frames:new pL,shared:y$.emptyData()}},yb.collabHelper={...fu,updateSchema:e=>(e.schema??0)<120?fr(e,vL):(e.schema??0)-120},yb.updateSchemaDirectly=function(e){let t=yb.collabHelper.updateSchema(e);return"number"==typeof t?0===t?e:null:t.data},yb.withoutLib=function(e){return{...e,shared:{...e.shared,lib:yJ.defaultData()}}},yb.getComponentData=function(e,t){let i=e.scene.objects.get(t);if(i&&"Component"===i.data.type)return i;{let i=e.shared.lib.components[t];if(i)return i.asset}},yb.hasSensitiveData=function(e){for(let t of Object.values(e.shared.userAPIs))for(let e of t.headers)if("authorization"===e.data.key.toLowerCase()&&""!==e.data.value)return!0;return!1},(y3||(y3={})).emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"},(y4||(y4={})).is=function(e){return!0},(yw=y5||(y5={})).defaultData={position:[0,0],scale:[1,1],rotation:0,shear:[0,0]},yw.merge=function(e,t){return{position:t?.position??e.position,rotation:t?.rotation??e.rotation,scale:t?.scale??e.scale,shear:t?.shear??e.shear}},yw.diff=function(e,t){return pt({position:go.isEqual(e.position,t.position)?void 0:t.position,rotation:e.rotation===t.rotation?void 0:t.rotation,scale:go.isEqual(e.scale,t.scale)?void 0:t.scale,shear:e.shear&&t.shear&&go.isEqual(e.shear,t.shear)?void 0:t.shear})},(y6||(y6={})).defaultData={horizontalConstraint:0,verticalConstraint:0},(y8||(y8={})).defaultData={direction:"row",wrap:"unwrap",align:"top-left",gap:10,rowGap:10,autoGap:!1,autoRowGap:!1,leftPadding:8,rightPadding:8,topPadding:8,bottomPadding:8},(y9||(y9={})).defaultData={opacity:1,fill:{color:gp.fromHexAndA(5526619,1),enabled:!0},stroke:{color:gp.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:gp.from0to1([0,0,0,1]),enabled:!1,spread:0},innerShadow:{offset:[10,10],blurRadius:10,color:gp.from0to1([0,0,0,1]),enabled:!1,spread:0}},(yS=y7||(y7={})).newEmpty=function(e,t){return{name:t}},yS.patch=function(e,t){if(void 0===t)return e;let i={...e};return Object.assign(i,y5.merge(i,t)),i=function(e,t){if(void 0===t)return e;let i={...e};return"fill"in i&&"fill"in t&&void 0!==t.fill&&Object.assign(i,{fill:{...i.fill,...t.fill}}),"stroke"in i&&"stroke"in t&&void 0!==t.stroke&&Object.assign(i,{stroke:{...i.stroke,...t.stroke}}),"layerBlur"in i&&"layerBlur"in t&&void 0!==t.layerBlur&&Object.assign(i,{layerBlur:{...i.layerBlur,...t.layerBlur}}),"backgroundBlur"in i&&"backgroundBlur"in t&&void 0!==t.backgroundBlur&&Object.assign(i,{backgroundBlur:{...i.backgroundBlur,...t.backgroundBlur}}),"dropShadow"in i&&"dropShadow"in t&&void 0!==t.dropShadow&&Object.assign(i,{dropShadow:{...i.dropShadow,...t.dropShadow}}),"innerShadow"in i&&"innerShadow"in t&&void 0!==t.innerShadow&&Object.assign(i,{innerShadow:{...i.innerShadow,...t.innerShadow}}),i}(i=function(e,t){if(void 0===t)return e;let i={...e};for(let e of["width","height","cornerRadius"])e in i&&e in t&&void 0!==t[e]&&Object.assign(i,{[e]:t[e]});return i}(i,t),t)},yS.toOps=function(e,t){let i,r=[];for(let[e,a]of Object.entries(t))"name"!==e&&(void 0===i&&(i={path:[],props:{}
3139,type:0},r.push(i)),i.props[e]=a);return r},(xe||(xe={})).defaultData={...y5.defaultData,...y6.defaultData,states:new pV,events:new pV,visible:!0,raycastLock:!1},(xt||(xt={})).defaultData={...xe.defaultData,...y9.defaultData},(xi||(xi={})).defaultData={cornerRadius:[0,0,0,0]},(xr||(xr={})).defaultData={...xt.defaultData,type:"ellipse2d",width:100,height:100,name:"Ellipse"},(xs||(xs={})).defaultData={...xt.defaultData,...xi.defaultData,type:"rectangle2d",width:100,height:100,name:"Rectangle"},(xa||(xa={})).defaultData={...xt.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"},(xn||(xn={})).defaultData={...xt.defaultData,type:"path2d",path:"",name:"Path"},(xo||(xo={})).is=function(e){return"ellipse2d"===e.type||"rectangle2d"===e.type||"text2d"===e.type||"vector2d"===e.type||"path2d"===e.type},(xl||(xl={})).defaultData={...xe.defaultData,name:"Group",type:"group2d"},(xh||(xh={})).defaultData=()=>({...xe.defaultData,...xi.defaultData,...y9.defaultData,name:"Frame",type:"frame2d",clipped:!0,width:200,height:200,fill:{color:gp.fromHexAndA(4737101,1),enabled:!0},stroke:{color:gp.fromHexAndA(0,1),thickness:1,enabled:!1,mode:"inside"},backgroundBlur:{radius:2,enabled:!1},layerBlur:{radius:2,enabled:!1}}),(y_=xc||(xc={})).defaultData=function(e){switch(e){case"rectangle2d":case"vector2d":return{...xs.defaultData};case"ellipse2d":return{...xr.defaultData};case"text2d":return{...xa.defaultData};case"path2d":return{...xn.defaultData};case"frame2d":return{...xh.defaultData()};case"group2d":return{...xl.defaultData}}},y_.getPivot=function(e){return"width"in e&&"height"in e?["number"==typeof e.width?.5*e.width:0,"number"==typeof e.height?.5*e.height:0]:[0,0]},y_.isResizeable=function(e){return"rectangle2d"===e.type||"ellipse2d"===e.type||"text2d"===e.type||"frame2d"===e.type},y_.isAutoLayoutable=function(e){return"frame2d"===e.type&&void 0!==e.autoLayout},y_.hasCorners=function(e){return"rectangle2d"===e.type||"frame2d"===e.type},(g=xd||(xd={})).defaultData={name:"UI",type:"scene2d",objects:new pk},g.emptyData=function(){return{type:"scene2d",objects:new pk}};var vF={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,timelineChangeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0,rewind:!0},vN={duration:1e3,delay:0,endDelay:0,startOnceDelay:0,pingPongDelayCorrection:0,pingPongEndDelayCorrection:0,easing:"easeOutElastic(1, .5)",round:0},vU=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective","matrix","matrix3d"],vk={CSS:{},springs:{}};function vV(e,t,i){return Math.min(Math.max(e,t),i)}function vj(e,t){return e.indexOf(t)>-1}function vG(e,t){return e.apply(null,t)}var vH={arr:function(e){return Array.isArray(e)},obj:function(e){return vj(Object.prototype.toString.call(e),"Object")},pth:function(e){return vH.obj(e)&&e.hasOwnProperty("totalLength")},svg:function(e){return e instanceof SVGElement},inp:function(e){return e instanceof HTMLInputElement},dom:function(e){return!("isNode"in e)&&(e.nodeType||vH.svg(e))},str:function(e){return"string"==typeof e},fnc:function(e){return"function"==typeof e},und:function(e){return typeof e>"u"},hex:function(e){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e)},rgb:function(e){return/^rgb/.test(e)},hsl:function(e){return/^hsl/.test(e)},col:function(e){return vH.hex(e)||vH.rgb(e)||vH.hsl(e)},key:function(e){return!vF.hasOwnProperty(e)&&!vN.hasOwnProperty(e)&&"targets"!==e&&"keyframes"!==e}};function vW(e){var t=/\(([^)]+)\)/.exec(e);return t?t[1].split(",").map(function(e){return parseFloat(e)}):[]}function vq(e,t){var i=vW(e),r=vV(vH.und(i[0])?1:i[0],.1,100),a=vV(vH.und(i[1])?100:i[1],.1,100),o=vV(vH.und(i[2])?10:i[2],.1,100),h=vV(vH.und(i[3])?0:i[3],.1,100),c=Math.sqrt(a/r),d=o/(2*Math.sqrt(a*r)),u=d<1?c*Math.sqrt(1-d*d):0,p=d<1?(d*c+-h)/u:-h+c;function f(e){var i=t?t*e/1e3:e;return i=d<1?Math.exp(-i*d*c)*(1*Math.cos(u*i)+p*Math.sin(u*i)):(1+p*i)*Math.exp(-i*c),0===e||1===e?e:1-i}return t?f:function(){var t=vk.springs[e];if(t)return t;for(var i=1/6,r=0,a=0;;)if(1===f(r+=i)){if(++a>=16)break}else a=0;var o=r*i*1e3;return vk.springs[e]=o,o}}function vX(e){return void 0===e&&(e=10),function(t){return Math.ceil(vV(t,1e-6,1)*e)*(1/e)}}var vY=function(){function e(e,t,i){return(((1-3*i+3*t)*e+(3*i-6*t))*e+3*t)*e}function t(e,t,i){return 3*(1-3*i+3*t)*e*e+2*(3*i-6*t)*e+3*t}return function(i,r,a,o){if(0<=i&&i<=1&&0<=a&&a<=1){var h=new Float32Array(11);if(i!==r||a!==o)for(var c=0;c<11;++c)h[c]=e(.1*c,i,a);return function(c){return i===r&&a===o||0===c||1===c?c:e(function(r){for(var o=0,c=1;10!==c&&h[c]<=r;++c)o+=.1;var d=o+(r-h[--c])/(h[c+1]-h[c])*.1,u=t(d,i,a);return u>=.001?function(i,r,a,o){for(var h=0;h<4;++h){var c=t(r,a,o);if(0===c)break;var d=e(r,a,o)-i;r-=d/c}return r}(r,d,i,a):0===u?d:function(t,i,r,a,o){var h,c,d=0;do(h=e(c=i+(r-i)/2,a,o)-t)>0?r=c:i=c;while(Math.abs(h)>1e-7&&++d<10);return c}(r,o,o+.1,i,a)}(c),r,o)}}}}(),vQ=(yA={linear:function(){return function(e){return e}}},yM={Sine:function(){return function(e){return 1-Math.cos(e*Math.PI/2)}},Circ:function(){return function(e){return 1-Math.sqrt(1-e*e)}},Back:function(){return function(e){return e*e*(3*e-2)}},Bounce:function(){return function(e){for(var t,i=4;e<((t=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}},Elastic:function(e,t){void 0===e&&(e=1),void 0===t&&(t=.5);var i=vV(e,1,10),r=vV(t,.1,2);return function(e){return 0===e||1===e?e:-i*Math.pow(2,10*(e-1))*Math.sin(2*Math.PI*(e-1-r/(2*Math.PI)*Math.asin(1/i))/r)}}},["Quad","Cubic","Quart","Quint","Expo"].forEach(function(e,t){yM[e]=function(){return function(e){return Math.pow(e,t+2)}}}
3139),Object.keys(yM).forEach(function(e){var t=yM[e];yA["easeIn"+e]=t,yA["easeOut"+e]=function(e,i){return function(r){return 1-t(e,i)(1-r)}},yA["easeInOut"+e]=function(e,i){return function(r){return r<.5?t(e,i)(2*r)/2:1-t(e,i)(-2*r+2)/2}}}),yA);function vZ(e,t){if(vH.fnc(e))return e;var i=e.split("(")[0],r=vQ[i],a=vW(e);switch(i){case"spring":return vq(e,t);case"cubicBezier":return vG(vY,a);case"steps":return vG(vX,a);default:return vG(r,a)}}function vK(e){try{return document.querySelectorAll(e)}catch{return}}function vJ(e,t){for(var i=e.length,r=arguments.length>=2?arguments[1]:void 0,a=[],o=0;o<i;o++)if(o in e){var h=e[o];t.call(r,h,o,e)&&a.push(h)}return a}function v$(e){return e.reduce(function(e,t){return e.concat(vH.arr(t)?v$(t):t)},[])}function v0(e){return vH.arr(e)?e:(vH.str(e)&&(e=vK(e)||e),e instanceof NodeList||e instanceof HTMLCollection?[].slice.call(e):[e])}function v1(e,t){return e.some(function(e){return e===t})}function v2(e){var t={};for(var i in e)t[i]=e[i];return t}function v3(e,t){var i=v2(e);for(var r in e)i[r]=t.hasOwnProperty(r)?t[r]:e[r];return i}function v4(e,t){var i=v2(e);for(var r in t)i[r]=vH.und(e[r])?t[r]:e[r];return i}function v5(e){var t=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(e);if(t)return t[1]}function v6(e,t){return vH.fnc(e)?e(t.target,t.id,t.total):e}function v8(e,t){return e.getAttribute(t)}function v9(e,t,i){if(v1([i,"deg","rad","turn"],v5(t)))return t;var r=vk.CSS[t+i];if(!vH.und(r))return r;var a=document.createElement(e.tagName),o=e.parentNode&&e.parentNode!==document?e.parentNode:document.body;o.appendChild(a),a.style.position="absolute",a.style.width=100+i;var h=100/a.offsetWidth;o.removeChild(a);var c=h*parseFloat(t);return vk.CSS[t+i]=c,c}function v7(e,t,i){if(t in e.style){var r=t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),a=e.style[t]||getComputedStyle(e).getPropertyValue(r)||"0";return i?v9(e,a,i):a}}function ye(e,t){return vH.dom(e)&&!vH.inp(e)&&(v8(e,t)||vH.svg(e)&&e[t])?"attribute":vH.dom(e)&&v1(vU,t)?"transform":vH.dom(e)&&"transform"!==t&&v7(e,t)?"css":null!=e[t]?"object":void 0}function yt(e){if(vH.dom(e)){for(var t,i=e.style.transform||"",r=/(\w+)\(([^)]*)\)/g,a=new Map;t=r.exec(i);)a.set(t[1],t[2]);return a}}function yi(e,t,i,r){switch(ye(e,t)){case"transform":var a,o;return a=vj(t,"scale")?1:0+(vj(t,"translate")||"perspective"===t?"px":vj(t,"rotate")||vj(t,"skew")?"deg":void 0),o=yt(e).get(t)||a,r&&(r.transforms.list.set(t,o),r.transforms.last=t),i?v9(e,o,i):o;case"css":return v7(e,t,i);case"attribute":return v8(e,t);default:return e[t]||0}}function yr(e,t){var i=/^(\*=|\+=|-=)/.exec(e);if(!i)return e;var r=v5(e)||0,a=parseFloat(t),o=parseFloat(e.replace(i[0],""));switch(i[0][0]){case"+":return a+o+r;case"-":return a-o+r;case"*":return a*o+r}}function ys(e,t){if(vH.col(e)){var i,r,a,o;return i=e,vH.rgb(i)?(r=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(i))?"rgba("+r[1]+",1)":i:vH.hex(i)?(a=i.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(e,t,i,r){return t+t+i+i+r+r}),"rgba("+parseInt((o=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a))[1],16)+","+parseInt(o[2],16)+","+parseInt(o[3],16)+",1)"):vH.hsl(i)?function(e){var t,i,r,a=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(e)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(e),o=parseInt(a[1],10)/360,h=parseInt(a[2],10)/100,c=parseInt(a[3],10)/100,d=a[4]||1;function u(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+(t-e)*6*i:i<.5?t:i<2/3?e+(t-e)*(2/3-i)*6:e}if(0==h)t=i=r=c;else{var p=c<.5?c*(1+h):c+h-c*h,f=2*c-p;t=u(f,p,o+1/3),i=u(f,p,o),r=u(f,p,o-1/3)}return"rgba("+255*t+","+255*i+","+255*r+","+d+")"}(i):void 0}if(/\s/g.test(e))return e;var h=v5(e),c=h?e.substr(0,e.length-h.length):e;return t?c+t:c}function ya(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function yn(e){for(var t,i=e.points,r=0,a=0;a<i.numberOfItems;a++){var o=i.getItem(a);a>0&&(r+=ya(t,o)),t=o}return r}function yo(e){var t;if(e.getTotalLength)return e.getTotalLength();switch(e.tagName.toLowerCase()){case"circle":return 2*Math.PI*v8(e,"r");
3139case"rect":return 2*v8(e,"width")+2*v8(e,"height");case"line":return ya({x:v8(e,"x1"),y:v8(e,"y1")},{x:v8(e,"x2"),y:v8(e,"y2")});case"polyline":return yn(e);case"polygon":return t=e.points,yn(e)+ya(t.getItem(t.numberOfItems-1),t.getItem(0))}}function yl(e,t){var i=t||{},r=i.el||function(e){for(var t=e.parentNode;vH.svg(t)&&vH.svg(t.parentNode);)t=t.parentNode;return t}(e),a=r.getBoundingClientRect(),o=v8(r,"viewBox"),h=a.width,c=a.height,d=i.viewBox||(o?o.split(" "):[0,0,h,c]);return{el:r,viewBox:d,x:d[0]/1,y:d[1]/1,w:h/d[2],h:c/d[3]}}function yh(e,t){var i=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,r=ys(vH.pth(e)?e.totalLength:e,t)+"";return{original:r,numbers:r.match(i)?r.match(i).map(Number):[0],strings:vH.str(e)||t?r.split(i):[]}}function yc(e){return vJ(e?v$(vH.arr(e)?e.map(v0):v0(e)):[],function(e,t,i){return i.indexOf(e)===t})}function yd(e){var t=yc(e);return t.map(function(e,i){return{target:e,id:i,total:t.length,transforms:{list:yt(e)}}})}var yu={css:function(e,t,i){return e.style[t]=i},attribute:function(e,t,i){return e.setAttribute(t,i)},object:function(e,t,i){return e[t]=i},transform:function(e,t,i,r,a){if(r.list.set(t,i),t===r.last||a){var o="";r.list.forEach(function(e,t){o+=t+"("+e+") "}),e.style.transform=o}}};function yp(e,t){yd(e).forEach(function(e){for(var i in t){var r=v6(t[i],e),a=e.target,o=v5(r),h=yi(a,i,o,e),c=yr(ys(r,o||v5(h)),h);yu[ye(a,i)](a,i,c,e.transforms,!0)}})}function yf(e,t){var i=e.length,r=function(e){return e.timelineOffset?e.timelineOffset:0},a={};return a.duration=i?Math.max.apply(Math,e.map(function(e){let t=e.startOnceDelay??0,i=e.pingPongDelayCorrection??0,a=e.pingPongEndDelayCorrection??0;return r(e)+t+i+a+e.duration*(e.loop??1)})):t.duration,a.delay=i?Math.min.apply(Math,e.map(function(e){let t=e.startOnceDelay??0,i=e.pingPongDelayCorrection??0;return r(e)+t+i+e.delay})):t.delay,a.endDelay=i?a.duration-Math.max.apply(Math,e.map(function(e){let t=e.startOnceDelay??0,i=e.pingPongDelayCorrection??0,a=e.pingPongEndDelayCorrection??0;return r(e)+t+i+e.duration*(e.loop??1)-e.endDelay-a})):t.endDelay,a}var ym,yg,yv,yy,yx,yb,yw,yS,y_,yA,yM,yE,yC,yT,yP,yD,yO,yI,yR,yL,yB,yz,yF,yN,yU,yk,yV,yj,yG,yH,yW,yq,yX,yY,yQ,yZ,yK,yJ,y$,y0,y1,y2,y3,y4,y5,y6,y8,y9,y7,xe,xt,xi,xr,xs,xa,xn,xo,xl,xh,xc,xd,xu,xp=0,xf=[],xm=[],xg=function(){let e=0,t=!0;function i(e){let r=xf.length;if(r){let a=0;for(;a<r;){let t=xf[a];t.paused?(xf.splice(a,1),r--):(t.tick(e),a++)}t&&(xu=requestAnimationFrame(i))}else xu&&(cancelAnimationFrame(xu),xu=null)}return{get isUsingInternalRaf(){return t},set isUsingInternalRaf(s){t=s},play:function(){e=performance.now(),xu=requestAnimationFrame(i)},update:function(t){i(e+=t)}}}();function xv(e){void 0===e&&(e={});var t,i,r,a,o,h,c,d,u,p,f=0,m=0,g=0,v=0,y=null;function x(e){var t=window.Promise&&new Promise(function(e){return y=e});return e.finished=t,t}var b=(i=v3(vF,t=e),a=function(e,t){var i=[],r=t.keyframes;for(var a in r&&(t=v4(function(e){for(var t=vJ(v$(e.map(function(e){return Object.keys(e)})),function(e){return vH.key(e)}).reduce(function(e,t){return 0>e.indexOf(t)&&e.push(t),e},[]),i={},r=0;r<t.length;r++)!function(r){var a=t[r];i[a]=e.map(function(e){var t={};for(var i in e)vH.key(i)?i==a&&(t.value=e[i]):t[i]=e[i];return t})}(r);return i}(r),t)),t)vH.key(a)&&i.push({name:a,tweens:function(e,t){var i=v2(t);if(/^spring/.test(i.easing)&&(i.duration=vq(i.easing)),vH.arr(e)){var r=e.length;2!==r||vH.obj(e[0])?vH.fnc(t.duration)||(i.duration=t.duration/r):e={value:e}}var a=vH.arr(e)?e:[e];return a.map(function(e,i){var r=vH.obj(e)&&!vH.pth(e)?e:{value:e};return vH.und(r.delay)&&(r.delay=i?0:t.delay),vH.und(r.endDelay)&&(r.endDelay=i===a.length-1?t.endDelay:0),r}).map(function(e){return v4(e,i)})}(t[a],e)});return i}(r=v3(vN,t),t),c=yf(h=vJ(v$((o=yd(t.targets)).map(function(e){return a.map(function(t){return function(e,t){var i=ye(e.target,t.name);if(i){var r,a=t.tweens.map(function(i){var a=function(e,t){var i={};for(var r in e){var a=v6(e[r],t);vH.arr(a)&&1===(a=a.map(function(e){return v6(e,t)})).length&&(a=a[0]),i[r]=a}return i.duration=parseFloat(i.duration),i.delay=parseFloat(i.delay),i}(i,e),o=a.value,h=vH.arr(o)?o[1]:o,c=v5(h),d=yi(e.target,t.name,c,e),u=r?r.to.original:d,p=vH.arr(o)?o[0]:u,f=v5(p)||v5(d),m=c||f;return vH.und(h)&&(h=u),a.from=yh(p,m),a.to=yh(yr(h,p),m),a.start=r?r.end:0,a.end=a.start+a.delay+a.duration+a.endDelay,a.easing=vZ(a.easing,a.duration),a.isPath=vH.pth(o),a.isColor=vH.col(a.from.original),a.isColor&&(a.round=1),r=a,a}),o=a[a.length-1];return{type:i,property:t.name,animatable:e,tweens:a,duration:o.end,delay:a[0].delay,endDelay:o.endDelay}}}(e,t)})})),function(e){return!vH.und(e)}),r),d=xp,xp++,v4(i,{id:d,children:[],animatables:o,animations:h,duration:c.duration,delay:c.delay,endDelay:c.endDelay,startOnceDelay:r.startOnceDelay,pingPongDelayCorrection:r.pingPongDelayCorrection,pingPongEndDelayCorrection:r.pingPongEndDelayCorrection}));function w(){var e=b.direction;"alternate"!==e&&(b.direction="normal"!==e?"normal":"reverse"),b.reversed=!b.reversed,p.forEach(function(e){(1===e.loop||e.loop%2==0)&&(e.reversed=b.reversed)})}function S(e,t,i=!1){t&&(b.reversed?t.seek(t.duration*t.loop-(e-t.timelineOffset-t.pingPongDelayCorrection),i):t.seek(e-t.timelineOffset-t.startOnceDelay-t.pingPongDelayCorrection,i))}function _(e){var t=0,i=b.animations,r=i.length;for("alternate"!==b.direction&&b.parent?.direction==="alternate"?b.parent?.rewind===!1&&!0===b.reversePlayback&&!1===b.rewind&&(e=b.parent?.reversed&&"alternate"===b.direction?b.duration-b.delay+b.endDelay-e:b.duration+b.delay-b.endDelay-e):E(!1,b.parent?.rewind,b.rewind,b.parent?.reversePlayback,b.reversePlayback)&&(e=b.parent?.reversed&&"alternate"===b.direction?b.duration-b.delay+b.endDelay-e:b.duration+b.delay-b.endDelay-e);t<r;){let r;var a=i[t],o=a.animatable,h=a.tweens,c=h.length-1,d=h[c];c&&(d=vJ(h,function(t){return e<t.end})[0]||d),r=b.parent?.reversed&&"alternate"===b.direction?vV(e-d.start-d.endDelay,0,d.duration)/d.duration:vV(e-d.start-d.delay,0,d.duration)/d.duration;for(var u=isNaN(r)?1:d.easing(r),p=d.to.strings,f=d.round,m=[],g=d.to.numbers.length,v=void 0,y=0;y<g;y++){let e,t;var x=void 0;"alternate"!==b.direction?b.parent?.rewind===!1&&!0===b.reversePlayback&&!1===b.rewind?(e=d.to.numbers[y],t=d.from.numbers[y]||0):(t=d.to.numbers[y],e=d.from.numbers[y]||0):E(!0,b.parent?.rewind,b.rewind,b.parent?.reversePlayback,b.reversePlayback)?(e=d.to.numbers[y],t=d.from.numbers[y]||0):(t=d.to.numbers[y],e=d.from.numbers[y]||0),x=d.isPath?function(e,t){function i(i){void 0===i&&(i=0);var r=t+i>=1?t+i:0;return e.el.getPointAtLength(r)}var r=yl(e.el,e.svg),a=i(),o=i(-1),h=i(1);switch(e.property){case"x":return(a.x-r.x)*r.w;case"y":return(a.y-r.y)*r.h;case"angle":return 180*Math.atan2(h.y-o.y,h.x-o.x)/Math.PI}}(d.value,u*t):e+u*(t-e),f&&(d.isColor&&y>2||(x=Math.round(x*f)/f)),m.push(x)}var w=p.length;if(w){v=p[0];for(var S=0;S<w;S++){p[S];var _=p[S+1],A=m[S];isNaN(A)||(_?v+=A+_:v+=A+" ")}}else v=m[0];yu[a.type](o.target,a.property,v,o.transforms),a.currentValue=v,t++}}function A(e){b[e]&&!b.passThrough&&b[e](b)}x(b);let M={0:!1,1:!0,2:!1,3:!0,4:!1,5:!1,6:!1,7:!1,8:!1,9:!0,10:!0,11:!1,12:!1,13:!1,14:!0,15:!0,16:!1,17:!0,18:!0,19:!1,20:!1,21:!1,22:!0,23:!0,24:!1,25:!0,26:!1,27:!0,28:!1,29:!1,30:!1,31:!1};function E(e,t,i,r,a){return M[e<<4|t<<3|i<<2|r<<1|a]}function C(e,t=!1){var i=b.duration;let r=b.delay,a=i-b.endDelay;b.parent?.reversed&&"alternate"===b.direction&&(r=b.endDelay,a=i-b.delay);var o=b.reversed?b.duration-e:e;if(b.progress=vV(o/i*100,0,100),t||(b.reversePlayback=o<b.currentTime),v&&function(e,t=!1){if(b.reversed)for(var i=v;i--;)S(e,p[i],t);else for(var r=0;r<v;r++)S(e,p[r],t)}(o,t),!b.began&&o>=r&&(b.began=!0),!b.loopBegan&&b.currentTime>0&&(b.loopBegan=!0,A("loopBegin")),(b.reversed||o>=0)&&o<=r&&0!==b.currentTime&&(_(0),A("change")),(o>=a&&b.currentTime!==i+b.pingPongDelayCorrection||!i)&&(_(i),A("change")),o>r&&o<a?(b.changeBegan||(b.changeBegan=!0,b.changeCompleted=!1,A("changeBegin")),_(o),A("change")):b.changeBegan?(b.changeCompleted=!0,b.changeBegan=!1,A("change"),v&&A("timelineChangeComplete")):b.began&&o>a&&A("changeComplete"),b.currentTime=vV(o,0,i+b.pingPongDelayCorrection),b.began&&A("update"),e>=i){if(b.remaining&&!0!==b.remaining&&b.remaining--,b.remaining){for(let e of(v?f+=b.duration/xv.speed:f+=b.duration,p))e.setStartTime(0),e.remaining=e.loop;A("loopComplete"),b.loopBegan=!1,"alternate"===b.direction?w():v&&(b.direction="normal",b.reversed=!1,p.forEach(function(e){return e.reversed=!1}))}else b.paused=!0,b.completed||(b.completed=!0,A("loopComplete"),A("complete"),!b.passThrough&&"Promise"in window&&(y(),x(b)))}}return b.reset=function(){var e=b.direction;b.passThrough=!1,b.currentTime=0,b.progress=0,b.paused=!0,b.began=!1,b.loopBegan=!1,b.changeBegan=!1,b.completed=!1,b.changeCompleted=!1,b.reversed="reverse"===e,b.remaining=b.loop,v=(p=b.children).length;for(var t=v;t--;)b.children[t].reset();_(b.reversed?b.duration:0)},b.setStartTime=function(e){f=e},b.set=function(e,t){return yp(e,t),b},b.tick=function(e){g=e,f||(f=g),C((g+(m-f))*xv.speed)},b.seek=function(e,t=!1){C(e-f,t)},b.pause=function(e){b.paused=!0,v&&(u=e??performance.now())},b.play=function(e){b.paused&&(b.completed&&b.reset(),b.paused=!1,xf.push(b),v&&void 0!==u&&(f+=(e??performance.now())-u),!xu&&xg.isUsingInternalRaf&&xg.play())},b.reverse=function(e=0){w(),b.completed=!b.reversed,f=void 0,m=e},b.restart=function(){b.reset(),f=void 0,m=0,b.play()},b.reset(),b.autoplay&&b.play(),b}function xy(e,t){for(var i=t.length;i--;)v1(e,t[i].animatable.target)&&t.splice(i,1)}"u">typeof document&&document.addEventListener("visibilitychange",function(e){document.hidden?(xf.forEach(function(t){return t.pause(e.timeStamp)}),xm=xf.slice(0),xv.running=xf=[]):xm.forEach(function(t){return t.play(e.timeStamp)})}),xv.version="3.2.0",xv.speed=1,xv.running=xf,xv.remove=function(e){for(var t=yc(e),i=xf.length;i--;){var r=xf[i],a=r.animations,o=r.children;xy(t,a);for(var h=o.length;h--;){var c=o[h],d=c.animations;xy(t,d),d.length||c.children.length||o.splice(h,1)}a.length||o.length||r.pause()}},xv.get=yi,xv.set=yp,xv.convertPx=v9,xv.path=function(e,t){var i=vH.str(e)?vK(e)[0]:e,r=t||100;return function(e){return{property:e,el:i,svg:yl(i),totalLength:yo(i)*(r/100)}}},xv.setDashoffset=function(e){var t=yo(e);return e.setAttribute("stroke-dasharray",t),t},xv.stagger=function(e,t){void 0===t&&(t={});var i=t.direction||"normal",r=t.easing?vZ(t.easing):null,a=t.grid,o=t.axis,h=t.from||0,c="first"===h,d="center"===h,u="last"===h,p=vH.arr(e),f=parseFloat(p?e[0]:e),m=p?parseFloat(e[1]):0,g=v5(p?e[1]:e)||0,v=t.start||0+(p?f:0),y=[],x=0;return function(e,t,b){if(c&&(h=0),d&&(h=(b-1)/2),u&&(h=b-1),!y.length){for(var w=0;w<b;w++){if(a){var S=d?(a[0]-1)/2:h%a[0],_=d?(a[1]-1)/2:Math.floor(h/a[0]),A=w%a[0],M=Math.floor(w/a[0]),E=S-A,C=_-M,T=Math.sqrt(E*E+C*C);"x"===o&&(T=-E),"y"===o&&(T=-C),y.push(T)}else y.push(Math.abs(h-w));x=Math.max.apply(Math,y)}r&&(y=y.map(function(e){return r(e/x)*x})),"reverse"===i&&(y=y.map(function(e){return o?e<0?-1*e:-e:Math.abs(x-e)}))}var P=p?(m-f)/x:f;return v+Math.round(100*y[t])/100*P+g}},xv.timeline=function(e){void 0===e&&(e={});var t=xv(e);return t.duration=0,t.add=function(i,r){var a=xf.indexOf(t),o=t.children;function h(e){e.passThrough=!0}a>-1&&xf.splice(a,1);for(var c=0;c<o.length;c++)h(o[c]);var d=v4(i,v3(vN,e));d.targets=d.targets||e.targets;var u=t.duration;d.autoplay=!1,d.timelineOffset=vH.und(r)?u:yr(r,u),h(t);var p=xv(d);h(p),o.push(p),p.parent=t;var f=yf(o,e);return t.delay=f.delay,t.endDelay=f.endDelay,t.duration=f.duration,!0===p.loop&&(t.duration=1/0),t.seek(0),t.reset(),t.autoplay&&t.play(),t},t},xv.easing=vZ,xv.penner=vQ,xv.random=function(e,t){return Math.floor(Math.random()*(t-e+1))+e};var xx=class extends ia{constructor(e,t,i,r){super(e,t,i),this.isColorA=!0,this.a=r}setRGBA(e,t,i,r){super.setRGB(e,t,i),this.a=r}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,t="srgb"){let i;if("transparent"===e)return this.setRGBA(0,0,0,0),this;if(i=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let r,a=i[1],o=i[2];switch(a){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.a="rgba"===a?parseFloat(r[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.a="hsla"===a?parseFloat(r[4]):1,super.setStyle(e,t)}}return super.setStyle(e,t)}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}},{degToRad:xb,radToDeg:xw}
3139=tK,xS=new ib,x_=new ib,xA=new ix;function xM(e,t,i,r,a,o){let h=void 0!==i[e]?i[e]:void 0,c=r[e];if(null==c)return;let d=null!=h?"string"==typeof h?Number(a.getVariable(h)??0):h:t[e],u="string"==typeof c?Number(a.getVariable(c)??0):c;if(d!==u)return{update:i=>{let r=tK.lerp(d,u,i);o?t[e]=Math.trunc(r):t[e]=r},start:()=>{t[e]=d},end:()=>{t[e]=u}}}function xE(e,t,i,r,a,o){let h=i[e]?i[e]:void 0,c=r[e];if(!c)return;let d=t[e],u=[...h??d].map(e=>"string"==typeof e?Number(a.getVariable(e)??0):e),p=[...c].map(e=>"string"==typeof e?Number(a.getVariable(e)??0):e);if(!(u.length!==p.length||u0(u,p)))return{update:i=>{u.forEach((r,a)=>{let h=tK.lerp(r,p[a],i);t[e][a]=o?Math.trunc(h):h})},start:()=>{Object.assign(t[e],u)},end:()=>{Object.assign(t[e],p)}}}function xC(e,t,i){return t.forEach((t,r)=>{e.setComponent(r,"string"==typeof t?Number(i.getVariable(t)??0):t)}),e}function xT(e,t,i,r,a){let o=i[e]?i[e]:void 0,h=r[e];if(!h)return;let c=t[e],d=o?xC(new ib,o,a):c.clone(),u=xC(new ib,h,a);if(!d.equals(u))return{update:e=>{c.lerpVectors(d,u,e)},start:()=>{c.copy(d)},end:()=>{c.copy(u)}}}function xP(e,t,i){return t.forEach((t,r)=>{e.setComponent(r,"string"==typeof t?Number(i.getVariable(t)??0):t)}),e}function xD(e,t,i,r,a){let o=i[e]?i[e]:void 0,h=r[e];if(!h)return;let c=t[e],d=!(c instanceof tJ),u=c instanceof tJ?c:new tJ().fromArray(c),p=o?xP(new tJ,o,a):u.clone(),f=xP(new tJ,h,a);if(!p.equals(f))return{update:i=>{u.lerpVectors(p,f,i),d&&(t[e]=u.toArray())},start:()=>{u.copy(p),d&&(t[e]=u.toArray())},end:()=>{u.copy(f),d&&(t[e]=u.toArray())}}}function xO(e,t,i,r,a){let o=i[e]?i[e]:void 0,h=r[e];if(!h)return;let c=t[e],d=new xx(c.r,c.g,c.b,c.a),u=o?"string"==typeof o?a.getColor(o).clone():new xx(o.r,o.g,o.b,o.a):d.clone(),p="string"==typeof h?a.getColor(h).clone():new xx(h.r,h.g,h.b,h.a);if(!u.equals(p))return{update:i=>{d.lerpColors(u,p,i);let r=tK.lerp(u.a,p.a,i);d.a=r,t[e]={r:d.r,g:d.g,b:d.b,a:d.a}},start:()=>{d.copy(u)},end:()=>{d.copy(p)}}}function xI(e,t,i,r,a){return"number"==typeof t[e]?xM(e,t,i??{},r,a):Array.isArray(t[e])?xE(e,t,i??{},r,a):void 0}function xR(e,t,i,r,a){let o=i[e],h=r[e];if("number"==typeof t[e])Math.abs(o-h)>1e-4&&(t[e]=tK.lerp(o,h,a));else if(Array.isArray(t[e]))for(let i=0,r=o.length;i<r;i++)t[e][i]=tK.lerp(o[i],h[i],a)}function xL(e,t=[0,0]){return[e&&!isNaN(e[0])?e[0]:t[0],e&&!isNaN(e[1])?e[1]:t[1]]}function xB(e,t,i){switch(e){case 0:return"cubicBezier( 0, 0, 1, 1 )";case 1:return"cubicBezier( .25, .1, .25, 1 )";case 2:return"cubicBezier( .42, 0, 1, 1 )";case 3:return"cubicBezier( 0, 0, .58, 1 )";case 4:return"cubicBezier( .42, 0, .58, 1 )";case 7:return"cubicBezier( .25, 1, .5, 1 )";case 5:let{control1:r,control2:a}=t??{...gO.defaultData};return`cubicBezier( ${r[0]}, ${r[1]}, ${a[0]}, ${a[1]} )`;case 6:let{mass:o,stiffness:h,damping:c,velocity:d}=i??{...gm.defaultData},u=new xk(o,h,c,d),p=u.solve(1);return()=>e=>u.solve(e)/p;case 8:return()=>e=>Math.floor(e)}}function xz(e,t,i){return{id:t,fi:i,data:{id:t,path:e,keyframes:new pV}}}new i6,(bm||(bm={})).is=function(e){return e&&"number"==typeof e.x&&"number"==typeof e.y&&"number"==typeof e.z},(e=>{function t(e,t,i,r){let a=[];return t.properties.forEach((t,o)=>{let h=t.data.path?.[0];if(h&&["position","rotation","scale"].includes(h)){let e=function(e,t=()=>{}){let i=[];for(let r of xF){let a=[...e.keyframes??[]].filter(e=>void 0!==e.data.value[r]).sort((e,t)=>e.data.time-t.data.time),o=a[0];o&&t?.(o.data.value);let h={index:[],t:[]};for(let e=0;e<a.length-1;e++){let t=a[e],i=a[e+1]??t,r={duration:(i?.data?.time-t.data.time)*1e3,delay:0===e?1e3*a[0].data.time:0};e<a.length-1&&(h.t.push({...r,value:e%2==0?1:0,easing:xB(t.data.easing.type,{control1:xL(t.data.easing.cubicControls?.control1,[0,0]),control2:xL(i.data.easing.cubicControls?.control2,[1,1])},t.data.easing.springParameters)}),h.index.push({...r,value:e,easing:"linear"}))}if(a.length>1){let e={t:0,index:0};i.push({targets:e,...h,update:i=>{let o=Math.ceil(e.index),h=o%2==0?e.t:1-e.t,c=a?.[o].data.value,d=a?.[o+1]?.data.value;if(void 0!==c&&void 0!==d){let e={[r]:c[r]+(d[r]-c[r])*h};t?.(e)}}})}}return i}(t.data,i?.[h]);e&&a.push(...e)}if(h&&"shape size"===h&&"geometry"in e){let e=function(e,t,i){let r=[];for(let e of xF){let a={},o=[...t.keyframes??[]].filter(t=>void 0!==t.data.value[e]).sort((e,t)=>
3139e.data.time-t.data.time),h=o[0];h&&i?.(h.data.value),a={index:[],t:[]};for(let e=0;e<o.length-1;e++){let t=o[e],i=o[e+1]??t,r={duration:(i?.data?.time-t.data.time)*1e3,delay:0===e?1e3*o[0].data.time:0};e<o.length-1&&(a.t.push({...r,value:e%2==0?1:0,easing:xB(t.data.easing.type,{control1:xL(t.data.easing.cubicControls?.control1,[0,0]),control2:xL(i.data.easing.cubicControls?.control2,[1,1])},t.data.easing.springParameters)}),a.index.push({...r,value:e,easing:"linear"}))}if(o.length>1){let t={t:0,index:0};r.push({targets:t,...a,update:r=>{let a=Math.ceil(t.index),h=a%2==0?t.t:1-t.t,c=o?.[a].data.value,d=o?.[a+1]?.data.value;if(void 0!==c&&void 0!==d){let t={[e]:c[e]+(d[e]-c[e])*h};i?.(t)}}})}}return r}(0,t.data,i?.shapeSize);e&&a.push(...e)}if(h&&"path extrusion"===h&&e instanceof D9){let r=function(e,t,i){let r={},a=[...t.keyframes??[]].sort((e,t)=>e.data.time-t.data.time),o=a[0];o&&i?.(e,o.data.value),r={index:[],t:[]};for(let e=0;e<a.length-1;e++){let t=a[e],i=a[e+1]??t,o={duration:(i?.data?.time-t.data.time)*1e3,delay:0===e?1e3*a[0].data.time:0};e<a.length-1&&(r.t.push({...o,value:e%2==0?1:0,easing:xB(t.data.easing.type,{control1:xL(t.data.easing.cubicControls?.control1,[0,0]),control2:xL(i.data.easing.cubicControls?.control2,[1,1])},t.data.easing.springParameters)}),r.index.push({...o,value:e,easing:"linear"}))}if(a.length>1){let t={t:0,index:0};return{targets:t,...r,update:r=>{let o=Math.ceil(t.index),h=o%2==0?t.t:1-t.t,c=a?.[Math.min(o,a.length-1)].data.value,d=a?.[Math.min(o,a.length-1)+1]?.data.value;i?.(e,function(e,t,i,r){let a=e.geometry.userData.parameters.extrusion;if(a)return g$.forEach(e=>{xR(e,a,t,i,r)}),a}(e,c,d,h))}}}}(e,t.data,i?.pathExtrusion);r&&a.push(r)}if(h&&"path snapping"===h&&e.data.pathSnapping){let r=function(e,t,i){let r={},a=[...t.keyframes??[]].sort((e,t)=>e.data.time-t.data.time),o=a[0];o&&i?.(o.data.value),r={index:[],t:[]};for(let e=0;e<a.length-1;e++){let t=a[e],i=a[e+1]??t,o={duration:(i?.data?.time-t.data.time)*1e3,delay:0===e?1e3*a[0].data.time:0};e<a.length-1&&(r.t.push({...o,value:e%2==0?1:0,easing:xB(t.data.easing.type,{control1:xL(t.data.easing.cubicControls?.control1,[0,0]),control2:xL(i.data.easing.cubicControls?.control2,[1,1])},t.data.easing.springParameters)}),r.index.push({...o,value:e,easing:"linear"}))}if(a.length>1){let t={t:0,index:0};return{targets:t,...r,update:r=>{let o=Math.ceil(t.index),h=o%2==0?t.t:1-t.t,c=a?.[Math.min(o,a.length-1)].data.value,d=a?.[Math.min(o,a.length-1)+1]?.data.value;i?.(function(e,t,i,r){let a=e.updatedPathSnapping;if(a)return vm.forEach(e=>{xR(e,a,t,i,r)}),a}(e,c,d,h))}}}}(e,t.data,i?.pathSnapping);r&&a.push(r)}if(h&&"material"===h&&"Mesh"===e.type&&"material"in e&&e.material instanceof Ea){let o=t.data.id;if(o){let h=e.material.getLayerByUuid(o);if(h){let e=xN(h,t.data,i?.material,r);e&&a.push(e)}else{let o=e.material.getLayersOfType(t.data.type);if(o)for(let e of o){let o=xN(e,t.data,i?.material,r);o&&a.push(o)}}}}if(h&&"opacity"===h&&"Mesh"===e.type&&"material"in e){let e=function(e,t){if(e){let i={},r=[...e.keyframes??[]].sort((e,t)=>e.data.time-t.data.time),a=r[0];a&&t?.(a.data.value),i={index:[],t:[]};for(let e=0;e<r.length-1;e++){let t=r[e],a=r[e+1]??t,o={duration:(a?.data?.time-t.data.time)*1e3,delay:0===e?1e3*r[0].data.time:0};e<r.length-1&&(i.t.push({...o,value:e%2==0?1:0,easing:xB(t.data.easing.type,{control1:xL(t.data.easing.cubicControls?.control1,[0,0]),control2:xL(a.data.easing.cubicControls?.control2,[1,1])},t.data.easing.springParameters)}),i.index.push({...o,value:e,easing:"linear"}))}if(r.length>1){let e={t:0,index:0};return{targets:e,...i,update:i=>{let a=Math.ceil(e.index),o=a%2==0?e.t:1-e.t,h=r?.[Math.min(a,r.length-1)].data.value,c=r?.[Math.min(a,r.length-1)+1]?.data.value,d=tK.lerp(h,c,o);t?.(d)}}}}}(t.data,i?.opacity);e&&a.push(e)}if(h&&"cloner"===h){let r=function(e,t,i){let r={},a=[...t.keyframes??[]].sort((e,t)=>e.data.time-t.data.time),o=a[0];o&&i?.(e,o.data.value,o.data.value),r={index:[],t:[]};for(let e=0;e<a.length-1;e++){let t=a[e],i=a[e+1]??t,o={duration:(i?.data?.time-t.data.time)*1e3,delay:0===e?1e3*a[0].data.time:0};e<a.length-1&&(r.t.push({...o,value:e%2==0?1:0,easing:xB(t.data.easing.type,{control1:xL(t.data.easing.cubicControls?.control1,[0,0]),control2:xL(i.data.easing.cubicControls?.control2,[1,1])},t.data.easing.springParameters)}),r.index.push({...o,value:e,easing:"linear"}))}if(a.length>1){let t={t:0,index:0};return{targets:t,...r,update:r=>{let o=Math.ceil(t.index),h=o%2==0?t.t:1-t.t,c=a?.[Math.min(o,a.length-1)].data.value,d=a?.[Math.min(o,a.length-1)+1]?.data.value;i?.(e,c.randomnessObject?void 0:function(e,t,i,r){let a=r.cloner?.parameters;if(a){for(let r of(xR("count",a,e,t,i),a.count=Math.trunc(a.count),gx))xR(r,a.radial,e.radial,t.radial,i);for(let r of gb)xR(r,a.linear,e.linear,t.linear,i);for(let r of gw)xR(r,a.grid,e.grid,t.grid,i);for(let r of gS)xR(r,a.toObject,e.toObject,t.toObject,i);return a}}(c,d,h,e),c.randomnessObject?function(e,t,i,r){let a=r.cloner?.parameters;if(a){for(let r of g_)xR(r,a.randomnessObject,e.randomnessObject,t.randomnessObject,i);return a}}(c,d,h,e):void 0)}}}}(e,t.data,i?.cloner);r&&a.push(r)}if(h&&"camera"===h&&e instanceof Cq){let r=function(e,t,i,r){if(t){let a={[r]:[]},o=[...t.keyframes??[]].sort((e,t)=>
3139e.data.time-t.data.time),h=o[0];h&&(e[r]=h.data.value,h&&i?.(r,h.data.value));for(let e=0;e<o.length-1;e++){let t=o[e];if(!Number.isFinite(t.data.value))continue;let i=o[e+1]??t,h=i.data.value;a[r].push({value:h,easing:xB(t.data.easing.type,{control1:xL(t.data.easing.cubicControls?.control1,[0,0]),control2:xL(i.data.easing.cubicControls?.control2,[1,1])},t.data.easing.springParameters),duration:(i?.data?.time-t.data.time)*1e3,delay:0===e?1e3*o[0].data.time:0})}if(o.length>1)return{targets:e,...a,update:()=>{i?.(r,e[r])}}}}(e,t.data,i?.camera,"zoom");r&&a.push(r)}if(h&&"light"===h&&(e instanceof De||e instanceof D6||e instanceof Ds)){let o=function(e,t,i,r,a){if(t){let o={},h=[...t.keyframes??[]].sort((e,t)=>e.data.time-t.data.time),c=h[0];if(c){let t=c.data.value;e[r]=t,i?.(r,t)}o={index:[],t:[]};for(let e=0;e<h.length-1;e++){let t=h[e],i=h[e+1]??t,r={duration:(i?.data?.time-t.data.time)*1e3,delay:0===e?1e3*h[0].data.time:0};e<h.length-1&&(o.t.push({...r,value:e%2==0?1:0,easing:xB(t.data.easing.type,{control1:xL(t.data.easing.cubicControls?.control1,[0,0]),control2:xL(i.data.easing.cubicControls?.control2,[1,1])},t.data.easing.springParameters)}),o.index.push({...r,value:e,easing:"linear"}))}if(h.length>1){let e={t:0,index:0};return{targets:e,...o,update:()=>{let t=Math.ceil(e.index),o=t%2==0?e.t:1-e.t,c=xU(h?.[Math.min(t,h.length-1)].data.value,h?.[Math.min(t,h.length-1)+1]?.data.value,o,a);i?.(r,c)}}}}}(e,t.data,i?.light,t.data.path[1],r);o&&a.push(o)}}),a}e.getControlsWithDefault=function(e,t){let i=[0,0],r=[1,1];if(e?.cubicControls)i=xL(e.cubicControls.control1,i);else switch(e?.type){case 2:case 4:i=[.42,0];break;case 3:case 0:i=[0,0];break;case 1:i=[.25,.1];break;case 7:i=[.25,1]}if(t?.cubicControls)r=xL(t.cubicControls.control2,r);else switch(t?.type){case 2:case 0:r=[1,1];break;case 3:case 4:r=[.58,1];break;case 1:r=[.25,1];break;case 7:r=[.5,1]}return{control1:i,control2:r}},e.defaultData=function(e,t){return{id:e,name:t,to:5,properties:new pV}},e.createMaterialGroup=function(e){let t=new pV;return e.forEach(({data:e,id:i,fi:r})=>{if("light"===e.type){let a=xz(["material",`${e.category} lighting`],i,r);t.push(a)}else{let a=xz(["material",e.type],i,r);t.push(a)}}),t},e.createName=function(e){return Object.entries(e).reduce((e,[t,i])=>("string"!=typeof i&&e.push({name:i.name}),e),[])},e.createTimeline=function(e,i,r){let a=xv.timeline({easing:xB(0),begin(){e.resetBBoxNeedsUpdate()},change(){e.resetBBoxNeedsUpdate()},direction:i.direction,autoplay:!1});return t(e,i,r).forEach(e=>a.add(e,0)),a.duration=1e3*i.to,a},e.addKeyframesToTimeline=t,e.Presets=[{name:"Slide in",animationParams:{translateX:{value:[-20,0],easing:xB(3),duration:1e3},opacity:{value:[0,1],easing:xB(3),duration:1e3},endDelay:250,loop:!0}},{name:"Rotate",animationParams:{rotate:{value:[0,"1turn"],easing:xB(5),duration:700},endDelay:250,loop:!0}},{name:"Scale Out",animationParams:{scale:{value:[1,1.5],easing:xB(4),duration:1e3},endDelay:250,loop:!0}},{name:"Jump",animationParams:{translateY:[{value:0,duration:200,easing:"linear"},{value:-20,easing:"linear",duration:200},{value:0,easing:"linear",duration:100}],endDelay:500,loop:!0}},{name:"Jump Rotate",animationParams:{translateY:[{value:0,duration:200,easing:"linear"},{value:-20,easing:"linear",duration:200},{value:0,easing:"linear",duration:100}],rotate:{value:[0,"1turn"],easing:xB(5),duration:500},endDelay:500,loop:!0}},{name:"Bounce",animationParams:{translateY:{value:["20px","-20px"],duration:575,easing:"easeOutQuad"},direction:"alternate",loop:!0}}]})(bg||(bg={}));var xF=["x","y","z"];function xN(e,t,i,r){if(t){let a={},o=[...t.keyframes??[]].sort((e,t)=>e.data.time-t.data.time);if("data"in e){let t=o[0];t&&i?.(t.data.value,e),a={index:[],t:[]};for(let e=0;e<o.length-1;e++){let t=o[e],i=o[e+1]??t,r={duration:(i?.data?.time-t.data.time)*1e3,delay:0===e?1e3*o[0].data.time:0};e<o.length-1&&(a.t.push({...r,value:e%2==0?1:0,easing:xB(t.data.easing.type,{control1:xL(t.data.easing.cubicControls?.control1,[0,0]),control2:xL(i.data.easing.cubicControls?.control2,[1,1])},t.data.easing.springParameters)}),a.index.push({...r,value:e,easing:"linear"}))}if(o.length>1){let t={t:0,index:0};return{targets:t,...a,update:a=>{let h=Math.ceil(t.index),c=h%2==0?t.t:1-t.t,d=o?.[Math.min(h,o.length-1)].data.value,u=o?.[Math.min(h,o.length-1)+1]?.data.value,p={},f={};if(Object.keys(d).length>0&&Object.keys(u).length>0){for(let t in e.data)if(t in d&&t in u){let e=xU(d[t],u[t],c,r);void 0!==e&&(p[t]=e,f[t]={start:d,end:u,t:c})}}i?.({...p},e,f)}}}}}}function xU(e,t,i,r){if("string"==typeof e&&r&&(e=r.color(e)),"string"==typeof t&&r&&(e=r.color(t)),"number"==typeof e)return e===t?void 0:tK.lerp(e,t,i);if(gp.is(e))return gp.lerp(e,t,i);if(gu.is(e))return gu.lerp(e,t,i);if(Array.isArray(e))return(e.length>t.length?t:e).map((r,a,o)=>
3139{if(!Array.isArray(r))return tK.lerp(e[a],t[a],i);{let r=e[a].length>t[a].length?t[a].length:e[a].length;return(4===r?gh:3===r?gl:go).lerp(e[a],t[a],i)}});if("object"==typeof e&&null!==e){let a={};for(let o in e){let h=xU(e[o],t[o],i,r);void 0!==h&&(a[o]=h)}return a}}var xk=class{constructor(e=1,t=100,i=10,r=0){this.mass=e,this.stiffness=t,this.damping=i,this.initialVelocity=r,this.m_w0=Math.sqrt(t/e),this.m_zeta=i/(2*Math.sqrt(t*e)),this.m_zeta<1?(this.m_wd=this.m_w0*Math.sqrt(1-this.m_zeta*this.m_zeta),this.m_A=1,this.m_B=(this.m_zeta*this.m_w0+-r)/this.m_wd):(this.m_wd=0,this.m_A=1,this.m_B=-r+this.m_w0)}solve(e){return 1-(e=this.m_zeta<1?Math.exp(-e*this.m_zeta*this.m_w0)*(this.m_A*Math.cos(this.m_wd*e)+this.m_B*Math.sin(this.m_wd*e)):(this.m_A+this.m_B*e)*Math.exp(-e*this.m_w0))}getDuration(){let e=0,t=0;for(;;)if(e+=.16666666666666666,1===this.solve(e)){if(++t>=16)break}else t=0;return 166.66666666666666*e}},xV=class{constructor(){}};function xj(e,t,i){return i.min.x=t[e],i.min.y=t[e+1],i.min.z=t[e+2],i.max.x=t[e+3],i.max.y=t[e+4],i.max.z=t[e+5],i}function xG(e){let t=-1,i=-1/0;for(let r=0;r<3;r++){let a=e[r+3]-e[r];a>i&&(i=a,t=r)}return t}function xH(e,t,i){let r,a;for(let o=0;o<3;o++){let h=o+3;r=e[o],a=t[o],i[o]=r<a?r:a,r=e[h],a=t[h],i[h]=r>a?r:a}}function xW(e,t,i){for(let r=0;r<3;r++){let a=t[e+2*r],o=t[e+2*r+1],h=a-o,c=a+o;h<i[r]&&(i[r]=h),c>i[r+3]&&(i[r+3]=c)}}function xq(e){let t=e[3]-e[0],i=e[4]-e[1],r=e[5]-e[2];return 2*(t*i+i*r+r*t)}function xX(e,t,i,r,a=null){let o=1/0,h=1/0,c=1/0,d=-1/0,u=-1/0,p=-1/0,f=1/0,m=1/0,g=1/0,v=-1/0,y=-1/0,x=-1/0,b=null!==a;for(let r=6*t,a=(t+i)*6;r<a;r+=6){let t=e[r+0],i=e[r+1],a=t-i,w=t+i;a<o&&(o=a),w>d&&(d=w),b&&t<f&&(f=t),b&&t>v&&(v=t);let S=e[r+2],_=e[r+3],A=S-_,M=S+_;A<h&&(h=A),M>u&&(u=M),b&&S<m&&(m=S),b&&S>y&&(y=S);let E=e[r+4],C=e[r+5],T=E-C,P=E+C;T<c&&(c=T),P>p&&(p=P),b&&E<g&&(g=E),b&&E>x&&(x=E)}r[0]=o,r[1]=h,r[2]=c,r[3]=d,r[4]=u,r[5]=p,b&&(a[0]=f,a[1]=m,a[2]=g,a[3]=v,a[4]=y,a[5]=x)}var xY=(e,t)=>e.candidate-t.candidate,xQ=Array(32).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),xZ=new Float32Array(6),xK=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let i=1/0,r=-1/0;for(let a=0,o=e.length;a<o;a++){let o=e[a][t];i=o<i?o:i,r=o>r?o:r}this.min=i,this.max=r}setFromPoints(e,t){let i=1/0,r=-1/0;for(let a=0,o=t.length;a<o;a++){let o=t[a],h=e.dot(o);i=h<i?h:i,r=h>r?h:r}this.min=i,this.max=r}isSeparated(e){return this.min>e.max||e.min>this.max}};xK.prototype.setFromBox=(v=new ib,function(e,t){let i=t.min,r=t.max,a=1/0,o=-1/0;for(let t=0;t<=1;t++)for(let h=0;h<=1;h++)for(let c=0;c<=1;c++){v.x=i.x*t+r.x*(1-t),v.y=i.y*h+r.y*(1-h),v.z=i.z*c+r.z*(1-c);let d=e.dot(v);a=Math.min(d,a),o=Math.max(d,o)}this.min=a,this.max=o}),new xK;var xJ=(y=new ib,x=new ib,b=new ib,function(e,t,i){let r=e.start,a=t.start;b.subVectors(r,a),y.subVectors(e.end,e.start),x.subVectors(t.end,t.start);let o=b.dot(x),h=x.dot(y),c=x.dot(x),d=b.dot(y),u=y.dot(y)*c-h*h,p,f;p=0!==u?(o*h-d*c)/u:0,f=(o+p*h)/c,i.x=p,i.y=f}),x$=(w=new tJ,S=new ib,_=new ib,function(e,t,i,r){xJ(e,t,w);let a=w.x,o=w.y;if(a>=0&&a<=1&&o>=0&&o<=1){e.at(a,i),t.at(o,r);return}if(a>=0&&a<=1){o<0?t.at(0,r):t.at(1,r),e.closestPointToPoint(r,!0,i);return}if(o>=0&&o<=1){a<0?e.at(0,i):e.at(1,i),t.closestPointToPoint(i,!0,r);return}{let h,c;if(h=a<0?e.start:e.end,c=o<0?t.start:t.end,e.closestPointToPoint(c,!0,S),t.closestPointToPoint(h,!0,_),S.distanceToSquared(c)<=_.distanceToSquared(h)){i.copy(S),r.copy(c);return}i.copy(h),r.copy(_);return}}),x0=(A=new ib,M=new ib,E=new so,C=new lj,function(e,t){let{radius:i,center:r}=e,{a:a,b:o,c:h}=t;if(C.start=a,C.end=o,C.closestPointToPoint(r,!0,A).distanceTo(r)<=i||(C.start=a,C.end=h,C.closestPointToPoint(r,!0,A).distanceTo(r)<=i)||(C.start=o,C.end=h,C.closestPointToPoint(r,!0,A).distanceTo(r)<=i))return!0;let c=t.getPlane(E);if(Math.abs(c.distanceToPoint(r))<=i){let e=c.projectPoint(r,M);if(t.containsPoint(e))return!0}return!1});function x1(e){return 1e-15>Math.abs(e)}var x2=class extends rS{constructor(...e){super(...e),this.isExtendedTriangle=!0,this.satAxes=[,,,,].fill().map(()=>new ib),this.satBounds=[,,,,].fill().map(()=>new xK),this.points=[this.a,this.b,this.c],this.sphere=new iV,this.plane=new so,this.needsUpdate=!0}intersectsSphere(e){return x0(e,this)}update(){let e=this.a,t=this.b,i=this.c,r=this.points,a=this.satAxes,o=this.satBounds,h=a[0],c=o[0];this.getNormal(h),c.setFromPoints(h,r);let d=a[1],u=o[1];d.subVectors(e,t),u.setFromPoints(d,r);let p=a[2],f=o[2];p.subVectors(t,i),f.setFromPoints(p,r);let m=a[3],g=o[3];m.subVectors(i,e),g.setFromPoints(m,r),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(h,e),this.needsUpdate=!1}};x2.prototype.closestPointToSegment=(T=new ib,P=new ib,D=new lj,function(e,t=null,i=null){let{start:r,end:a}=e,o=this.points,h,c=1/0;for(let r=0;r<3;r++){let a=(r+1)%3;D.start.copy(o[r]),D.end.copy(o[a]),x$(D,e,T,P),(h=T.distanceToSquared(P))<c&&(c=h,t&&t.copy(T),i&&i.copy(P))}return this.closestPointToPoint(r,T),(h=r.distanceToSquared(T))<c&&(c=h,t&&t.copy(T),i&&i.copy(r)),this.closestPointToPoint(a,T),(h=a.distanceToSquared(T))<c&&(c=h,t&&t.copy(T),i&&i.copy(a)),Math.sqrt(c)}
3139),x2.prototype.intersectsTriangle=(O=new x2,I=[,,,],R=[,,,],L=new xK,B=new xK,z=new ib,F=new ib,N=new ib,U=new ib,k=new lj,V=new lj,j=new lj,function(e,t=null,i=!1){this.needsUpdate&&this.update(),e.isExtendedTriangle?e.needsUpdate&&e.update():(O.copy(e),O.update(),e=O);let r=this.plane,a=e.plane;if(Math.abs(r.normal.dot(a.normal))>1-1e-10){let r=this.satBounds,a=this.satAxes;R[0]=e.a,R[1]=e.b,R[2]=e.c;for(let e=0;e<4;e++){let t=r[e],i=a[e];if(L.setFromPoints(i,R),t.isSeparated(L))return!1}let o=e.satBounds,h=e.satAxes;I[0]=this.a,I[1]=this.b,I[2]=this.c;for(let e=0;e<4;e++){let t=o[e],i=h[e];if(L.setFromPoints(i,I),t.isSeparated(L))return!1}for(let e=0;e<4;e++){let t=a[e];for(let e=0;e<4;e++){let i=h[e];if(z.crossVectors(t,i),L.setFromPoints(z,I),B.setFromPoints(z,R),L.isSeparated(B))return!1}}return t&&(i||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),t.start.set(0,0,0),t.end.set(0,0,0)),!0}{let i=this.points,o=!1,h=0;for(let e=0;e<3;e++){let t=i[e],r=i[(e+1)%3];k.start.copy(t),k.end.copy(r),k.delta(F);let c=o?V.start:V.end,d=x1(a.distanceToPoint(t));if(x1(a.normal.dot(F))&&d){V.copy(k),h=2;break}if((a.intersectLine(k,c)||d)&&!x1(c.distanceTo(r))){if(h++,o)break;o=!0}}if(1===h&&e.containsPoint(V.end))return t&&(t.start.copy(V.end),t.end.copy(V.end)),!0;if(2!==h)return!1;let c=e.points,d=!1,u=0;for(let e=0;e<3;e++){let t=c[e],i=c[(e+1)%3];k.start.copy(t),k.end.copy(i),k.delta(N);let a=d?j.start:j.end,o=x1(r.distanceToPoint(t));if(x1(r.normal.dot(N))&&o){j.copy(k),u=2;break}if((r.intersectLine(k,a)||o)&&!x1(a.distanceTo(i))){if(u++,d)break;d=!0}}if(1===u&&this.containsPoint(j.end))return t&&(t.start.copy(j.end),t.end.copy(j.end)),!0;if(2!==u)return!1;if(V.delta(F),j.delta(N),0>F.dot(N)){let e=j.start;j.start=j.end,j.end=e}let p=V.start.dot(F),f=V.end.dot(F),m=j.start.dot(F),g=j.end.dot(F);return(p===g||m===f||f<m!=p<g)&&(t&&(U.subVectors(V.start,j.start),U.dot(F)>0?t.start.copy(V.start):t.start.copy(j.start),U.subVectors(V.end,j.end),0>U.dot(F)?t.end.copy(V.end):t.end.copy(j.end)),!0)}}),x2.prototype.distanceToPoint=(G=new ib,function(e){return this.closestPointToPoint(e,G),e.distanceTo(G)}),x2.prototype.distanceToTriangle=(H=new ib,W=new ib,q=["a","b","c"],X=new lj,Y=new lj,function(e,t=null,i=null){let r=t||i?X:null;if(this.intersectsTriangle(e,r))return(t||i)&&(t&&r.getCenter(t),i&&r.getCenter(i)),0;let a=1/0;for(let r=0;r<3;r++){let o,h=q[r],c=e[h];this.closestPointToPoint(c,H),(o=c.distanceToSquared(H))<a&&(a=o,t&&t.copy(H),i&&i.copy(c));let d=this[h];e.closestPointToPoint(d,H),(o=d.distanceToSquared(H))<a&&(a=o,t&&t.copy(d),i&&i.copy(H))}for(let r=0;r<3;r++){let o=q[r],h=q[(r+1)%3];X.set(this[o],this[h]);for(let r=0;r<3;r++){let o=q[r],h=q[(r+1)%3];Y.set(e[o],e[h]),x$(X,Y,H,W);let c=H.distanceToSquared(W);c<a&&(a=c,t&&t.copy(H),i&&i.copy(W))}}return Math.sqrt(a)});var x3=class{constructor(e,t,i){this.isOrientedBox=!0,this.min=new ib,this.max=new ib,this.matrix=new iZ,this.invMatrix=new iZ,this.points=Array(8).fill().map(()=>new ib),this.satAxes=[,,,].fill().map(()=>new ib),this.satBounds=[,,,].fill().map(()=>new xK),this.alignedSatBounds=[,,,].fill().map(()=>new xK),this.needsUpdate=!1,e&&this.min.copy(e),t&&this.max.copy(t),i&&this.matrix.copy(i)}set(e,t,i){this.min.copy(e),this.max.copy(t),this.matrix.copy(i),this.needsUpdate=!0}copy(e){this.min.copy(e.min),this.max.copy(e.max),this.matrix.copy(e.matrix),this.needsUpdate=!0}};x3.prototype.update=function(){let e=this.matrix,t=this.min,i=this.max,r=this.points;for(let a=0;a<=1;a++)for(let o=0;o<=1;o++)for(let h=0;h<=1;h++){let c=r[1*a|2*o|4*h];c.x=a?i.x:t.x,c.y=o?i.y:t.y,c.z=h?i.z:t.z,c.applyMatrix4(e)}let a=this.satBounds,o=this.satAxes,h=r[0];for(let e=0;e<3;e++){let t=o[e],i=a[e],c=r[1<<e];t.subVectors(h,c),i.setFromPoints(t,r)}let c=this.alignedSatBounds;c[0].setFromPointsField(r,"x"),c[1].setFromPointsField(r,"y"),c[2].setFromPointsField(r,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1},x3.prototype.intersectsBox=(Q=new xK,function(e){this.needsUpdate&&this.update();let t=e.min,i=e.max,r=this.satBounds,a=this.satAxes,o=this.alignedSatBounds;if(Q.min=t.x,Q.max=i.x,o[0].isSeparated(Q)||(Q.min=t.y,Q.max=i.y,o[1].isSeparated(Q))||(Q.min=t.z,Q.max=i.z,o[2].isSeparated(Q)))return!1;for(let t=0;t<3;t++){let i=a[t],o=r[t];if(Q.setFromBox(i,e),o.isSeparated(Q))return!1}return!0}),x3.prototype.intersectsTriangle=(Z=new x2,K=[,,,],J=new xK,$=new xK,ee=new ib,function(e){this.needsUpdate&&this.update(),e.isExtendedTriangle?e.needsUpdate&&e.update(
3139):(Z.copy(e),Z.update(),e=Z);let t=this.satBounds,i=this.satAxes;K[0]=e.a,K[1]=e.b,K[2]=e.c;for(let e=0;e<3;e++){let r=t[e],a=i[e];if(J.setFromPoints(a,K),r.isSeparated(J))return!1}let r=e.satBounds,a=e.satAxes,o=this.points;for(let e=0;e<3;e++){let t=r[e],i=a[e];if(J.setFromPoints(i,o),t.isSeparated(J))return!1}for(let e=0;e<3;e++){let t=i[e];for(let e=0;e<4;e++){let i=a[e];if(ee.crossVectors(t,i),J.setFromPoints(ee,K),$.setFromPoints(ee,o),J.isSeparated($))return!1}}return!0}),x3.prototype.closestPointToPoint=function(e,t){return this.needsUpdate&&this.update(),t.copy(e).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),t},x3.prototype.distanceToPoint=(et=new ib,function(e){return this.closestPointToPoint(e,et),e.distanceTo(et)}),x3.prototype.distanceToBox=(ei=["x","y","z"],er=Array(12).fill().map(()=>new lj),es=Array(12).fill().map(()=>new lj),ea=new ib,en=new ib,function(e,t=0,i=null,r=null){if(this.needsUpdate&&this.update(),this.intersectsBox(e))return(i||r)&&(e.getCenter(en),this.closestPointToPoint(en,ea),e.closestPointToPoint(ea,en),i&&i.copy(ea),r&&r.copy(en)),0;let a=t*t,o=e.min,h=e.max,c=this.points,d=1/0;for(let e=0;e<8;e++){let t=c[e];en.copy(t).clamp(o,h);let u=t.distanceToSquared(en);
3139if(u<d&&(d=u,i&&i.copy(t),r&&r.copy(en),u<a))return Math.sqrt(u)}let u=0;for(let e=0;e<3;e++)for(let t=0;t<=1;t++)for(let i=0;i<=1;i++){let r=(e+1)%3,a=(e+2)%3,d=t<<r|i<<a,p=1<<e|t<<r|i<<a,f=c[d],m=c[p];er[u].set(f,m);let g=ei[e],v=ei[r],y=ei[a],x=es[u],b=x.start,w=x.end;b[g]=o[g],b[v]=t?o[v]:h[v],b[y]=i?o[y]:h[v],w[g]=h[g],w[v]=t?o[v]:h[v],w[y]=i?o[y]:h[v],u++}for(let e=0;e<=1;e++)for(let t=0;t<=1;t++)for(let c=0;c<=1;c++){en.x=e?h.x:o.x,en.y=t?h.y:o.y,en.z=c?h.z:o.z,this.closestPointToPoint(en,ea);let u=en.distanceToSquared(ea);if(u<d&&(d=u,i&&i.copy(ea),r&&r.copy(en),u<a))return Math.sqrt(u)}for(let e=0;e<12;e++){let t=er[e];for(let e=0;e<12;e++){x$(t,es[e],ea,en);let o=ea.distanceToSquared(en);if(o<d&&(d=o,i&&i.copy(ea),r&&r.copy(en),o<a))return Math.sqrt(o)}}return Math.sqrt(d)});var x4=new ib,x5=new ib,x6=new ib,x8=new tJ,x9=new tJ,x7=new tJ,be=new ib,bt=new ib,bi=new ib,br=new ib;function bs(e,t,i,r,a){let o=3*r,h=e.index.getX(o),c=e.index.getX(o+1),d=e.index.getX(o+2),{position:u,normal:p,uv:f,uv1:m}=e.attributes,g=function(e,t,i,r,a,o,h,c,d){x4.fromBufferAttribute(t,o),x5.fromBufferAttribute(t,h),x6.fromBufferAttribute(t,c);let u=null===(1===d?e.intersectTriangle(x6,x5,x4,!0,br):e.intersectTriangle(x4,x5,x6,2!==d,br))?null:{distance:e.origin.distanceTo(br),point:br.clone()};if(u){r&&(x8.fromBufferAttribute(r,o),x9.fromBufferAttribute(r,h),x7.fromBufferAttribute(r,c),u.uv=rS.getInterpolation(br,x4,x5,x6,x8,x9,x7,new tJ)),a&&(x8.fromBufferAttribute(a,o),x9.fromBufferAttribute(a,h),x7.fromBufferAttribute(a,c),u.uv1=rS.getInterpolation(br,x4,x5,x6,x8,x9,x7,new tJ)),i&&(be.fromBufferAttribute(i,o),bt.fromBufferAttribute(i,h),bi.fromBufferAttribute(i,c),u.normal=rS.getInterpolation(br,x4,x5,x6,be,bt,bi,new ib),u.normal.dot(e.direction)>0&&u.normal.multiplyScalar(-1));let t={a:o,b:h,c:c,normal:new ib,materialIndex:0};rS.getNormal(x4,x5,x6,t.normal),u.face=t,u.faceIndex=o}return u}(i,u,p,f,m,h,c,d,t);return g?(g.faceIndex=r,a&&a.push(g),g):null}function ba(e,t,i,r){let a=e.a,o=e.b,h=e.c,c=t,d=t+1,u=t+2;i&&(c=i.getX(t),d=i.getX(t+1),u=i.getX(t+2)),a.x=r.getX(c),a.y=r.getY(c),a.z=r.getZ(c),o.x=r.getX(d),o.y=r.getY(d),o.z=r.getZ(d),h.x=r.getX(u),h.y=r.getY(u),h.z=r.getZ(u)}function bn(e,t,i,r,a,o,h){let c=i.index,d=i.attributes.position;for(let i=e,u=t+e;i<u;i++)if(ba(h,3*i,c,d),h.needsUpdate=!0,r(h,i,a,o))return!0;return!1}var bo=class{constructor(e){this._getNewPrimitive=e,this._primitives=[]}getPrimitive(){let e=this._primitives;return 0===e.length?this._getNewPrimitive():e.pop()}releasePrimitive(e){this._primitives.push(e)}};function bl(e,t){return 65535===t[e+15]}var bh=new i_,bc=new ib,bd=["x","y","z"],bu=(eh=[],ec=new bo(()=>new i_),function(...e){eo=ec.getPrimitive(),el=ec.getPrimitive(),eh.push(eo,el);let t=function e(t,i,r,a,o=null,h=0,c=0){function d(e){let t=2*e,i=bx,r=bb;for(;!bl(t,i);)e+=8,t=2*e;return r[e+6]}function u(e){let t=2*e,i=bx,r=bb;for(;!bl(t,i);)t=2*(e=r[e+6]);return r[e+6]+i[t+14]}let p=2*t,f=by,m=bx,g=bb;if(bl(p,m)){let e=g[t+6],i=m[p+14];return xj(t,f,eo),a(e,i,!1,c,h+t,eo)}{let p=t+8,v=g[t+6],y=p,x=v,b,w,S,_;if(o&&(S=eo,_=el,xj(y,f,S),xj(x,f,_),b=o(S),(w=o(_))<b)){y=v,x=p;let e=b;b=w,w=e,S=_}S||xj(y,f,S=eo);let A=r(S,bl(2*y,m),b,c+1,h+y),M;if(2===A){let e=d(y),t=u(y)-e;M=a(e,t,!0,c+1,h+y,S)}else M=A&&e(y,i,r,a,o,h,c+1);if(M)return!0;xj(x,f,_=el);let E=r(_,bl(2*x,m),w,c+1,h+x),C;if(2===E){let e=d(x),t=u(x)-e;C=a(e,t,!0,c+1,h+x,_)}else C=E&&e(x,i,r,a,o,h,c+1);return!!C}}(...e);ec.releasePrimitive(eo),ec.releasePrimitive(el),eh.pop(),eh.pop();let i=eh.length;return i>0&&(el=eh[i-1],eo=eh[i-2]),t}),bp=(ed=new x2,eu=new x2,ep=new iZ,ef=new x3,em=new x3,function e(t,i,r,a,o=null){let h=2*t,c=by,d=bx,u=bb;if(null===o&&(r.boundingBox||r.computeBoundingBox(),ef.set(r.boundingBox.min,r.boundingBox.max,a),o=ef),bl(h,d)){let e=i.index,o=i.attributes.position,p=r.index,f=r.attributes.position,m=u[t+6],g=d[h+14];if(ep.copy(a).invert(),r.boundsTree)return xj(t,c,em),em.matrix.copy(ep),em.needsUpdate=!0,r.boundsTree.shapecast({intersectsBounds:e=>em.intersectsBox(e),intersectsTriangle:t=>
3139{t.a.applyMatrix4(a),t.b.applyMatrix4(a),t.c.applyMatrix4(a),t.needsUpdate=!0;for(let i=3*m,r=(g+m)*3;i<r;i+=3)if(ba(eu,i,e,o),eu.needsUpdate=!0,t.intersectsTriangle(eu))return!0;return!1}});for(let t=3*m,i=g+3*m;t<i;t+=3){ba(ed,t,e,o),ed.a.applyMatrix4(ep),ed.b.applyMatrix4(ep),ed.c.applyMatrix4(ep),ed.needsUpdate=!0;for(let e=0,t=p.count;e<t;e+=3)if(ba(eu,e,p,f),eu.needsUpdate=!0,ed.intersectsTriangle(eu))return!0}}else{let h=t+8,d=u[t+6];return xj(h,c,bh),!!(o.intersectsBox(bh)&&e(h,i,r,a,o)||(xj(d,c,bh),o.intersectsBox(bh)&&e(d,i,r,a,o)))}});function bf(e,t,i,r){return xj(e,t,bh),i.intersectBox(bh,r)}var bm,bg,bv,by,bx,bb,bw=[];function bS(e){bv&&bw.push(bv),bv=e,by=new Float32Array(e),bx=new Uint16Array(e),bb=new Uint32Array(e)}function b_(){bv=null,by=null,bx=null,bb=null,bw.length&&bS(bw.pop())}var bA=Symbol("skip tree generation"),bM=new i_,bE=new i_,bC=new iZ,bT=new x3,bP=new x3,bD=new ib,bO=new ib,bI=new ib,bR=new ib,bL=new ib,bB=new i_,bz=new bo(()=>new x2),bF=class{static serialize(e,t={}){if(t.isBufferGeometry)return console.warn("MeshBVH.serialize: The arguments for the function have changed. See documentation for new signature."),bF.serialize(arguments[0],{cloneBuffers:void 0===arguments[2]||arguments[2]});t={cloneBuffers:!0,...t};let i=e.geometry,r=e._roots,a=i.getIndex();return t.cloneBuffers?{roots:r.map(e=>e.slice()),index:a.array.slice()}:{roots:r,index:a.array}}static deserialize(e,t,i={}){if("boolean"==typeof i)return console.warn("MeshBVH.deserialize: The arguments for the function have changed. See documentation for new signature."),bF.deserialize(arguments[0],arguments[1],{setIndex:void 0===arguments[2]||arguments[2]});i={setIndex:!0,...i};let{index:r,roots:a}=e,o=new bF(t,{...i,[bA]:!0});if(o._roots=a,i.setIndex){let i=t.getIndex();if(null===i){let i=new rT(e.index,1,!1);t.setIndex(i)}else i.array!==r&&(i.array.set(r),i.needsUpdate=!0)}return o}constructor(e,t={}){if(e.isBufferGeometry){if(e.index&&e.index.isInterleavedBufferAttribute)throw Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw Error("MeshBVH: Only BufferGeometries are supported.");if((t=Object.assign({strategy:0,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,[bA]:!1},t)).useSharedArrayBuffer&&typeof SharedArrayBuffer>"u")throw Error("MeshBVH: SharedArrayBuffer is not available.");this._roots=null,t[bA]||(this._roots=function(e,t){let i=function(e,t){function i(e){m&&m(e/g)}function r(t,a,m,g=null,y=0){if(!v&&y>=d&&(v=!0,u&&(console.warn(`MeshBVH: Max depth of ${d} reached when generating BVH. Consider increasing maxDepth.`),console.warn(e))),m<=p||y>=d)return i(a+m),t.offset=a,t.count=m,t;let x=function(e,t,i,r,a,o){let h=-1,c=0;if(0===o)-1!==(h=xG(t))&&(c=(t[h]+t[h+3])/2);else if(1===o)-1!==(h=xG(e))&&(c=function(e,t,i,r){let a=0;for(let o=t,h=t+i;o<h;o++)a+=e[6*o+2*r];return a/i}(i,r,a,h));else if(2===o){let o=xq(e),d=1.25*a,u=6*r,p=(r+a)*6;for(let e=0;e<3;e++){let r=t[e],f=(t[e+3]-r)/32;if(a<8){let t=[...xQ];t.length=a;let r=0;for(let a=u;a<p;a+=6,r++){let o=t[r];o.candidate=i[a+2*e],o.count=0;let{bounds:h,leftCacheBounds:c,rightCacheBounds:d}=o;for(let e=0;e<3;e++)d[e]=1/0,d[e+3]=-1/0,c[e]=1/0,c[e+3]=-1/0,h[e]=1/0,h[e+3]=-1/0;xW(a,i,h)}t.sort(xY);let f=a;for(let e=0;e<f;e++){let i=t[e];for(;e+1<f&&t[e+1].candidate===i.candidate;)t.splice(e+1,1),f--}for(let r=u;r<p;r+=6){let a=i[r+2*e];for(let e=0;e<f;e++){let o=t[e];a>=o.candidate?xW(r,i,o.rightCacheBounds):(xW(r,i,o.leftCacheBounds),o.count++)}}for(let i=0;i<f;i++){let r=t[i],u=r.count,p=a-r.count,f=r.leftCacheBounds,m=r.rightCacheBounds,g=0;0!==u&&(g=xq(f)/o);let v=0;0!==p&&(v=xq(m)/o);let y=1+1.25*(g*u+v*p);y<d&&(h=e,d=y,c=r.candidate)}}else{for(let e=0;e<32;e++){let t=xQ[e];t.count=0,t.candidate=r+f+e*f;let i=t.bounds;for(let e=0;e<3;e++)i[e]=1/0,i[e+3]=-1/0}for(let t=u;t<p;t+=6){let a=~~((i[t+2*e]-r)/f);a>=32&&(a=31);let o=xQ[a];o.count++,xW(t,i,o.bounds)}let t=xQ[31];!function(e,t){t.set(e)}(t.bounds,t.rightCacheBounds);for(let e=30;e>=0;e--){let t=xQ[e],i=xQ[e+1];xH(t.bounds,i.rightCacheBounds,t.rightCacheBounds)}let m=0;for(let t=0;t<31;t++){let i=xQ[t],r=i.count,u=i.bounds,p=xQ[t+1].rightCacheBounds;0!==r&&(0===m?function(e,t){t.set(e)}(u,xZ):xH(u,xZ,xZ));let f=0,g=0;0!==(m+=r)&&(f=xq(xZ)/o);let v=a-m;0!==v&&(g=xq(p)/o);let y=1+1.25*(f*m+g*v);y<d&&(h=e,d=y,c=i.candidate)}}}}else console.warn(`MeshBVH: Invalid build strategy value ${o} used.`);return{axis:h,pos:c}}(t.boundingData,g,h,a,m,f);if(-1===x.axis)return i(a+m),t.offset=a,t.count=m,t;let b=function(e,t,i,r,a){let o=i,h=i+r-1,c=a.pos,d=2*a.axis;for(;;){for(;o<=h&&t[6*o+d]<c;)o++;for(;o<=h&&t[6*h+d]>=c;)h--;if(!(o<h))return o;for(let i=0;i<3;i++){let r=e[3*o+i];e[3*o+i]=e[3*h+i],e[3*h+i]=r;let a=t[6*o+2*i+0];t[6*o+2*i+0]=t[6*h+2*i+0],t[6*h+2*i+0]=a;let c=t[6*o+2*i+1];t[6*o+2*i+1]=t[6*h+2*i+1],t[6*h+2*i+1]=c}o++,h--}}(c,h,a,m,x);if(b===a||b===a+m)i(a+m),t.offset=a,t.count=m;else{t.splitAxis=x.axis;let e=new xV,i=b-a;
3139t.left=e,e.boundingData=new Float32Array(6),xX(h,a,i,e.boundingData,o),r(e,a,i,o,y+1);let c=new xV,d=m-i;t.right=c,c.boundingData=new Float32Array(6),xX(h,b,d,c.boundingData,o),r(c,b,d,o,y+1)}return t}!function(e,t){if(!e.index){let i=e.attributes.position.count,r=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,a;a=i>65535?new Uint32Array(new r(4*i)):new Uint16Array(new r(2*i)),e.setIndex(new rT(a,1));for(let e=0;e<i;e++)a[e]=e}}(e,t);let a=new Float32Array(6),o=new Float32Array(6),h=function(e,t){let i=e.attributes.position,r=e.index.array,a=r.length/3,o=new Float32Array(6*a),h=i.normalized,c=i.array,d=i.offset||0,u=3;i.isInterleavedBufferAttribute&&(u=i.data.stride);let p=["getX","getY","getZ"];for(let e=0;e<a;e++){let a=3*e,f=6*e,m,g,v;h?(m=r[a+0],g=r[a+1],v=r[a+2]):(m=r[a+0]*u+d,g=r[a+1]*u+d,v=r[a+2]*u+d);for(let e=0;e<3;e++){let r,a,d;h?(r=i[p[e]](m),a=i[p[e]](g),d=i[p[e]](v)):(r=c[m+e],a=c[g+e],d=c[v+e]);let u=r;a<u&&(u=a),d<u&&(u=d);let y=r;a>y&&(y=a),d>y&&(y=d);let x=(y-u)/2,b=2*e;o[f+b+0]=u+x,o[f+b+1]=x+(Math.abs(u)+x)*5960464477539063e-23,u<t[e]&&(t[e]=u),y>t[e+3]&&(t[e+3]=y)}}return o}(e,a),c=e.index.array,d=t.maxDepth,u=t.verbose,p=t.maxLeafTris,f=t.strategy,m=t.onProgress,g=e.index.count/3,v=!1,y=[],x=function(e){if(!e.groups||!e.groups.length)return[{offset:0,count:e.index.count/3}];let t=[],i=new Set;for(let t of e.groups)i.add(t.start),i.add(t.start+t.count);let r=Array.from(i.values()).sort((e,t)=>e-t);for(let e=0;e<r.length-1;e++){let i=r[e],a=r[e+1];t.push({offset:i/3,count:(a-i)/3})}return t}(e);if(1===x.length){let e=x[0],t=new xV;t.boundingData=a,function(e,t,i,r){let a=1/0,o=1/0,h=1/0,c=-1/0,d=-1/0,u=-1/0;for(let r=6*t,p=(t+i)*6;r<p;r+=6){let t=e[r+0];t<a&&(a=t),t>c&&(c=t);let i=e[r+2];i<o&&(o=i),i>d&&(d=i);let p=e[r+4];p<h&&(h=p),p>u&&(u=p)}r[0]=a,r[1]=o,r[2]=h,r[3]=c,r[4]=d,r[5]=u}(h,e.offset,e.count,o),r(t,e.offset,e.count,o),y.push(t)}else for(let e of x){let t=new xV;t.boundingData=new Float32Array(6),xX(h,e.offset,e.count,t.boundingData,o),r(t,e.offset,e.count,o),y.push(t)}return y}(e,t),r,a,o,h=[],c=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let e=0;e<i.length;e++){let t=i[e],d=new c(32*function e(t){return t.count?1:1+e(t.left)+e(t.right)}(t));r=new Float32Array(d),a=new Uint32Array(d),o=new Uint16Array(d),function e(t,i){let h=t/4,c=t/2,d=!!i.count,u=i.boundingData;for(let e=0;e<6;e++)r[h+e]=u[e];if(d){let e=i.offset,r=i.count;return a[h+6]=e,o[c+14]=r,o[c+15]=65535,t+32}{let r=i.left,o=i.right,c=i.splitAxis,d;if((d=e(t+32,r))/4>4294967296)throw Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return a[h+6]=d/4,d=e(d,o),a[h+7]=c,d}}(0,t),h.push(d)}return h}(e,t),!e.boundingBox&&t.setBoundingBox&&(e.boundingBox=this.getBoundingBox(new i_))),this.geometry=e}refit(e=null){e&&Array.isArray(e)&&(e=new Set(e));let t=this.geometry,i=t.index.array,r=t.attributes.position,a,o,h,c,d=0,u=this._roots;for(let t=0,p=u.length;t<p;t++)o=new Uint32Array(a=u[t]),h=new Uint16Array(a),c=new Float32Array(a),function t(a,d,u=!1){let p=2*a;if(65535===h[p+15]){let e=o[a+6],t=h[p+14],d=1/0,u=1/0,f=1/0,m=-1/0,g=-1/0,v=-1/0;for(let a=3*e,o=3*(e+t);a<o;a++){let e=i[a],t=r.getX(e),o=r.getY(e),h=r.getZ(e);t<d&&(d=t),t>m&&(m=t),o<u&&(u=o),o>g&&(g=o),h<f&&(f=h),h>v&&(v=h)}return(c[a+0]!==d||c[a+1]!==u||c[a+2]!==f||c[a+3]!==m||c[a+4]!==g||c[a+5]!==v)&&(c[a+0]=d,c[a+1]=u,c[a+2]=f,c[a+3]=m,c[a+4]=g,c[a+5]=v,!0)}{let i=a+8,r=o[a+6],h=i+d,p=r+d,f=u,m=!1,g=!1;e?f||(m=e.has(h),g=e.has(p),f=!m&&!g):(m=!0,g=!0);let v=f||m,y=f||g,x=!1;v&&(x=t(i,d,f));let b=!1;y&&(b=t(r,d,f));let w=x||b;if(w)for(let e=0;e<3;e++){let t=i+e,o=r+e,h=c[t],d=c[t+3],u=c[o],p=c[o+3];c[a+e]=h<u?h:u,c[a+e+3]=d>p?d:p}return w}}(0,d),d+=a.byteLength}traverse(e,t=0){let i=this._roots[t],r=new Uint32Array(i),a=new Uint16Array(i);!function t(o,h=0){let c=2*o,d=65535===a[c+15];if(d){let t=r[o+6],u=a[c+14];e(h,d,new Float32Array(i,4*o,6),t,u)}else{let a=r[o+6],c=r[o+7];e(h,d,new Float32Array(i,4*o,6),c)||(t(o+8,h+1),t(a,h+1))}}(0)}raycast(e,t=0){let i=this._roots,r=this.geometry,a=[],o=t.isMaterial,h=Array.isArray(t),c=r.groups,d=o?t.side:t;for(let o=0,u=i.length;o<u;o++){let u=h?t[c[o].materialIndex].side:d,p=a.length;if(bS(i[o]),function e(t,i,r,a,o){let h=2*t,c=by,d=bx,u=bb;if(bl(h,d))!function(e,t,i,r,a,o){for(let h=r,c=r+a;h<c;h++)bs(e,t,i,h,o)}(i,r,a,u[t+6],d[h+14],o);else{let h=t+8;bf(h,c,a,bc)&&e(h,i,r,a,o);let d=u[t+6];bf(d,c,a,bc)&&e(d,i,r,a,o)}}(0,r,u,e,a),b_(),h){let e=c[o].materialIndex;for(let t=p,i=a.length;t<i;t++)a[t].face.materialIndex=e}}return a}raycastFirst(e,t=0){let i=this._roots,r=this.geometry,a=t.isMaterial,o=Array.isArray(t),h=null,c=r.groups,d=a?t.side:t;for(let a=0,u=i.length;a<u;a++){let u=o?t[c[a].materialIndex].side:d;bS(i[a]);let p=function e(t,i,r,a){let o=2*t,h=by,c=bx,d=bb;if(bl(o,c))return function(e,t,i,r,a){let o=1/0,h=null;for(let c=r,d=r+a;c<d;c++){let r=bs(e,t,i,c);r&&r.distance<o&&(h=r,o=r.distance)}return h}(i,r,a,d[t+6],c[o+14]);{let o=d[t+7],c=bd[o],u=a.direction[c]>=0,p,f;
3139u?(p=t+8,f=d[t+6]):(p=d[t+6],f=t+8);let m=bf(p,h,a,bc)?e(p,i,r,a):null;if(m){let e=m.point[c];if(u?e<=h[f+o]:e>=h[f+o+3])return m}let g=bf(f,h,a,bc)?e(f,i,r,a):null;return m&&g?m.distance<=g.distance?m:g:m||g||null}}(0,r,u,e);b_(),null!=p&&(null==h||p.distance<h.distance)&&(h=p,o&&(p.face.materialIndex=c[a].materialIndex))}return h}intersectsGeometry(e,t){let i=this.geometry,r=!1;for(let a of this._roots)if(bS(a),r=bp(0,i,e,t),b_(),r)break;return r}shapecast(e,t,i){let r=this.geometry;if(e instanceof Function){if(t){let e=t;t=(t,i,r,a)=>{let o=3*i;return e(t,o,o+1,o+2,r,a)}}e={boundsTraverseOrder:i,intersectsBounds:e,intersectsTriangle:t,intersectsRange:null},console.warn("MeshBVH: Shapecast function signature has changed and now takes an object of callbacks as a second argument. See docs for new signature.")}let a=bz.getPrimitive(),{boundsTraverseOrder:o,intersectsBounds:h,intersectsRange:c,intersectsTriangle:d}=e;if(c&&d){let e=c;c=(t,i,o,h,c)=>!!e(t,i,o,h,c)||bn(t,i,r,d,o,h,a)}else c||(c=d?(e,t,i,o)=>bn(e,t,r,d,i,o,a):(e,t,i)=>i);let u=!1,p=0;for(let e of this._roots){if(bS(e),u=bu(0,r,h,c,o,p),b_(),u)break;p+=e.byteLength}return bz.releasePrimitive(a),u}bvhcast(e,t,i){let{intersectsRanges:r,intersectsTriangles:a}=i,o=this.geometry.index,h=this.geometry.attributes.position,c=e.geometry.index,d=e.geometry.attributes.position;bC.copy(t).invert();let u=bz.getPrimitive(),p=bz.getPrimitive();if(a){let e=function(e,i,r,f,m,g,v,y){for(let x=r,b=r+f;x<b;x++){ba(p,3*x,c,d),p.a.applyMatrix4(t),p.b.applyMatrix4(t),p.c.applyMatrix4(t),p.needsUpdate=!0;for(let t=e,r=e+i;t<r;t++)if(ba(u,3*t,o,h),u.needsUpdate=!0,a(u,p,t,x,m,g,v,y))return!0}return!1};if(r){let t=r;r=function(i,r,a,o,h,c,d,u){return!!t(i,r,a,o,h,c,d,u)||e(i,r,a,o,h,c,d,u)}}else r=e}e.getBoundingBox(bE),bE.applyMatrix4(t);let f=this.shapecast({intersectsBounds:e=>bE.intersectsBox(e),intersectsRange:(t,i,a,o,h,c)=>(bM.copy(c),bM.applyMatrix4(bC),e.shapecast({intersectsBounds:e=>bM.intersectsBox(e),intersectsRange:(e,a,c,d,u)=>r(t,i,e,a,o,h,d,u)}))});return bz.releasePrimitive(u),bz.releasePrimitive(p),f}intersectsBox(e,t){return bT.set(e.min,e.max,t),bT.needsUpdate=!0,this.shapecast({intersectsBounds:e=>bT.intersectsBox(e),intersectsTriangle:e=>bT.intersectsTriangle(e)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,i={},r={},a=0,o=1/0){e.boundingBox||e.computeBoundingBox(),bT.set(e.boundingBox.min,e.boundingBox.max,t),bT.needsUpdate=!0;let h=this.geometry,c=h.attributes.position,d=h.index,u=e.attributes.position,p=e.index,f=bz.getPrimitive(),m=bz.getPrimitive(),g=null,v=null;r&&(g=bR,v=bL);let y=1/0,x=null,b=null;return bC.copy(t).invert(),bP.matrix.copy(bC),this.shapecast({boundsTraverseOrder:e=>bT.distanceToBox(e),intersectsBounds:(e,t,i)=>i<y&&i<o&&(t&&(bP.min.copy(e.min),bP.max.copy(e.max),bP.needsUpdate=!0),!0),intersectsRange:(i,r)=>{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:e=>bP.distanceToBox(e),intersectsBounds:(e,t,i)=>i<y&&i<o,intersectsRange:(e,o)=>{for(let h=3*e,w=(e+o)*3;h<w;h+=3){ba(m,h,p,u),m.a.applyMatrix4(t),m.b.applyMatrix4(t),m.c.applyMatrix4(t),m.needsUpdate=!0;for(let e=3*i,t=(i+r)*3;e<t;e+=3){ba(f,e,d,c),f.needsUpdate=!0;let t=f.distanceToTriangle(m,bO,g);if(t<y&&(bI.copy(bO),v&&v.copy(g),y=t,x=e/3,b=h/3),t<a)return!0}}}});{let e=p?p.count:u.count;for(let o=0;o<e;o+=3){ba(m,o,p,u),m.a.applyMatrix4(t),m.b.applyMatrix4(t),m.c.applyMatrix4(t),m.needsUpdate=!0;for(let e=3*i,t=(i+r)*3;e<t;e+=3){ba(f,e,d,c),f.needsUpdate=!0;let t=f.distanceToTriangle(m,bO,g);if(t<y&&(bI.copy(bO),v&&v.copy(g),y=t,x=e/3,b=o/3),t<a)return!0}}}}}),bz.releasePrimitive(f),bz.releasePrimitive(m),y===1/0?null:(i.point?i.point.copy(bI):i.point=bI.clone(),i.distance=y,i.faceIndex=x,r&&(r.point?r.point.copy(v):r.point=v.clone(),r.point.applyMatrix4(bC),bI.applyMatrix4(bC),r.distance=bI.sub(r.point).length(),r.faceIndex=b),i)}closestPointToPoint(e,t={},i=0,r=1/0){let a=i*i,o=r*r,h=1/0,c=null;if(this.shapecast({boundsTraverseOrder:t=>(bD.copy(e).clamp(t.min,t.max),bD.distanceToSquared(e)),intersectsBounds:(e,t,i)=>i<h&&i<o,intersectsTriangle:(t,i)=>{t.closestPointToPoint(e,bD);let r=e.distanceToSquared(bD);return r<h&&(bO.copy(bD),h=r,c=i),r<a}}),h===1/0)return null;let d=Math.sqrt(h);return t.point?t.point.copy(bO):t.point=bO.clone(),t.distance=d,t.faceIndex=c,t}
3139getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(t=>{xj(0,new Float32Array(t),bB),e.union(bB)}),e}},bN=tA(tE()),bU=.5*(Math.sqrt(3)-1),bk=(3-Math.sqrt(3))/6,bV=1/3,bj=1/6,bG=e=>0|Math.floor(e),bH=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]),bW=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 bq(e){let t=new Uint8Array(512);for(let e=0;e<256;e++)t[e]=e;for(let i=0;i<255;i++){let r=i+~~(e()*(256-i)),a=t[i];t[i]=t[r],t[r]=a}for(let e=256;e<512;e++)t[e]=t[e-256];return t}var bX,bY=new rS,bQ=class{constructor(e){this.weightAttribute=null;let t=e.geometry;if(!t.isBufferGeometry||3!==t.attributes.position.itemSize)throw Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");t.index&&(t=t.toNonIndexed()),this.geometry=t,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let e=this.positionAttribute,t=new Float32Array(e.count/3);for(let i=0;i<e.count;i+=3){let r=1;bY.a.fromBufferAttribute(e,i),bY.b.fromBufferAttribute(e,i+1),bY.c.fromBufferAttribute(e,i+2),r*=bY.getArea(),t[i/3]=r}this.distribution=new Float32Array(e.count/3);let i=0;for(let e=0;e<t.length;e++)i+=t[e],this.distribution[e]=i;return this}setRandomGenerator(e){return this.randomFunction=e,this}sample(e,t){if(this.distribution){let i=this.distribution[this.distribution.length-1],r=this.binarySearch(this.randomFunction()*i);return this.sampleFace(r,e,t)}}binarySearch(e){if(!this.distribution)return 0;let t=this.distribution,i=0,r=t.length-1,a=-1;for(;i<=r;){let o=Math.ceil((i+r)/2);if(0===o||t[o-1]<=e&&t[o]>e){a=o;break}e<t[o]?r=o-1:i=o+1}return a}sampleFace(e,t,i){let r=this.randomFunction(),a=this.randomFunction();return r+a>1&&(r=1-r,a=1-a),bY.a.fromBufferAttribute(this.positionAttribute,3*e),bY.b.fromBufferAttribute(this.positionAttribute,3*e+1),bY.c.fromBufferAttribute(this.positionAttribute,3*e+2),t.set(0,0,0).addScaledVector(bY.a,r).addScaledVector(bY.b,a).addScaledVector(bY.c,1-(r+a)),bY.getNormal(i),this}},bZ=tA(tC()),bK=new iZ,bJ=new iZ,b$=new iZ;(bX||(bX={})).is=function(e){return e&&e.__isSPEObject};var b0=e=>class extends e{constructor(){super(...arguments),this.previousModelViewMatrix=new iZ,this.copyPreviousMatrix=!0,this.hiddenMatrix=new iZ,this.matrixWorldRigid=new iZ,this.shearScale=new iZ,this.shearScaleInv=new iZ}get __isSPEObject(){return!0}isDescendantOf(e){e instanceof rd&&(e=e.uuid);let t=this;for(;t.parent;){if(t.parent.uuid===e)return!0;t=t.parent}return!1}updateMatrixWorld(e){for(let t of(this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(null===this.parent?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,e=!0),this.children))t.updateMatrixWorld(e)}updateWorldMatrix(e,t){let i=this.parent;if(e&&null!==i&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),null===this.parent?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),t)for(let e of this.children)e.updateWorldMatrix(!1,!0)}traverseChildren(e,t=0){for(let i of this.children)bX.is(i)&&i.traverseObject(e,t+1)}traverseObject(e,t=0){if(!0!==e(this,t))for(let i of this.children)bX.is(i)&&i.traverseObject(e,t+1)}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,t=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:i,v:r,q:a}=(0,bZ.SVD)(t),o=bK.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),h=bJ.set(r[0][0],r[0][1],r[0][2],0,r[1][0],r[1][1],r[1][2],0,r[2][0],r[2][1],r[2][2],0,0,0,0,1),c=b$.copy(h).transpose();
3139this.shearScale.makeScale(a[0],a[1],a[2]).multiply(c).premultiply(h),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(o,c).copyPosition(this.matrixWorld),a.every(e=>.01>Math.abs(a[0]-e))?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(e,t){this.updateWorldMatrix(!0,!1);let i=new iZ().copy(this.matrixWorld).invert();return null!==e.parent&&(e.parent.updateWorldMatrix(!0,!1),i.multiply(e.parent.matrixWorld)),"hiddenMatrix"in e&&e.hiddenMatrix instanceof iZ?e.hiddenMatrix.premultiply(i):e.applyMatrix4(i),e.updateWorldMatrix(!1,!1),this.add(e),void 0!==t&&(this.children.pop(),this.children.splice(t,0,e)),this}copy(e,t=!1){return super.copy(e,t),this.hasNonUniformScale=e.hasNonUniformScale,this}onAfterRender(e,t,i,r,a,o){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}},b1=class extends b0(rd){},b2=e=>"Mesh"===e.type,b3=class extends b1{constructor(e){super(),this.object=e,this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let i=this.children[e];i?.object!==t&&(i&&this.remove(i),i=new b3(t),this.add(i),this.children.splice(e,0,this.children.pop()),i.matrixWorldNeedsUpdate=!0,i.matrixAutoUpdate=!1,i.matrix=t.matrix,i.hiddenMatrix=t.hiddenMatrix),i.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return void 0!==this.playModeVisible?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 b2(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}get morphTargetInfluences(){if(this.object.morphTargetInfluences)return this.object.morphTargetInfluences}set morphTargetInfluences(e){}},b4=new ib,b5=new ib,b6=new iZ,b8=[new ib(-1,1,1),new ib(-1,-1,1),new ib(1,-1,1),new ib(1,1,1),new ib(-1,1,-1),new ib(-1,-1,-1),new ib(1,-1,-1),new ib(1,1,-1)],b9=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],b7=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],we=(e,t,i)=>{e.updateEntityBoxSize(b4,b5),b6.copy(t).multiply(e.matrixWorld),0===b5.x&&0===b5.y&&0===b5.z?i.push(new ib(b4.x,b4.y,b4.z).applyMatrix4(b6)):b8.forEach(e=>{i.push(e.clone().multiply(b5).add(b4).applyMatrix4(b6))})},wt=class extends i_{constructor(){super(...arguments),this.matrix=new iZ,this.vertices=[],this.faces=[],this.edges=[],this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(e=>e.clone()),this.faces=e.faces.map(e=>e.clone()),this.edges=e.edges.map(e=>e.clone()),this.centerEdges=e.centerEdges.map(e=>e.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let i=new iZ().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,i,t)}expandByObjectSize(e,t,i=!1){let r=[];return!0===i?e.traverseEntity(e=>{if(e.visible||e.cloner&&e.data.visible){if(!("geometry"in e)){r.push(new ib);return}we(e,t,r)}}):we(e,t,r),this.setFromPoints(r)}getCenter(e){return(e=super.getCenter(e)).applyMatrix4(this.matrix),e}getPositionToCenter(e){return(e=super.getCenter(e)).applyMatrix4(b6.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(b5).multiplyScalar(.5),this.getCenter(b4),b6.copy(this.matrix).setPosition(b4),this.vertices=b8.map(e=>e.clone().multiply(b5).applyMatrix4(b6))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=b9.map(([e,t])=>new lj(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new ib))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=b7.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}},wi={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}},wr=class extends oo{constructor(){super()}getPoints(e=12){let t=[],i,r=this.getCurveLengths(),a=r[r.length-1]/r.length;for(let o=0,h=this.curves;o<h.length;o++){let c=h[o],d=Math.ceil(e*(0===o?r[o]:r[o]-r[o-1])/a),u=c.getPoints(d);for(let e=0;e<u.length;e++){let r=u[e];i&&i.equals(r)||(t.push(r),i=r)}}return this.autoClose&&t.length>
31391&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}};function ws(e,t,i){return .001>=t.clone().sub(e).cross(t.clone().sub(i)).length()}function wa(e,t){let i=new ib(...e.position),r=new ib(...e.controlNext.position),a=new ib(...t.controlPrevious.position),o=new ib(...t.position);return ws(i,r,o)&&ws(i,a,o)}function wn(e){let t=e.points.map(e=>new ib(...e.data.position)),i=[e.points[0]],r=new ib(...i[0].data.position);for(let a=0;a<e.points.length-1;a++)ws(r,t[a],t[a+1])||(i.push(e.points[a]),r=t[a]);i.push(e.points[e.points.length-1]);let a=e.isClosed,o=i.length-(a?0:1),h=i.length,c=[];for(let t=0;t<h;t++){let r=i[t].data,o=new ib(...r.position),d=new ib(...r.controlPrevious.position),u=new ib(...r.controlNext.position),p={position:o,baseRoundness:r.roundness,controlPrevious:d,controlNext:u};if(0===r.roundness||!e.isClosed&&(0===t||t===h-1)){c[t]={...p,removedLength:0};continue}let f=a&&0==t?h-1:t-1,m=a&&t==h-1?0:t+1,g=i[f].data,v=i[m].data,y=new ib(...g.position),x=new ib(...v.position),b=y.clone().sub(o).normalize(),w=x.clone().sub(o).normalize();Object.assign(p,{prevDir:b,nextDir:w});let S=wa(g,r),_=wa(r,v);if(S&&_){let e=b.clone().add(w).normalize(),i=e.clone().cross(b).length()/b.dot(e);c[t]={...p,tan:i,removedLength:r.roundness/i}}else c[t]={...p,removedLength:0}}for(let e=0;e<o;e++){let t=e,i=a&&e===h-1?0:e+1,r=c[t],o=c[i];if(0!==r.removedLength||0!==o.removedLength){let e=r.position.distanceTo(o.position);r.removedLength=Math.min(r.removedLength,e/2),o.removedLength=Math.min(o.removedLength,e/2)}}let d=[];for(let e=0;e<o;e++){let t=e,r=a&&e===h-1?0:e+1,o=c[t],u=c[r],p=null;if(wa(i[t].data,i[r].data)){let e=o.position.clone(),t=u.position.clone();(0!==o.removedLength||0!==u.removedLength)&&(o.nextDir&&e.add(o.nextDir.clone().setLength(o.removedLength)),u.prevDir&&t.add(u.prevDir.clone().setLength(u.removedLength))),e.distanceTo(t)>.001&&(p=new oe(e,e.clone().lerp(t,.3),t.clone().lerp(e,.3),t))}else o.position.distanceTo(u.position)>.001&&(p=new oe(o.position,o.controlNext,u.controlPrevious,u.position));d[2*e+1]=p}for(let e=0;e<h;e++){let t=c[e];if(0===t.removedLength){d[2*e]=null;continue}let i=t.position,r=t.prevDir.clone().multiplyScalar(t.removedLength).add(i),a=t.nextDir.clone().multiplyScalar(t.removedLength).add(i),o=t.tan*t.removedLength,h=t.prevDir.clone().add(t.nextDir).normalize(),u=r.clone().lerp(a,.5),p=r.distanceTo(a)/2,f=h.clone().multiplyScalar(Math.sqrt(Math.pow(o,2)-Math.pow(p,2))).add(u),m=h.clone().multiplyScalar(-o).add(f),g=i.distanceTo(m)/i.distanceTo(u),v=t.prevDir.clone().multiplyScalar(g*i.distanceTo(r)).add(i),y=v.clone().lerp(m,2),x=r.clone().lerp(v,4/3),b=a.clone().lerp(y,4/3);d[2*e]=new oe(r,x,b,a)}let u=new wr;return d.forEach(e=>{e&&u.add(e)}),u}(_S||(_S={})).is=function(e){return e&&e.__isEntity};var wo=e=>_S.is(e),wl={type:"completeState",isfromEntity:!0},wh=["x","y","z"],wc=new ib,wd=new ib().set(0,1,0),wu=e=>class extends b0(e){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.currentAnimationAction=null,this.reversibleToState=null,this.currentTransitionEvent=null,this.previousAction=null,this._singleBBox=new wt,this._recursiveBBox=new wt,this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this._needApplyPathSnapping=!0,this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(e){let t=this.children[e];if(_S.is(t))return t}entityChildrenCount(){let e=this.children.length;for(;e--;)if(_S.is(this.children[e]))return e+1;return 0}get isConcreteEntity(){return"string"==typeof this.identity}get isVirtualEntity(){return"string"!=typeof this.identity}get isInstanceRoot(){return this.isConcreteEntity&&"Instance"===this.data.type}nearestInstanceSelfOrParent(){let e=this;for(;"Instance"!==e.data.type;){let t=e.parent;if(!_S.is(t))return;e=t}return e}forInstancesRec(e){this.instances.forEach(t=>{t.disposed||e(t),t.forInstancesRec(e)})}super_Entity(e,t){"string"==typeof e&&(this.uuid=e),this.identity=e,this.data=t,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(e,t,i=!1){if(!(0===this.data.states.length&&!i)){for(let e of this.data.states)yF.toOps(this.data,e.data).forEac
vendor: 4,103 bytes, line 3139
3139h(e=>{let i=fc.replaceProps(e,this.data);this.dataPatched=this.data,this.updateByPatchedOp(i,this.data,t)});if(null!==e){let i=this.data.states.data(e);i&&(this.dataPatched=yF.patch(this.data,i),yF.toOps(this.data,i).forEach(e=>{this.updateByPatchedOp(e,this.dataPatched,t)}))}i&&this.updateTransformState(this.dataPatched,t),this.stateSelection=e,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(e,t){e.setScalar(0),t.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(e=>{wo(e)&&e.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(e=>{e.resetBBoxNeedsUpdateSelf()})}find(e){let t;return this.traverseEntity(i=>{i.uuid===e&&(t=i)}),t}traverseSortNextHelper(){let e=this.parent;if(e){let t=e.children,i=t.indexOf(this)+1;if(_S.is(t[i]))return t[i];if(_S.is(e))return e.traverseSortNextHelper()}}sortNext(){let e=this.children;return this.children.length>0&&_S.is(this.children[0])?e[0]:this.traverseSortNextHelper()}goUp(e){let t=this;for(;e>0&&null!==t;)t=t.parent,e-=1;return t}hasAnccestorOrSelf(e){return this===e||this.hasAnccestor(e)}hasAnccestor(e){let t=this.parent;for(;t;){if(e===t)return!0;t=t.parent}return!1}countToAccestor(e){let t=0,i=this;for(;i!==e;){if(null===i)return -1;i=i.parent,t+=1}return t}forEachEntity(e){for(let t of this.children)wo(t)&&e(t)}traverseEntityAncestors(e){this.traverseAncestors(t=>{_S.is(t)&&e(t)})}traverseConcreteEntity(e,t=0){if(!0!==e(this,t))for(let i of this.children)wo(i)&&i.isConcreteEntity&&i.traverseEntity(e,t+1)}traverseEntity(e,t=0){if(!0!==e(this,t))for(let i of this.children)wo(i)&&i.traverseEntity(e,t+1)}traverseVisibleEntity(e){for(let t of(e(this),this.children))wo(t)&&t.visible&&t.traverseVisibleEntity(e)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(e){super.updateMatrixWorld(e),this.dispatchEvent({type:"updateMatrixWorld"})}copy(e,t=!1){return super.copy(e,t),this.dataPatched=e.dataPatched,this.raycastLock=e.raycastLock,this.scaleLock=e.scaleLock,this.hiddenMatrix.copy(e.hiddenMatrix),this}hasEntityChild(){return this.children.some(e=>wo(e))}isAncestorOf(e){if(this.uuid===e)return!1;let t=!1;return this.traverseEntity(i=>{i.uuid===e&&(t=!0)}),t}toObjectTransformState(e=[]){return this.updateWorldMatrix(!0,!1),u4({position:this.position.toArray(),rotation:[this.rotation.x*tK.RAD2DEG,this.rotation.y*tK.RAD2DEG,this.rotation.z*tK.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()},e)}getTransformValues(e,t,i){return t[e].map((t,r)=>i?.shared.getVariable(t,[this.uuid,e,wh[r]])??t)}updateTransformState(e,t){let i=!1;return e.position&&(this.position.fromArray(this.getTransformValues("position",e,t)),i=!0),e.rotation&&(wc.fromArray(this.getTransformValues("rotation",e,t)).multiplyScalar(tK.DEG2RAD),this.rotation.setFromVector3(wc),i=!0),e.scale&&(this.scale.fromArray(this.getTransformValues("scale",e,t)),i=!0),void 0!==e.hiddenMatrix&&(i=!0,this.hiddenMatrix.fromArray(e.hiddenMatrix??gd.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(e=>{e.invalidateClonerTransform(this)})),e.position&&e.rotation&&e.scale&&void 0!==e.hiddenMatrix&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(e=!1){if(e){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(e=>
3139{e.invalidateClonerTransform(this)}),this.requestRender()}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let e of this.children)_S.is(e)&&e.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(e=>{_S.is(e)&&e.disposeRecursively()})}toState(e=[]){return u4({name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(e)},e)}updateByObjUpdateOp(e,t){void 0!==e&&this.updateByOp({type:0,props:e,path:[]},{...this.data,...e},t,!1)}updateByOp(e,t,i,r){let a=this.data;this.data=t;let o=e,h=fa(e.path,["states","*"]);if(null!==h){if(0===e.type){let[t]=h;if(this?.stateSelection===t){let t={...e.props};if(delete t.name,Object.values(e.props).some(e=>void 0===e)){let i=this.data;if(void 0!==i){let r=fp.zoom(i,e.path.slice(2));if(r)for(let i in e.props)void 0===e.props[i]&&i in r&&(t[i]=r[i])}}o={...e,props:t,path:e.path.slice(2)}}}}else if(0===e.type){let t=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(void 0!==t){if(void 0!==e.props.name&&t.name){let{name:e,...i}=t;t=i}if(void 0!==e.props.material&&"material"in t){let{material:e,...i}=t;t=i}let i=fp.removeOverridden(e.path,e.props,t);o={...e,props:i}}}if(this.updateByPatchedOpBase(o,yF.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),fa(e.path,["overrides"])){let r=[],a=[...e.path];for(r.push(a[1]),a.splice(0,2);a.length>0&&"descendants"===a[0];)r.push(a[1]),a.splice(0,2);if(void 0===r[r.length-1]){if(0===e.type)for(let t of Object.keys(e.props)){r[r.length-1]=t;let a=i.scene.findInstance([this.uuid,...r]);a&&(a.overrideData=e.props[t],a.updateState(pW.apply(a.component.data,a.overrideData),i))}}else{let o=i.scene.findInstance([this.uuid,...r]);if(o){let h=fp.zoom(o.component.data,a);if(0===(e={...e,path:a}).type){let t=e.props;if(h)for(let[i,r]of Object.entries(e.props))void 0===r&&(t===e.props&&(t={...e.props}),t[i]=h[i]);e={...e,props:t}}o.overrideData=yR.resolve(t.overrides,r),o.updateByOp(e,fd.applySimple(o.data,e),i,!1)}}}else if(this.instances.length>0){let r;if(0===e.path.length&&0===e.type){let t;for(let i of yL.rootOverrideProps)i in e.props&&(void 0===t&&(t={}),t[i]=e.props[i]);t&&(r={...e,props:t})}else for(let t of yL.rootOverrideProps)if(fa(e.path,[t])){r=e;break}void 0!==r&&this.instances.forEach(e=>{if(e.isInstanceRoot){let t=pW.filterOp(e.overrideData,r);t&&e.updateByOp(t,fd.applySimple(e.data,t),i,!0)}}),this.instances.forEach(r=>{if(!r.isInstanceRoot){let o=pW.filterOp(r.overrideData,e);if(o){let h;h=a===r.data&&e===o?t:fd.applySimple(r.data,o),r.updateByOp(o,h,i,!0)}}})}}updateByPatchedOpBase(e,t,i){if(this.dataPatched=t,0===e.path.length&&0===e.type)void 0===e.props.type||gR.is(e.props.type)||wi.changeEntityProptotype(this,t,i);else if(1===e.path.length&&"geometry"===e.path[0]&&0===e.type&&"type"in e.props)for(let e of(wi.changeEntityProptotype(this,t,i),this.children))_S.is(e)&&e.updateVisible(i.scene);this.updateByPatchedOp(e,t,i)}updateByPatchedOp(e,t,i){if(0===e.path.length&&0===e.type?this.updateState(e.props,i):0===e.type&&("resolutionLevel"in e.props||"useChildrenColors"in e.props)&&this.updateState(t,i),"morphTargetInfluences"===e.path[0]&&0===e.type){let r=t.morphTargetInfluences.get(e.path[1])?.data.name;r&&this.updateMorphInfluences(r,i.shared.getVariable(e.props.value,[this.uuid,"morphTargetInfluences",r]))}if(null!==fa(e.path,["pathSnapping"])&&this.updatePathSnapping(t.pathSnapping),null!==fa(e.path,["cloner"])){let r=fd.drop(e,1);0===r.path.length&&0===r.type&&!0===r.props.disabled?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(t.cloner,i.scene):(this.setFromClonerState(t.cloner,i),this.expandCloner(i.scene)),this.updateVisible(i.scene)}}updatePathSnapping(e=this.dataPatched.pathSnapping){this._updatedPathSnapping=e,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(e){let t=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,r=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset??0,a=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(null===t)return;let o=e.find(t);if(!o||!1===this._needApplyPathSnapping)return;this._needApplyPathSnapping=!1;let h=o.data;if(h.geometry.path.points.length<=1)return;let c=wn(h.geometry.path),d=(i+r)%1;i+r===1&&0===d&&(d=1);let u=null;try{u=c.curves.length?c.getPointAt(d):null}catch(e){}if(null===u)return;let p=this.parent?this.parent?.matrixWorld:new iZ;o.updateMatrixWorld();let f=new iZ().multiplyMatrices(p.clone().invert(),o.matrixWorld);u.applyMatrix4(f);let m={position:u.toArray(),rotation:h.rotation};if("tangential"===a){let e=new iZ().extractRotation(o.matrixWorld),t=c.getTangentAt(d).applyMatrix4(e).add(u),i=new iZ().lookAt(u,t,wd),r=wc.setFromEuler(new i6().setFromRotationMatrix(i)).multiplyScalar(tK.RAD2DEG);m={...m,rotation:r.toArray()}}this.updateTransformState(m),this.traverseEntity(e=>{e._cameraType&&e.dispatchEvent(wl)})}updateVisible(e){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!e)return;let t=!1;this.traverseEntity(e=>{if("Splat"===e.data.type)return t=!0,!0}),t&&e.reloadSplats()}updateState_Entity(e,t){void 0!==e.name&&(this.name=e.name),void 0!==e.raycastLock&&(this.raycastLock=e.raycastLock),void 0!==e.visible&&(this.updateVisible(t?.scene),this.resetBBoxNeedsUpdate()),t&&"cloner"in e&&void 0!==e.cloner&&(this.setFromClonerState(e.cloner,t),this.updateVisible(t.scene)),this.updateTransformState(e,t)}get attachedSurfaceCloners(){return this.children.filter(e=>e instanceof wi.Cloner&&"toObject"===e.parameters.type)}setFromClonerState(e,t){this.disposed||(null===e||e.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):void 0===this.cloner?(this.cloner=new wi.Cloner(this,e),t.scene.addPendingExpandCloner(this)):this.cloner.updateState(e,t.scene))}expandCloner(e){!this.disposed&&this.cloner&&this.cloner.expandClones(e)}invalidateClonerTransform(e){this.cloner&&this.cloner.invalidateTransform(e)}requestRender(){this.dispatchEvent({type:"requestRender"})}},wp=class{static create(e){return this.build(this.normalizeInputs(e))}
3139static normalizeInputs(e,t){let i=e.parameters?.radiusTop,r=e.parameters?.radiusBottom,a=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},e.parameters);a.thetaLength=tK.clamp(a.thetaLength,0,360);let o=a.width/2,h=a.radiusTop??o,c=a.radiusBottom??o;if(h===c?(h=o,c=o):h>c?(h=o,c=c*o/h):(h=h*o/c,c=o),a.shapeBlendNode){let e=2*Math.max(h=i??o,c=r??o);a.width=e,a.depth=e}return{parameters:Object.assign(a,{width:Math.abs(a.width),height:Math.abs(a.height??a.width),depth:Math.abs(a.depth??a.width),radiusTop:h,radiusBottom:c})}}static build(e){let{width:t,depth:i,height:r,radialSegments:a,heightSegments:o,openEnded:h,thetaStart:c,thetaLength:d,radiusTop:u,radiusBottom:p,cornerRadius:f,cornerSegments:m,hollow:g}=e.parameters,v;return 0===d?(v=new rU).setAttribute("position",new rO([],3)):v=f||g?new wg(u,p,r,a,o,h,c,d*Math.PI/180,f,f,m,g):new oc(u,p,r,a,o,h,c,d*Math.PI/180),v.scale(1,1,i/t),Object.assign(v,{userData:{...e,type:"CylinderGeometry"}})}};function wf(e,t,i){i.x=e.x*t.x,i.y=e.y,i.z=e.x*t.y}function wm(e){return new tJ(e.y,-e.x)}var wg=class extends rU{constructor(e,t,i,r,a,o,h,c,d,u,p,f,m=!1){super(),this.type="RoundedCylinderBufferGeometry",e=void 0!==e?e:1,t=void 0!==t?t:1,i=i||1,r=Math.floor(r)||8,a=Math.floor(a)||1,o=void 0!==o&&o,h=void 0!==h?h:0,c=void 0!==c?c:2*Math.PI,o&&(d=0,u=0);let g=[],v=[],y=[],x=[],b=0,w=i/2,S=new ib,_=new ib;m&&0==e&&(e=d),m&&0==t&&(t=u);let A=new tJ(e,w),M=new tJ(t,-w),E=null,C=null,T=null,P=null,D=A.clone().sub(M),O=0,I=0,R=0;f>0&&(O=Math.min(e,t)*(1-f),I=e-O,R=t-O);let L=A.clone();L.x-=O;let B=Math.PI-D.angle(),z=D.angle(),F=Math.tan(z/2),N=Math.tan(B/2),U=F+N;if(d=Math.min(d,(e-I)/(f?U:N),D.length()/U),u=Math.min(u,(t-R)/(f?U:F),D.length()/U),d>0){let e=d/F;E=A.clone().sub(new tJ(e,d)),f&&(T=E.clone(),T.x-=O-U*d),A.sub(D.clone().setLength(e))}if(u>0){let e=u/N;C=M.clone().sub(new tJ(e,-u)),M.add(D.clone().setLength(e)),f&&(P=C.clone(),P.x-=O-U*u,L.sub(D.clone().setLength(e)))}let k=.5>(D=A.clone().sub(M)).length(),V=[];for(let p=0;p<=r;p++){let m=[],g=p/r,w=g*c+h,A=new tJ(Math.sin(w),Math.cos(w));if(P&&C?(j(m,g,A,B,u,P,-1,!0),j(m,g,A,z,u,C,-1,!1)):C?(G(m,A,C.x,0,-1),j(m,g,A,z,u,C,-1,!1)):o||G(m,A,t,R,-1),wf(wm(D).normalize(),A,S),!k)for(let e=0;e<=a;e++){let t=e/a;wf(D.clone().multiplyScalar(t).add(M),A,_),v.push(_.x,_.y,_.z),y.push(S.x,S.y,S.z),x.push(g,.5+_.y/i),m.push(b++)}if(T&&E?(j(m,g,A,B,d,E,1,!1),j(m,g,A,z,d,T,1,!0)):E?(j(m,g,A,B,d,E,1,!1),G(m,A,E.x,0,1)):o||G(m,A,e,I,1),f&&!k){wf(wm(D).multiplyScalar(-1).normalize(),A,S);for(let e=0;e<=a;e++){let t=e/a;wf(D.clone().multiplyScalar(-t).add(L),A,_),v.push(_.x,_.y,_.z),y.push(S.x,S.y,S.z),x.push(g,.5+_.y/i),m.push(b++)}}f&&!o&&m.push(m[0]),V.push(m)}for(let e=0;e<V.length-1;e++)for(let t=0;t<V[0].length-1;t++){if(o&&f&&t==a)continue;let i=V[e][t],r=V[e+1][t],h=V[e+1][t+1],c=V[e][t+1],d=v[3*h+0],u=v[3*h+2];g.push(i,r,c),(0!=d||0!=u)&&g.push(r,h,c)}function j(e,t,r,a,o,h,c,d){for(let u=0;u<p+1;u++){let f=u/p,m=c<0?f:1-f;d&&(m-=1);let g=new tJ(Math.sin(m*=a),Math.cos(m)*c);wf(g.clone().multiplyScalar(o).add(h),r,_),v.push(_.x,_.y,_.z),wf(g,r,S),y.push(S.x,S.y,S.z),x.push(t,.5+_.y/i),e.push(b++)}}function G(e,t,i,r,a){let o=new ib,h=new tJ,c=[i,r];for(let i of(a<0&&c.reverse(),c))h.set(i,w*a),wf(h,t,o),v.push(o.x,o.y,o.z),y.push(0,a,0),x.push(.5,.5),e.push(b++)}function H(i,r,a){let o=new tJ(Math.sin(a),Math.cos(a)),h=new tJ(-Math.cos(a),Math.sin(a)),c=new ib,d=i<0?(e,t,i)=>g.push(e,t,i):(e,t,i)=>g.push(e,i,t);wf(new tJ((e+t+I+R)/4,0),o,c),v.push(c.x,c.y,c.z),y.push(h.x,0,h.y),x.push(.5,.5);let u=b++;for(let e of r){let t=v.slice(3*e,3*e+3);v.push(...t),y.push(h.x,0,h.y);let i=x.slice(2*e,2*e+2);x.push(...i),b++}for(let e=u+1;e<b-1;e++)d(u,e,e+1);d(u,b-1,u+1)}c<2*Math.PI&&(H(-1,V[0],h),H(1,V[V.length-1],h+c)),this.setIndex(g),this.setAttribute("position",new rO(v,3)),this.setAttribute("normal",new rO(y,3)),this.setAttribute("uv",new rO(x,2))}},wv=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},e.parameters);return i.thetaLength=tK.clamp(i.thetaLength,0,360),{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,depth:i,height:r,radialSegments:a,heightSegments:o,openEnded:h,thetaStart:c,thetaLength:d,cornerRadiusTop:u,cornerRadiusBottom:p,cornerSegments:f}=e.parameters,m;return 0===d?(m=new rU).setAttribute("position",new rO([],3)):m=u>0||p>0||d<360?new wg(0,t/2,r,a,o,h,c,d*Math.PI/180,u,p,f,0,!0):new od(t/2,r,a,o,h),m.scale(1,1,i/t),Object.assign(m,{userData:{...e,type:"ConeGeometry"}})}},wy=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,height:i,depth:r,widthSegments:a,heightSegments:o,depthSegments:h,cornerRadius:c,cornerSegments:d}=e.parameters;return Object.assign(0===c?new r1(t,i,r,a,o,h):new wb(t,i,r,a,o,h,c,d),{userData:{...e,type:"CubeGeometry"}})}},wx=Math.PI/2,wb=class extends rU{constructor(e=1,t=1,i=1,r=1,a=1,o=1,h=0,c=4){super(),this.type="BoxGeometry",r=Math.floor(r),a=Math.floor(a),o=Math.floor(o),c=Math.floor(c),h=Math.min(h,e/2,t/2,i/2);let d=[],u=[],p=[],f=[],m=0;
3139function g(e,t,i,r,a,o,c,g,v,y){let x=(o-2*h)/v,b=(c-2*h)/y,w=o/2-h,S=c/2-h,_=g/2,A=v+1,M=y+1,E=0,C=new ib;for(let o=0;o<M;o++){let h=o*b-S;for(let c=0;c<A;c++){let d=c*x-w;C[e]=d*r,C[t]=h*a,C[i]=_,u.push(C.x,C.y,C.z),C[e]=0,C[t]=0,C[i]=g>0?1:-1,p.push(C.x,C.y,C.z),f.push(c/v),f.push(1-o/y),E+=1}}for(let e=0;e<y;e++)for(let t=0;t<v;t++){let i=m+t+A*e,r=m+t+A*(e+1),a=m+(t+1)+A*(e+1),o=m+(t+1)+A*e;d.push(i,r,o),d.push(r,a,o)}m+=E}function v(e,t,i,r,a,o,g,v,y,x){let b=(g-2*h)/x,w=g/2-h,S=v/2-h,_=y/2,A=x+1,M=0,E=new ib,C=new ib;for(let d=0;d<c+1;d++){let m=d/c*wx,g=Math.sin(m)*h,v=(1-Math.cos(m))*h,y=Math.sin(m),T=Math.cos(m);E[t]=(S+g)*a,E[i]=(_-v)*o,C[e]=0,C[t]=y*Math.sign(E[t]),C[i]=T*Math.sign(E[i]);for(let t=0;t<A;t++){let i=t*b-w;E[e]=i*r,u.push(E.x,E.y,E.z),p.push(C.x,C.y,C.z),f.push(t/x),f.push(0),M+=1}}for(let e=0;e<c;e++)for(let t=0;t<x;t++){let i=m+t+A*e,r=m+t+A*(e+1),a=m+(t+1)+A*(e+1),o=m+(t+1)+A*e;d.push(i,r,o),d.push(r,a,o)}m+=M}function y(r,a,o){let g=new ib,v=new ib(e/2,t/2,i/2);v.subScalar(h);let y=[],x=r*a*o>0?(e,t,i)=>d.push(e,t,i):(e,t,i)=>d.push(e,i,t);for(let e=0;e<=c;e++){let t=[],i=wx*(1-e/c),d=Math.cos(i),x=Math.sin(i),b=0;for(let i=0;i<=e;i++){let i=Math.cos(b),c=Math.sin(b);g.x=d*i,g.y=x,g.z=d*c;let y=v.clone().addScaledVector(g,h);u.push(r*y.x,a*y.y,o*y.z),p.push(r*g.x,a*g.y,o*g.z),f.push(0,0),t.push(m++),b+=wx/e}y.push(t)}let b=y.length-1;for(let e=0;e<b;e++){let t=y[e],i=y[e+1],r=t.length-1;x(t[0],i[1],i[0]);for(let e=1;e<=r;e++)x(t[e-1],t[e],i[e]),x(t[e],i[e+1],i[e])}}g("z","y","x",-1,-1,i,t,e,o,a),g("z","y","x",1,-1,i,t,-e,o,a),g("x","z","y",1,1,e,i,t,r,o),g("x","z","y",1,-1,e,i,-t,r,o),g("x","y","z",1,-1,e,t,i,r,a),g("x","y","z",-1,-1,e,t,-i,r,a),h>0&&(v("z","y","x",-1,-1,1,i,t,e,o),v("z","y","x",1,-1,-1,i,t,e,o),v("z","y","x",-1,1,-1,i,t,e,o),v("z","y","x",1,1,1,i,t,e,o),v("x","y","z",-1,-1,-1,e,t,i,r),v("x","y","z",1,-1,1,e,t,i,r),v("x","y","z",-1,1,1,e,t,i,r),v("x","y","z",1,1,-1,e,t,i,r),v("y","x","z",-1,-1,1,t,e,i,a),v("y","x","z",1,-1,-1,t,e,i,a),v("y","x","z",1,1,1,t,e,i,a),v("y","x","z",-1,1,-1,t,e,i,a),y(1,1,1),y(-1,1,1),y(1,-1,1),y(-1,-1,1),y(1,1,-1),y(-1,1,-1),y(1,-1,-1),y(-1,-1,-1)),this.setIndex(d),this.setAttribute("position",new rO(u,3)),this.setAttribute("normal",new rO(p,3)),this.setAttribute("uv",new rO(f,2))}},ww=class extends rU{constructor(e=[],t=[],i="",r=1,a=.2,o=4){super(),this.type="PolyhedronGeometryRound";let h=[],c=[],d=[];(function(){0==(a=Math.min(1-1e-5,a))&&(o=0);let c={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[i],u=new ib,p=u.clone(),f=new rS,m=a*r,g=r-m,v=o+1,y=new ib,x=(e,t)=>y.subVectors(e,t).normalize(),b=(e,t)=>Array(e).fill(void 0).map(t),w=b(e.length/3,(t,i)=>new ib().fromArray(e,3*i).setLength(r)),S=[];for(let e=0;e<w.length;e++){let i=w[e],r=[],a,o,h,c=1e10,d=-1;for(;-1!=(d=t.indexOf(e,d+1));){let e=d-d%3;a=t[e+(d+1)%3],o=t[e+(d+2)%3],c=Math.min(c,h=i.distanceToSquared(w[a])),r.push([a,o,h])}c+=1e-6;let u=[],p=0,f=r.length;for(let t=0;t<f;t++){[a,o,h]=r[p];let t=S[a]?.includes(e)==!0;h<=c&&u.push(a+1e6*+t),p=r.findIndex(e=>e[0]==o)}S.push(u)}let _=[];{let e=0,t=0,i,r,a=3==c;for(let h=0;h<=o;h++){i=h*(h+1)/2,r=(h+1)*(h+2)/2;for(let c=0;c<o-h;c++)[e,t]=[i+c+h+2,r+c+h+3],_.push(i,r,...a?[t,i]:[e,r],t,e),[i,r]=[e,t];_.push(i,r,i+o+2)}}let A=u.clone(),M=u.clone(),E=u.clone(),C=u.clone(),T=u.clone(),P=[],D=b(w.length,()=>b(c,()=>u.clone()));for(let e=0;e<w.length;e++){u.copy(w[e]).normalize(),A.copy(u).multiplyScalar(g);let t=S[e];for(let i=0;i<t.length;i++){let r=t[i],a=t[(i+1)%c];f.setFromPointsAndIndices(w,e,r%1e6,a%1e6),f.b.sub(f.a).setLength(1e10).add(f.a),f.c.sub(f.a).setLength(1e10).add(f.a),f.closestPointToPoint(A,D[e][i])}let i=[],r=[],a=[],b=new ib;0==o&&[...D[e]].reduce((e,t)=>e.add(t),b).multiplyScalar(1/c);for(let t=0;t<c;t++){let h=[],d=(t-1+c)%c,f=D[e][d],w=D[e][t];u.copy(f).sub(A),p.copy(w).sub(A);let S=A.angleTo(u),_=u.angleTo(p),P=Math.cos(S)*m;0==o?M.copy(b):M.copy(A).setLength(g+P),r.push(P);let O=[M,f,w];for(let e=0;e<2;e++){let t=O[e],r=O[e+1];C.subVectors(t,A),T.subVectors(r,A),E.crossVectors(C,T).normalize();for(let r=0;r<v;r++){let a=[S,_][e]*r/v;u.copy(C).applyAxisAngle(E,a).add(A),i.push(u.clone()),e&&(x(u,A),h.push([0==r?t:u.clone(),y.clone()]))}e&&(x(r,A),h.push([r,y.clone()]))}a.push(h)}P.push(a);let O=2*v;for(let e=0;e<c;e++){let t=O*e,a=(e+1)%c*O,o=[i[t]];for(let h=1;h<v;h++){C=i[t+h],T=i[a+h],o.push(C);for(let t=1,i=h-2+1;t<=i;t++)u.lerpVectors(C,T,t/(i+1)),u.sub(A).setLength(r[e]).add(A),o.push(u.clone());o.push(T)}for(let e=0;e<v;e++)o.push(i[e+v+t]);o.push(i[a+v]);let p=_.map(e=>o[e]);h.push(...p.map(e=>[e.x,e.y,e.z]).flat()),d.push(...p.map(e=>(x(e,A),[y.x,y.y,y.z])).flat())}}let O=[];for(let e=0;e<S.length;e++)for(let t=0;t<c;t++){let i=S[e][t];if(i<1e6){let r=S[i].findIndex(t=>t%1e6==e),a=P[e][t],o=P[i][r];for(let e=0;e<v;e++){let t=a[e],i=o[v-e],r=a[e+1];
3139[t,i,r,r,i,o[v-(e+1)]].forEach(e=>{h.push(e[0].x,e[0].y,e[0].z),d.push(e[1].x,e[1].y,e[1].z)})}O.push(a[0][0],o[v][0],a[v][0],o[0][0])}}for(;O.length;){let e,t,i,r;[e,t]=O.splice(0,2);let a=[e];for(;e!=t;)a.push(t),r=(i=O.indexOf(t))%2,t=O.splice(i-r,2)[1-r];y.subVectors(a[0],a[1]).cross(u.subVectors(a[0],a[2])).normalize();let o=0>y.dot(a[0]);o&&y.negate();for(let e=1;e<=a.length-2;e++)[a[e+ +o],a[e+1-+o],a[0]].forEach(e=>{h.push(e.x,e.y,e.z),d.push(y.x,y.y,y.z)})}})(),function(){let e=new ib;for(let t=0;t<h.length;t+=3){e.x=h[t+0],e.y=h[t+1],e.z=h[t+2];let i=f(e)/2/Math.PI+.5,r=Math.atan2(-e.y,Math.sqrt(e.x*e.x+e.z*e.z))/Math.PI+.5;c.push(i,1-r)}let t=new ib,i=new ib,r=new ib,a=new ib,o=new tJ,d=new tJ,u=new tJ,p=(e,t,i,r)=>{r<0&&1===e.x&&(c[t]=e.x-1),0===i.x&&0===i.z&&(c[t]=r/2/Math.PI+.5)};for(let e=0,m=0;e<h.length;e+=9,m+=6){t.set(h[e+0],h[e+1],h[e+2]),i.set(h[e+3],h[e+4],h[e+5]),r.set(h[e+6],h[e+7],h[e+8]),o.set(c[m+0],c[m+1]),d.set(c[m+2],c[m+3]),u.set(c[m+4],c[m+5]),a.copy(t).add(i).add(r).divideScalar(3);let g=f(a);p(o,m+0,t,g),p(d,m+2,i,g),p(u,m+4,r,g)}for(let e=0;e<c.length;e+=6){let t=c[e+0],i=c[e+2],r=c[e+4],a=Math.max(t,i,r),o=Math.min(t,i,r);a>.9&&o<.1&&(t<.2&&(c[e+0]+=1),i<.2&&(c[e+2]+=1),r<.2&&(c[e+4]+=1))}function f(e){return Math.atan2(e.z,-e.x)}}(),this.setAttribute("position",new rO(h,3)),this.setAttribute("normal",new rO(d,3)),this.setAttribute("uv",new rO(c,2))}static fromJSON(e){return new ww(e.vertices,e.indices,e.radius,e.corner,e.cornerSides)}},wS=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}
vendor: 4,946 bytes, line 3139
3139static build(e){let{width:t,height:i,depth:r,detail:a,corner:o,cornerSides:h}=e.parameters,c=0===a&&0!==o?new w_(.5*t,o,h):new op(.5*t,a);return c.scale(1,i/t,r/t),Object.assign(c,{userData:{...e,type:"DodecahedronGeometry"}})}},w_=class extends ww{constructor(e=1,t=.2,i=4){let r=(1+Math.sqrt(5))/2,a=1/r,o="DodecahedronGeometry";super([-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,-a,-r,0,-a,r,0,a,-r,0,a,r,-a,-r,0,-a,r,0,a,-r,0,a,r,0,-r,0,-a,r,0,-a,-r,0,a,r,0,a],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],o,e,t,i),this.type=o}static fromJSON(e){return new w_(e.radius,e.corner,e.cornerSides)}},wA=class{constructor(e){this.position=new tJ,this.startPosition=new tJ,this.uuid=tK.generateUUID(),this.position=e.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(e){this.position.copy(this.startPosition).add(e)}copy(e){return this.position.copy(e.position),this.startPosition.copy(e.startPosition),this}clone(){return new wA(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},wM=class extends wA{constructor(e){super(e.position),this.parent=e}copy(e){return super.copy(e),this}clone(){return new wM(this.parent).copy(this)}},wE=class extends wA{constructor(e,t){super(t),this.controls=[],this.roundness=0,this.areControlsDirectionsMirrored=!0,this.uuid=e,this.controls.push(new wM(this),new wM(this))}static create(e,t){let i=new wE(e,new tJ(...t.position));return i.controls[0].position.set(...t.controlPrevious.position),i.controls[1].position.set(...t.controlNext.position),i.roundness=t.roundness,i.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,i}getOppositeControl(e){let t=this.controls.indexOf(e);return 0===t?this.controls[1]:1===t?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let i=0,r=this.controls.length;i<r;i++){let r=this.controls[i];this.position.distanceTo(r.position)<=t?r.position.copy(this.position):r.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 wE(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){return[this.curveBefore?.getTangentAt(1),this.curveAfter?.getTangentAt(0)]}computeNormals(e=new tJ,t=new tJ){let[i,r]=this.computeTangents();return i&&r&&(wC(i,e),wC(r,t)),[e,t]}computeTangent(e=new tJ){let[t,i]=this.computeTangents();return t&&i&&e.copy(t).add(i).normalize(),e}computeNormal(e=new tJ){let[t,i]=this.computeNormals();return e.copy(t).add(i).normalize(),e}};function wC(e,t=new tJ){let i=e.length();return t.set(-e.y/i,e.x/i)}var wT=e=>e,wP=new tJ,wD=new tJ,wO=new tJ,wI=new tJ,wR=new tJ,wL=new tJ,wB=new ib,wz=new ib;function wF(e,t,i=Number.EPSILON){return Math.abs(e-t)<i}function wN(e,t,i){let r=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),a=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),o=Math.sqrt(Math.pow(i.x-e.x,2)+Math.pow(i.y-e.y,2));return Math.acos((a*a+r*r-o*o)/(2*a*r))}function wU(e,t,i){return 0===wP.copy(t).sub(e).cross(wD.copy(i).sub(e))}function wk(e,t){return e.position.equals(e.controls[1].position)&&t.position.equals(t.controls[0].position)}function wV(e,t){return wU(e.position,e.controls[1].position,t.position)&&wU(e.position,t.controls[0].position,t.position)}function wj(e,t=12,i=!1){let r=[];for(let a=0,o=e.length;a<o;a++){let o=e[a],h=0;if(i&&void 0!==o.roundedCurveCorner){let e=.5*wG(o.roundedCurveCorner,t);a>0&&(r[a-1]+=e),h+=e}void 0!==o.curveAfter&&(h+=wG(o.curveAfter,t)),r.push(h)}return e.length>0&&i&&void 0!==e[0].roundedCurveCorner&&(r[e.length-1]+=.5*wG(e[0].roundedCurveCorner,t)),r}function wG(e,t=12){return e&&e instanceof nJ?2*t:e&&(e instanceof ot||e instanceof oi)?1:e&&e instanceof oa?t*e.points.length:t}var wH=new tJ,wW=new tJ,wq=new tJ,wX=new tJ,wY=new tJ,wQ=new tJ,wZ=class extends of{constructor(e=100,t=100){super(),this.points=[],this.shapeHoles=[],this.plane=new so(new ib(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=tK.generateUUID(),this.needsUpdate=!1,this.roundedCurves=[],this._width=e,this._height=t}static createFromState(e,t,i){let r=new wZ;return r.isClosed=e.isClosed,r.points=e.points.map(e=>wE.create(e.id,e.data)),"number"==typeof e.roundness&&(r.roundness=e.roundness),r.shapeHoles=e.shapeHoles.map(e=>wZ.createFromState(e)),void 0!==t&&void 0!==i&&r.applySize(t,i),r.update(
3139),r}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 t=0,i=this.points.length;t<i;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(e=>this.getPointIndexById(e)).filter(e=>e>=0)}getPointIndexById(e){let t=this.points.length,i=this.points.findIndex(t=>t.uuid===e);if(i<0){let i=t;for(let t=0,r=this.shapeHoles.length;t<r;t++){let r=this.shapeHoles[t],a=r.points.length,o=r.getPointIndexById(e);if(!(o<0))return o+i;i+=a}}return i}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let t=this.points.length;for(let i=0,r=this.shapeHoles.length;i<r;i++){let r=this.shapeHoles[i],a=e-t;if(a<=r.points.length-1)return r.points[a];t+=r.points.length}}throw Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let i=0,r=this.shapeHoles.length;i<r;i++){let r=this.shapeHoles[i],a=r.points.indexOf(e);if(a>=0)return t+a;t+=r.points.length}return -1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(e=>e.points));return[...this.points,...e]}applySize(e,t){0===e&&(e=.001),0===t&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let i=wH.set(e,t);for(let e=0,t=this.points.length;e<t;e++){let t=this.points[e];t.position.multiply(i),t.controls[0].position.multiply(i),t.controls[1].position.multiply(i)}for(let i=0,r=this.shapeHoles.length;i<r;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,i=tK.generateUUID()){let r=new wE(i,e instanceof tJ?e:new tJ(e,t));return r.roundness=this.roundness,r}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,i=this.points.length;t<i;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,i=this.shapeHoles.length;t<i;t++){let i=this.shapeHoles[t].getPointByUuid(e);if(i)return i}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(t=>t.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,i=!1){this.subdivision=t,void 0===this.curveDivisions&&this.computeCurveDivisions(t);let r=i?this.roundedCurveDivisions:this.curveDivisions;return function(e,t,i=12,r=!0){let a=wz.set(0,0,0),o,h=0,c=[];for(let r=0;r<t.length;r++){let d=wT(t[r]),u=wG(d,i);c.push(u);for(let t=0;t<=u;t++)if(d instanceof n7||d instanceof or||d instanceof ot){if(d.getPoint(t/u,wP),a.set(wP.x,wP.y,0),void 0!==o&&function(e,t,i=Number.EPSILON){return e.distanceTo(t)<i}(o,a))continue;void 0===o&&(o=wB),o.copy(a),e.setXYZ(h,a.x,a.y,a.z),h++}}r&&h>1&&!(e.getX(h-1)===e.getX(0)&&e.getY(h-1)===e.getY(0)&&e.getZ(h-1)===e.getZ(0))&&(e.setXYZ(h,e.getX(0),e.getY(0),e.getZ(0)),h++)}(e,i?this.roundedCurves:this.curves,t,this.autoClose),r.reduce((e,t)=>e+t,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=wj(this.points,e,!1),this.roundedCurveDivisions=wj(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,i=12){return 2*(function(e,t,i,r=12,a=!0){let o=wz.set(0,0,0),h=0,c=[];for(let a=0;a<t.length;a++){if(!1===i[a])continue;let d,u=wT(t[a]),p=wG(u,r);c.push(p);for(let t=0;t<=p;t++)if(u instanceof n7||u instanceof or||u instanceof ot){if(u.getPoint(t/p,wP),o.set(wP.x,wP.y,0),d?.equals(o))continue;void 0===d?d=wB:(e.setXYZ(h,d.x,d.y,d.z),h++,e.setXYZ(h,o.x,o.y,o.z),h++),d.copy(o)}}return a&&h>1&&!(e.getX(h-1)===e.getX(0)&&e.getY(h-1)===e.getY(0)&&e.getZ(h-1)===e.getZ(0))&&(e.setXYZ(h,e.getX(0),e.getY(0),e.getZ(0)),h++),c})(e,this.curves,t,i,this.autoClose).reduce((e,t)=>e+t,0)}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,void 0===this.curveDivisions&&this.computeCurveDivisions(t),function(e,t,i=12,r=!0){let a,o=0;for(let r=0;r<t.length;r++){let h=wT(t[r]),c=wG(h,i);for(let t=0;t<=c;t++)if(h instanceof n7||h instanceof or||h instanceof ot){if(h.getPoint(t/c,wP),void 0!==a&&function(e,t,i=Number.EPSILON){return e.distanceTo(t)<i}(a,wP,1e-12))continue;void 0===a&&(a=wD),a.copy(wP),e.push(wP.x,wP.y),o++}}return wF(e[0],e[e.length-2],1e-12)&&wF(e[1],e[e.length-1],1e-12)&&(e.pop(),e.pop()),r&&o>1&&!(wF(e[o-1],e[1],1e-12)&&wF(e[o-2],e[0],1e-12))&&(e.push(e[0],e[1]),o++),e}(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let i=0;void 0===this.curveDivisions&&this.computeCurveDivisions(this.subdivision);let r=t?this.roundedCurveDivisions:this.curveDivisions,a=0;
vendor: 12,183 bytes, line 3139
3139t&&void 0!==this.points[0].roundedCurveCorner&&(a=.5*wG(this.points[0].roundedCurveCorner,this.subdivision));let o=e-a;o<0&&(o+=r.reduce((e,t)=>e+t,0));for(let e=0,t=r.length;e<t;e++){let t=r[e];if(o<i+t)return[e,(o-i+1)/t];i+=t}return[0,1]}getCurveT(e,t,i){let r=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],o=this.curveDivisions,h=o[e];if(wk(r,a)){let e=r.position.distanceTo(a.position);return r.position.distanceTo(wH.set(i.x,i.y))/e}let c=0;for(let t=0;t<e;t++)c+=o[t];return(t-c)/h}dispose(){}_applyCurveForPoint(e,t){wk(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let i=this.curves[this.curves.length-1];e.curveBefore=i,t.curveAfter=i;let r=i.clone();e.roundedCurveBefore=r,t.roundedCurveAfter=r,e.roundedCurveCorner=void 0,this.roundedCurves.push(r)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let e=0,t=this.points.length;e<t;e++){let t=this.points[e];if(0===e)this.moveTo(t.position.x,t.position.y);else{let i=this.points[e-1];this._applyCurveForPoint(t,i)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let e=this.points[0],t=this.points[this.points.length-1];this._applyCurveForPoint(e,t)}if(this.points.length>2){let e=0;for(let i=0,r=this.points.length;i<r;i++){var t;let r=this.points[i],a=this.points[i-1]??this.points[this.points.length-1],o=this.points[i+1]??this.points[0],h=r.roundness,c=a&&o&&wV(a,r)&&wV(r,o)&&wU(a.position,r.position,o.position);if(!r.controlsMoved()&&h>0&&!c){let a,o=r.curveBefore,c=r.curveAfter;if(void 0===o||void 0===c)continue;let d=r.roundedCurveBefore,u=r.roundedCurveAfter,p=o.getLength(),f=c.getLength(),m=Math.min(Math.min(h,.499*p),Math.min(h,.499*f)),g=1-m/p,v=m/f,y=o.getPointAt(g,wH),x=c.getPointAt(v,wW);if(this._subSplitCurve(o,d,g,y,void 0),this._subSplitCurve(c,u,v,void 0,x),this.useCubicForRoundedCorners){let e=Math.tan(wN(y,r.position,x)/2)*y.distanceTo(r.position),[i,o]=function(e,t,i,r,a){let o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),h=(e.y+t.y)/2,c=(e.x+t.x)/2,d=Math.sqrt(Math.pow(i,2)-Math.pow(o/2,2))*(e.y-t.y)/o,u=Math.sqrt(Math.pow(i,2)-Math.pow(o/2,2))*(t.x-e.x)/o;return r.set(c+d,h+u),a.set(c-d,h-u),[r,a]}(y,x,e,wq,wX),[h,c]=function(e,t,i,r,a,o){let h=t.x-e.x,c=t.y-e.y,d=i.x-e.x,u=i.y-e.y,p=Math.sqrt((h+d)*(h+d)+(c+u)*(c+u)),f;return wN(t,e,i)>Math.PI&&(p*=-1),f=wF(u,c)?(c+u)*(r/p-.5)*8/3/(h-d):(h+d)*(r/p-.5)*8/3/(u-c),a.set(t.x-f*c,t.y+f*h),o.set(i.x+f*u,i.y-f*d),[a,o]}((t=r.position,i.distanceTo(t)<o.distanceTo(t)?o:i),y,x,e,wY,wQ);a=new n7(y.clone(),h.clone(),c.clone(),x.clone())}else a=new or(y.clone(),r.position.clone(),x.clone());r.roundedCurveCorner=a,this.roundedCurves.splice(i+e,0,a),e++}}}}_subSplitCurve(e,t,i,r,a){if(e instanceof ot)void 0!==r&&t.v2.copy(r),void 0!==a&&t.v1.copy(a);else{let o=e.getUtoTmapping(i,0),h=function(e,t,i,r,a=.5){let o=wP.subVectors(t,e).multiplyScalar(a).add(e),h=wD.subVectors(i,t).multiplyScalar(a).add(t),c=wO.subVectors(r,i).multiplyScalar(a).add(i),d=wI.subVectors(h,o).multiplyScalar(a).add(o),u=wR.subVectors(c,h).multiplyScalar(a).add(h),p=wL.subVectors(u,d).multiplyScalar(a).add(d);return[e.x,e.y,o.x,o.y,d.x,d.y,p.x,p.y,u.x,u.y,c.x,c.y,r.x,r.y]}(e.v0,e.v1,e.v2,e.v3,o);return void 0!==r&&(t.v0.set(h[0],h[1]),t.v1.set(h[2],h[3]),t.v2.set(h[4],h[5]),t.v3.set(h[6],h[7])),void 0!==a&&(t.v0.set(h[6],h[7]),t.v1.set(h[8],h[9]),t.v2.set(h[10],h[11]),t.v3.set(h[12],h[13])),t}return t}clone(){let e=new wZ(this._width,this._height);return e.points=this.points.map(e=>e.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(e=>e.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let i=0;i<t;i++){let t=7*i,r=e.points[t+0],a=e.points[t+1],o=e.points[t+2],h=e.points[t+3],c=e.points[t+4],d=e.points[t+5],u=e.points[t+6],p=new wE(tK.generateUUID(),new tJ(r,a));p.controls[0].position.set(o,h),p.controls[1].position.set(c,d),p.roundness=u,this.points.push(p)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(e=>{let t=new wZ;return t.fromJSON(e),t}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,t=!1){this.isText=t;let i=(e,t)=>{t instanceof n7&&t.v3.equals(e.position)&&e.controls[0].position.copy(t.v2)};return this.points=(e=>{let t=[],r,a;for(r=0,a=e.length;r<a;r++)e[r]instanceof or&&(e[r]=function(e){let t=new tJ;t.addVectors(e.v0,wP.subVectors(e.v1,e.v0).multiplyScalar(2/3));let i=new tJ;return i.addVectors(e.v2,wD.subVectors(e.v1,e.v2).multiplyScalar(2/3)),new n7(e.v0,t,i,e.v2)}(e[r]));for(r=0,a=e.length;r<a;r++){let a=e[r],o=r>0?e[r-1]:null,h;a instanceof n7?(h=this.createPoint(a.v0)).controls[1].position.copy(a.v1):a instanceof ot&&(h=this.createPoint(a.v1)),void 0!==h&&(null!==o&&i(h,o),t.push(h))}let o=e[e.length-1],h=!1;return o instanceof n7?o.v3.equals(t[0].position)&&(t[0].controls[0].position.copy(o.v2),h=!0):o instanceof ot&&o.v2.equals(t[0].position)&&(h=!0),this.isClosed=h,t})(e.curves),e instanceof of&&(this.shapeHoles=e.holes.map(e=>{let t=new wZ;return t.fromShape(e),t})),this.update(),this}updatePoint(e,t){let i=this.getPointByUuid(e);i&&(void 0!==t.position&&i.position.fromArray(t.position),void 0!==t.roundness&&(i.roundness=t.roundness),void 0!==t.areControlsDirectionsMirrored&&(i.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}},wK=2*Math.PI;function wJ({x:e,y:t},i,r,a,o){return{x:e*i+a,y:t*r+o}}function w$(e,t,i,r){let a=Math.min(1,Math.max(-1,e*i+t*r));return(e*r-t*i<0?-1:1)*Math.acos(a)}function w0(e,t){if(!e)throw t||"Assertion Failed!"}(_b=__||(__={}))[_b.ODD=0]="ODD",_b[_b.NONZERO=1]="NONZERO",_b[_b.POSITIVE=2]="POSITIVE",_b[_b.NEGATIVE=3]="NEGATIVE",_b[_b.ABS_GEQ_TWO=4]="ABS_GEQ_TWO",(_w=_A||(_A={}))[_w.POLYGONS=0]="POLYGONS",_w[_w.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",_w[_w.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS";var w1=function(){function e(){}return e.vertEq=function(e,t){return e.s===t.s&&e.t===t.t},e.vertLeq=function(e,t){return e.s<t.s||e.s===t.s&&e.t<=t.t},e.transLeq=function(e,t){return e.t<t.t||e.t===t.t&&e.s<=t.s},e.edgeGoesLeft=function(t){return e.vertLeq(t.Dst,t.Org)},e.edgeGoesRight=function(t){return e.vertLeq(t.Org,t.Dst)},e.vertL1dist=function(e,t){return Math.abs(e.s-t.s)+Math.abs(e.t-t.t)},e.edgeEval=function(t,i,r){w0(e.vertLeq(t,i)&&e.vertLeq(i,r));var a=i.s-t.s,o=r.s-i.s;return a+o>0?a<o?i.t-t.t+(t.t-r.t)*(a/(a+o)):i.t-r.t+(r.t-t.t)*(o/(a+o)):0},e.edgeSign=function(t,i,r){w0(e.vertLeq(t,i)&&e.vertLeq(i,r));var a=i.s-t.s,o=r.s-i.s;return a+o>0?(i.t-r.t)*a+(i.t-t.t)*o:0},e.transEval=function(t,i,r){w0(e.transLeq(t,i)&&e.transLeq(i,r));var a=i.t-t.t,o=r.t-i.t;return a+o>0?a<o?i.s-t.s+(t.s-r.s)*(a/(a+o)):i.s-r.s+(r.s-t.s)*(o/(a+o)):0},e.transSign=function(t,i,r){w0(e.transLeq(t,i)&&e.transLeq(i,r));var a=i.t-t.t,o=r.t-i.t;return a+o>0?(i.s-r.s)*a+(i.s-t.s)*o:0},e.vertCCW=function(e,t,i){return e.s*(t.t-i.t)+t.s*(i.t-e.t)+i.s*(e.t-t.t)>=0},e.interpolate=function(e,t,i,r){return(e=e<0?0:e)<=(i=i<0?0:i)?0===i?(t+r)/2:t+e/(e+i)*(r-t):r+i/(e+i)*(t-r)},e.intersect=function(t,i,r,a,o){var h,c,d;e.vertLeq(t,i)||(d=t,t=i,i=d),e.vertLeq(r,a)||(d=r,r=a,a=d),e.vertLeq(t,r)||(d=t,t=r,r=d,d=i,i=a,a=d),e.vertLeq(r,i)?e.vertLeq(i,a)?((h=e.edgeEval(t,r,i))+(c=e.edgeEval(r,i,a))<0&&(h=-h,c=-c),o.s=e.interpolate(h,r.s,c,i.s)):((h=e.edgeSign(t,r,i))+(c=-e.edgeSign(t,a,i))<0&&(h=-h,c=-c),o.s=e.interpolate(h,r.s,c,a.s)):o.s=(r.s+i.s)/2,e.transLeq(t,i)||(d=t,t=i,i=d),e.transLeq(r,a)||(d=r,r=a,a=d),e.transLeq(t,r)||(d=t,t=r,r=d,d=i,i=a,a=d),e.transLeq(r,i)?e.transLeq(i,a)?((h=e.transEval(t,r,i))+(c=e.transEval(r,i,a))<0&&(h=-h,c=-c),o.t=e.interpolate(h,r.t,c,i.t)):((h=e.transSign(t,r,i))+(c=-e.transSign(t,a,i))<0&&(h=-h,c=-c),o.t=e.interpolate(h,r.t,c,a.t)):o.t=(r.t+i.t)/2},e}(),w2=function(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1},w3=function(){function e(e){this.side=e,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(e.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(e){this.Sym.Lface=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(e){this.Sym.Org=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(e){this.Sym.Lnext=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(e){this.Onext.Sym=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(e){this.Lnext.Sym=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(e){this.Sym.Onext=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(e){this.Sym.Onext.Sym=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(e){this.Sym.Lnext.Sym=e},enumerable:!0,configurable:!0}),e}(),w4=function(){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},w5=function(){function e(){var e=new w4,t=new w2,i=new w3(0),r=new w3(1);e.next=e.prev=e,e.anEdge=null,t.next=t.prev=t,i.next=i,i.Sym=r,r.next=r,r.Sym=i,this.vHead=e,this.fHead=t,this.eHead=i,this.eHeadSym=r}return e.prototype.makeEdge_=function(e){var t=new w3(0),i=new w3(1);e.Sym.side<e.side&&(e=e.Sym);var r=e.Sym.next;return i.next=r,r.Sym.next=t,t.next=e,e.Sym.next=i,t.Sym=i,t.Onext=t,t.Lnext=i,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,i.Sym=t,i.Onext=i,i.Lnext=t,i.Org=null,i.Lface=null,i.winding=0,i.activeRegion=null,t},e.prototype.splice_=function(e,t){var i=e.Onext,r=t.Onext;i.Sym.Lnext=t,r.Sym.Lnext=e,e.Onext=r,t.Onext=i},e.prototype.makeVertex_=function(e,t,i){w0(e,"Vertex can't be null!");var r=i.prev;e.prev=r,r.next=e,e.next=i,i.prev=e,e.anEdge=t;var a=t;do a.Org=e,a=a.Onext;while(a!==t)},e.prototype.makeFace_=function(e,t,i){w0(e,"Face can't be null");var r=i.prev;e.prev=r,r.next=e,e.next=i,i.prev=e,e.anEdge=t,e.trail=null,e.marked=!1,e.inside=i.inside;var a=t;do a.Lface=e,a=a.Lnext;while(a!==t)},e.prototype.killEdge_=function(e){e.Sym.side<e.side&&(e=e.Sym);var t=e.next,i=e.Sym.next;t.Sym.next=i,i.Sym.next=t},e.prototype.killVertex_=function(e,t){var i=e.anEdge,r=i;do r.Org=t,r=r.Onext;while(r!==i);var a=e.prev,o=e.next;o.prev=a,a.next=o},e.prototype.killFace_=function(e,t){var i=e.anEdge,r=i;do r.Lface=t,r=r.Lnext;while(r!==i);var a=e.prev,o=e.next;o.prev=a,a.next=o},e.prototype.makeEdge=function(){var e=new w4,t=new w4,i=new w2,r=this.makeEdge_(this.eHead);return this.makeVertex_(e,r,this.vHead),this.makeVertex_(t,r.Sym,this.vHead),this.makeFace_(i,r,this.fHead),r},e.prototype.splice=function(e,t){var i=!1,r=!1;if(e!==t){if(t.Org!==e.Org&&(r=!0,this.killVertex_(t.Org,e.Org)),t.Lface!==e.Lface&&(i=!0,this.killFace_(t.Lface,e.Lface)),this.splice_(t,e),!r){var a=new w4;this.makeVertex_(a,t,e.Org),e.Org.anEdge=e}if(!i){var o=new w2;this.makeFace_(o,t,e.Lface),e.Lface.anEdge=e}}},e.prototype.delete=function(e){var t=e.Sym,i=!1;if(e.Lface!==e.Rface&&(i=!0,this.killFace_(e.Lface,e.Rface)),e.Onext===e)this.killVertex_(e.Org,null);else if(e.Rface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev),!i){var r=new w2;
vendor: 5,712 bytes, line 3139
3139this.makeFace_(r,e,e.Lface)}t.Onext===t?(this.killVertex_(t.Org,null),this.killFace_(t.Lface,null)):(e.Lface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),this.killEdge_(e)},e.prototype.addEdgeVertex=function(e){var t=this.makeEdge_(e),i=t.Sym;this.splice_(t,e.Lnext),t.Org=e.Dst;var r=new w4;return this.makeVertex_(r,i,t.Org),t.Lface=i.Lface=e.Lface,t},e.prototype.splitEdge=function(e){var t=this.addEdgeVertex(e).Sym;return this.splice_(e.Sym,e.Sym.Oprev),this.splice_(e.Sym,t),e.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=e.Rface,t.winding=e.winding,t.Sym.winding=e.Sym.winding,t.idx=e.idx,t.Sym.idx=e.Sym.idx,t},e.prototype.connect=function(e,t){var i=!1,r=this.makeEdge_(e),a=r.Sym;if(t.Lface!==e.Lface&&(i=!0,this.killFace_(t.Lface,e.Lface)),this.splice_(r,e.Lnext),this.splice_(a,t),r.Org=e.Dst,a.Org=t.Org,r.Lface=a.Lface=e.Lface,e.Lface.anEdge=a,!i){var o=new w2;this.makeFace_(o,r,e.Lface)}return r},e.prototype.zapFace=function(e){var t,i,r,a,o,h=e.anEdge;i=h.Lnext;do i=(t=i).Lnext,t.Lface=null,null===t.Rface&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),(r=t.Sym).Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),this.killEdge_(t));while(t!=h);a=e.prev,(o=e.next).prev=a,a.next=o},e.prototype.countFaceVerts_=function(e){var t=e.anEdge,i=0;do i++,t=t.Lnext;while(t!==e.anEdge);return i},e.prototype.mergeConvexFaces=function(e){var t,i,r,a,o;for(t=this.fHead.next;t!==this.fHead;t=t.next)if(t.inside)for(o=(i=t.anEdge).Org;r=i.Lnext,(a=i.Sym)&&a.Lface&&a.Lface.inside&&this.countFaceVerts_(t)+this.countFaceVerts_(a.Lface)-2<=e&&w1.vertCCW(i.Lprev.Org,i.Org,a.Lnext.Lnext.Org)&&w1.vertCCW(a.Lprev.Org,a.Org,i.Lnext.Lnext.Org)&&(r=a.Lnext,this.delete(a),i=null,a=null),!(i&&i.Lnext.Org===o);)i=r;return!0},e.prototype.check=function(){var e,t,i,r,a,o,h=this.fHead,c=this.vHead,d=this.eHead;for(t=h,t=h;(e=t.next)!==h;t=e){w0(e.prev===t),a=e.anEdge;do w0(a.Sym!==a),w0(a.Sym.Sym===a),w0(a.Lnext.Onext.Sym===a),w0(a.Onext.Sym.Lnext===a),w0(a.Lface===e),a=a.Lnext;while(a!==e.anEdge)}for(w0(e.prev===t&&null===e.anEdge),r=c,r=c;(i=r.next)!==c;r=i){w0(i.prev===r),a=i.anEdge;do w0(a.Sym!==a),w0(a.Sym.Sym===a),w0(a.Lnext.Onext.Sym===a),w0(a.Onext.Sym.Lnext===a),w0(a.Org===i),a=a.Onext;while(a!==i.anEdge)}for(w0(i.prev===r&&null===i.anEdge),o=d,o=d;(a=o.next)!==d;o=a)w0(a.Sym.next===o.Sym),w0(a.Sym!==a),w0(a.Sym.Sym===a),w0(null!==a.Org),w0(null!==a.Dst),w0(a.Lnext.Onext.Sym===a),w0(a.Onext.Sym.Lnext===a);w0(a.Sym.next===o.Sym&&a.Sym===this.eHeadSym&&a.Sym.Sym===a&&null===a.Org&&null===a.Dst&&null===a.Lface&&null===a.Rface)},e}(),w6=function(){this.handle=null},w8=function(){this.key=null,this.node=0},w9=function(){function e(e,t){this.leq=t,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=e,this.nodes=[],this.handles=[];for(var i=0;i<e+1;i++)this.nodes[i]=new w6,this.handles[i]=new w8;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return e.prototype.floatDown_=function(e){var t,i,r,a=this.nodes,o=this.handles;for(t=a[e].handle;;){if((r=e<<1)<this.size&&this.leq(o[a[r+1].handle].key,o[a[r].handle].key)&&++r,w0(r<=this.max),i=a[r].handle,r>this.size||this.leq(o[t].key,o[i].key)){a[e].handle=t,o[t].node=e;break}a[e].handle=i,o[i].node=e,e=r}},e.prototype.floatUp_=function(e){var t,i,r,a=this.nodes,o=this.handles;for(t=a[e].handle;;){if(i=a[r=e>>1].handle,0===r||this.leq(o[i].key,o[t].key)){a[e].handle=t,o[t].node=e;break}a[e].handle=i,o[i].node=e,e=r}},e.prototype.init=function(){for(var e=this.size;e>=1;--e)this.floatDown_(e);this.initialized=!0},e.prototype.min=function(){return this.handles[this.nodes[1].handle].key},e.prototype.insert=function(e){var t,i,r,a;if(2*(t=++this.size)>this.max){for(this.max*=2,a=this.nodes.length,this.nodes.length=this.max+1,r=a;r<this.nodes.length;r++)this.nodes[r]=new w6;for(a=this.handles.length,this.handles.length=this.max+1,r=a;r<this.handles.length;r++)this.handles[r]=new w8}return 0===this.freeList?i=t:(i=this.freeList,this.freeList=this.handles[i].node),this.nodes[t].handle=i,this.handles[i].node=t,this.handles[i].key=e,this.initialized&&this.floatUp_(t),i},e.prototype.extractMin=function(){var e=this.nodes,t=this.handles,i=e[1].handle,r=t[i].key;return this.size>0&&(e[1].handle=e[this.size].handle,t[e[1].handle].node=1,t[i].key=null,t[i].node=this.freeList,this.freeList=i,--this.size,this.size>0&&this.floatDown_(1)),r},e.prototype.delete=function(e){var t,i=this.nodes,r=this.handles;w0(e>=1&&e<=this.max&&null!==r[e].key),i[t=r[e].node].handle=i[this.size].handle,r[i[t].handle].node=t,--this.size,t<=this.size&&(t<=1||this.leq(r[i[t>>1].handle].key,r[i[t].handle].key)?this.floatDown_(t):this.floatUp_(t)),r[e].key=null,r[e].node=this.freeList,this.freeList=e},e}(),w7=function(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1},Se=function(){this.key=null,this.next=null,this.prev=null},St=function(){function e(e,t){this.frame=e,this.leq=t,this.head=new Se,this.head.next=this.head,this.head.prev=this.head}return e.prototype.min=function(){return this.head.next},e.prototype.max=function(){return this.head.prev},e.prototype.insert=function(e){return this.insertBefore(this.head,e)},e.prototype.search=function(e){var t=this.head;do t=t.next;while(null!==t.key&&!this.leq(this.frame,e,t.key));return t},e.prototype.insertBefore=function(e,t){do e=e.prev;while(null!==e.key&&!this.leq(this.frame,e.key,t));var i=new Se;return i.key=t,i.next=e.next,e.next.prev=i,i.prev=e,e.next=i,i},e.prototype.delete=function(e){e.next.prev=e.prev,e.prev.next=e.next},e}(),Si=function(){function e(){}
3139return e.regionBelow=function(e){return e.nodeUp.prev.key},e.regionAbove=function(e){return e.nodeUp.next.key},e.debugEvent=function(e){},e.addWinding=function(e,t){e.winding+=t.winding,e.Sym.winding+=t.Sym.winding},e.edgeLeq=function(e,t,i){var r=e.event,a=t.eUp,o=i.eUp;return a.Dst===r?o.Dst===r?w1.vertLeq(a.Org,o.Org)?0>=w1.edgeSign(o.Dst,a.Org,o.Org):w1.edgeSign(a.Dst,o.Org,a.Org)>=0:0>=w1.edgeSign(o.Dst,r,o.Org):o.Dst===r?w1.edgeSign(a.Dst,r,a.Org)>=0:w1.edgeEval(a.Dst,r,a.Org)>=w1.edgeEval(o.Dst,r,o.Org)},e.deleteRegion=function(e,t){t.fixUpperEdge&&w0(0===t.eUp.winding),t.eUp.activeRegion=null,e.dict.delete(t.nodeUp)},e.fixUpperEdge=function(e,t,i){w0(t.fixUpperEdge),e.mesh.delete(t.eUp),t.fixUpperEdge=!1,t.eUp=i,i.activeRegion=t},e.topLeftRegion=function(t,i){var r,a=i.eUp.Org;do i=e.regionAbove(i);while(i.eUp.Org===a);if(i.fixUpperEdge){if(null===(r=t.mesh.connect(e.regionBelow(i).eUp.Sym,i.eUp.Lnext)))return null;e.fixUpperEdge(t,i,r),i=e.regionAbove(i)}return i},e.topRightRegion=function(t){var i=t.eUp.Dst;do t=e.regionAbove(t);while(t.eUp.Dst===i);return t},e.addRegionBelow=function(e,t,i){var r=new w7;return r.eUp=i,r.nodeUp=e.dict.insertBefore(t.nodeUp,r),r.fixUpperEdge=!1,r.sentinel=!1,r.dirty=!1,i.activeRegion=r,r},e.isWindingInside=function(e,t){switch(e.windingRule){case __.ODD:return(1&t)!=0;case __.NONZERO:return 0!==t;case __.POSITIVE:return t>0;case __.NEGATIVE:return t<0;case __.ABS_GEQ_TWO:return t>=2||t<=-2}throw Error("Invalid winding rulle")},e.computeWinding=function(t,i){i.windingNumber=e.regionAbove(i).windingNumber+i.eUp.winding,i.inside=e.isWindingInside(t,i.windingNumber)},e.finishRegion=function(t,i){var r=i.eUp,a=r.Lface;a.inside=i.inside,a.anEdge=r,e.deleteRegion(t,i)},e.finishLeftRegions=function(t,i,r){for(var a,o=null,h=i,c=i.eUp;h!==r;){if(h.fixUpperEdge=!1,(a=(o=e.regionBelow(h)).eUp).Org!=c.Org){if(!o.fixUpperEdge){e.finishRegion(t,h);break}a=t.mesh.connect(c.Lprev,a.Sym),e.fixUpperEdge(t,o,a)}c.Onext!==a&&(t.mesh.splice(a.Oprev,a),t.mesh.splice(c,a)),e.finishRegion(t,h),c=o.eUp,h=o}return c},e.addRightEdges=function(t,i,r,a,o,h){var c,d,u,p,f=!0;u=r;do w0(w1.vertLeq(u.Org,u.Dst)),e.addRegionBelow(t,i,u.Sym),u=u.Onext;while(u!==a);for(null===o&&(o=e.regionBelow(i).eUp.Rprev),d=i,p=o;(u=(c=e.regionBelow(d)).eUp.Sym).Org===p.Org;)u.Onext!==p&&(t.mesh.splice(u.Oprev,u),t.mesh.splice(p.Oprev,u)),c.windingNumber=d.windingNumber-u.winding,c.inside=e.isWindingInside(t,c.windingNumber),d.dirty=!0,!f&&e.checkForRightSplice(t,d)&&(e.addWinding(u,p),e.deleteRegion(t,d),t.mesh.delete(p)),f=!1,d=c,p=u;d.dirty=!0,w0(d.windingNumber-u.winding===c.windingNumber),h&&e.walkDirtyRegions(t,d)},e.spliceMergeVertices=function(e,t,i){e.mesh.splice(t,i)},e.vertexWeights=function(e,t,i){var r=w1.vertL1dist(t,e),a=w1.vertL1dist(i,e),o=.5*a/(r+a),h=.5*r/(r+a);e.coords[0]+=o*t.coords[0]+h*i.coords[0],e.coords[1]+=o*t.coords[1]+h*i.coords[1],e.coords[2]+=o*t.coords[2]+h*i.coords[2]},e.getIntersectData=function(t,i,r,a,o,h){i.coords[0]=i.coords[1]=i.coords[2]=0,i.idx=-1,e.vertexWeights(i,r,a),e.vertexWeights(i,o,h)},e.checkForRightSplice=function(t,i){var r=e.regionBelow(i),a=i.eUp,o=r.eUp;if(w1.vertLeq(a.Org,o.Org)){if(w1.edgeSign(o.Dst,a.Org,o.Org)>0)return!1;w1.vertEq(a.Org,o.Org)?a.Org!==o.Org&&(t.pq.delete(a.Org.pqHandle),e.spliceMergeVertices(t,o.Oprev,a)):(t.mesh.splitEdge(o.Sym),t.mesh.splice(a,o.Oprev),i.dirty=r.dirty=!0)}else{if(0>w1.edgeSign(a.Dst,o.Org,a.Org))return!1;e.regionAbove(i).dirty=i.dirty=!0,t.mesh.splitEdge(a.Sym),t.mesh.splice(o.Oprev,a)}return!0},e.checkForLeftSplice=function(t,i){var r,a=e.regionBelow(i),o=i.eUp,h=a.eUp;if(w0(!w1.vertEq(o.Dst,h.Dst)),w1.vertLeq(o.Dst,h.Dst)){if(0>w1.edgeSign(o.Dst,h.Dst,o.Org))return!1;e.regionAbove(i).dirty=i.dirty=!0,r=t.mesh.splitEdge(o),t.mesh.splice(h.Sym,r),r.Lface.inside=i.inside}else{if(w1.edgeSign(h.Dst,o.Dst,h.Org)>0)return!1;i.dirty=a.dirty=!0,r=t.mesh.splitEdge(h),t.mesh.splice(o.Lnext,h.Sym),r.Rface.inside=i.inside}return!0},e.checkForIntersect=function(t,i){var r,a,o=e.regionBelow(i),h=i.eUp,c=o.eUp,d=h.Org,u=c.Org,p=h.Dst,f=c.Dst,m=new w4;if(w0(!w1.vertEq(f,p)),w0(0>=w1.edgeSign(p,t.event,d)),w0(w1.edgeSign(f,t.event,u)>=0),w0(d!==t.event&&u!==t.event),w0(!i.fixUpperEdge&&!o.fixUpperEdge),d===u||Math.min(d.t,p.t)>Math.max(u.t,f.t))return!1;if(w1.vertLeq(d,u)){if(w1.edgeSign(f,d,u)>0)return!1}else if(0>w1.edgeSign(p,u,d))return!1;return e.debugEvent(t),w1.intersect(p,d,f,u,m),w0(Math.min(d.t,p.t)<=m.t),w0(m.t<=Math.max(u.t,f.t)),w0(Math.min(f.s,p.s)<=m.s),w0(m.s<=Math.max(u.s,d.s)),w1.vertLeq(m,t.event)&&(m.s=t.event.s,m.t=t.event.t),r=w1.vertLeq(d,u)?d:u,w1.vertLeq(r,m)&&(m.s=r.s,m.t=r.t),w1.vertEq(m,d)||w1.vertEq(m,u)?(e.checkForRightSplice(t,i),!1):!w1.vertEq(p,t.event)&&w1.edgeSign(p,t.event,m)>=0||!w1.vertEq(f,t.event)&&0>=w1.edgeSign(f,t.event,m)?f===t.event?(t.mesh.splitEdge(h.Sym),t.mesh.splice(c.Sym,h),i=e.topLeftRegion(t,i),h=e.regionBelow(i).eUp,e.finishLeftRegions(t,e.regionBelow(i),o),e.addRightEdges(t,i,h.Oprev,h,h,!0),!0):p===t.event?(t.mesh.splitEdge(c.Sym),t.mesh.splice(h.Lnext,c.Oprev),o=i,i=e.topRightRegion(i),a=e.regionBelow(i).eUp.Rprev,o.eUp=c.Oprev,c=e.finishLeftRegions(t,o,null),e.addRightEdges(t,i,c.Onext,h.Rprev,a,!0),!0):(w1.edgeSign(p,t.event,m)>=0&&(e.regionAbove(i).dirty=i.dirty=!0,t.mesh.splitEdge(h.Sym),h.Org.s=t.event.s,h.Org.t=t.event.t),0>=w1.edgeSign(f,t.event,m)&&(i.dirty=o.dirty=!0,t.mesh.splitEdge(c.Sym),c.Org.s=t.event.s,c.Org.t=t.event.t),!1):(t.mesh.splitEdge(h.Sym),t.mesh.splitEdge(c.Sym),t.mesh.splice(c.Oprev,h),h.Org.s=m.s,h.Org.t=m.t,h.Org.pqHandle=t.pq.insert(h.Org),e.getIntersectData(t,h.Org,d,p,u,f),e.regionAbove(i).dirty=i.dirty=o.dirty=!0,!1)}
3139,e.walkDirtyRegions=function(t,i){for(var r,a,o=e.regionBelow(i);;){for(;o.dirty;)i=o,o=e.regionBelow(o);if(!i.dirty&&(o=i,null===(i=e.regionAbove(i))||!i.dirty))return;if(i.dirty=!1,r=i.eUp,a=o.eUp,r.Dst!==a.Dst&&e.checkForLeftSplice(t,i)&&(o.fixUpperEdge?(e.deleteRegion(t,o),t.mesh.delete(a),a=(o=e.regionBelow(i)).eUp):i.fixUpperEdge&&(e.deleteRegion(t,i),t.mesh.delete(r),r=(i=e.regionAbove(o)).eUp)),r.Org!==a.Org){if(r.Dst===a.Dst||i.fixUpperEdge||o.fixUpperEdge||r.Dst!==t.event&&a.Dst!==t.event)e.checkForRightSplice(t,i);else if(e.checkForIntersect(t,i))return}r.Org===a.Org&&r.Dst===a.Dst&&(e.addWinding(a,r),e.deleteRegion(t,i),t.mesh.delete(r),i=e.regionAbove(o))}},e.connectRightVertex=function(t,i,r){var a,o=r.Onext,h=e.regionBelow(i),c=i.eUp,d=h.eUp,u=!1;if(c.Dst!==d.Dst&&e.checkForIntersect(t,i),w1.vertEq(c.Org,t.event)&&(t.mesh.splice(o.Oprev,c),i=e.topLeftRegion(t,i),o=e.regionBelow(i).eUp,e.finishLeftRegions(t,e.regionBelow(i),h),u=!0),w1.vertEq(d.Org,t.event)&&(t.mesh.splice(r,d.Oprev),r=e.finishLeftRegions(t,h,null),u=!0),u){e.addRightEdges(t,i,r.Onext,o,o,!0);return}a=w1.vertLeq(d.Org,c.Org)?d.Oprev:c,a=t.mesh.connect(r.Lprev,a),e.addRightEdges(t,i,a,a.Onext,a.Onext,!1),a.Sym.activeRegion.fixUpperEdge=!0,e.walkDirtyRegions(t,i)},e.connectLeftDegenerate=function(t,i,r){var a,o,h,c,d;if(a=i.eUp,w1.vertEq(a.Org,r)){w0(!1),e.spliceMergeVertices(t,a,r.anEdge);return}if(!w1.vertEq(a.Dst,r)){t.mesh.splitEdge(a.Sym),i.fixUpperEdge&&(t.mesh.delete(a.Onext),i.fixUpperEdge=!1),t.mesh.splice(r.anEdge,a),e.sweepEvent(t,r);return}w0(!1),i=e.topRightRegion(i),o=c=(h=(d=e.regionBelow(i)).eUp.Sym).Onext,d.fixUpperEdge&&(w0(o!==h),e.deleteRegion(t,d),t.mesh.delete(h),h=o.Oprev),t.mesh.splice(r.anEdge,h),w1.edgeGoesLeft(o)||(o=null),e.addRightEdges(t,i,h.Onext,c,o,!0)},e.connectLeftVertex=function(t,i){var r,a,o,h,c,d,u=new w7;if(u.eUp=i.anEdge.Sym,r=t.dict.search(u).key,a=e.regionBelow(r)){if(h=r.eUp,c=a.eUp,0===w1.edgeSign(h.Dst,i,h.Org)){e.connectLeftDegenerate(t,r,i);return}(o=w1.vertLeq(c.Dst,h.Dst)?r:a,r.inside||o.fixUpperEdge)?(d=o===r?t.mesh.connect(i.anEdge.Sym,h.Lnext):t.mesh.connect(c.Dnext,i.anEdge).Sym,o.fixUpperEdge?e.fixUpperEdge(t,o,d):e.computeWinding(t,e.addRegionBelow(t,r,d)),e.sweepEvent(t,i)):e.addRightEdges(t,r,i.anEdge,i.anEdge,null,!0)}},e.sweepEvent=function(t,i){t.event=i,e.debugEvent(t);for(var r=i.anEdge;null===r.activeRegion;)if((r=r.Onext)===i.anEdge){e.connectLeftVertex(t,i);return}var a=e.topLeftRegion(t,r.activeRegion);w0(null!==a);var o=e.regionBelow(a),h=o.eUp,c=e.finishLeftRegions(t,o,null);c.Onext===h?e.connectRightVertex(t,a,c):e.addRightEdges(t,a,c.Onext,h,h,!0)},e.addSentinel=function(e,t,i,r){var a=new w7,o=e.mesh.makeEdge();o.Org.s=i,o.Org.t=r,o.Dst.s=t,o.Dst.t=r,e.event=o.Dst,a.eUp=o,a.windingNumber=0,a.inside=!1,a.fixUpperEdge=!1,a.sentinel=!0,a.dirty=!1,a.nodeUp=e.dict.insert(a)},e.initEdgeDict=function(t){t.dict=new St(t,e.edgeLeq);var i=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],a=t.bmin[0]-i,o=t.bmax[0]+i,h=t.bmin[1]-r,c=t.bmax[1]+r;e.addSentinel(t,a,o,h),e.addSentinel(t,a,o,c)},e.doneEdgeDict=function(t){for(var i,r=0;null!==(i=t.dict.min().key);)i.sentinel||(w0(i.fixUpperEdge),w0(1==++r)),w0(0===i.windingNumber),e.deleteRegion(t,i)},e.removeDegenerateEdges=function(t){var i,r,a,o=t.mesh.eHead;for(i=o.next;i!==o;i=r)r=i.next,a=i.Lnext,w1.vertEq(i.Org,i.Dst)&&i.Lnext.Lnext!==i&&(e.spliceMergeVertices(t,a,i),t.mesh.delete(i),a=(i=a).Lnext),a.Lnext===i&&(a!==i&&((a===r||a===r.Sym)&&(r=r.next),t.mesh.delete(a)),(i===r||i===r.Sym)&&(r=r.next),t.mesh.delete(i))},e.initPriorityQ=function(e){var t,i,r,a=0;for(i=(r=e.mesh.vHead).next;i!==r;i=i.next)a++;for(a+=8,t=e.pq=new w9(a,w1.vertLeq),i=(r=e.mesh.vHead).next;i!==r;i=i.next)i.pqHandle=t.insert(i);return i===r&&(t.init(),!0)},e.donePriorityQ=function(e){e.pq=null},e.removeDegenerateFaces=function(t,i){var r,a,o;for(r=i.fHead.next;r!==i.fHead;r=a)a=r.next,w0((o=r.anEdge).Lnext!==o),o.Lnext.Lnext===o&&(e.addWinding(o.Onext,o),t.mesh.delete(o));return!0},e.computeInterior=function(t,i){var r,a;if(void 0===i&&(i=!0),e.removeDegenerateEdges(t),!e.initPriorityQ(t))return!1;for(e.initEdgeDict(t);null!==(r=t.pq.extractMin());){for(;!(null===(a=t.pq.min())||!w1.vertEq(a,r));)a=t.pq.extractMin(),e.spliceMergeVertices(t,r.anEdge,a.anEdge);
vendor: 1,587 bytes, line 3139
3139e.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,e.debugEvent(t),e.doneEdgeDict(t),e.donePriorityQ(t),!!e.removeDegenerateFaces(t,t.mesh)&&(i&&t.mesh.check(),!0)},e}(),Sr=function(){function e(){this.mesh=new w5,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=__.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 e.prototype.dot_=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]},e.prototype.normalize_=function(e){var t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2];if(!t)throw"Zero-size vector!";t=Math.sqrt(t),e[0]/=t,e[1]/=t,e[2]/=t},e.prototype.longAxis_=function(e){var t=0;return Math.abs(e[1])>Math.abs(e[0])&&(t=1),Math.abs(e[2])>Math.abs(e[t])&&(t=2),t},e.prototype.computeNormal_=function(e){var t,i,r,a,o,h,c=[0,0,0],d=[0,0,0],u=[0,0,0],p=[0,0,0],f=[0,0,0],m=[null,null,null],g=[null,null,null],v=this.mesh.vHead;t=v.next;for(var y=0;y<3;++y)a=t.coords[y],d[y]=a,g[y]=t,c[y]=a,m[y]=t;for(t=v.next;t!==v;t=t.next)for(var x=0;x<3;++x)(a=t.coords[x])<d[x]&&(d[x]=a,g[x]=t),a>c[x]&&(c[x]=a,m[x]=t);var b=0;if(c[1]-d[1]>c[0]-d[0]&&(b=1),c[2]-d[2]>c[b]-d[b]&&(b=2),d[b]>=c[b]){e[0]=0,e[1]=0,e[2]=1;return}for(h=0,i=g[b],r=m[b],u[0]=i.coords[0]-r.coords[0],u[1]=i.coords[1]-r.coords[1],u[2]=i.coords[2]-r.coords[2],t=v.next;t!==v;t=t.next)p[0]=t.coords[0]-r.coords[0],p[1]=t.coords[1]-r.coords[1],p[2]=t.coords[2]-r.coords[2],f[0]=u[1]*p[2]-u[2]*p[1],f[1]=u[2]*p[0]-u[0]*p[2],f[2]=u[0]*p[1]-u[1]*p[0],(
3139o=f[0]*f[0]+f[1]*f[1]+f[2]*f[2])>h&&(h=o,e[0]=f[0],e[1]=f[1],e[2]=f[2]);h<=0&&(e[0]=e[1]=e[2]=0,e[this.longAxis_(u)]=1)},e.prototype.checkOrientation_=function(){for(var e,t,i=this.mesh.fHead,r=this.mesh.vHead,a=0,o=i.next;o!==i;o=o.next)if(!((t=o.anEdge).winding<=0))do a+=(t.Org.s-t.Dst.s)*(t.Org.t+t.Dst.t),t=t.Lnext;while(t!==o.anEdge);if(a<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]}},e.prototype.projectPolygon_=function(){var e,t,i=this.mesh.vHead,r=[0,0,0],a=!1;r[0]=this.normal[0],r[1]=this.normal[1],r[2]=this.normal[2],r[0]||r[1]||r[2]||(this.computeNormal_(r),a=!0),e=this.sUnit,t=this.tUnit;var o=this.longAxis_(r);e[o]=0,e[(o+1)%3]=1,e[(o+2)%3]=0,t[o]=0,t[(o+1)%3]=0,t[(o+2)%3]=r[o]>0?1:-1;for(var h=i.next;h!==i;h=h.next)h.s=this.dot_(h.coords,e),h.t=this.dot_(h.coords,t);a&&this.checkOrientation_();for(var c=!0,d=i.next;d!==i;d=d.next)c?(this.bmin[0]=this.bmax[0]=d.s,this.bmin[1]=this.bmax[1]=d.t,c=!1):(d.s<this.bmin[0]&&(this.bmin[0]=d.s),d.s>this.bmax[0]&&(this.bmax[0]=d.s),d.t<this.bmin[1]&&(this.bmin[1]=d.t),d.t>this.bmax[1]&&(this.bmax[1]=d.t))},e.prototype.addWinding_=function(e,t){e.winding+=t.winding,e.Sym.winding+=t.Sym.winding},e.prototype.tessellateMonoRegion_=function(e,t){var i,r;if(!((i=t.anEdge).Lnext!==i&&i.Lnext.Lnext!==i))throw"Mono region invalid";for(;w1.vertLeq(i.Dst,i.Org);i=i.Lprev);for(;w1.vertLeq(i.Org,i.Dst);i=i.Lnext);for(r=i.Lprev;i.Lnext!==r;)if(w1.vertLeq(i.Dst,r.Org)){for(;r.Lnext!==i&&(w1.edgeGoesLeft(r.Lnext)||0>=w1.edgeSign(r.Org,r.Dst,r.Lnext.Dst));)r=e.connect(r.Lnext,r).Sym;r=r.Lprev}else{for(;r.Lnext!==i&&(w1.edgeGoesRight(i.Lprev)||w1.edgeSign(i.Dst,i.Org,i.Lprev.Org)>=0);)i=e.connect(i,i.Lprev).Sym;i=i.Lnext}if(r.Lnext===i)throw"Mono region invalid";for(;r.Lnext.Lnext!==i;)r=e.connect(r.Lnext,r).Sym;return!0},e.prototype.tessellateInterior_=function(e){for(var t,i=e.fHead.next;i!==e.fHead;i=t)if(t=i.next,i.inside&&!this.tessellateMonoRegion_(e,i))return!1;return!0},e.prototype.discardExterior_=function(e){for(var t,i=e.fHead.next;i!==e.fHead;i=t)t=i.next,i.inside||e.zapFace(i)},e.prototype.setWindingNumber_=function(e,t,i){for(var r,a=e.eHead.next;a!==e.eHead;a=r)r=a.next,a.Rface.inside!==a.Lface.inside?a.winding=a.Lface.inside?t:-t:i?e.delete(a):a.winding=0},e.prototype.getNeighbourFace_=function(e){return e.Rface&&e.Rface.inside?e.Rface.n:-1},e.prototype.outputPolymesh_=function(e,t,i,r){var a,o,h=0,c=0;i>3&&e.mergeConvexFaces(i);for(var d=e.vHead.next;d!==e.vHead;d=d.next)d.n=-1;for(var u=e.fHead.next;u!==e.fHead;u=u.next)if(u.n=-1,u.inside){a=u.anEdge,o=0;do{var d=a.Org;-1===d.n&&(d.n=c,c++),o++,a=a.Lnext}while(a!==u.anEdge);if(o>i)throw"Face vertex greater that support polygon";u.n=h,++h}this.elementCount=h,t===_A.CONNECTED_POLYGONS&&(h*=2),this.elements=[],this.elements.length=h*i,this.vertexCount=c,this.vertices=[],this.vertices.length=c*r,this.vertexIndices=[],this.vertexIndices.length=c;for(var d=e.vHead.next;d!==e.vHead;d=d.next)if(-1!==d.n){var p=d.n*r;this.vertices[p+0]=d.coords[0],this.vertices[p+1]=d.coords[1],r>2&&(this.vertices[p+2]=d.coords[2]),this.vertexIndices[d.n]=d.idx}for(var f=0,u=e.fHead.next;u!==e.fHead;u=u.next)if(u.inside){a=u.anEdge,o=0;do{var d=a.Org;this.elements[f++]=d.n,o++,a=a.Lnext}while(a!==u.anEdge);for(var m=o;m<i;++m)this.elements[f++]=-1;if(t===_A.CONNECTED_POLYGONS){a=u.anEdge;do this.elements[f++]=this.getNeighbourFace_(a),a=a.Lnext;while(a!==u.anEdge);for(var g=o;g<i;++g)this.elements[f++]=-1}}},e.prototype.outputContours_=function(e,t){var i,r,a=0,o=0;this.vertexCount=0,this.elementCount=0;for(var h=e.fHead.next;h!==e.fHead;h=h.next)if(h.inside){r=i=h.anEdge;do this.vertexCount++,i=i.Lnext;while(i!==r);this.elementCount++}this.elements=[],this.elements.length=2*this.elementCount,this.vertices=[],this.vertices.length=this.vertexCount*t,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,d=0,u=0;a=0;for(var h=e.fHead.next;h!==e.fHead;h=h.next)if(h.inside){o=0,r=i=h.anEdge;do this.vertices[c++]=i.Org.coords[0],this.vertices[c++]=i.Org.coords[1],t>2&&(this.vertices[c++]=i.Org.coords[2]),this.vertexIndices[d++]=this.vertexIdCallback?this.vertexIdCallback(i):i.Org.idx,o++,i=i.Lnext;while(i!==r);this.elements[u++]=a,this.elements[u++]=o,a+=o}},e.prototype.addContour=function(e,t){null===this.mesh&&(this.mesh=new w5),e<2&&(e=2),e>3&&(e=3);for(var i=null,r=0;r<t.length;r+=e)null===i?(i=this.mesh.makeEdge(),this.mesh.splice(i,i.Sym)):(this.mesh.splitEdge(i),i=i.Lnext),i.Org.coords[0]=t[r+0],i.Org.coords[1]=t[r+1],e>2?i.Org.coords[2]=t[r+2]:i.Org.coords[2]=0,i.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(i),i.winding=1,i.Sym.winding=-1},e.prototype.tesselate=function(e,t,i,r,a,o){if(void 0===e&&(e=__.ODD),void 0===t&&(t=_A.POLYGONS),void 0===o&&(o=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,a&&(this.normal[0]=a[0],this.normal[1]=a[1],this.normal[2]=a[2]),this.windingRule=e,r<2&&(r=2),r>3&&(r=3),!this.mesh)return!1;this.projectPolygon_(),Si.computeInterior(this,o);var h=this.mesh;return t===_A.BOUNDARY_CONTOURS?this.setWindingNumber_(h,1,!0):this.tessellateInterior_(h),o&&h.check(),t===_A.BOUNDARY_CONTOURS?this.outputContours_(h,r):this.outputPolymesh_(h,t,i,r),!0},e}();function Ss(e){var t=e.windingRule,i=void 0===t?__.ODD:t,r=e.elementType,a=void 0===r?_A.POLYGONS:r,o=e.polySize,h=e.vertexSize,c=void 0===h?2:h,d=e.n
3139ormal,u=e.contours,p=void 0===u?[]:u,f=e.strict,m=void 0===f||f,g=e.debug;if(!p&&m)throw Error("Contours can't be empty");if(p){var v=new Sr;e.edgeCreateCallback&&(v.edgeCreateCallback=e.edgeCreateCallback),e.vertexIdCallback&&(v.vertexIdCallback=e.vertexIdCallback);for(var y=0;y<p.length;y++)v.addContour(c||2,p[y]);return v.tesselate(i,a,void 0===o?3:o,c,void 0===d?[0,0,1]:d,m),{vertices:v.vertices,vertexIndices:v.vertexIndices,vertexCount:v.vertexCount,elements:v.elements,elementCount:v.elementCount,mesh:void 0!==g&&g?v.mesh:void 0}}}__.ODD,__.NONZERO,__.POSITIVE,__.NEGATIVE,__.ABS_GEQ_TWO,_A.POLYGONS,_A.CONNECTED_POLYGONS,_A.BOUNDARY_CONTOURS;var Sa=class{constructor(e=256,t=!1){this.capacity=e,this.size=0,this.debug=t,this.debug&&console.log(`allocating with cap ${e}`);let i=e*Sa.eSize;this.buffer=new ArrayBuffer(i);let r=Float32Array.BYTES_PER_ELEMENT,a=0;this.positions=new Float32Array(this.buffer,a*r,3*e),a+=3*e,this.normals=new Float32Array(this.buffer,a*r,3*e),a+=3*e,this.uvs=new Float32Array(this.buffer,a*r,2*e)}realloc(e,t=!1){if(e<this.size)throw Error("cannot shrink buffer");if(e<=this.capacity&&!t)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${e}`);let i=new ArrayBuffer(e*Sa.eSize),r=Float32Array.BYTES_PER_ELEMENT,a=0,o=new Float32Array(i,0*r,3*e),h=new Float32Array(i,(a+=3*e)*r,3*e),c=new Float32Array(i,(a+=3*e)*r,2*e);t?(o.set(this.positions.subarray(0,3*this.size)),h.set(this.normals.subarray(0,3*this.size)),c.set(this.uvs.subarray(0,2*this.size))):(o.set(this.positions),h.set(this.normals),c.set(this.uvs)),this.buffer=i,this.positions=o,this.normals=h,this.uvs=c,this.capacity=e}get(e=1){let t=this.size+e;if(t>this.capacity){let e=this.capacity;for(;t>e;)e*=2;this.realloc(e)}let i=this.size;return this.size=t,i}reserve(e){let t=this.size+e;t>this.capacity&&this.realloc(t)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}};Sa.eSize=8*Float32Array.BYTES_PER_ELEMENT;var Sn=class{constructor(e=[],t=(e,t)=>e<t?-1:e>t?1:0){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this._up(this.length++)}pop(){if(0===this.length)return;let e=this.data[0],t=this.data.pop();return--this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){let{data:t,compare:i}=this,r=t[e];for(;e>0;){let a=e-1>>1,o=t[a];if(i(r,o)>=0)break;t[e]=o,e=a}t[e]=r}_down(e){let{data:t,compare:i}=this,r=this.length>>1,a=t[e];for(;e<r;){let r=(e<<1)+1,o=r+1;if(o<this.length&&0>i(t[o],t[r])&&(r=o),i(t[r],a)>=0)break;t[e]=t[r],e=r}t[e]=a}};function So(e,t,i,r){this.x=e,this.y=t,this.h=i,this.d=function(e,t,i){let r=!1,a=1/0;for(let o of i)for(let i=0,h=o.length,c=h-1;i<h;c=i++){let h=o[i],d=o[c];h[1]>t!=d[1]>t&&e<(d[0]-h[0])*(t-h[1])/(d[1]-h[1])+h[0]&&(r=!r),a=Math.min(a,function(e,t,i,r){let a=i[0],o=i[1],h=r[0]-a,c=r[1]-o;if(0!==h||0!==c){let i=((e-a)*h+(t-o)*c)/(h*h+c*c);i>1?(a=r[0],o=r[1]):i>0&&(a+=h*i,o+=c*i)}return(h=e-a)*h+(c=t-o)*c}(e,t,h,d))}return 0===a?0:(r?1:-1)*Math.sqrt(a)}(e,t,r),this.max=this.d+this.h*Math.SQRT2}var Sl={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Sh={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Sc={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},Sd=(e,t)=>([i,r])=>(r<i&&(r+=t),(e>=i?e:e+t)<=r),Su=class extends rU{constructor(e,t,i=0,r=12,a=3,o=__.ODD,h=!1){let c,d,u;super(),this.forPathBevel=h,this.type="ShapeGeometry",this.vertexCache={},this._shape=e,this._depth=t,this._curveSegments=r,this._bevelSegmentsInput=a;let p=this._shape.extractShapePointsToFlatArray([],r),f=this._shape.shapeHoles.map(e=>{let t=e.extractShapePointsToFlatArray([],r),i=[];for(let e=t.length-1;e>=1;e-=2){let r=t[e-1],a=t[e-0];i.push(r,a)}return i}),m=[],g=[];for(let e=0;e<p.length;e+=2)g.push([p[e],p[e+1]]);m.push(g);for(let e=0;e<f.length;e++){let t=f[e],i=[];for(let e=0;e<t.length;e+=2)i.push([t[e],t[e+1]]);m.push(i)}c=e.isText?.1*new lU().setFromPoints(e.points.map(e=>e.position)).getSize(new tJ).length():0===m[0].length?i:i>0?function(e,t,i=1,r=!1){let a=1/0,o=1/0,h=-1/0,c=-1/0;for(let[t,i]of e[0])t<a&&(a=t),i<o&&(o=i),t>h&&(h=t),i>c&&(c=i);let d=h-a,u=c-o,p=Math.max(i,Math.min(d,u));if(p===i){let e=[a,o];return e.distance=0,e.distance}let f=new Sn([],(e,t)=>t.max-e.max),m=function(e){let t=0,i=0,r=0,a=e[0];for(let e=0,o=a.length,h=o-1;e<o;
3139h=e++){let o=a[e],c=a[h],d=o[0]*c[1]-c[0]*o[1];i+=(o[0]+c[0])*d,r+=(o[1]+c[1])*d,t+=3*d}let o=new So(i/t,r/t,0,e);return 0===t||o.d<0?new So(a[0][0],a[0][1],0,e):o}(e),g=new So(a+d/2,o+u/2,0,e);g.d>m.d&&(m=g);let v=2;function y(a,o,h){let c=new So(a,o,h,e);if(v++,c.max>m.d+i&&f.push(c),c.d>m.d&&(m=c,r&&console.log(`found best ${Math.round(1e4*c.d)/1e4} after ${v} probes`),m.d>t))return t}let x=p/2;for(let e=a;e<h;e+=p)for(let t=o;t<c;t+=p)y(e+x,t+x,x);for(;f.length;){let{max:e,x:t,y:r,h:a}=f.pop();if(e-m.d<=i)break;y(t-(x=a/2),r-x,x),y(t+x,r-x,x),y(t-x,r+x,x),y(t+x,r+x,x)}r&&console.log(`num probes: ${v}
3140best distance: ${m.d}`);let b=[m.x,m.y];return b.distance=m.d,b.distance}(m,i):1e-5,i<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(i,c,t/2),this._bevelSegments=Math.floor(a));try{d=Ss({windingRule:o,elementType:_A.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[p]})}catch{d=Sl}try{u=Ss({windingRule:__.ODD,elementType:_A.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...f]})}catch{u=Sh}if(!d)throw Error("error generating geometry");let v=d.elementCount;if(u){d.elementCount+=u.elementCount;for(let e=0;e<u.elements.length;e++){let t=u.elements[e],i=e%2==0?d.vertexCount:0;d.elements.push(t+i)}for(let e=0;e<u.vertexIndices.length;e++){let t=u.vertexIndices[e],i=d.vertexCount;d.vertexIndices.push(t+i)}for(let e=0;e<u.vertices.length;e++){let t=u.vertices[e];d.vertices.push(t)}}let y=1/0,x=-1/0,b=1/0,w=-1/0;for(let e=0,t=d.vertexCount;e<t;e++){let t=2*e,i=d.vertices[t+0],r=d.vertices[t+1];i<y&&(y=i),i>x&&(x=i),r<b&&(b=r),r>w&&(w=r)}this._minX=y,this._minY=b,this._width=x-y,this._height=w-b,this._buffer=new Sa(this._computeBufferEstimatedSize(d));let S=[],_=[];for(let e=d.elementCount-1;e>=0;e--){let t=e>=v,i=2*e,a=d.elements[i+0],o=d.elements[i+1],u=a+o,p={start:a,count:o,normals:[],continuous:[],concave:[]},m=a,g=u-1,y=a+1,x=this._shape.roundedCurves.length;do{let e=m-a,i=d.vertices[2*g+0],r=d.vertices[2*g+1],h=d.vertices[2*m+0],c=d.vertices[2*m+1],f=d.vertices[2*y+0],v=d.vertices[2*y+1],b=h-i,w=c-r,S=Math.sqrt(b*b+w*w);b/=S,w/=S;let _=h-f,A=c-v,M=Math.sqrt(_*_+A*A);_/=M,A/=M,p.normals[2*e+0]=-A,p.normals[2*e+1]=_,p.concave[e]=b*A-w*_>0;let E=d.vertexIndices[m];if(Array.isArray(E))p.continuous[e]=!1;else{let[t,i]=this._shape.getCurveIndexFromVertexId(E-1,!0);if(i>0&&i<1)p.continuous[e]=!0;else{let r=1===i?t+1:t-1;r=(r+x)%x;let a=1===i?0:1,o=this._shape.roundedCurves[t].getTangent(i),h=this._shape.roundedCurves[r].getTangent(a);p.continuous[e]=o.dot(h)>.95}}t&&(p.normals[2*e+0]*=-1,p.normals[2*e+1]*=-1),[g,m,y]=[m,y,y+1],y>=u&&(y-=o)}while(y!==a+1);let b=[];b.push({bevelI:0,angle:0,size:0,boundary:{vertices:d.vertices.slice(2*a,2*u),vertexCount:o,vertexIndices:Array(o).fill(!0).map((e,t)=>[t,t]),elements:[0,o],elementCount:1,mesh:null},reverseMap:[],insetPoints:d.vertices.slice(2*a,2*u)});let w=0;for(let e=1;e<=this._bevelSegments;e++){let i=e/this._bevelSegments*Math.PI/2,a=(1-Math.cos(i))*this._bevel,h=[],c=[],u=[],f=[],m=0;for(let e=0;e<o;e++){let i=2*e,g=(e-1+o)%o*2,v=d.vertices[2*p.start+i+0],y=d.vertices[2*p.start+i+1],x=-p.normals[g+0]*a,b=-p.normals[g+1]*a,w=-p.normals[i+0]*a,S=-p.normals[i+1]*a;if(p.concave[e]||!p.concave[e]&&t){let i=Math.atan2(b,x),o=Math.atan2(S,w);o>i&&(o-=2*Math.PI);let c=o-i;if(p.continuous[e]||t){let r=i+c/2,o=Math.cos(r)*a,d=Math.sin(r)*a;h[2*m+0]=v+o*(t?-1:1),h[2*m+1]=y+d*(t?-1:1),f[m]=e,m++}else{let t=Math.max(1,Math.floor(r/4*Math.abs(c)/Math.PI));for(let r=0;r<=t;r++){let o=i+r/t*c,d=Math.cos(o)*a,u=Math.sin(o)*a;h[2*m+0]=v+d,h[2*m+1]=y+u,f[m]=e,m++}}}else h[2*m+0]=v+x,h[2*m+1]=y+b,f[m]=e,c[e]=m,h[2*++m+0]=v,h[2*m+1]=y,f[m]=e,h[2*++m+0]=v+w,h[2*m+1]=y+S,f[m]=e,u[e]=m,m++}let g=Ss({windingRule:__.POSITIVE,elementType:_A.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[h],edgeCreateCallback:e=>{let t=e.Org.idx,i=f[t],r=f[(t+1)%f.length];e.idx=[i,r],e.Sym.idx=[r,i]},vertexIdCallback:e=>{let t=e.Lprev.idx;return[t?t[1]:0,e.idx?e.idx[0]:0]}});if(!g)throw console.log("Error"),Error(`error generating bevel geometry for ${e}'th loop`);if(!g.vertexCount){w=(1-Math.sin((e-1)/this._bevelSegments*Math.PI/2))*this._bevel;break}for(let e=0;e<g.vertexIndices.length;e++){let[t,i]=g.vertexIndices[e];if(t===i)continue;let r=i;i<t&&(r+=o);for(let a=t;a<r;a++){let r=a%o,h=(a+1)%o;if(!p.continuous[r]||!p.continuous[h]){g.vertexIndices[e]=[t,r],g.vertexIndices.splice(e+1,0,[h,i]),g.vertices.splice((e+1)*2,0,g.vertices[2*e],g.vertices[2*e+1]);break}}}b.push({bevelI:e,angle:i,size:a,boundary:g,reverseMap:f,insetPoints:h})}let A=(e,t,i)=>{let r=0,a=e.boundary.vertexIndices.length;for(;r<a&&i(e.boundary.vertexIndices[t]);)t=(t+1)%a,r++;return r},M=S.length;for(let e=1;e<b.length;
3140e++){let t=b[e-1],i=b[e],r=t.boundary.vertexIndices.length,a=i.boundary.vertexIndices.length;if(!r||!a)break;let c=p.concave.length,d=0,u=Sd(0,o);for(;!t.boundary.vertexIndices.filter(u).length||!i.boundary.vertexIndices.filter(u).length;)u=Sd(++d,o);let f=t.boundary.vertexIndices.findIndex(u),m=i.boundary.vertexIndices.findIndex(u);do f=(f+1)%r;while(u(t.boundary.vertexIndices[f]));do m=(m+1)%a;while(u(i.boundary.vertexIndices[m]));let g=d=(d+1)%o,v=0,y=this._buildBevelVert(p,t,(f-1+r)%r,void 0,v),x=this._buildBevelVert(p,i,(m-1+a)%a,void 0,v),w=y,_=x,M,E,C=!1;do{v=(d||c)/c;let e=A(t,f,u=Sd(d,o)),g=A(i,m,u),y=C;if(C=!1,e&&!g){for(let i=0;i<e;i++)M=this._buildBevelVert(p,t,(f+i)%r,i/(e-1),v),S.push(w.topN,M.topP,_.topN),!1===h&&S.push(M.bottomP,w.bottomN,_.bottomN),w=M;C=!0}else if(!e&&g)for(let e=0;e<g;e++)E=this._buildBevelVert(p,i,(m+e)%a,e/(g-1),v),S.push(_.topN,w.topP,E.topP),!1===h&&S.push(w.bottomP,_.bottomN,E.bottomP),_=E;else if(e&&g){if(M=this._buildBevelVert(p,t,f,0,v),E=this._buildBevelVert(p,i,m,0,v),y?(S.push(w.topN,E.topP,_.topN),S.push(w.topN,M.topP,E.topP),!1===h&&(S.push(E.bottomP,w.bottomN,_.bottomN),S.push(E.bottomP,M.bottomP,w.bottomN))):(S.push(_.topN,w.topN,M.topP),S.push(_.topN,M.topP,E.topP),!1===h&&(S.push(M.bottomP,w.bottomN,_.bottomN),S.push(M.bottomP,_.bottomN,E.bottomP))),w=M,_=E,e===g)for(let o=1;o<e;o++)M=this._buildBevelVert(p,t,(f+o)%r,o/(e-1),v),E=this._buildBevelVert(p,i,(m+o)%a,o/(g-1),v),S.push(w.topN,M.topP,_.topN),S.push(_.topN,M.topP,E.topP),!1===h&&(S.push(M.bottomP,w.bottomN,_.bottomN),S.push(M.bottomP,_.bottomN,E.bottomP)),w=M,_=E;else if(e>g){let o=e/g,c=0;for(let d=1;d<e;d++)M=this._buildBevelVert(p,t,(f+d)%r,d/(e-1),v),S.push(w.topN,M.topP,_.topN),!1===h&&S.push(M.bottomP,w.bottomN,_.bottomN),w=M,d>(c+1)*o&&(c++,E=this._buildBevelVert(p,i,(m+c)%a,c/(g-1),v),S.push(_.topN,M.topP,E.topP),!1===h&&S.push(M.bottomP,_.bottomN,E.bottomP),_=E)}else{let o=g/e,c=0;for(let d=1;d<g;d++)E=this._buildBevelVert(p,i,(m+d)%a,d/(g-1),v),S.push(_.topN,M.topP,E.topP),!1===h&&S.push(M.bottomP,_.bottomN,E.bottomP),_=E,d>(c+1)*o&&(c++,M=this._buildBevelVert(p,t,(f+c)%r,c/(e-1),v),S.push(w.topN,M.topP,_.topN),!1===h&&S.push(M.bottomP,w.bottomN,_.bottomN),w=M)}}f=(f+e)%r,m=(m+g)%a,d=(d+1)%c}while(d!==g)}if(!1===h&&this._depth>2*this._bevel&&this._buildWall(b,p,S),t){let e=[];for(let t=S.length-1;t>=M+2;t-=3){let i=S[t-2],r=S[t-1],a=S[t-0];e.push(a,r,i)}S.splice(M,S.length-M,...e)}if(t){let e=[];for(let t=b[b.length-1].boundary.vertices.length-1;t>=1;t-=2){let i=b[b.length-1].boundary.vertices[t-1],r=b[b.length-1].boundary.vertices[t-0];e.push(i,r)}_.push(e)}if(!t){let e=b[b.length-1],t;try{t=Ss({windingRule:b.length>1?__.POSITIVE:__.ODD,elementType:_A.POLYGONS,vertexSize:2,strict:!0,contours:[e.insetPoints,..._]})}catch{t=Sc}if(!t)throw Error("Error generating geometry for surface");0===f.length&&this._bevel<c&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let e=0;e<3*t.elementCount;e+=3){let i=this._buildSurfaceVert(t,t.elements[e+0],w),r=this._buildSurfaceVert(t,t.elements[e+1],w),a=this._buildSurfaceVert(t,t.elements[e+2],w);S.push(i.top,r.top,a.top),!1===h&&S.push(a.bottom,r.bottom,i.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new rT(Uint32Array.from(S),1),M=new rT(this._buffer.positions,3),E=new rT(this._buffer.normals,3),C=new rT(this._buffer.uvs,2);M.needsUpdate=!0,E.needsUpdate=!0,C.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",M),this.setAttribute("normal",E),this.setAttribute("uv",C),this.setIndex(A)}_computeBufferEstimatedSize(e){return 2*e.vertexCount*(2+this._bevelSegments)}_buildWall(e,t,i){let r=e[0];for(let e=0,a=r.boundary.vertexCount;e<a;e++){let o=this._buildBevelVert(t,r,e),h=this._buildBevelVert(t,r,(e+1)%a);i.push(h.topP,o.topN,o.bottomN),i.push(h.topP,o.bottomN,h.bottomP)}}_buildSurfaceVert(e,t,i){let r=t.toString();if(r in this.vertexCache)return this.vertexCache[r];let a=e.vertices[2*t+0],o=e.vertices[2*t+1],h=(a-this._minX)/this._width,c=(o-this._minY)/this._height;this.forPathBevel&&(c=1);let d=this._buffer.get(this.forPathBevel?1:2),u=3*d,p=2*d,f={top:d+0,bottom:d+1};return this._buffer.positions[u+0]=a,this._buffer.positions[u+1]=o,this._buffer.positions[u+2]=this.forPathBevel?this._bevel:this._depth-i,this._buffer.normals[u+0]=0,this._buffer.normals[u+1]=0,this._buffer.normals[u+2]=1,this._buffer.uvs[p+0]=h,this._buffer.uvs[p+1]=c,!1===this.forPathBevel&&(this._buffer.positions[u+3]=a,this._buffer.positions[u+4]=o,this._buffer.positions[u+5]=i,this._buffer.normals[u+3]=0,this._buffer.normals[u+4]=0,this._buffer.normals[u+5]=-1,this._buffer.uvs[p+2]=h,this._buffer.uvs[p+3]=c),this.vertexCache[r]=f,f}_buildBevelVert(e,t,i,r=1,a){let o=`${t.bevelI}
3140:${i}`;if(o in this.vertexCache&&0!==a&&1!==a&&(!a||a===this.vertexCache[o].pathBevelUCoord))return this.vertexCache[o];let[h,c]=t.boundary.vertexIndices[i],d,u,p,f;h!==c?(u=h,d=c,f=!1,p=e.continuous[u]&&e.continuous[d]):(u=((d=h)-1+e.count)%e.count,f=e.concave[d]&&t.bevelI>0,p=e.continuous[d]||f);let m=Math.cos(t.angle),g=Math.sin(t.angle),v=2*i,y=2*d,x=2*u,b=t.boundary.vertices[v+0],w=t.boundary.vertices[v+1],S=(1-g)*this._bevel,_=(b-this._minX)/this._width,A=(w-this._minY)/this._height;this.forPathBevel&&(void 0!==a&&(_=a),A=1);let M=e.normals[y+0],E=e.normals[y+1],C=e.normals[x+0],T=e.normals[x+1];if(f){let e=C-M,t=T-E,i=Math.sqrt((M+=e*(1-r))*M+(E+=t*(1-r))*E);M/=i,E/=i}let P=this.forPathBevel?this._buffer.get(p?1:2):this._buffer.get(p?2:4),D=3*P,O=2*P,I={i,fi:d,topP:P+0,topN:P+0,bottomP:P+1,bottomN:P+1,pathBevelUCoord:a};return this._buffer.positions[D+0]=b,this._buffer.positions[D+1]=w,this._buffer.positions[D+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[D+0]=M*m,this._buffer.normals[D+1]=E*m,this._buffer.normals[D+2]=g,this._buffer.uvs[O+0]=_,this._buffer.uvs[O+1]=A,!1===this.forPathBevel&&(this._buffer.positions[D+3]=b,this._buffer.positions[D+4]=w,this._buffer.positions[D+5]=S,this._buffer.normals[D+3]=M*m,this._buffer.normals[D+4]=E*m,this._buffer.normals[D+5]=-g,this._buffer.uvs[O+2]=A,this._buffer.uvs[O+3]=_),p||(this.forPathBevel?(P+=1,D+=3,O+=2):(P+=2,D+=6,O+=4),I.topP=P+0,I.bottomP=P+1,this._buffer.positions[D+0]=b,this._buffer.positions[D+1]=w,this._buffer.positions[D+2]=(this.forPathBevel?this._bevel:this._depth)-S,this._buffer.normals[D+0]=C*m,this._buffer.normals[D+1]=T*m,this._buffer.normals[D+2]=g,this._buffer.uvs[O+0]=_,this._buffer.uvs[O+1]=A,!1===this.forPathBevel&&(this._buffer.positions[D+3]=b,this._buffer.positions[D+4]=w,this._buffer.positions[D+5]=S,this._buffer.normals[D+3]=C*m,this._buffer.normals[D+4]=T*m,this._buffer.normals[D+5]=-g,this._buffer.uvs[O+2]=A,this._buffer.uvs[O+3]=_)),this.vertexCache[o]=I,I}clone(){let e=new Su(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=uD(this.userData),e}},Sp=class extends rU{constructor(e,t=12,i={}){super(),this.type="ShapeGeometry",this.windingRule=__.ODD,this.elementType=_A.POLYGONS,this.polySize=3,this.vertexSize=2,this.strict=!0,this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:__.ODD,elementType:_A.POLYGONS,polySize:3,vertexSize:2,strict:!0},i);let r=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(e=>e.extractShapePointsToFlatArray([],this._curveSegments)),o,h=!0,c=!0,d,u;for(let e=0,t=r.length/2;e<t;e++){let t=2*e,i=r[t+0],a=r[t+1];if(void 0!==d&&i!==d&&(h=!1),void 0!==u&&a!==u&&(c=!1),d=i,u=a,!h&&!c)break}if(!h&&!c)try{o=Ss({contours:[r,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{o=Sl}let p=o?.vertexCount??1,f=o?.elementCount??1;if(this._positionAttribute=new rT(new Float32Array(3*p),3),this._normalAttribute=new rT(new Float32Array(3*p),3),this._uvAttribute=new rT(new Float32Array(2*p),2),this._indexAttribute=new rT(new Uint32Array(3*f),1),o){let e=1/0,t=-1/0,i=1/0,r=-1/0;for(let a=0;a<p;a++){let h=2*a,c=o.vertices[h+0],d=o.vertices[h+1];c<e&&(e=c),c>t&&(t=c),d<i&&(i=d),d>r&&(r=d)}let a=t-e,h=r-i;for(let t=0;t<p;t++){let r=2*t,c=o.vertices[r+0],d=o.vertices[r+1],u=(c-e)/a,p=(d-i)/h;this._positionAttribute.setXYZ(t,c,d,0),this._normalAttribute.setXYZ(t,0,0,1),this._uvAttribute.setXY(t,u,p)}for(let e=0;e<f;e++){let t=3*e,i=o.elements[t+0],r=o.elements[t+1],a=o.elements[t+2];this._indexAttribute.setX(t+0,i),this._indexAttribute.setX(t+1,r),this._indexAttribute.setX(t+2,a)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(o?.elementCount??1)*3)}clone(){let e=new Sp(this._shape,this._curveSegments);return e.userData=uD(this.userData),e}},Sf=class extends Su{constructor(e,t,i=0,r=12,a=3,o=__.ODD){super(e,t,i,r,a,o),this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return 2*e.vertexCount*(2+this._bevelSegments)}_buildWall(e,t,i){let r=e[0];for(let e=0,a=r.boundary.vertexCount;e<a;e++){let o=this._buildBevelVert(t,r,e),h=this._buildBevelVert(t,r,(e+1)%a);i.push(h.topP,o.topN,o.bottomN),i.push(h.topP,o.bottomN,h.bottomP)}}clone(){let e=new Sf(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=uD(this.userData),e}},Sm=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:__.ODD},e.parameters),r=Math.abs(i.width),a=Math.abs(i.height??i.width),o=Math.abs(i.depth??0),h=e.shape??t?.shape,c=h?.roundness??i.roun
3140dness;void 0!==h&&(h instanceof wZ?(h.width!==r||h.height!==a)&&h.applySize(r,a):h=new wZ(r,a).fromJSON(h),e.parameters?.roundness!==void 0&&e.parameters?.roundness>0&&h.update());let d=h??new wZ(r,a);return{parameters:Object.assign(i,{width:r,height:a,depth:o,roundness:c}),shape:d}}static build(e){let{depth:t,extrudeBevelSize:i,extrudeBevelSegments:r,subdivisions:a,roundness:o,windingRule:h}=e.parameters;return e.shape.roundness=o,Object.assign(t<=0?new Sp(e.shape,a,{windingRule:h}):new Sf(e.shape,t,i,a,r,h),{userData:{...e,type:"VectorGeometry"}})}},Sg=2*Math.PI,Sv=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},e.parameters);return i.angle=tK.clamp(i.angle,0,360),{shape:e.shape&&e.shape instanceof wZ?e.shape:new wZ,parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??0)})}}static build(e){let t,{width:i,height:r,spikes:a,angle:o,innerRadius:h,depth:c,extrudeBevelSize:d,extrudeBevelSegments:u}=e.parameters,p=e.shape,f=function(e,t,i,r,a,o){if(r>=Sg)return a>30||a%4==0?(function(e,t,i,r=0,a=0,o=0){let h=.5522847498*t,c=.5522847498*i;e.addPoint(Sb(a-t,o,a-t,o-c,a-t,o+c)),e.addPoint(Sb(a,o+i,a-h,o+i,a+h,o+i)),e.addPoint(Sb(a+t,o,a+t,o+c,a+t,o-c)),e.addPoint(Sb(a,o-i,a+h,o-i,a-h,o-i)),r>0&&SS(e,t,i,r)}(e,t,i,o),Math.round(a/4)):Sy(e,r,a,t,i,o);let h={x:0,y:i},c=(r=Math.max(r,.001))+.5*Math.PI,d={x:Math.cos(c)*t,y:Math.sin(c)*i},u=function({px:e,py:t,cx:i,cy:r,rx:a,ry:o,largeArcFlag:h,sweepFlag:c}){var d,u;let p,f,m,g,v,y,x,b,w,S,_,A=[];if(0===a||0===o)return[];let M=(e-i)/2,E=(t-r)/2;if(0===M&&0===E)return[];let C=Math.pow(M,2)/Math.pow(a=Math.abs(a),2)+Math.pow(E,2)/Math.pow(o=Math.abs(o),2);C>1&&(a*=Math.sqrt(C),o*=Math.sqrt(C));let T=(d=a,u=o,p=Math.pow(d,2),f=Math.pow(u,2),m=Math.pow(M,2),(v=p*f-p*(g=Math.pow(E,2))-f*m)<0&&(v=0),v/=p*g+f*m,y=(v=Math.sqrt(v)*(h===c?-1:1))*d/u*E,x=-(v*u)/d*M,S=w$(1,0,b=(M-y)/d,w=(E-x)/u),_=w$(b,w,(-M-y)/d,(-E-x)/u),!c&&_>0&&(_-=wK),c&&_<0&&(_+=wK),{centerx:y+(e+i)/2,centery:x+(t+r)/2,ang1:S,ang2:_}),{ang1:P,ang2:D}=T,{centerx:O,centery:I}=T,R=Math.abs(D)/(wK/4);1e-7>Math.abs(1-R)&&(R=1);let L=Math.max(Math.ceil(R),1);D/=L;for(let e=0;e<L;e++)A.push(function(e,t){let i=1.5707963267948966===t?.551915024494:-1.5707963267948966===t?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(e),a=Math.sin(e),o=Math.cos(e+t),h=Math.sin(e+t);return[{x:r-a*i,y:a+r*i},{x:o+h*i,y:h-o*i},{x:o,y:h}]}(P,D)),P+=D;return A.map(e=>{let{x:t,y:i}=wJ(e[0],a,o,O,I),{x:r,y:h}=wJ(e[1],a,o,O,I),{x:c,y:d}=wJ(e[2],a,o,O,I);return{x1:t,y1:i,x2:r,y2:h,x:c,y:d}})}({px:h.x,py:h.y,cx:d.x,cy:d.y,rx:t,ry:i,largeArcFlag:r>Math.PI,sweepFlag:!0});return a>30||a%u.length==0?function(e,t,i,r,a,o,h,c){let d=Math.round(a/r.length);e.addPoint(Sx(t,i));for(let t=0,i=r.length;t<i;t++){let i=r[t],a=e.points[t],o=Sx(i.x,i.y);a.controls[1].position.set(i.x1,i.y1),o.controls[0].position.set(i.x2,i.y2),e.addPoint(o)}return c>0?Sw(e,o,h,c):e.addPoint(Sx(0,0)),d}(e,h.x,h.y,u,a,t,i,o):Sy(e,r,a,t,i,o)}(p,.5*i,.5*r,o*Math.PI/180,a,h);return p.isClosed=!0,p.update(),0===o?(t=new rU).setAttribute("position",new rO([],3)):t=Sm.create({shape:p,parameters:{subdivisions:f,depth:c,extrudeBevelSize:d,extrudeBevelSegments:u}}),Object.assign(t,{userData:{...e,type:"EllipseGeometry"}})}};function Sy(e,t,i,r,a,o){let h=-t/i;for(let t=0;t<=i;t++){let i=h*t,o=Math.sin(i)*r,c=Math.cos(i)*a;e.addPoint(Sx(o,c))}return t<Sg?o>0?Sw(e,r,a,o):e.addPoint(Sx(0,0)):(e.removePoint(e.points[e.points.length-1]),o>0&&SS(e,r,a,o)),1}function Sx(e,t){return new wE(tK.generateUUID(),new tJ(e,t))}function Sb(e,t,i,r,a,o){let h=Sx(e,t);return h.controls[0].position.set(i,r),h.controls[1].position.set(a,o),h}function Sw(e,t,i,r){S_(e,t,i,r).forEach(t=>e.addPoint(t))}function SS(e,t,i,r){let a=S_(e,t,i,r),o=new wZ;a.forEach(e=>o.addPoint(e)),o.isClosed=!0,e.shapeHoles.push(o)}function S_(e,t,i,r){let a=r*t/100,o=Math.abs(i)/Math.abs(t)*a,h=new tJ(a/t,o/i),c=e.points.map(e=>{let t=e.clone();return t.uuid=tK.generateUUID(),t}).reverse();
3140return c.forEach(e=>{e.position.multiply(h);let t=e.controls[0].position.clone().multiply(h),i=e.controls[1].position.clone().multiply(h);e.controls[0].position.copy(i),e.controls[1].position.copy(t)}),c}var SA=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},e.parameters),r=Math.abs(i.width),a=Math.abs(i.height??r),o=Math.abs(i.depth??r),h=Math.abs(Math.min(r,o))/2;return{parameters:Object.assign(i,{width:r,height:a,depth:o,radius:h,segments:Math.round(i.segments),pathSegments:Math.round(i.pathSegments),cornerSegments:Math.round(i.cornerSegments)})}}static build(e){let{width:t,height:i,depth:r,radius:a,revolutions:o,segments:h,pathRadius:c,pathType:d,pathSegments:u,cornerRadius:p,cornerSegments:f}=e.parameters;return Object.assign(new SE(!1,t,i,r,a,o,h,c,d,u,p,f),{userData:{...e,type:"HelixGeometry"}})}},SM=new rD([0,0,0],1),SE=class extends rU{constructor(e=!0,t=1,i=1,r=1,a=1,o=1,h=1,c=1,d=1,u=1,p=1,f=1){if(super(),0===o)return;let m=e&&1===o;m&&(f=0),p>100&&(p=100),0===p&&(f=0);let g=()=>new ib,v=new ib,y=g(),x=g(),b=g(),w,S,_,A,M,E,C,T,P=g(),D=g(),O=g(),I=g(),R=g(),L=g(),B=g(),z=g(),F=i-2*c+.001,N=F/o,U=Math.ceil(h*o),k=U+1,V=F/U,j=-F/2,G=u+1,H=2*Math.PI/u,W=Math.PI/2/f,q=Math.min((1-p/100)*c,c-.01),X=c-q,Y=0,Q=2*f+2,Z=G*Q/2,K=Z+G*k,J=Math.max(0,G*(k+Q)),[$,ee,et]=[3,3,2].map(e=>Array(J*e).fill(0)),ei=[],er=a-c;function es(t,i){let r=Math.PI/2;T=2*Math.PI*((E=i*V)%N)/N+r,E+=j,C=Math.sin(T)*er,M=Math.cos(T)*er,e?t.set(M,C,E):t.set(M,E,C)}es(v,-.0000000001),es(y,0),P.copy(v),es(v,1);let ea=v.distanceTo(y),en=m?0:X+q,eo=ea*U+2*en,el=eo-en;for(let t=0;t<=U;t++){es(x,t),z.subVectors(x,P).normalize(),P.copy(x),L.copy(x).setComponent(+e+1,0).normalize(),B.crossVectors(z,L).normalize();let i=0===t,r=t===U,a=i?3*Math.PI/2:W,o=i?q:el,h=i?G:K,d=i?0:J-G,p=z.clone().multiplyScalar(i?-X:X).add(x),g=z.clone().multiplyScalar(i?-1:1).normalize();for(let e=0;e<G;e++){let w=e*H;if(D.addVectors(v.copy(L).multiplyScalar(c*Math.cos(w)),y.copy(B).multiplyScalar(c*Math.sin(w))),O.copy(D).normalize(),i||r){m||(Y=d+e,[0,1,2].forEach(e=>{$[3*Y+e]=p.getComponent(e),ee[3*Y+e]=g.getComponent(e)}),et[2*Y]=+r,et[2*Y+1]=e/u),y.copy(O).multiplyScalar(q),b.addVectors(x,y);for(let t=0;t<f;t++){let r=t*W+a;I.addVectors(v.copy(z).multiplyScalar(X*Math.sin(r)),y.copy(O).multiplyScalar(X*Math.cos(r))),R.copy(I).normalize(),y.addVectors(b,I),I.normalize(),Y=h+t*G+e,[0,1,2].forEach(e=>{$[3*Y+e]=y.getComponent(e),ee[3*Y+e]=R.getComponent(e)});let c=+i+Math.sin(r);et[2*Y]=(o+X*c)/eo,et[2*Y+1]=e/u}}y.addVectors(x,D),Y=Z+t*G+e,[0,1,2].forEach(e=>{$[3*Y+e]=y.getComponent(e),ee[3*Y+e]=O.getComponent(e)}),et[2*Y]=(en+t*ea)/eo,et[2*Y+1]=e/u}}let eh=k+2*f+2,[ec,ed]=[+m,eh-1];for(let e=ec;e<=ed-1;e++){let t=m&&e===ed-1;for(let i=0;i<G-1;i++)S=(w=e*G+i)+1,_=(t?i:w)+G,A=(t?i+1:S)+G,0===e?ei.push(S,A,_):e===eh-2?ei.push(w,S,_):ei.push(w,S,_,S,A,_)}this.setIndex(ei),this.setAttribute("position",new rO($,3)),this.setAttribute("normal",new rO(ee,3)),this.setAttribute("uv",new rO(et,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let e=this.userData.parameters,t=Math.ceil(e.tubularSegments),i=e.radialSegments+1,r=Array.from(this.getIndex().array),a,o,h,c,d=6*(t-1)*e.radialSegments,u=t==t;for(let p=0;p<e.radialSegments;p++)o=(a=t*i+p)+1,h=(u?p:a)+i,c=(u?p+1:o)+i,r[d++]=a,r[d++]=o,r[d++]=h,r[d++]=o,r[d++]=c,r[d++]=h;return r.length=d,SM.array=r,SM.count=r.length,SM}},SC=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}
3140static build(e){let{width:t,height:i,depth:r,detail:a,corner:o,cornerSides:h}=e.parameters,c=0===a&&0!==o?new ST(.5*t,o,h):new oL(.5*t,a);return c.scale(1,i/t,r/t),Object.assign(c,{userData:{...e,type:"IcosahedronGeometry"}})}},ST=class extends ww{constructor(e=1,t=.2,i=4){let r=(1+Math.sqrt(5))/2,a="IcosahedronGeometry";super([-1,r,0,1,r,0,-1,-r,0,1,-r,0,0,-1,r,0,1,r,0,-1,-r,0,1,-r,r,0,-1,r,0,1,-r,0,-1,-r,0,1],[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a,e,t,i),this.type=a}static fromJSON(e){return new ST(e.radius,e.corner,e.cornerSides)}},SP=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){(e.parameters?.points??[]).forEach(e=>{Array.isArray(e)&&(e.x=e[0],e.y=e[1])});let i=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}]},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{points:t,segments:i,verticalSegments:r}=e.parameters,a=new of;a.moveTo(t[0].x,t[0].y),a.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let o=new oh(a.extractPoints(r).shape,i);return o.rotateZ(Math.PI),Object.assign(o,{userData:{...e,type:"LatheGeometry"}})}},SD=new iZ,SO=new rd,SI=new ib,SR=class extends tF{constructor(){super(),this.uuid=tK.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(e){let t=new t$().getNormalMatrix(e);for(let t=0,i=this.vertices.length;t<i;t++)this.vertices[t].applyMatrix4(e);for(let e=0,i=this.faces.length;e<i;e++){let i=this.faces[e];i.normal.applyMatrix3(t).normalize();for(let e=0,r=i.vertexNormals.length;e<r;e++)i.vertexNormals[e].applyMatrix3(t).normalize()}return null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(e){return SD.makeRotationX(e),this.applyMatrix4(SD),this}rotateY(e){return SD.makeRotationY(e),this.applyMatrix4(SD),this}rotateZ(e){return SD.makeRotationZ(e),this.applyMatrix4(SD),this}translate(e,t,i){return SD.makeTranslation(e,t,i),this.applyMatrix4(SD),this}scale(e,t,i){return SD.makeScale(e,t,i),this.applyMatrix4(SD),this}lookAt(e){return SO.lookAt(e),SO.updateMatrix(),this.applyMatrix4(SO.matrix),this}fromBufferGeometry(e){let t=this,i=null!==e.index?e.index:void 0,r=e.attributes;if(void 0===r.position)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let a=r.position,o=r.normal,h=r.color,c=r.uv,d=r.uv2;void 0!==d&&(this.faceVertexUvs[1]=[]);for(let e=0;e<a.count;e++)t.vertices.push(new ib().fromBufferAttribute(a,e)),void 0!==h&&t.colors.push(new ia().fromBufferAttribute(h,e));function u(e,i,r,a){let u=void 0===h?[]:[t.colors[e].clone(),t.colors[i].clone(),t.colors[r].clone()],p=void 0===o?[]:[new ib().fromBufferAttribute(o,e),new ib().fromBufferAttribute(o,i),new ib().fromBufferAttribute(o,r)],f=new SB(e,i,r,p,u,a);t.faces.push(f),void 0!==c&&t.faceVertexUvs[0].push([new tJ().fromBufferAttribute(c,e),new tJ().fromBufferAttribute(c,i),new tJ().fromBufferAttribute(c,r)]),void 0!==d&&t.faceVertexUvs[1].push([new tJ().fromBufferAttribute(d,e),new tJ().fromBufferAttribute(d,i),new tJ().fromBufferAttribute(d,r)])}let p=e.groups;if(p.length>0)for(let e=0;e<p.length;e++){let t=p[e],r=t.start,a=t.count;for(let e=r,o=r+a;e<o;e+=3)void 0!==i?u(i.getX(e),i.getX(e+1),i.getX(e+2),t.materialIndex):u(e,e+1,e+2,t.materialIndex)}else if(void 0!==i)for(let e=0;e<i.count;e+=3)u(i.getX(e),i.getX(e+1),i.getX(e+2));else for(let e=0;e<a.count;e+=3)u(e,e+1,e+2);
3140return this.computeFaceNormals(),null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(SI).negate(),this.translate(SI.x,SI.y,SI.z),this}normalize(){this.computeBoundingSphere();let e=this.boundingSphere.center,t=this.boundingSphere.radius,i=0===t?1:1/t,r=new iZ;return r.set(i,0,0,-i*e.x,0,i,0,-i*e.y,0,0,i,-i*e.z,0,0,0,1),this.applyMatrix4(r),this}computeFaceNormals(){let e=new ib,t=new ib;for(let i=0,r=this.faces.length;i<r;i++){let r=this.faces[i],a=this.vertices[r.a],o=this.vertices[r.b],h=this.vertices[r.c];e.subVectors(h,o),t.subVectors(a,o),e.cross(t),e.normalize(),r.normal.copy(e)}}computeVertexNormals(e=!0){let t=Array(this.vertices.length);for(let e=0,i=this.vertices.length;e<i;e++)t[e]=new ib;if(e){let e=new ib,i=new ib;for(let r=0,a=this.faces.length;r<a;r++){let a=this.faces[r],o=this.vertices[a.a],h=this.vertices[a.b],c=this.vertices[a.c];e.subVectors(c,h),i.subVectors(o,h),e.cross(i),t[a.a].add(e),t[a.b].add(e),t[a.c].add(e)}}else{this.computeFaceNormals();for(let e=0,i=this.faces.length;e<i;e++){let i=this.faces[e];t[i.a].add(i.normal),t[i.b].add(i.normal),t[i.c].add(i.normal)}}for(let e=0,i=this.vertices.length;e<i;e++)t[e].normalize();for(let e=0,i=this.faces.length;e<i;e++){let i=this.faces[e],r=i.vertexNormals;3===r.length?(r[0].copy(t[i.a]),r[1].copy(t[i.b]),r[2].copy(t[i.c])):(r[0]=t[i.a].clone(),r[1]=t[i.b].clone(),r[2]=t[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let e=0,t=this.faces.length;e<t;e++){let t=this.faces[e],i=t.vertexNormals;3===i.length?(i[0].copy(t.normal),i[1].copy(t.normal),i[2].copy(t.normal)):(i[0]=t.normal.clone(),i[1]=t.normal.clone(),i[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let t=this.faces[e];
3140t.__originalFaceNormal?t.__originalFaceNormal.copy(t.normal):t.__originalFaceNormal=t.normal.clone(),t.__originalVertexNormals||(t.__originalVertexNormals=[]);for(let e=0,i=t.vertexNormals.length;e<i;e++)t.__originalVertexNormals[e]?t.__originalVertexNormals[e].copy(t.vertexNormals[e]):t.__originalVertexNormals[e]=t.vertexNormals[e].clone()}let e=new SR;e.faces=this.faces;for(let t=0,i=this.morphTargets.length;t<i;t++){if(!this.morphNormals[t]){this.morphNormals[t]={},this.morphNormals[t].faceNormals=[],this.morphNormals[t].vertexNormals=[];let e=this.morphNormals[t].faceNormals,i=this.morphNormals[t].vertexNormals;for(let t=0,r=this.faces.length;t<r;t++){let t=new ib,r={a:new ib,b:new ib,c:new ib};e.push(t),i.push(r)}}let i=this.morphNormals[t];e.vertices=this.morphTargets[t].vertices,e.computeFaceNormals(),e.computeVertexNormals();for(let e=0,t=this.faces.length;e<t;e++){let t=this.faces[e],r=i.faceNormals[e],a=i.vertexNormals[e];r.copy(t.normal),a.a.copy(t.vertexNormals[0]),a.b.copy(t.vertexNormals[1]),a.c.copy(t.vertexNormals[2])}}for(let e=0,t=this.faces.length;e<t;e++){let t=this.faces[e];
3140t.normal=t.__originalFaceNormal,t.vertexNormals=t.__originalVertexNormals}}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new i_),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new iV),this.boundingSphere.setFromPoints(this.vertices)}merge(e,t,i=0){if(!(e&&e.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",e);return}let r,a=this.vertices.length,o=this.vertices,h=e.vertices,c=this.faces,d=e.faces,u=this.colors,p=e.colors;void 0!==t&&(r=new t$().getNormalMatrix(t));for(let e=0,i=h.length;e<i;e++){let i=h[e].clone();void 0!==t&&i.applyMatrix4(t),o.push(i)}for(let e=0,t=p.length;e<t;e++)u.push(p[e].clone());for(let e=0,t=d.length;e<t;e++){let t=d[e],o,h,u=t.vertexNormals,p=t.vertexColors,f=new SB(t.a+a,t.b+a,t.c+a);f.normal.copy(t.normal),void 0!==r&&f.normal.applyMatrix3(r).normalize();for(let e=0,t=u.length;e<t;e++)o=u[e].clone(),void 0!==r&&o.applyMatrix3(r).normalize(),f.vertexNormals.push(o);f.color.copy(t.color);for(let e=0,t=p.length;e<t;e++)h=p[e],f.vertexColors.push(h.clone());f.materialIndex=t.materialIndex+i,c.push(f)}for(let t=0,i=e.faceVertexUvs.length;t<i;t++){let i=e.faceVertexUvs[t];void 0===this.faceVertexUvs[t]&&(this.faceVertexUvs[t]=[]);for(let e=0,r=i.length;e<r;e++){let r=i[e],a=[];for(let e=0,t=r.length;e<t;e++)a.push(r[e].clone());this.faceVertexUvs[t].push(a)}}}mergeMesh(e){if(!(e&&e.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",e);return}e.matrixAutoUpdate&&e.updateMatrix(),this.merge(e.geometry,e.matrix)}mergeVertices(e=4){let t={},i=[],r=[],a=Math.pow(10,e);for(let e=0,o=this.vertices.length;e<o;e++){let o=this.vertices[e],h=Math.round(o.x*a)+"_"+Math.round(o.y*a)+"_"+Math.round(o.z*a);void 0===t[h]?(t[h]=e,i.push(this.vertices[e]),r[e]=i.length-1):r[e]=r[t[h]]}let o=[];for(let e=0,t=this.faces.length;e<t;e++){let t=this.faces[e];t.a=r[t.a],t.b=r[t.b],t.c=r[t.c];let i=[t.a,t.b,t.c];for(let t=0;t<3;t++)if(i[t]===i[(t+1)%3]){o.push(e);break}}for(let e=o.length-1;e>=0;e--){let t=o[e];this.faces.splice(t,1);for(let e=0,i=this.faceVertexUvs.length;e<i;e++)this.faceVertexUvs[e].splice(t,1)}let h=this.vertices.length-i.length;return this.vertices=i,h}setFromPoints(e){this.vertices=[];for(let t=0,i=e.length;t<i;t++){let i=e[t];this.vertices.push(new ib(i.x,i.y,i.z||0))}return this}sortFacesByMaterialIndex(){let e=this.faces,t=e.length;for(let i=0;i<t;i++)e[i]._id=i;e.sort(function(e,t){return e.materialIndex-t.materialIndex});let i=this.faceVertexUvs[0],r=this.faceVertexUvs[1],a,o;i&&i.length===t&&(a=[]),r&&r.length===t&&(o=[]);for(let h=0;h<t;h++){let t=e[h]._id;a&&a.push(i[t]),o&&o.push(r[t])}a&&(this.faceVertexUvs[0]=a),o&&(this.faceVertexUvs[1]=o)}toJSON(){let e={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,""!==this.name&&(e.name=this.name),void 0!==this.parameters){let t=this.parameters;for(let i in t)void 0!==t[i]&&(e[i]=t[i]);return e}let t=[];for(let e=0;e<this.vertices.length;e++){let i=this.vertices[e];t.push(i.x,i.y,i.z)}let i=[],r=[],a={},o=[],h={},c=[],d={};for(let e=0;e<this.faces.length;e++){let t=this.faces[e],r=void 0!==this.faceVertexUvs[0][e],a=t.normal.length()>0,o=t.vertexNormals.length>0,h=1!==t.color.r||1!==t.color.g||1!==t.color.b,c=t.vertexColors.length>0,d=0;if(d=u(0,0,0),d=u(d,1,!0),d=u(d,2,!1),d=u(d,3,r),d=u(d,4,a),d=u(d,5,o),d=u(d,6,h),d=u(d,7,c),i.push(d),i.push(t.a,t.b,t.c),i.push(t.materialIndex),r){let t=this.faceVertexUvs[0][e];i.push(m(t[0]),m(t[1]),m(t[2]))}if(a&&i.push(p(t.normal)),o){let e=t.vertexNormals;i.push(p(e[0]),p(e[1]),p(e[2]))}if(h&&i.push(f(t.color)),c){let e=t.vertexColors;i.push(f(e[0]),f(e[1]),f(e[2]))}}function u(e,t,i){return i?e|1<<t:e&~(1<<t)}function p(e){let t=e.x.toString()+e.y.toString()+e.z.toString();return void 0!==a[t]||(a[t]=r.length/3,r.push(e.x,e.y,e.z)),a[t]}function f(e){let t=e.r.toString()+e.g.toString()+e.b.toString();return void 0!==h[t]||(h[t]=o.length,o.push(e.getHex())),h[t]}function m(e){let t=e.x.toString()+e.y.toString();return void 0!==d[t]||(d[t]=c.length/2,c.push(e.x,e.y)),d[t]}return e.data={},e.data.vertices=t,e.data.normals=r,o.length>0&&(e.data.colors=o),c.length>0&&(e.data.uvs=[c]),e.data.faces=i,e}clone(){return new SR().copy(this)}copy(e){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=e.name;let t=e.vertices;for(let e=0,i=t.length;e<i;e++)this.vertices.push(t[e].clone());let i=e.colors;for(let e=0,t=i.length;e<t;e++)this.colors.push(i[e].clone());let r=e.faces;for(let e=0,t=r.length;e<t;e++)this.faces.push(r[e].clone());for(let t=0,i=e.faceVertexUvs.length;t<i;t++){let i=e.faceVertexUvs[t];void 0===this.faceVertexUvs[t]&&(this.faceVertexUvs[t]=[]);for(let e=0,r=i.length;e<r;e++){let r=i[e],a=[];for(let e=0,t=r.length;e<t;e++){let t=r[e];a.push(t.clone())}this.faceVertexUvs[t].push(a)}}let a=e.morphTargets;for(let e=0,t=a.length;e<t;e++){let t={};if(t.name=a[e].name,void 0!==a[e].vertices){t.vertices=[];for(let i=0,r=a[e].vertices.length;i<r;i++)t.vertices.push(a[e].vertices[i].clone())}if(void 0!==a[e].normals){t.normals=[];for(let i=0,r=a[e].normals.length;i<r;i++)t.normals.push(a[e].normals[i].clone())}this.morphTargets.push(t)}let o=e.morphNormals;for(let e=0,t=o.length;e<t;e++){let t={};if(void 0!==o[e].vertexNormals){t.vertexNormals=[];for(let i=0,r=o[e].vertexNormals.length;i<r;i++){let r=o[e].vertexNormals[i],a={};a.a=r.a.clone(),a.b=r.b.clone(),a.c=r.c.clone(),t.vertexNormals.push(a)}}if(void 0!==o[e].faceNormals){t.faceNormals=[];for(let i=0,r=o[e].faceNormals.length;i<r;i++)t.faceNormals.push(o[e].faceNormals[i].clone())}this.morphNormals.push(t)}let h=e.skinWeights;for(let e=0,t=h.length;e<t;e++)this.skinWeights.push(h[e].clone());let c=e.skinIndices;for(let e=0,t=c.length;e<t;e++)this.skinIndices.push(c[e].clone());let d=e.lineDistances;for(let e=0,t=d.length;e<t;e++)this.lineDistances.push(d[e]);let u=e.boundingBox;null!==u&&(this.boundingBox=u.clone());let p=e.boundingSphere;return null!==p&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=e.elementsNeedUpdate,this.verticesNeedUpdate=e.verticesNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.lineDistancesNeedUpdate=e.lineDistancesNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,this}toBufferGeometry(){let e=new SL().fromGeometry(this),t=new rU,i=new Float32Array(3*e.vertices.length);if(t.setAttribute("position",SU.call(new rT(i,3),e.vertices)),e.normals.length>0){let i=new Float32Array(3*e.normals.length);t.setAttribute("normal",SU.call(new rT(i,3),e.normals))}if(e.colors.length>0){let i=new Float32Array(3*e.colors.length);t.setAttribute("color",SF.call(new rT(i,3),e.colors))}if(e.uvs.length>0){let i=new Float32Array(2*e.uvs.length);t.setAttribute("uv",SN.call(new rT(i,2),e.uvs))}if(e.uvs2.length>0){let i=new Float32Array(2*e.uvs2.length);t.setAttribute("uv2",SN.call(new rT(i,2),e.uvs2))}for(let i in t.groups=e.groups,e.morphTargets){let r=[],a=e.morphTargets[i];for(let e=0,t=a.length;e<t;e++){let t=a[e],i=new rO(3*t.data.length,3);i.name=t.name,r.push(SU.call(i,t.data))}t.morphAttributes[i]=r}if(e.skinIndices.length>0){let i=new rO(4*e.skinIndices.length,4);t.setAttribute("skinIndex",Sk.call(i,e.skinIndices))}if(e.skinWeights.length>0){let i=new rO(4*e.skinWeights.length,4);t.setAttribute("skinWeight",Sk.call(i,e.skinWeights))}
3140return null!==e.boundingSphere&&(t.boundingSphere=e.boundingSphere.clone()),null!==e.boundingBox&&(t.boundingBox=e.boundingBox.clone()),t}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(e){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(e)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(e){let t=new rU,i=e.geometry;if(e.isPoints||e.isLine){let e=new rO(3*i.vertices.length,3),r=new rO(3*i.colors.length,3);if(t.setAttribute("position",SU.call(e,i.vertices)),t.setAttribute("color",SF.call(r,i.colors)),i.lineDistances&&i.lineDistances.length===i.vertices.length){let e=new rO(i.lineDistances.length,1);t.setAttribute("lineDistance",Sz.call(e,i.lineDistances))}null!==i.boundingSphere&&(t.boundingSphere=i.boundingSphere.clone()),null!==i.boundingBox&&(t.boundingBox=i.boundingBox.clone())}else e.isMesh&&(t=i.toBufferGeometry());return t}};SR.prototype.isGeometry=!0;var SL=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(e){let t=[],i,r,a,o=e.faces;for(r=0;r<o.length;r++){let e=o[r];e.materialIndex!==a&&(a=e.materialIndex,void 0!==i&&(i.count=3*r-i.start,t.push(i)),i={start:3*r,materialIndex:a})}void 0!==i&&(i.count=3*r-i.start,t.push(i)),this.groups=t}fromGeometry(e){let t=e.faces,i=e.vertices,r=e.faceVertexUvs,a=r[0]&&r[0].length>0,o=r[1]&&r[1].length>0,h=e.morphTargets,c=h.length,d;if(c>0){d=[];for(let e=0;e<c;e++)d[e]={name:h[e].name,data:[]};this.morphTargets.position=d}let u=e.morphNormals,p=u.length,f;if(p>0){f=[];for(let e=0;e<p;e++)f[e]={name:u[e].name,data:[]};this.morphTargets.normal=f}let m=e.skinIndices,g=e.skinWeights,v=m.length===i.length,y=g.length===i.length;i.length>0&&0===t.length&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let e=0;e<t.length;e++){let x=t[e];this.vertices.push(i[x.a],i[x.b],i[x.c]);let b=x.vertexNormals;if(3===b.length)this.normals.push(b[0],b[1],b[2]);else{let e=x.normal;this.normals.push(e,e,e)}let w=x.vertexColors;if(3===w.length)this.colors.push(w[0],w[1],w[2]);else{let e=x.color;this.colors.push(e,e,e)}if(!0===a){let t=r[0][e];void 0!==t?this.uvs.push(t[0],t[1],t[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",e),this.uvs.push(new tJ,new tJ,new tJ))}if(!0===o){let t=r[1][e];void 0!==t?this.uvs2.push(t[0],t[1],t[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",e),this.uvs2.push(new tJ,new tJ,new tJ))}for(let e=0;e<c;e++){let t=h[e].vertices;d[e].data.push(t[x.a],t[x.b],t[x.c])}for(let t=0;t<p;t++){let i=u[t].vertexNormals[e];f[t].data.push(i.a,i.b,i.c)}v&&this.skinIndices.push(m[x.a],m[x.b],m[x.c]),y&&this.skinWeights.push(g[x.a],g[x.b],g[x.c])}return this.computeGroups(e),this.verticesNeedUpdate=e.verticesNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),this}},SB=class{constructor(e,t,i,r,a,o=0){this.a=e,this.b=t,this.c=i,this.normal=r&&r.isVector3?r:new ib,this.vertexNormals=Array.isArray(r)?r:[],this.color=a&&a.isColor?a:new ia,this.vertexColors=Array.isArray(a)?a:[],this.materialIndex=o}clone(){return new this.constructor().copy(this)}copy(e){this.a=e.a,this.b=e.b,this.c=e.c,this.normal.copy(e.normal),this.color.copy(e.color),this.materialIndex=e.materialIndex;for(let t=0,i=e.vertexNormals.length;t<i;t++)this.vertexNormals[t]=e.vertexNormals[t].clone();for(let t=0,i=e.vertexColors.length;t<i;t++)this.vertexColors[t]=e.vertexColors[t].clone();return this}};function Sz(e){return this.array.set(e),this}function SF(e){let t=this.array,i=0;for(let r=0,a=e.length;r<a;r++){let a=e[r];void 0===a&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",r),a=new ia),t[i++]=a.r,t[i++]=a.g,t[i++]=a.b}return this}function SN(e){let t=this.array,i=0;for(let r=0,a=e.length;r<a;r++){let a=e[r];void 0===a&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",r),a=new tJ),t[i++]=a.x,t[i++]=a.y}return this}function SU(e){let t=this.array,i=0;for(let r=0,a=e.length;r<a;r++){let a=e[r];void 0===a&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",r),a=new ib),t[i++]=a.x,t[i++]=a.y,t[i++]=a.z}return this}function Sk(e){let t=this.array,i=0;for(let r=0,a=e.length;r<a;r++){let a=e[r];void 0===a&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",r),a=new ip),t[i++]=a.x,t[i++]=a.y,t[i++]=a.z,t[i++]=a.w}return this}var SV=["a","b","c"];function Sj(e,t,i){let r=Math.min(e,t),a=Math.max(e,t);return i.get(r+"_"+a)}function SG(e,t,i,r,a,o){let h=Math.min(e,t),c=Math.max(e,t),d=h+"_"+c,u;r.has(d)?u=r.get(d):(u={a:i[h],b:i[c],newEdge:null,faces:[]},r.set(d,u)),u.faces.push(a),o[e].edges.push(u),o[t].edges.push(u)}function SH(e,t,i,r,a){e.push(new SB(t,i,r,void 0,void 0,a))}function SW(e,t){return Math.abs(t-e)/2+Math.min(e,t)}function Sq(e,t,i,r){e.push([t.clone(),i.clone(),r.clone()])}var SX=class{constructor(e=1){this.subdivisions=e}modify(e){(e=e instanceof rU?new SR().fromBufferGeometry(e):e.clone()).mergeVertices();let t=this.subdivisions;for(;t-- >0;)this._smooth(e);return e.computeFaceNormals(),e.computeVertexNormals(),e}_smooth(e){let t=new ib,i,r,a,o,h,c=e.vertices,d=e.faces,u=e.faceVertexUvs[0],p=void 0!==u&&u.length>0,f=[],m=new Map;!function(e,t,i,r){let a,o,h;for(a=0,o=e.length;a<o;a++)i[a]={edges:[]};for(a=0,o=t.length;a<o;a++)SG((h=t[a]).a,h.b,e,r,h,i),SG(h.b,h.c,e,r,h,i),SG(h.c,h.a,e,r,h,i)}(c,d,f,m);let g=[],v,y,x,b,w,S,_;
3140for(let e of Array.from(m.keys())){for(y=m.get(e),x=new ib,w=3/8,S=1/8,2!=(_=y.faces.length)&&(w=.5,S=0),x.addVectors(y.a,y.b).multiplyScalar(w),t.set(0,0,0),o=0;o<_;o++){for(b=y.faces[o],h=0;h<3&&!((v=c[function(e,t){switch(t){case"c":return e.c;case"b":return e.b;default:return e.a}}(b,SV[h])])!==y.a&&v!==y.b);h++);v&&t.add(v)}t.multiplyScalar(S),x.add(t),y.newEdge=g.length,g.push(x)}let A,M,E,C,T,P,D,O=[];for(r=0,a=c.length;r<a;r++){for(P=c[r],3==(i=(T=f[r].edges).length)?A=3/16:i>3&&(A=3/(8*i)),M=1-i*Number(A),E=A,i<=2&&2==i&&(M=3/4,E=1/8),D=P.clone().multiplyScalar(M),t.set(0,0,0),o=0;o<i;o++)v=(C=T[o]).a!==P?C.a:C.b,t.add(v);t.multiplyScalar(Number(E)),D.add(t),O.push(D)}let I=O.concat(g),R=O.length,L,B,z,F=[],N=[],U,k,V,j,G=new tJ,H=new tJ,W=new tJ;for(r=0,a=d.length;r<a;r++)SH(F,L=Number(Sj((b=d[r]).a,b.b,m).newEdge)+R,B=Number(Sj(b.b,b.c,m).newEdge)+R,z=Number(Sj(b.c,b.a,m).newEdge)+R,b.materialIndex),SH(F,b.a,L,z,b.materialIndex),SH(F,b.b,B,L,b.materialIndex),SH(F,b.c,z,B,b.materialIndex),p&&(k=(U=u[r])[0],V=U[1],j=U[2],G.set(SW(k.x,V.x),SW(k.y,V.y)),H.set(SW(V.x,j.x),SW(V.y,j.y)),W.set(SW(k.x,j.x),SW(k.y,j.y)),Sq(N,G,H,W),Sq(N,k,G,W),Sq(N,V,H,G),Sq(N,j,W,H));e.vertices=I,e.faces=F,p&&(e.faceVertexUvs[0]=N)}},SY=new ib,SQ=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=e.geometry??t?.geometry??new rU().copy(new r1(100,100,100)),r;void 0===t?(i.computeBoundingBox(),i.boundingBox.getSize(SY),r={width:SY.x,height:SY.y,depth:SY.z,subdivisions:0}):r=t.parameters;let a={...r,...e.parameters};return{parameters:{width:Math.abs(a.width),height:Math.abs(a.height),depth:Math.abs(a.depth),subdivisions:Math.abs(a.subdivisions)},geometry:i}}static build(e){let{width:t,height:i,depth:r,subdivisions:a}=e.parameters,o=e.geometry??new rU().copy(new r1(100,100,100)),h=o.userData.parameters;void 0===h?(o.computeBoundingBox(),o.boundingBox.getSize(SY)):SY.set(h.width,h.height,h.depth),(t!==SY.x||i!==SY.y||r!==SY.z)&&o.scale(0===SY.x?1:t/SY.x,0===SY.y?1:i/SY.y,0===SY.z?1:r/SY.z);let c=o.originalGeometry;try{a>0?(void 0===c||h?.subdivisions!==a)&&(void 0===c&&(c=o),o=new SX(a).modify(c).toBufferGeometry()):(void 0!==c&&(o=c),c=void 0,void 0===o.getAttribute("normal")&&o.computeVertexNormals())}catch{void 0!==c&&(o=c),c=void 0,void 0===o.getAttribute("normal")&&o.computeVertexNormals()}return void 0!==c&&Object.assign(o,{originalGeometry:c}),delete e.geometry,Object.assign(o,{userData:{...e,type:"NonParametricGeometry"}})}static loadFromUrl(e,t,i){new ly(i).load(e,e=>{let i=this.normalizeInputs({geometry:e});e.boundingBox.getSize(SY);let r=100/SY.x;Object.assign(i.parameters,{width:100,height:SY.y*r,depth:SY.z*r}),t(this.build(i))})}},SZ=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},e.parameters);return{shape:e.shape&&e.shape instanceof wZ?e.shape:new wZ,parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??0)})}}static build(e){let{width:t,height:i,spikes:r,cornerRadius:a,depth:o,extrudeBevelSize:h,extrudeBevelSegments:c}=e.parameters,d=e.shape,u=.5*t,p=.5*i,f=2*Math.PI/r;for(let e=0;e<r;e++){let t=f*e,i=0+Math.sin(t)*u,r=0+Math.cos(t)*p;d.addPoint(d.createPoint(i,r))}d.isClosed=!0;for(let e=0,t=d.points.length;e<t;e++)d.points[e].roundness=a;return d.roundness=a,d.update(),Object.assign(Sm.create({shape:d,parameters:{roundness:a,depth:o,extrudeBevelSize:h,extrudeBevelSegments:c}}),{userData:{...e,type:"PolygonGeometry"}})}},SK=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,height:i,depth:r,radialSegments:a,heightSegments:o,openEnded:h,cornerRadius:c,cornerSegments:d}=e.parameters,u=new S0(.5*t,i,a,o,h,c,d);return u.scale(1,1,r/t),Object.assign(u,{userData:{...e,type:"PyramidGeometry"}})}};function SJ(e,t,i){i.x=e.x*t.x,i.y=e.y,i.z=e.x*t.y}function S$(e,t,i,r,a,o){let h=t.clone().sub(e),c=i.clone().sub(e),d=h.angleTo(c);if(h.normalize(),c.normalize(),r===a){let t=h.add(c).normalize();o.copy(e).addScaledVector(t,r/Math.sin(d/2))}else{let t=h.angleTo(c);o.copy(e),o.addScaledVector(h,a/Math.sin(t)),o.addScaledVector(c,r/Math.sin(t))}}var S0=class extends rU{constructor(e=.5,t=1,i=4,r=1,a=!1,o=0,h=4){let c;super(),i=Math.floor(Math.max(3,i)),r=Math.floor(r),h=Math.floor(h);let d=[],u=[],p=[],f=[],m=0,g=t/2,v=Math.PI/i,y=e*Math.cos(Math.PI/i),x=2*Math.PI/i,b=Math.PI-(i-2)*Math.PI/i,w=new ib(0,-g,0),S=new ib(0,g,0),_=new tJ(e,-g),A=new tJ(y,-g),M=new tJ(0,S.y).sub(A),E=new tJ(0,S.y).sub(_),C=new tJ(M.y,-M.x).normalize(),T=new tJ(E.y,-E.x).normalize(),P=e*Math.cos(Math.PI/i)*Math.tan((Math.PI-M.angle())/2)-1e-8;o=Math.min(o,P);{let e=new ib(C.x,C.y,0),t=new ib(Math.cos(x)*e.x,e.y,Math.sin(x)*e.x);c=e.angleTo(t)}
vendor: 4,634 bytes, line 3140
3140let D=o/Math.tan((Math.PI-M.angle())/2),O=o/Math.tan((Math.PI-c)/2),I=new ib;if(!a){u.push(w.x,w.y,w.z),p.push(0,-1,0),f.push(0,0);let e=m++,t=[],r=_.clone(),a=D/Math.cos(Math.PI/i);r.x-=a;for(let e=0;e<i;e++){let a=e/i*Math.PI*2+v;SJ(r,new tJ(Math.sin(a),Math.cos(a)),I),u.push(I.x,I.y,I.z),p.push(0,-1,0),f.push(0,0),t.push(m++)}for(let i=0;i<t.length;i++)d.push(t[i],e,t[(i+1)%t.length])}let R=[];{let e=new ib,t=new ib,r=new ib,a=new ib,g=new ib,y=new ib;for(let x=0;x<i;x++){let A=x/i*Math.PI*2+v,P=(x+.5)/i*Math.PI*2+v,I=(x+1)/i*Math.PI*2+v,B=new tJ(Math.sin(A),Math.cos(A)),z=new tJ(Math.sin(P),Math.cos(P)),F=new tJ(Math.sin(I),Math.cos(I));SJ(_,B,t),SJ(_,F,r),SJ(C,z,e),S$(S,t,r,O,O,a),u.push(a.x,a.y,a.z),S$(t,S,r,O,D,g),u.push(g.x,g.y,g.z),S$(r,t,S,D,O,y),u.push(y.x,y.y,y.z),p.push(e.x,e.y,e.z),p.push(e.x,e.y,e.z),p.push(e.x,e.y,e.z),f.push(0,0),f.push(0,0),f.push(0,0);let N=m++,U=m++,k=m++;if(d.push(N,U,k),o>0){let v,x;{let e=t.clone().add(r).multiplyScalar(.5),i=S.clone().sub(e).normalize(),a=w.clone().sub(e).normalize().add(i).normalize().multiplyScalar(-1);L(e,y.clone().sub(g),a,M.angle())}{let e=new ib;SJ(T,F,e);let t=y.clone().add(a).multiplyScalar(.5);t=function(e,t,i){let r=e.clone().sub(t),a=i.clone().sub(t);return r.projectOnVector(a),r.add(t)}(t,r,S);let i=y.clone().sub(a);[v,x]=L(t,i,e,c,a.y)}{let e=v,t=e.clone().setY(0).normalize(),i=new ib(0,-1,0),r=t.clone().cross(i);!function(e,t,i,r){let a=Math.PI/2,c=E.angle()-a,g=[],v=new ib,y=new ib;for(let d=0;d<=h;d++){let x=[],w=d/h;for(let h=0;h<=d;h++){let g=((d?h/d:0)-.5)*b,S=Math.cos(g),_=Math.sin(g),A=(a+Math.atan(Math.tan(c)*S))*w,M=Math.cos(A),E=Math.sin(A);v.set(0,0,0),v.addScaledVector(t,E*S),v.addScaledVector(i,M),v.addScaledVector(r,E*_),y.copy(e).addScaledVector(v,o),u.push(y.x,y.y,y.z),p.push(v.x,v.y,v.z),f.push(0,0),x.push(m++)}g.push(x)}let x=g.length-1;for(let e=0;e<x;e++){let t=g[e],i=g[e+1],r=t.length-1;d.push(t[0],i[1],i[0]);for(let e=1;e<=r;e++)d.push(t[e-1],t[e],i[e]),d.push(t[e],i[e+1],i[e])}}(e,t,i,r)}R.concat(x);{let t=M.angle(),r=Math.PI-t,a=S.clone();a.y-=o/Math.sin(t-Math.PI/2);let c=new ib,g=[];for(let t=0;t<h;t++){let d=[],v=Math.PI/2-r*t/h,y=Math.cos(v),x=Math.sin(v),b=P;for(let r=0;r<=t;r++){let r=Math.cos(b),h=Math.sin(b);e.x=y*h,e.y=x,e.z=y*r,c.copy(a).addScaledVector(e,o),u.push(c.x,c.y,c.z),p.push(e.x,e.y,e.z),f.push(0,0),d.push(m++),b+=2*Math.PI/t/i}g.push(d)}x.reverse(),g.push(x);let v=g.length-1;for(let e=0;e<v;e++){let t=g[e],i=g[e+1],r=t.length-1;d.push(i[1],t[0],i[0]);for(let e=1;e<=r;e++)d.push(t[e],t[e-1],i[e]),d.push(i[e+1],t[e],i[e])}}}}}function L(e,t,i,r,a){let c=-r/2,g=(Math.PI-r)/2,v=t.clone().normalize().cross(i);e.addScaledVector(i,-o/Math.sin(g));let y=new ib,x=new ib,b=m,w=[];for(let d=0;d<=h;d++){let g=c+d/h*r;x.set(0,0,0),x.addScaledVector(v,Math.sin(g)),x.addScaledVector(i,Math.cos(g));for(let i=0;i<=1;i++){let r=i/1-.5;if(y.copy(e),y.addScaledVector(t,r),y.addScaledVector(x,o),null!=a){let e=Math.max(0,y.y-a);y.addScaledVector(t,-e/t.y)}u.push(y.x,y.y,y.z),p.push(x.x,x.y,x.z),f.push(0,0),0===i&&w.push(m),m++}}for(let e=0;e<h;e++)for(let t=0;t<1;t++){let i=b+t+2*e,r=i+2,a=r+1,o=i+1;d.push(i,r,o),d.push(r,a,o)}return[e.clone().addScaledVector(t,.5),w]}this.setIndex(d),this.setAttribute("position",new rO(u,3)),this.setAttribute("normal",new rO(p,3)),this.setAttribute("uv",new rO(f,2))}},S1=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},e.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},e.ui);return{shape:e.shape&&e.shape instanceof wZ?e.shape:new wZ,parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??0)}),ui:r}}static build(e){let t=e.shape,{width:i,height:r,cornerRadius:a,cornerType:o,depth:h,extrudeBevelSize:c,extrudeBevelSegments:d}=e.parameters,u={x:.5*i,y:.5*r},p={x:-u.x,y:-u.y},f={x:u.x,y:u.y};function m(e,t,a){return t>i&&a>r?Math.min(e*i/t,e*r/a):t>i?e*i/t:a>r?e*r/a:e}let g=[];g[0]=0===a[0]?0:m(a[0],a[0]+a[3],a[0]+a[1]),g[1]=0===a[1]?0:m(a[1],a[1]+a[2],a[1]+a[0]),g[2]=0===a[2]?0:m(a[2],a[2]+a[1],a[2]+a[3]),g[3]=0===a[3]?0:m(a[3],a[3]+a[0],a[3]+a[2]);let v=p.x,y=f.x,x=f.y,b=p.y;t.addPoint(t.createPoint(v,x)),t.addPoint(t.createPoint(y,x)),t.addPoint(t.createPoint(y,b)),t.addPoint(t.createPoint(v,b)),t.isClosed=!0;let w=!0;for(let e=0,i=t.points.length;e<i;e++)t.points[e].roundness=g[e],e>0&&g[e]!==g[e-1]&&(w=!1);return w&&(t.roundness=g[0]),t.useCubicForRoundedCorners=1!==o,t.update(
3140),Object.assign(Sm.create({shape:t,parameters:{depth:h,extrudeBevelSize:c,extrudeBevelSegments:d}}),{userData:{...e,type:"RectangleGeometry"}})}},S2=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},e.parameters);return i.thetaLength=tK.clamp(i.thetaLength,0,180),{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t=100,height:i=t,depth:r=t,widthSegments:a=64,heightSegments:o=64,phiStart:h,phiLength:c,thetaStart:d,thetaLength:u}=e.parameters,p;return 0===u?(p=new rU).setAttribute("position",new rO([],3)):p=new oB(.5*t,a,o,h,c,d,u*tK.DEG2RAD),p.scale(1,i/t,r/t),Object.assign(p,{userData:{...e,type:"SphereGeometry"}})}},S3=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:0})}}static build(e){let{width:t=100,height:i=t,widthSegments:r=8,heightSegments:a=8}=e.parameters,o=new sp(t,i,r,a);return o.scale(1,1,1),Object.assign(o,{userData:{...e,type:"PlaneGeometry"}})}},S4=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width)})}}static build(e){let{width:t,height:i,depth:r,angle:a,cornerRadius:o,cornerSegments:h}=e.parameters;return Object.assign(new S5(t,i,r,a,o,h),{userData:{...e,type:"BackdropGeometry"}})}},S5=class extends rU{constructor(e=1,t=1,i=1,r=90,a=10,o=24){super(),this.type="BackdropGeometry";let h=[],c=[],d=[];0==a&&(o=1),o=Math.max(1,Math.floor(o)),a=Math.min(a,100),r=Math.PI/180*Math.min(179.999,r);let u=[],p=Math.PI/2,f=(e=0,t=0,i=0)=>new ib(e,t,i),m=f(),g=f(),[v,y,x]=[t/2,e/2,i/2],b=-y,w=+y,[S,_,A]=[f(b,-v,+x),f(b,-v,-x),f(b,+v,-x)],M=(e,t=!1)=>Math.sin(e-Math.PI/(1+ +t)),E=(e,t=!1)=>Math.cos(e-Math.PI/(1+ +t));A.y=Math.sin(r)*t-v;let C=Math.cos(r)*t-x,T=S.z-.001;r<=p?(A.z=Math.min(C,T),A.z==T&&(A.y-=(C-T)/Math.tan(p-r))):_.z=Math.min(_.z-C-x,S.z-.001),m.subVectors(S,_),g.subVectors(A,_);let P=Math.min(m.length(),g.length())*a/100,D=P*Math.tan(r/2),O=P/Math.cos(r/2),I=m.clone().normalize().add(g.normalize()).setLength(O).add(_);m.set(0,M(r,!0),E(r,!0)),u.push([A,m.clone()]);let R=(Math.PI-r)/o;for(let e=0;e<=o;e++){let t=p+r+e*R;m.set(0,Math.sin(t)*D,Math.cos(t)*D),m.add(I),g.set(0,M(t),E(t)),u.push([m.clone(),g.clone()])}u.push([S,f(0,1,0)]);let L=Math.sin(R/2)*D*2,B=u.length-1,z=u[0][0].distanceTo(u[1][0]),F=z+L*o+u[B-1][0].distanceTo(u[B][0]);u[0].push(1);for(let e=0;e<=o;e++)u[e+1].push(1-(z+e*L)/F);u[B].push(0);let[N,U,k]=u[0],V,j,G;for(let e=1;e<u.length;e++)[V,j,G]=u[e],h.push(b,N.y,N.z,b,V.y,V.z,w,N.y,N.z,w,N.y,N.z,b,V.y,V.z,w,V.y,V.z),c.push(0,U.y,U.z,0,j.y,j.z,0,U.y,U.z,0,U.y,U.z,0,j.y,j.z,0,j.y,j.z),d.push(0,k,0,G,1,k,1,k,0,G,1,G),[N,U,k]=[V,j,G];this.setAttribute("position",new rO(h,3)),this.setAttribute("normal",new rO(c,3)),this.setAttribute("uv",new rO(d,2))}},S6=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},e.parameters);return{shape:e.shape&&e.shape instanceof wZ?e.shape:new wZ,parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??0)})}}static build(e){let{width:t,height:i,innerRadiusPercent:r,spikes:a,cornerRadius:o,angle:h,depth:c,extrudeBevelSize:d,extrudeBevelSegments:u}=e.parameters,p=e.shape,f=.5*t,m=.5*i,g=h*Math.PI/360/a,v=-(Math.PI/2*3),y=f*r/100,x=m*r/100;if(3===a&&50===r){g=2*Math.PI/a;for(let e=0;e<a;e++){let t=g*e,i=0+Math.sin(t)*f,r=0+Math.cos(t)*m;p.addPoint(p.createPoint(i,r))}}else for(let e=0;e<a;e++){let e=0+Math.cos(v)*f,t=0+Math.sin(v)*m;p.addPoint(p.createPoint(e,t)),v+=g,e=0+Math.cos(v)*y,t=0+Math.sin(v)*x,p.addPoint(p.createPoint(e,t)),v+=g}p.isClosed=!0;for(let e=0,t=p.points.length;e<t;e++)p.points[e].roundness=o;return p.roundness=o,p.update(),Object.assign(Sm.create({shape:p,parameters:{roundness:o,depth:c,extrudeBevelSize:d,extrudeBevelSegments:u}}),{userData:{...e,type:"StarGeometry"}})}},S8=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??0)})}}static build(e){let{width:t,height:i}=e.parameters;return Object.assign(new sp(t,i),{userData:{...e,type:"TextFrameGeometry"}})}},S9=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},e.parameters),r=Math.abs(i.width),a=Math.abs(i.height??i.width);i.shapeBlendNode&&(a=r);let o=Math.round(Math.abs(i.depth??.25*i.width));return{parameters:Object.assign(i,{width:r,height:a,depth:o})}}static build(e){let{width:t,height:i,depth:r,radialSegments:a,tubularSegments:o,arc:h,cornerRadius:c,cornerSegments:d}=e.parameters,u=function(e,t,i,r,a,o,h,c,d,u,p){[t,i]=[i,t],h=t/2;let f=tK.clamp(a/360,0,1);if(0===f){let e=new rU;return e.setAttribute("position",new rO([],3)),e}return 1===f&&(u=0),new SE(!0,e,t,i,r,f,o,h,0,d,u,p)}(t,i,r,.5*t,h,o,0,0,a,c,d);return u.scale(1,i/t,1),Object.assign(u,{userData:{...e,type:"TorusGeometry"}})}},S7=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},e.parameters);return{parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width),depth:Math.abs(i.depth??i.width),tube:i.tube??.125*i.width})}}static build(e){let{width:t,tube:i,tubularSegments:r,radialSegments:a,p:o,q:h}=e.parameters,c=.5*t;return c!==i&&(c-=i),Object.assign(new oF(c,i,r,a,o,h),{userData:{...e,type:"TorusKnotGeometry"}})}},_e=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},e.parameters);return{shape:e.shape&&e.shape instanceof wZ?e.shape:new wZ,parameters:Object.assign(i,{width:Math.abs(i.width),height:Math.abs(i.height??i.width*(i.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(i.depth??0)})}}static build(e){let{width:t=100,height:i,cornerRadius:r,depth:a,extrudeBevelSize:o,extrudeBevelSegments:h,isRect:c}=e.parameters,d=e.shape,u=.5*t,p=.5*i;c?d.addPoint(d.createPoint(-u,p)):d.addPoint(d.createPoint(0,p)),d.addPoint(d.createPoint(u,-p)),d.addPoint(d.createPoint(-u,-p)),d.isClosed=!0;for(let e=0,t=d.points.length;e<t;e++)d.points[e].roundness=r;return d.roundness=r,d.update(),Object.assign(Sm.create({shape:d,parameters:{roundness:r,depth:a,extrudeBevelSize:o,extrudeBevelSegments:h}}),{userData:{...e,type:"TriangleGeometry"}})}},_t={hexStringToRgb:function(e){e=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,(e,t,i,r)=>String(t+t+i+i+r+r));let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}},_i=class{add(e,t,i){if("string"!=typeof arguments[0])for(let e in arguments[0])this.add(e,arguments[0][e],arguments[1]);
3140else(Array.isArray(e)?e:[e]).forEach(function(e){this[e]=this[e]||[],t&&this[e][i?"unshift":"push"](t)},this)}run(e,t){this[e]=this[e]||[],this[e].forEach(function(e){e.call(t&&t.context?t.context:t,t)})}},_r=class{constructor(e){this.jsep=e,this.registered={}}register(...e){e.forEach(e=>{if("object"!=typeof e||!e.name||!e.init)throw Error("Invalid JSEP plugin format");this.registered[e.name]||(e.init(this.jsep),this.registered[e.name]=e)})}},_s=class{static get version(){return"1.3.8"}static toString(){return"JavaScript Expression Parser (JSEP) v"+_s.version}static addUnaryOp(e){return _s.max_unop_len=Math.max(e.length,_s.max_unop_len),_s.unary_ops[e]=1,_s}static addBinaryOp(e,t,i){return _s.max_binop_len=Math.max(e.length,_s.max_binop_len),_s.binary_ops[e]=t,i?_s.right_associative.add(e):_s.right_associative.delete(e),_s}static addIdentifierChar(e){return _s.additional_identifier_chars.add(e),_s}static addLiteral(e,t){return _s.literals[e]=t,_s}static removeUnaryOp(e){return delete _s.unary_ops[e],e.length===_s.max_unop_len&&(_s.max_unop_len=_s.getMaxKeyLen(_s.unary_ops)),_s}static removeAllUnaryOps(){return _s.unary_ops={},_s.max_unop_len=0,_s}static removeIdentifierChar(e){return _s.additional_identifier_chars.delete(e),_s}static removeBinaryOp(e){return delete _s.binary_ops[e],e.length===_s.max_binop_len&&(_s.max_binop_len=_s.getMaxKeyLen(_s.binary_ops)),_s.right_associative.delete(e),_s}static removeAllBinaryOps(){return _s.binary_ops={},_s.max_binop_len=0,_s}static removeLiteral(e){return delete _s.literals[e],_s}static removeAllLiterals(){return _s.literals={},_s}get char(){return this.expr.charAt(this.index)}get code(){return this.expr.charCodeAt(this.index)}constructor(e){this.expr=e,this.index=0}static parse(e){return new _s(e).parse()}static getMaxKeyLen(e){return Math.max(0,...Object.keys(e).map(e=>e.length))}static isDecimalDigit(e){return e>=48&&e<=57}static binaryPrecedence(e){return _s.binary_ops[e]||0}static isIdentifierStart(e){return e>=65&&e<=90||e>=97&&e<=122||e>=128&&!_s.binary_ops[String.fromCharCode(e)]||_s.additional_identifier_chars.has(String.fromCharCode(e))}static isIdentifierPart(e){return _s.isIdentifierStart(e)||_s.isDecimalDigit(e)}throwError(e){let t=Error(e+" at character "+this.index);throw t.index=this.index,t.description=e,t}runHook(e,t){if(_s.hooks[e]){let i={context:this,node:t};return _s.hooks.run(e,i),i.node}return t}searchHook(e){if(_s.hooks[e]){let t={context:this};return _s.hooks[e].find(function(e){return e.call(t.context,t),t.node}),t.node}}gobbleSpaces(){let e=this.code;for(;e===_s.SPACE_CODE||e===_s.TAB_CODE||e===_s.LF_CODE||e===_s.CR_CODE;)e=this.expr.charCodeAt(++this.index);this.runHook("gobble-spaces")}parse(){this.runHook("before-all");let e=this.gobbleExpressions(),t=1===e.length?e[0]:{type:_s.COMPOUND,body:e};return this.runHook("after-all",t)}gobbleExpressions(e){let t=[],i,r;for(;this.index<this.expr.length;)if((i=this.code)===_s.SEMCOL_CODE||i===_s.COMMA_CODE)this.index++;else if(r=this.gobbleExpression())t.push(r);else if(this.index<this.expr.length){if(i===e)break;this.throwError('Unexpected "'+this.char+'"')}return t}gobbleExpression(){let e=this.searchHook("gobble-expression")||this.gobbleBinaryExpression();return this.gobbleSpaces(),this.runHook("after-expression",e)}gobbleBinaryOp(){this.gobbleSpaces();let e=this.expr.substr(this.index,_s.max_binop_len),t=e.length;for(;t>0;){if(_s.binary_ops.hasOwnProperty(e)&&(!_s.isIdentifierStart(this.code)||this.index+e.length<this.expr.length&&!_s.isIdentifierPart(this.expr.charCodeAt(this.index+e.length))))return this.index+=t,e;e=e.substr(0,--t)}return!1}gobbleBinaryExpression(){let e,t,i,r,a,o,h,c,d;if(!(o=this.gobbleToken())||!(t=this.gobbleBinaryOp()))return o;for(a={value:t,prec:_s.binaryPrecedence(t),right_a:_s.right_associative.has(t)},(h=this.gobbleToken())||this.throwError("Expected expression after "+t),r=[o,a,h];t=this.gobbleBinaryOp();){if(0===(i=_s.binaryPrecedence(t))){this.index-=t.length;break}a={value:t,prec:i,right_a:_s.right_associative.has(t)},d=t;let c=e=>a.right_a&&e.right_a?i>e.prec:i<=e.prec;for(;r.length>2&&c(r[r.length-2]);)h=r.pop(),t=r.pop().value,o=r.pop(),e={type:_s.BINARY_EXP,operator:t,left:o,right:h},r.push(e);(e=this.gobbleToken())||this.throwError("Expected expression after "+d),r.push(a,e)}for(c=r.length-1,e=r[c];c>1;)e={type:_s.BINARY_EXP,operator:r[c-1].value,left:r[c-2],right:e},c-=2;return e}gobbleToken(){let e,t,i,r;if(this.gobbleSpaces(),r=this.searchHook("gobble-token"))return this.runHook("after-token",r);
3140if(e=this.code,_s.isDecimalDigit(e)||e===_s.PERIOD_CODE)return this.gobbleNumericLiteral();if(e===_s.SQUOTE_CODE||e===_s.DQUOTE_CODE)r=this.gobbleStringLiteral();else if(e===_s.OBRACK_CODE)r=this.gobbleArray();else{for(i=(t=this.expr.substr(this.index,_s.max_unop_len)).length;i>0;){if(_s.unary_ops.hasOwnProperty(t)&&(!_s.isIdentifierStart(this.code)||this.index+t.length<this.expr.length&&!_s.isIdentifierPart(this.expr.charCodeAt(this.index+t.length)))){this.index+=i;let e=this.gobbleToken();return e||this.throwError("missing unaryOp argument"),this.runHook("after-token",{type:_s.UNARY_EXP,operator:t,argument:e,prefix:!0})}t=t.substr(0,--i)}_s.isIdentifierStart(e)?(r=this.gobbleIdentifier(),_s.literals.hasOwnProperty(r.name)?r={type:_s.LITERAL,value:_s.literals[r.name],raw:r.name}:r.name===_s.this_str&&(r={type:_s.THIS_EXP})):e===_s.OPAREN_CODE&&(r=this.gobbleGroup())}return r?(r=this.gobbleTokenProperty(r),this.runHook("after-token",r)):this.runHook("after-token",!1)}gobbleTokenProperty(e){this.gobbleSpaces();let t=this.code;for(;t===_s.PERIOD_CODE||t===_s.OBRACK_CODE||t===_s.OPAREN_CODE||t===_s.QUMARK_CODE;){let i;if(t===_s.QUMARK_CODE){if(this.expr.charCodeAt(this.index+1)!==_s.PERIOD_CODE)break;i=!0,this.index+=2,this.gobbleSpaces(),t=this.code}this.index++,t===_s.OBRACK_CODE?(e={type:_s.MEMBER_EXP,computed:!0,object:e,property:this.gobbleExpression()},this.gobbleSpaces(),(t=this.code)!==_s.CBRACK_CODE&&this.throwError("Unclosed ["),this.index++):t===_s.OPAREN_CODE?e={type:_s.CALL_EXP,arguments:this.gobbleArguments(_s.CPAREN_CODE),callee:e}:(t===_s.PERIOD_CODE||i)&&(i&&this.index--,this.gobbleSpaces(),e={type:_s.MEMBER_EXP,computed:!1,object:e,property:this.gobbleIdentifier()}),i&&(e.optional=!0),this.gobbleSpaces(),t=this.code}return e}gobbleNumericLiteral(){let e="",t,i;for(;_s.isDecimalDigit(this.code);)e+=this.expr.charAt(this.index++);if(this.code===_s.PERIOD_CODE)for(e+=this.expr.charAt(this.index++);_s.isDecimalDigit(this.code);)e+=this.expr.charAt(this.index++);if("e"===(t=this.char)||"E"===t){for(e+=this.expr.charAt(this.index++),("+"===(t=this.char)||"-"===t)&&(e+=this.expr.charAt(this.index++));_s.isDecimalDigit(this.code);)e+=this.expr.charAt(this.index++);_s.isDecimalDigit(this.expr.charCodeAt(this.index-1))||this.throwError("Expected exponent ("+e+this.char+")")}return i=this.code,_s.isIdentifierStart(i)?this.throwError("Variable names cannot start with a number ("+e+this.char+")"):(i===_s.PERIOD_CODE||1===e.length&&e.charCodeAt(0)===_s.PERIOD_CODE)&&this.throwError("Unexpected period"),{type:_s.LITERAL,value:parseFloat(e),raw:e}}gobbleStringLiteral(){let e="",t=this.index,i=this.expr.charAt(this.index++),r=!1;for(;this.index<this.expr.length;){let t=this.expr.charAt(this.index++);if(t===i){r=!0;break}if("\\"===t)switch(t=this.expr.charAt(this.index++)){case"n":e+=`
3141`;break;case"r":e+="\r";break;case"t":e+="	";break;case"b":e+="\b";break;case"f":e+="\f";break;case"v":e+="\v";break;default:e+=t}else e+=t}return r||this.throwError('Unclosed quote after "'+e+'"'),{type:_s.LITERAL,value:e,raw:this.expr.substring(t,this.index)}}gobbleIdentifier(){let e=this.code,t=this.index;for(_s.isIdentifierStart(e)?this.index++:this.throwError("Unexpected "+this.char);this.index<this.expr.length&&(e=this.code,_s.isIdentifierPart(e));)this.index++;return{type:_s.IDENTIFIER,name:this.expr.slice(t,this.index)}}gobbleArguments(e){let t=[],i=!1,r=0;for(;this.index<this.expr.length;){this.gobbleSpaces();let a=this.code;if(a===e){i=!0,this.index++,e===_s.CPAREN_CODE&&r&&r>=t.length&&this.throwError("Unexpected token "+String.fromCharCode(e));break}if(a===_s.COMMA_CODE){if(this.index++,++r!==t.length){if(e===_s.CPAREN_CODE)this.throwError("Unexpected token ,");else if(e===_s.CBRACK_CODE)for(let e=t.length;e<r;e++)t.push(null)}}else if(t.length!==r&&0!==r)this.throwError("Expected comma");else{let e=this.gobbleExpression();e&&e.type!==_s.COMPOUND||this.throwError("Expected comma"),t.push(e)}}return i||this.throwError("Expected "+String.fromCharCode(e)),t}gobbleGroup(){this.index++;let e=this.gobbleExpressions(_s.CPAREN_CODE);if(this.code===_s.CPAREN_CODE)return this.index++,1===e.length?e[0]:!!e.length&&{type:_s.SEQUENCE_EXP,expressions:e};this.throwError("Unclosed (")}gobbleArray(){return this.index++,{type:_s.ARRAY_EXP,elements:this.gobbleArguments(_s.CBRACK_CODE)}}};Object.assign(_s,{hooks:new _i,plugins:new _r(_s),COMPOUND:"Compound",SEQUENCE_EXP:"SequenceExpression",IDENTIFIER:"Identifier",MEMBER_EXP:"MemberExpression",LITERAL:"Literal",THIS_EXP:"ThisExpression",CALL_EXP:"CallExpression",UNARY_EXP:"UnaryExpression",BINARY_EXP:"BinaryExpression",ARRAY_EXP:"ArrayExpression",TAB_CODE:9,LF_CODE:10,CR_CODE:13,SPACE_CODE:32,PERIOD_CODE:46,COMMA_CODE:44,SQUOTE_CODE:39,DQUOTE_CODE:34,OPAREN_CODE:40,CPAREN_CODE:41,OBRACK_CODE:91,CBRACK_CODE:93,QUMARK_CODE:63,SEMCOL_CODE:59,COLON_CODE:58,unary_ops:{"-":1,"!":1,"~":1,"+":1},binary_ops:{"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},right_associative:new Set,additional_identifier_chars:new Set(["$","_"]),literals:{true:!0,false:!1,null:null},this_str:"this"}
3141),_s.max_unop_len=_s.getMaxKeyLen(_s.unary_ops),_s.max_binop_len=_s.getMaxKeyLen(_s.binary_ops);var _a=e=>new _s(e).parse();function _n(e){return{all:e=e||new Map,on:function(t,i){var r=e.get(t);r?r.push(i):e.set(t,[i])},off:function(t,i){var r=e.get(t);r&&(i?r.splice(r.indexOf(i)>>>0,1):e.set(t,[]))},emit:function(t,i){var r=e.get(t);r&&r.slice().map(function(e){e(i)}),(r=e.get("*"))&&r.slice().map(function(e){e(t,i)})}}}Object.getOwnPropertyNames(_s).forEach(e=>{void 0===_a[e]&&"prototype"!==e&&(_a[e]=_s[e])}),_a.Jsep=_s,_a.plugins.register({name:"ternary",init(e){e.hooks.add("after-expression",function(t){if(t.node&&this.code===e.QUMARK_CODE){this.index++;let i=t.node,r=this.gobbleExpression();if(r||this.throwError("Expected expression"),this.gobbleSpaces(),this.code===e.COLON_CODE){this.index++;let a=this.gobbleExpression();if(a||this.throwError("Expected expression"),t.node={type:"ConditionalExpression",test:i,consequent:r,alternate:a},i.operator&&e.binary_ops[i.operator]<=.9){let r=i;for(;r.right.operator&&e.binary_ops[r.right.operator]<=.9;)r=r.right;t.node.test=r.right,r.right=t.node,t.node=i}}else this.throwError("Expected :")}})}});var _o=class{constructor(e,t,i){this.id=e,this.userAPI=t,this.result=void 0,this.error="null",this.isPrefetched=!1,this.isLoading=!1,this.isLoaded=!1,this.prefetchPromise=new Promise(e=>e()),this.emitter=_n(),this._innerCallUserAPI=async e=>{this.emitter.emit("start",{userAPIId:this.id}),this.isLoading=!0,this.isLoading=!1;try{this.result=await _l(this.userAPI,e),this.error="null",this.emitter.emit("success",{userAPIId:this.id})}catch(t){let e=t.message?.split("_:_")?.[0]?.replace("status:","")??"null";this.error=e,this.result=null,this.emitter.emit("error",{userAPIId:this.id})}this.isLoading=!1,this.isPrefetched=!0,this.isLoaded=!0},t?.integration?.type==="OpenAI"?this.result={content:""}:"GET"===t.method&&""!==t.url&&(this.prefetchPromise=this.prefetch(i)),this._debouncedCallUserAPI=this._innerCallUserAPI,this._updateDebouncedCallUserAPI(),this._debouncedPrefetch=uK(this.prefetch,1e3,{trailing:!0})}_updateDebouncedCallUserAPI(){this._debouncedCallUserAPI=void 0!==this.userAPI.debounce&&this.userAPI.debounce>0?uK(this._innerCallUserAPI,this.userAPI.debounce,{leading:!0,trailing:!0}):this._innerCallUserAPI}async prefetch(e){await this.callUserAPI(e)}async callUserAPI(e){await this._debouncedCallUserAPI(e)}update(e,t,i=!0){this.userAPI=e,this._updateDebouncedCallUserAPI(),""!==this.userAPI.url&&"GET"===this.userAPI.method&&i&&this._debouncedPrefetch(t)}retrieveValue(e){if(this.result)try{return fp.zoom(this.result,e)}catch(e){console.error(e)}}retrieveZoomedKeyValues(e){if(this.result){let t=e&&e.length?fp.zoom(this.result,e):this.result;if("object"==typeof t&&null!==t)return Object.entries(t);if(Array.isArray(t))return t.map((e,t)=>[t.toString(),e]);throw"string"==typeof t||"number"==typeof t||"boolean"==typeof t||null===t?Error("This path points to a value, use retrieveValue() instead. "+e?.join(".")):Error("Path error"+e?.join("."))}}dispose(){}on(e,t){this.emitter.on(e,t)}off(e,t){this.emitter.off(e,t)}get autostart(){return this.userAPI.autoStart}};async function _l(e,t,i=new AbortController){let r,a,o=e.url,h=e.proxy?.enabled??!1,c;if(e.integration?.type==="OpenAI"){let i=_c(""===e.integration.prompt?[]:JSON.parse(e.integration.prompt),t),r=""===e.integration.behavior?[]:_c(JSON.parse(e.integration.behavior),t);c=`{
3142		"model": "${e.integration.model}",
3143		"messages": [${e.integration.useBehavior?`
3144		{
3145			"role": "system",
3146			"content": "${r}"
3147		},`:""}
3148		{
3149			"role": "user",
3150			"content": "${i}"
3151		}
3152		]
3153	}`}if(h){let i;o=`https://apis.spline.design/file/${e.proxy.fileId}/external-api/request?uuidexternalapi=${e.proxy.proxyId}`,void 0!==c?i=c:"POST"===e.method&&e.body&&(i=_c(JSON.parse(e.body),t)),void 0!==i&&(o+=`&data=${encodeURIComponent(i.replace(/(\r\n|\n|\r|\t)/gm,""))}`)}else e.integration?.type==="OpenAI"?a=c:"POST"===e.method&&e.body&&(a=_c(JSON.parse(e.body),t));let d=await fetch(o,{method:h?"GET":e.method,headers:h?void 0:(r=new Headers,e.headers.forEach(e=>{""!==e.data.key&&r.append(e.data.key,e.data.value)}),r),signal:i.signal,body:a});if(!d.ok)throw Error("status:"+d.status+"_:_"+d.statusText);if(e.integration?.type==="OpenAI"){let e=await d.json();return h&&(e=e.response),{content:e.choices[0].message.content}}{let e=await d.json();return h&&(e=e.response),e}}var _h=(e,t)=>{if("string"==typeof e){let i=t.getVariable(e);if(i)return _h(i,t)}return yY.isBoolean(e)?yY.getDisplayedValue(e).toLowerCase():yY.getDisplayedValue(e)},_c=(e,t)=>e.map((e,i)=>{if("text"in e)return e.text;if("type"in e){if("paragraph"===e.type)return(i>0?`
3154`:"")+_c(e.children,t);
3154if("variable"===e.type){let i=t.getVariable(e.variableId);if(void 0!==i)return _h(i,t)}}return""}).join(""),_d=["+","-","*","/","(",")","==","!=",">","<",">=","<=","and","or","!","%","^",","],_u=["0","1","2","3","4","5","6","7","8","9","."],_p=["sin","cos","tan","asin","acos","atan","atan2","sqrt","abs","log","exp","floor","ceil","round","min","max","random"];function _f(e,t,i="number"){let r,a,o="";for(let r=0;r<e.length;r++){var h;let a=e[r];if("objType"in a&&"api"===a.objType){let e=JSON.parse(a.id),i=e[0],r=t.getUserAPI(i);if(void 0!==r&&r instanceof _o){let t=r.retrieveValue(e.slice(1));void 0!==t&&(o+=t)}continue}if("objType"in a&&"webhook"===a.objType){let[e,i]=JSON.parse(a.id),r=t.getUserWebhook(e);if(void 0!==r){let e=r.getParameterValue(i);void 0!==e&&(o+=e)}continue}if("objType"in a&&"aiAssistant"===a.objType){let e=t.openAIRealtime;if("objId"in a&&void 0!==a.objId){let i;if(t.scene.data.objects.traverse((e,t)=>{let r=t.events?.find(e=>e.id===a.objId);r&&(i=r)}),void 0!==i&&"AIAssistantListener"===i.data.type){let t=e?.computeAnalysisForListenerEvent(i.data);if(void 0!==t){o+=t;continue}}}o+=e?.voice??0;continue}if("id"in a){let h=e[r-1];if(r>0&&"id"in h){console.error("Two variables in a row",e);return}let c=t.getVariable(a.id),d=yY.getDisplayedValue(c);"number"===i&&yY.isTextValue(c)&&Array.isArray(c.textValue)&&1===c.textValue.length?d=parseFloat(d).toString():"boolean"===i&&yY.isBoolean(c)?d=c?"true":"false":"boolean"===i&&yY.isTextValue(c)&&!Array.isArray(c.textValue)&&(d='"'+d+'"'),o+=d;continue}if("string"===i){'"'!==a.name&&("+"!==a.name||a.escaped)&&(o+=a.name),"+"!==a.name||a.escaped||"\\"!==o[o.length-1]||(o=o.slice(0,-1)+a.name);continue}if("and"===a.name){o+="&&";continue}if("or"===a.name){o+="||";continue}if("True"===a.name){o+="true";continue}if("False"===a.name){o+="false";continue}if("boolean"===i&&!("string"==typeof(h=a.name)&&!isNaN(h)&&!isNaN(parseFloat(h)))&&!_u.includes(a.name)&&!_d.includes(a.name)&&!_p.includes(a.name.replace(/\($/g,""))){o+='"'+a.name+'"';continue}o+=a.name}if("string"===i)return o;if(0===e.length){if("number"===i)return 0;if("boolean"===i)return!1}try{r=_a(o)}catch(e){console.error(o,e);return}try{a=function e(t){switch(t.type){case"BinaryExpression":switch(t.operator){case"==":return Number(e(t.left)===e(t.right));case"!=":return Number(e(t.left)!==e(t.right));case">":return Number(e(t.left)>e(t.right));case">=":return Number(e(t.left)>=e(t.right));case"<":return Number(e(t.left)<e(t.right));case"<=":return Number(e(t.left)<=e(t.right));case"+":return e(t.left)+e(t.right);case"-":return e(t.left)-e(t.right);case"*":return e(t.left)*e(t.right);case"/":return e(t.left)/e(t.right);case"%":return e(t.left)%e(t.right);case"&&":return e(t.left)&&e(t.right);case"||":return e(t.left)||e(t.right);case"^":return Math.pow(e(t.left),e(t.right));default:throw Error("Unknown operator: "+t.operator)}case"UnaryExpression":switch(t.operator){case"-":return-e(t.argument);case"!":return Number(!e(t.argument));default:throw Error("Unknown operator: "+t.operator)}case"Identifier":throw Error("Unknown identifier: "+t.name);case"Literal":return t.value;case"CallExpression":if("Identifier"===t.callee.type){if("random"===t.callee.name){let i=0,r=1;if(t.arguments.length>=1)try{i=e(t.arguments[0])}catch(e){console.warn(e)}if(t.arguments.length>=2)try{r=e(t.arguments[1])}catch(e){console.warn(e)}return i=Math.min(r,i),r=Math.max(r,i),i+Math.random()*(r-i)}return Math[t.callee.name].apply(null,t.arguments.map(e))}throw Error("Unknown node");default:throw Error("Unknown node type: "+t.type)}}(r)}catch(e){console.error(o,r,e)}return a}_a.addBinaryOp("^",11,!0);var _m=new iZ,_g=new iZ,_v=class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let i=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},e.parameters),r=Math.abs(i.width),a=Math.abs(i.height??i.width),o=Math.abs(i.depth??0),h=t?.shapeData??Sv.create({parameters:gK}).userData.shape;return{path:e.path??g9.defaultData(),parameters:Object.assign(i,{width:r,height:a,depth:o,extrusion:{...gJ,...i.extrusion}}),shapeData:h}}static build(e){return e.path.points.length>=2?Object.assign(new _y(e),{userData:{...e,type:"PathGeometry"}}):Object.assign(new rU,{userData:{...e,type:"PathGeometry"}})}},_y=class extends rU{constructor(e){super(),this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&1===this.inputs.parameters.extrusion.depth}_isOpenEnded(){let e,t=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&1===t.depth)||(t.twist%(e=2*Math.PI)+e)%e!=(0%e+e)%e||t.startScale!==t.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:i,offset:r}=this.inputs.parameters.extrusion;i=Math.max(0,Math.min(i,1)),r=Math.max(0,Math.min(r,1));let a=this.inputs.path.isClosed?e.length:e.length-1,o=Math.floor(r*a),h=Math.min(Math.max(2,(this.inputs.path.isClosed?Math.ceil((i+r)*a):Math.ceil(Math.min(1,i+r)*a))-o+1),a+2),c=[],d=[];for(let i=0;i<h;i++){let r=this.inputs.path.isClosed?(i+o)%e.length:Math.min(i+o,e.length-1);c.push(e[r].clone()),d.push(t[r].clone())}let u=(e,t,i)=>{var r,a;let o,h;c[e]=c[e].clone().lerp(c[t],i),d[e]=(r=d[e],a=d[t],o=[new ib,new ib,new ib],h=[new ib,new ib,new ib],r.extractBasis(o[0],o[1],o[2]),a.extractBasis(h[0],h[1],h[2]),o.forEach((e,t)=>{let r=h[t],a=tK.lerp(e.length(),r.length(),i);e.lerp(r,i).setLength(a)}),new iZ().makeBasis(o[0],o[1],o[2]))},p=0,f=r*a%1;(!this.inputs.path.isClosed||i<=1)&&(f||0===r)&&u(0,1,p=f);let m=0,g=(r+i)*a%1;if((this.inputs.path.isClosed&&i<=1||!this.inputs.path.isClosed&&r+i<1)&&g&&(m=g,u(c.length-1,c.length-2,1-m)),0===i){let e=c.length-1;c[e].copy(c[0]),d[e].copy(d[0])}this._applyPathModifiers(d,p,m);let{bevel:v,bevelSides:y}=this.inputs.parameters.extrusion,x=v>0?this.inputs.parameters.extrusion.capType:"flat",b=5;"Custom"===this.inputs.parameters.extrusion.shape.type&&(b="low"===this.inputs.parameters.extrusion.shape.shapeQuality?5:12);let{regions:w,infos:S,vertices:_}=this._computeShapePoints(b),A=0,M;"round"===x&&(A=(M=new Su(this.inputs.shapeData,2*v,v,b,y,void 0,!0)).getAttribute("position").count);let E=0,C=0;S.sort((e,t)=>
3154e.start-t.start),S.forEach(e=>{e.verticesStart=E,e.verticesCount=e.continuous.reduce((e,t,i)=>e+(0!==i&&t?1:2),0),C+=e.verticesCount,E=C});let T=C*h,P,D=0;if(this._isOpenEnded()&&"flat"===x){try{P=Ss({windingRule:__.ODD,elementType:_A.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:w})}catch{P=Sc}D=P.vertexCount}let O=T+2*D+2*A,I=T+2*D,R={positions:new Float32Array(3*O),normals:new Float32Array(3*O),uvs:new Float32Array(2*O)},L=[];if(S.forEach(e=>{this._extrudeRegion(e,_,d,c,R,L,this._isGeometryClosed()&&!this._isOpenEnded())}),P&&(this._closeEnd(P,T,L,R,d[0],c[0],!1),this._closeEnd(P,T+D,L,R,d[d.length-1],c[c.length-1],!0)),M){R.positions.set(M.getAttribute("position").array,3*I),R.normals.set(M.getAttribute("normal").array,3*I),R.uvs.set(M.getAttribute("uv").array,2*I);for(let e=I;e<I+A;e++)R.uvs[2*e+1]=1e-4;let e=L.length;L.push(...M.getIndex().array.map(e=>e+I)),I+=A,R.positions.set(M.getAttribute("position").array,3*I),R.normals.set(M.getAttribute("normal").array,3*I),R.uvs.set(M.getAttribute("uv").array,2*I);let t=L.length;L.push(...M.getIndex().array.map(e=>e+I)),this.setAttribute("position",new rT(R.positions,3)),this.setAttribute("normal",new rT(R.normals,3)),this.setAttribute("uv",new rT(R.uvs,2)),this.setIndex(L),_m.copy(d[d.length-1]).setPosition(c[c.length-1]),this.applyMatrix4OnRange(_m,I,O),_m.copy(d[0]).setPosition(c[0]).multiply(_g.makeScale(1,1,-1)),this.applyMatrix4OnRange(_m,I-A,I),this.reverseIndicesOnRange(e,t)}else this.setAttribute("position",new rT(R.positions,3)),this.setAttribute("normal",new rT(R.normals,3)),this.setAttribute("uv",new rT(R.uvs,2)),this.setIndex(L)}_extractPathPoints(){let e=wn(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(e.length<2)return[];let t=[e[0]];return e.forEach(e=>{t[t.length-1].distanceToSquared(e)>.001&&t.push(e)}),this.inputs.path.isClosed&&.001>t[t.length-1].distanceTo(t[0])&&t.pop(),t}_computeBasisMatrices(e){let t=[],i=e.length,r=this.inputs.path.isClosed,a=new ib,o=new ib,h=new ib,c=new ib,d=new ib(0,1,0);for(let u=0;u<i;u++){let p,f=e[u],m;m=0===u?r?e[e.length-2]:f.clone().multiplyScalar(2).sub(e[1]):e[u-1],p=u===i-1?r?e[1]:f.clone().multiplyScalar(2).sub(e[u-1]):e[u+1];let g=f.clone().sub(m).normalize(),v=p.clone().sub(f).normalize(),y=g.clone().add(v).normalize();h.copy(y),0===u&&(y.equals(d)||y.clone().negate().equals(d))&&d.set(0,0,1);let x=d.clone().cross(y).normalize(),b=y.clone().cross(x).normalize();d.copy(b),c.copy(x),0===u&&(a.copy(b),o.copy(y));let w=new iZ().makeBasis(x,b,y);t.push(w)}let u=r?o:h,p=r?a:new ib(0,1,0),f=u.clone().cross(c).normalize(),m=Math.acos(p.dot(f));if(isNaN(m))return t;let g=p.clone().cross(f);u.dot(g)>0&&(m*=-1);for(let e=1;e<t.length;e++){let i=new iZ().makeRotationZ(m*e/t.length);t[e].multiply(i)}return t}_applyPathModifiers(e,t,i){let r=e.length,{angle:a,twist:o,startScale:h,endScale:c}=this.inputs.parameters.extrusion,d=new iZ,u=new iZ;return e.forEach((e,p)=>{let f=0===p?0:p===r-1?1:(p-t)/(r-(0===i?0:1)-(t+(1-i)));d.makeRotationZ(tK.lerp(a,a+o,f)*tK.DEG2RAD);let m=tK.lerp(h,c,f);u.makeScale(m,m,m),e.multiply(d).multiply(u)}),e}_computeShapePoints(e=12,t=__.ODD){let i,r=this.inputs.shapeData,a=r.extractShapePointsToFlatArray([],e),o=r.shapeHoles.map(t=>{let i=t.extractShapePointsToFlatArray([],e),r=[];for(let e=i.length-1;e>=1;e-=2){let t=i[e-1],a=i[e-0];r.push(t,a)}return r}),h;try{h=Ss({windingRule:t,elementType:_A.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]})}catch{h=Sl}try{i=Ss({windingRule:__.ODD,elementType:_A.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...o]})}catch{i=Sh}if(!h)throw Error("error generating geometry");let c=h.elementCount;if(i){h.elementCount+=i.elementCount;for(let e=0;e<i.elements.length;e++){let t=i.elements[e],r=e%2==0?h.vertexCount:0;h.elements.push(t+r)}for(let e=0;e<i.vertexIndices.length;e++){let t=i.vertexIndices[e],r=h.vertexCount;h.vertexIndices.push(t+r)}for(let e=0;e<i.vertices.length;e++){let t=i.vertices[e];h.vertices.push(t)}}let d=1/0,u=-1/0,p=1/0,f=-1/0;for(let e=0,t=h.vertexCount;e<t;e++){let t=2*e,i=h.vertices[t+0],r=h.vertices[t+1];i<d&&(d=i),i>u&&(u=i),r<p&&(p=r),r>f&&(f=r)}let m=[];for(let e=h.elementCount-1;e>=0;e--){let t=e>=c,i=2*e,a=h.elements[i+0],o=h.elements[i+1],d=a+o,u={start:a,count:o,normals:[],isHole:t,continuous:[],verticesStart:0,verticesCount:0};m.push(u);let p=a,f=d-1,g=a+1,v=r.roundedCurves.length;do{let e=p-a,i=h.vertices[2*f+0],c=h.vertices[2*f+1],m=h.vertices[2*p+0],y=h.vertices[2*p+1],x=h.vertices[2*g+0],b=h.vertices[2*g+1],w=m-i,S=y-c,_=Math.sqrt(w*w+S*S);w/=_,S/=_;let A=m-x,M=y-b,E=Math.sqrt(A*A+M*M);A/=E,M/=E,u.normals[2*e+0]=-M,u.normals[2*e+1]=A;let C=h.vertexIndices[p];if(Array.isArray(C))u.continuous[e]=!1;else{let[t,i]=r.getCurveIndexFromVertexId(C-1,!0);if(i>0&&i<1)u.continuous[e]=!0;else{let a=1===i?t+1:t-1;a=(a+v)%v;let o=1===i?0:1,h=r.roundedCurves[t].getTangent(i),c=r.roundedCurves[a].getTangent(o);u.continuous[e]=h.dot(c)>.95}}t&&(u.normals[2*e+0]*=-1,u.normals[2*e+1]*=-1),[f,p,g]=[p,g,g+1],g>=d&&(g-=o)}while(g!==a+1)}return{regions:[a,...o],infos:m,vertices:h.vertices}}_insertVertex(e,t,i,r,a){let o=2*t,h=3*t;e.positions[h+0]=i.x,e.positions[h+1]=i.y,e.positions[h+2]=i.z,e.normals[h+0]=r.x,e.normals[h+1]=r.y,e.normals[h+2]=r.z,e.uvs[o+0]=a.x,e.uvs[o+1]=a.y}_extrudeRegion(e,t,i,r,a,o,h){let c=new ib,d=new ib,u=new ib,p=new ib,f=new tJ;
3154i.forEach((o,h)=>{let m=r[h],g=e.verticesStart*i.length+e.verticesCount*h;for(let r=0;r<e.count;r++){let v=(e.start+r)*2;if(c.set(t[v+0],t[v+1],0),u.copy(c).applyMatrix4(o).add(m),e.continuous[r])p.set(e.normals[2*r+0],e.normals[2*r+1],0);else{let i=0===r?(e.start+e.count-1)*2:v-2;d.set(t[i+0],t[i+1],0),p.copy(c).sub(d),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(o).normalize(),f.set(0===r?1:r/e.count,h/(i.length-1)),this._insertVertex(a,g,u,p,f),g++,!e.continuous[r]||0===r){if(0===r)p.set(e.normals[2*r+0],e.normals[2*r+1],0),f.set(0,h/(i.length-1));else{let i=r===e.count-1?2*e.start:v+2;d.set(t[i+0],t[i+1],0),p.copy(d).sub(c),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(o).normalize(),this._insertVertex(a,g,u,p,f),g++}}});let m=i.length-1;for(let t=0;t<m;t++){let r=e.verticesStart*i.length+e.verticesCount*t,a=e.verticesStart*i.length+e.verticesCount*(t+1),h=0;for(let t=0;t<e.count;t++){(!e.continuous[t]||0===t)&&h++;let i=t===e.count-1?0:h+1,c=r+h,d=r+i,u=a+i,p=a+h;e.isHole?o.push(c,u,d,c,p,u):o.push(c,d,u,c,u,p),h++}}}_closeEnd(e,t,i,r,a,o,h){let c=e.vertexCount,d=new ib(0,0,h?-1:1).applyMatrix4(a),u=new ib,p=new tJ;for(let i=0;i<c;i++){let h=2*i;u.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(a).add(o),this._insertVertex(r,t+i,u,d,p)}let f=e.elements;for(let r=0;r<e.elementCount;r++){let e=3*r,a=f[e+0]+t,o=f[e+(h?1:2)]+t,c=f[e+(h?2:1)]+t;i.push(a,o,c)}}applyMatrix4OnRange(e,t,i){let r=e.elements,a=new t$().getNormalMatrix(e).elements,o,h,c,d,u=this.attributes.position,p=this.attributes.normal;if(!u||!p)return;let f=u.array,m=p.array,g=u.itemSize;for(let e=t*g,u=i*g;e<u;e+=g)o=f[e+0],h=f[e+1],c=f[e+2],d=1/(r[3]*o+r[7]*h+r[11]*c+r[15]),f[e+0]=(r[0]*o+r[4]*h+r[8]*c+r[12])*d,f[e+1]=(r[1]*o+r[5]*h+r[9]*c+r[13])*d,f[e+2]=(r[2]*o+r[6]*h+r[10]*c+r[14])*d,o=m[e+0],h=m[e+1],c=m[e+2],m[e+0]=a[0]*o+a[3]*h+a[6]*c,m[e+1]=a[1]*o+a[4]*h+a[7]*c,m[e+2]=a[2]*o+a[5]*h+a[8]*c;u.needsUpdate=!0,p.needsUpdate=!0}reverseIndicesOnRange(e,t){let i=this.index;if(i){for(let r=e;r<t;r+=3){let e=i.getX(r),t=i.getX(r+1),a=i.getX(r+2);i.setXYZ(r,a,t,e)}i.needsUpdate=!0}}};function _x(){let e=new rU;return e.setAttribute("position",new rT(new Float32Array([]),3)),e.setIndex(new rT(new Uint16Array([]),1)),e}var _b,_w,_S,__,_A,_M,_E=_x().attributes,_C=class extends rU{constructor(e,t){super(),this.charWidths=[],this.charCoords=[],this.wrappedText=[],this.isLowResolution=!1,this.vectorShapes=[],Object.assign(this.attributes,_E),this.userData={parameters:e,type:"TextGeometry"};let i=t.getFont(e.font);i?.isLoaded?(this.font=i,this.update(e,t)):this.updateFont(e.font,t).then(()=>{this.update(e,t),t?.requestRender()})}async updateFont(e,t){let i=t.getFont(e);i&&(this.font=i,await i.loadingPromise)}update(e,t){let i=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!i?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:r,height:a,depth:o,extrudeBevelSize:h,extrudeBevelSegments:c,text:d,textTransform:u}=e,p=yY.getDisplayedValue(d),f=function(e,t,i,r){let a="string"==typeof e.width?Number(r.getVariable(e.width)):e.width,o=[""],h="";for(let r of i)h+=r," "===r||r===`
3155`?(o[o.length-1]+=h,h="",r===`
3156`&&o.push("")):t.getTextWidth(o[o.length-1]+h,e)>a&&(o[o.length-1].length&&o.push(""),t.getTextWidth(o[o.length-1]+h,e)>a&&(1===h.length?(o[o.length-1]+=h,h=""):(o[o.length-1]+=h.slice(0,-1),h=h[h.length-1],o.push(""))));return o[o.length-1]+=h,o}(e,i,2===u?p.toUpperCase():3===u?p.toLowerCase():p,t),{shapes:m,charWidths:g,charCoords:v}=i.generateShapes(f,e,t),y=("number"==typeof r?r:Number(t.getVariable(r)))*.5,x=("number"==typeof a?a:Number(t.getVariable(a)))*.5,b=m.map(e=>new wZ().fromShape(e,!0));this.vectorShapes=b;let w=b.map(e=>Sm.create({shape:e,parameters:{depth:o,extrudeBevelSegments:c,extrudeBevelSize:h,windingRule:o<=0?__.NONZERO:__.ODD,subdivisions:this.isLowResolution&&o>0?1:12}})),S=w.length?vB(w):_x();S.translate(-y,x,0),this.dispose(),this.wrappedText=f,this.charCoords=v,this.charWidths=g,this.deleteAttribute("extrudeNormal"),Object.entries(S.attributes).forEach(([e,t])=>{this.setAttribute(e,t)}),this.setIndex(S.index),this.computeBoundingSphere()}clone(){let e=pi(new rU,_C.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}
3156copy(e){return Object.entries(e.attributes).forEach(([e,t])=>{this.setAttribute(e,t)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e,t){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:{textValue:e}},t)}get text(){return this.userData.parameters.text??""}},_T=new Promise(e=>{_M=e}),_P=!1,_D=["font"];function _O(e,t,i,r){let a,o,h,c;for(let i of("PathGeometry"===e.type?(o=JSON.parse(JSON.stringify(e)),h=[[],["extrusion"]]):(o={...e},h=[[]]),h)){let e=o;for(let t of i)e=e[t];for(a in e){let o=e[a];gv(o)&&!_D.includes(a)&&(e[a]=t.getVariable(o,[r.uuid,"geometry",...i,a]),gv(e[a])&&(e[a]=1))}}let d={parameters:o,type:o.type};if("PathGeometry"===o.type)d.path=o.path;else if("VectorGeometry"===o.type){let e=wZ.createFromState(o.shape,o.width,o.height);d.shape=e}else if("NonParametricGeometry"===o.type){if(o.data.groups&&o.data.groups?.forEach(e=>e.materialIndex=Math.max(e.materialIndex??0,0)),d.geometry=new ly().parse(o),0===d.geometry.groups.length){let e=d.geometry;e.addGroup(0,Math.max(e.getIndex()?.count??0,e.getAttribute("position").count),0)}}else if("SubdivGeometry"===o.type){let t=new _V(o,i);return t.data=e,t}else{if("TextGeometry"===o.type||"InputGeometry"===o.type)return new _C(o,t);if("UIGeometry"===o.type)return S1.create({parameters:{width:o.width,height:o.height,cornerRadius:o.cornerRadius,cornerType:o.cornerType}})}try{c=_5(d)}catch(t){console.error(t),console.error(`Error generating geometry with inputs: ${d}`);let e=wZ.createFromState(g8.defaultData(),100,100);d.shape=e,d.type="VectorGeometry",c=_5(d)}return c}var _I=new iZ;function _R(e,t,i,r){let a=e.position.array,o=e.normal.array,h=_I.makeScale(t,i,r).invert().elements,c,d,u;for(var p=0,f=a.length;p<f;p+=3)a[p]*=t,a[p+1]*=i,a[p+2]*=r,c=o[p],d=o[p+1],u=o[p+2],o[p]=h[0]*c+h[4]*d+h[8]*u,o[p+1]=h[1]*c+h[5]*d+h[9]*u,o[p+2]=h[2]*c+h[6]*d+h[10]*u;e.position.needsUpdate=!0,e.normal.needsUpdate=!0}var _L,_B,_z=new i_,_F=new ib;_T.then(e=>{_B=e});var _N=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),_U=new Uint32Array([0,1,2,3]),_k=new Uint8Array([4]),_V=class extends rU{constructor(e,t){super(),this.data=e,this.flatShading=t,this.subdivPointer=0,this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let i=this.data.scaleBaked,r=gl.div(t,i);if(r.every(e=>1===e))return;this.subdividedGeometry&&_R(this.subdividedGeometry.attributes,...r),this.originalGeometry&&_R(this.originalGeometry.attributes,...r),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*r[0],height:a.height*r[1],depth:a.depth*r[2]},this.originalGeometry.boundingSphere.center.multiply(_F.fromArray(r));let o=_F.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=o/2}ensureSubdivPointer(){return 0===this.subdivPointer&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,i;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:i}=_V.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new r1(100,100,100),i=0}this.subdivPointer=i,this.originalGeometry=e,this.subdividedGeometry=t??void 0,Object.assign(this,this.subdividedGeometry??this.originalGeometry),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(_V.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;null===e.boundingSphere&&(e.boundingSphere=new iV,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,i=e.boundingSphere.center;_z.setFromBufferAttribute(t),_z.getCenter(i),e.boundingSphere.radius=i.distanceTo(_z.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),_z.getSize(_F);let r={width:_F.x,height:_F.y,depth:_F.z};return this.userData.parameters=r,r}static build(e,t,i,r){let a,o,h,c=e?.phongAngle??35;!1===i&&(c=-1),t&&(_B.free_bvh(t),_B.free_subdivision_surface(t));try{a=_V.allocate(e,r)}catch(t){console.error(t,e),a=_V.allocate({positionWASM:_N,indexWASM:_U,verticesPerFaceWASM:_k},r)}if(_B.set_destination_refinement_level(a,0),o=_V.buildLevel(a,!0,c),e.subdivisions>0)try{_B.set_destination_refinement_level(a,e.subdivisions),h=_V.buildLevel(a,!1,c)}catch{try{_B.set_destination_refinement_level(a,e.subdivisions-1),h=_V.buildLevel(a,!1,c)}catch{h=null}}else h=null;return{subdivPointer:a,originalGeometry:o,subdividedGeometry:h}}static primitiveToQuads(e,t,i){let r,a,o,h,c;e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),"DodecahedronGeometry"===e.type&&(e.detail=0);let d=void 0!==e.shape||void 0!==e.path?t.geometry:_O(e,i,!1,t),u;if(u="TorusGeometry"===e.type&&e.arc===2*Math.PI?d.getClosedTorusIndicesForBooleanOrSubdiv():d.getIndex(),{positions:r,triIndices:h}=_G(d.getAttribute("position"),u),"CylinderGeometry"===e.type&&0===e.cornerRadius&&0===e.hollow&&!1===e.openEnded){let t=e.radialSegments*e.heightSegments*6,i=t
3156+3*e.radialSegments;c=[t,i]}return{indices:a,verticesPerFace:o}=_Y(r,h,d,c),{positions:r,indices:a,verticesPerFace:o}}static allocate(e,t){let i,r,a,o,h=[],c=[];e.positionWASM&&e.positionWASM.length>0?(r=e.positionWASM,a=e.indexWASM,o=e.verticesPerFaceWASM):(r=_N,a=_U,o=_k);let d=r.length,u=a.length,p=o.length,f=r.length+h.length+c.length,m=a.length+o.length,g=f*Float32Array.BYTES_PER_ELEMENT+m*Uint32Array.BYTES_PER_ELEMENT,v=f*Float32Array.BYTES_PER_ELEMENT,y=(Uint32Array.BYTES_PER_ELEMENT,_B._malloc(g)),x=new Float32Array(_B.HEAPF32.buffer,y,f),b=new Uint32Array(_B.HEAPU32.buffer,y+v,m);x.set(r,0),x.set(h,r.length),x.set(c,r.length+h.length),b.set(a,0),b.set(o,a.length),e?.scaleBaked?.some(e=>1!==e)&&(i=new iZ().makeScale(...e.scaleBaked)),t&&(i?i.premultiply(t):i=t);let w=i?_B.alloc_subdivision_surface2(y,d,y+v,u,y+v+a.length*Uint32Array.BYTES_PER_ELEMENT,p,i.elements):_B.alloc_subdivision_surface(y,d,y+v,u,y+v+a.length*Uint32Array.BYTES_PER_ELEMENT,p);return _B._free(y),w}static buildLevel(e,t,i,r,a){let o=a?_B.get_mesh_data2(e,t?_B.Level.CONTROL:_B.Level.REFINED,i,a.elements):_B.get_mesh_data(e,t?_B.Level.CONTROL:_B.Level.REFINED,i),h=_B.HEAPU32.subarray(o>>2,(o>>2)+8),c=h.subarray(4,8),d=0,u=_B.HEAPU32[h[d]>>2],p=_B.HEAPF32.subarray(u>>2,(u>>2)+c[d]);d++;let f=_B.HEAPU32[h[d]>>2],m=_B.HEAPF32.subarray(f>>2,(f>>2)+c[d]);d++;let g=_B.HEAPU32[h[d]>>2],v=_B.HEAPU32.subarray(g>>2,(g>>2)+c[d]);d++;let y=_B.HEAPU32[h[d]>>2],x=_B.HEAPU32.subarray(y>>2,(y>>2)+c[d]);if(d++,void 0===r){let e=new rU;if(e.setIndex(new rD(x,1)),e.setAttribute("position",new rO(p,3)),e.setAttribute("normal",new rO(m,3)),t){e.setAttribute("faceMap",new rD(v,1));let t=new Float32Array(m.length/3*4).fill(0);e.setAttribute("color",new rT(t,4))}return _B.free_mesh_data(o),e.userData.type="SubdivGeometry",e}r.getAttribute("position").copyArray(p),r.getAttribute("normal").copyArray(m),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,_B.free_mesh_data(o)}static freeSubdivPointer(e){_B.free_bvh(e),_B.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,i){let r=_B.get_wireframe_data_for_base_level(e),a=_B.HEAPU32.subarray(r>>2,(r>>2)+4),o=a.subarray(2,4),h=0,c=_B.HEAPU32[a[h]>>2],d=_B.HEAPF32.subarray(c>>2,(c>>2)+o[h]);h++;let u=_B.HEAPU32[a[h]>>2],p=_B.HEAPU32.subarray(u>>2,(u>>2)+o[h]);if(void 0===t){let e=new rU;e.setAttribute("position",new rO(d,3));let t=new Float32Array(d.length);for(let e=0,r=d.length;e<r;)t[e++]=i.r,t[e++]=i.g,t[e++]=i.b;return e.setAttribute("color",new rT(t,3)),e.setIndex(new rD(p,1)),_B.free_wireframe_data_for_base_level(r),e}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,_B.free_wireframe_data_for_base_level(r)}static updateCollabMesh(e,t,i){let r=0===t;r||_B.set_destination_refinement_level(e,t);let a=i?_B.get_topological_data2(e,r?_B.Level.CONTROL:_B.Level.REFINED,i.elements):_B.get_topological_data(e,r?_B.Level.CONTROL:_B.Level.REFINED),o=_B.HEAPU32.subarray(a>>2,(a>>2)+6),h=o.subarray(3,6),c=0,d=_B.HEAPU32[o[c]>>2],u=new Float32Array(_B.HEAPF32.subarray(d>>2,(d>>2)+h[c]));c++;let p=_B.HEAPU32[o[c]>>2],f=new Uint32Array(_B.HEAPU32.subarray(p>>2,(p>>2)+h[c]));c++;let m=_B.HEAPU32[o[c]>>2],g=new Uint8Array(_B.HEAPU32.subarray(m>>2,(m>>2)+h[c]));return _B.free_topological_data(a),{positions:u,indices:f,verticesPerFace:g}}},_j=["getX","getY","getZ"];function _G(e,t){let i={},r=t?t.count:e.count,a=0,o=[],h=[];for(let c=0;c<r;c++){let r=t?t.getX(c):c,d="";for(let t=0;t<3;t++)d+=`${~~(1e4*e[_j[t]](r))},`;if(d in i)o.push(i[d]);else{for(let t=0;t<3;t++)h.push(e[_j[t]](r));i[d]=a,o.push(a),a++}}let c=[];for(let e=0;e<o.length;e+=3)o[e]===o[e+1]||o[e]===o[e+2]||o[e+1]===o[e+2]||c.push(o[e],o[e+1],o[e+2]);return{positions:h,triIndices:c}}var _H=new ib,_W=new ib,_q=new ib,_X=new ib;function _Y(e,t,i,r){let a=[],o=[];if(void 0!==i.userData.shape&&0===i.userData.parameters.depth&&0===i.userData.shape.shapeHoles.length){let t=i.userData.shape.extractShapePointsToFlatArray([]),r=i.userData.parameters.spikes;if("EllipseGeometry"===i.userData.type&&r<=24&&r%4==0&&i.userData.parameters.angle>=360){let e=t.length/2/r;t=t.filter((t,i)=>Math.floor(i/2)%e==0)}let h=0;for(let e=0;e<t.length;e+=2)h+=(t[e]-t[(0===e?t.length:e)-2])*(t[e+1]+t[(0===e?t.length:e)-1]);e.length=0;let c=0;if(h<0)for(let i=0;i<t.length;i+=2)e.push(t[i],t[i+1],0),a.push(c++);else for(let i=t.length-2;i>=0;i-=2)e.push(t[i],t[i+1],0),a.push(c++);return o.push(c),{indices:a,verticesPerFace:o}}let h=new Float32Array([i.userData.parameters.depth])[0],c=0;for(;c<t.length;){if(i.useNgonForTopBottomFaceDuringBake){let i=0;if((e[3*t[c]+2]===h||0===e[3*t[c]+2])&&i++,(e[3*t[c+1]+2]===h||0===e[3*t[c+1]+2])&&i++,(e[3*t[c+2]+2]===h||0===e[3*t[c+2]+2])&&i++,3===i)break}t[c+1]===t[c+3]&&t[c+2]===t[c+5]||t[c+0]===t[c+3]&&t[c+2]===t[c+4]?(_H.set(e[3*t[c]],e[3*t[c]+1],e[3*t[c]+2]),_W.set(e[3*t[c+1]],e[3*t[c+1]+1],e[3*t[c+1]+2]),_q.set(e[3*t[c+4]],e[3*t[c+4]+1],e[3*t[c+4]+2]),_X.set(e[3*t[c+5]],e[3*t[c+5]+1],e[3*t[c+5]+2]),_W.sub(_H).normalize(),_q.sub(_H).normalize(),_X.sub(_H).normalize(),Math.abs(_W.cross(_q).dot(_X))>.005||r&&r.some((e,t)=>t%2!=1&&c>=r[t]&&c<r[t+1])?(a.push(t[c],t[c+1],t[c+2]),o.push(3),c+=3):(a.push(t[c],t[c+1],t[c+4],t[c+5]),o.push(4),c+=6)):(a.push(t[c],t[c+1],t[c+2]),o.push(3),c+=3)}if(i.useNgonForTopBottomFaceDuringBake){let t=[],r=[],c=0;for(let i=0,a=0;i<e.length;i+=3,a++)0===e[i+2]&&(t.push(a),c++),e[i+2]===h&&r.push(a);if(0===i.userData.parameters.extrudeBevelSize){let e=r[0];r[0]=r[1],r[1]=e}t.reverse(),a.push(...t,...r),o.push(c,c)}return{indices:a,verticesPerFace:o}}var _Q={};function _Z(e){let t=e.length,i=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,a=Number.isInteger(e[0])?i:r,o=Mf._malloc(a);return(Number.isInteger(e[0])?new Uint32Array(Mf.HEAPU32.buffer,o,t):new Float32Array(Mf.HEAPF32.buffer,o,t)).set(e,0),o}function _K(e){switch(e){case 0:return Mf.OP.UNION;case 1:return Mf.OP.INTERSECTION;case 2:return Mf.OP.A_MINUS_B;default:throw Error("Unknown boolean operation "+e)}}function _J(e,t){void 0===Mm&&(Mm=Mf.init_csg());let i=_Z(e),r=Mf.csg_calc_topological(Mm,i,e.length,_K(t));Mf._free(i);let a=Mf.HEAPU32.subarray(r>>2,(r>>2)+6),o=a.subarray(3,6),h=0,c=Mf.HEAPU32[a[h]>>2],d=new Float32Array(Mf.HEAPF32.subarray(c>>2,(c>>2)+o[h]));h++;let u=Mf.HEAPU32[a[h]>>2],p=new Uint32Array(Mf.HEAPU32.subarray(u>>2,(u>>2)+o[h]));h++;let f=Mf.HEAPU32[a[h]>>2],m=new Uint8Array(Mf.HEAPU32.subarray(f>>2,(f>>2)+o[h]));return Mf.free_mesh_data(r),{positions:d,indices:p,verticesPerFace:m}}function _$(e,t,i,r){void 0===Mm&&(Mm=Mf.init_csg());let a=_Z(e),o=Mf.csg_calc(Mm,a,e.length,r,_K(t));Mf._free(a);let h=Mf.HEAPU32.subarray(o>>2,(o>>2)+5),c=h.subarray(2,5),d=0,u=Mf.HEAPU32[h[d]>>2],p=Mf.HEAPF32.subarray(u>>2,(u>>2)+c[d]);d++;let f=Mf.HEAPU32[h[d]>>2],m=Mf.HEAPF32.subarray(f>>2,(f>>2)+c[d]),g=c[++d];i.setAttribute("position",new rO(p,3)),i.setAttribute("normal",new rO(m,3));let v=Mf.HEAPF32.subarray((o>>2)+5,(o>>2)+5+6);return null===i.boundingSphere&&(i.boundingSphere=new iV),i.boundingSphere.center.set(v[0],v[1],v[2]),i.boundingSphere.radius=(v[3]**2+v[4]**2+v[5]**2)**.5,i.userData.parameters={width:2*v[3],height:2*v[4],depth:2*v[5]},Mf.free_mesh_data(o),g}function _0(e,t,i){let r,a,o;if(void 0===Mf)return -1;if(t&&void 0!==e.userData.positions){let t=e.userData;o=t.verticesPerFace.length,r=t.positions,a=Array(t.verticesPerFace.reduce((e,t)=>
3156e+t,0)+o);for(let e=0,i=0,r=0;e<t.verticesPerFace.length;e++){a[r++]=t.verticesPerFace[e];for(let o=0;o<t.verticesPerFace[e];o++)a[r++]=t.indices[i++]}}else({positions:r,faceIndices:a,nFaces:o}=function(e,t,i){let r,a;a="TorusGeometry"===e.userData.parameters.type&&e.userData.parameters.arc===2*Math.PI?e.getClosedTorusIndicesForBooleanOrSubdiv():e.getIndex();let{positions:o,triIndices:h}=_G(e.getAttribute("position"),a),c;if(t&&i){let{indices:t,verticesPerFace:i}=_Y(o,h,e);c=i.length,r=[];for(let e=0,a=0;e<c;e++){r.push(i[e]);for(let o=0;o<i[e];o++)r.push(t[a++])}}else{let e=h.length;r=Array(e+e/3),c=0;for(let e=0,t=0;t<r.length;)r[t++]=3,c++,r[t++]=h[e++],r[t++]=h[e++],r[t++]=h[e++]}return{positions:o,faceIndices:r,nFaces:c}}(e,t,i));let h=r.length,c=a.length,d=r.length,u=a.length,p=d*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,f=d*Float32Array.BYTES_PER_ELEMENT,m=(Uint32Array.BYTES_PER_ELEMENT,Mf._malloc(p)),g=new Float32Array(Mf.HEAPF32.buffer,m,d),v=new Uint32Array(Mf.HEAPU32.buffer,m+f,u);g.set(r,0),v.set(a,0);let y=Mf.get_csg_mesh(m,h,m+f,c,o);return Mf._free(m),y}function _1(e){return Mf.has_open_edges(e)}function _2(e,t){Mf.transform_csg_mesh(e,t.elements)}function _3(e){Mf.free_csg_mesh(e)}((e,t)=>{for(var i in t)tg(e,i,{get:t[i],enumerable:!0})})(_Q,{calcBoolean:()=>_$,calcBooleanTopological:()=>_J,freeMeshSet:()=>_3,getMeshSet:()=>_0,hasOpenEdges:()=>_1,transformMeshSet:()=>_2}),new Promise(e=>{Mu=e}).then(e=>Mf=e);var _4={ConeGeometry:wv,CubeGeometry:wy,CylinderGeometry:wp,DodecahedronGeometry:wS,EllipseGeometry:Sv,HelixGeometry:SA,IcosahedronGeometry:SC,LatheGeometry:SP,NonParametricGeometry:SQ,PolygonGeometry:SZ,PyramidGeometry:SK,RectangleGeometry:S1,SphereGeometry:S2,PlaneGeometry:S3,BackdropGeometry:S4,StarGeometry:S6,TextFrameGeometry:S8,TorusGeometry:S9,TorusKnotGeometry:S7,TriangleGeometry:_e,PathGeometry:_v,VectorGeometry:Sm},_5=e=>_4[e.type].create(e);function _6(e){return null!==e&&"booleanOp"in e}var _8=class extends wu(r$){constructor(){super(...arguments),this.booleanMeshSetAddress=-1,this.booleanWasTransformed=!1,this.booleanMatrixInvOld=new iZ}updateVisible(e){super.updateVisible(e),this.visible=!_6(this.parent)&&this.visible,_6(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){-1!==this.booleanMeshSetAddress&&(_Q.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),_6(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){for(let e of(this.freeBooleanPointer(),this.children))e instanceof _8&&(e.freeBooleanPointer(),_6(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let i=super.updateTransformState(e,t);return i&&_6(this.parent)&&this.invalidateDownstreamBooleanData(!0),i}onVariableUpdate(e=!1){super.onVariableUpdate(e),_6(this.parent)&&this.invalidateDownstreamBooleanData(!0)}},_9=new i_;function _7(e,t=0,i=e.count,r,a){let o=1/0,h=1/0,c=1/0,d=-1/0,u=-1/0,p=-1/0;for(let r=t;r<i;r++){let t=e.getX(r),i=e.getY(r),a=e.getZ(r);t<o&&(o=t),i<h&&(h=i),a<c&&(c=a),t>d&&(d=t),i>u&&(u=i),a>p&&(p=a)}_9.min.set(o,h,c),_9.max.set(d,u,p),_9.getCenter(r),_9.getSize(a).multiplyScalar(.5)}var Ae=new rU,At=new rM,Ai=class extends _8{constructor(e,t){super(Ae,At),this.super_Entity(e,t)}updateState(e,t){this.updateState_Entity(e,t)}updateEntityBoxSize(e,t){let i=this.geometry.getAttribute("position");void 0!==i?_7(i,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:i.count,e,t):super.updateEntityBoxSize(e,t)}},Ar=class{constructor(e){if(this.hashProperties=void 0,this.isNode=!0,this.shortcuts={},null===Ar.uuidContext)throw Error("plz startContext");Ar.uuidContext===Ar.globalContext?this.uuid="_gid"+Ar.uuidContext.nodeContextUuid++:this.uuid="_uid"+Ar.uuidContext.nodeContextUuid++,this.type=e,this.name=""}static startContext(e){null===this.uuidContext||this.uuidContext===Ar.globalContext?this.uuidContext=e:console.error("Can't start context twice")}static endContext(e){this.uuidContext!==e&&console.error("Can't end context twice"),this.uuidContext=null}analyze(e,t){t=t??{},e.analyzing=!0,this.build(e.addFlow(t.slot,t.cache,t.context),"v4"),e.clearVertexNodeCode(),e.clearFragmentNodeCode(),e.removeFlow(),e.analyzing=!1}analyzeAndFlow(e,t,i){return i=i??{},this.analyze(e,i),this.flow(e,t,i)}flow(e,t,i){i=i??{},e.addFlow(i.slot,i.cache,i.context);let r={result:this.build(e,t),code:e.clearNodeCode(),extra:e.context.extra};return e.removeFlow(),r}build(e,t,i){t=t??this.getType(e,t);let r=e.getNodeData(i??this);return e.analyzing&&this.appendDepsNode(e,r,t),-1===e.nodes.indexOf(this)&&e.nodes.push(this),void 0!==this.updateFrame&&-1===e.updaters.indexOf(this)&&e.updaters.push(this),this.generate(e,t,i)}updateFrame(e){}generateReadonly(e,t,i,r,a,o){return""}generate(e,t,i,r,a){return""}parse(e,t,i,r){}appendDepsNode(e,t,i){t.deps=(t.deps||0)+1;let r=e.getTypeLength(i);(r>
vendor: 15,097 bytes, lines 3156-3160
3156(t.outputMax||0)||this.getType(e,i))&&(t.outputMax=r,t.output=i)}setName(e){this.name=e}getName(){return this.name}getType(e,t){return"sampler2D"===t||"samplerCube"===t?t:this.type}},As=Ar;As.globalContext={nodeContextUuid:0},As.uuidContext=Ar.globalContext;var Aa=class{constructor(e){e=e??{},this.name=e.name,this.type=e.type,this.node=e.node,this.size=e.size,this.needsUpdate=e.needsUpdate}get value(){return this.node.value}set value(e){this.node.value=e}},An=new class{constructor(){this.nodes={},this.keywords={}}add(e){this.nodes[e.name]=e}addKeyword(e,t,i){i=void 0===i||i,this.keywords[e]={callback:t,cache:i}}remove(e){delete this.nodes[e.name]}removeKeyword(e){delete this.keywords[e]}get(e){return this.nodes[e]}getKeyword(e,t){return this.keywords[e].callback(t)}getKeywordData(e){return this.keywords[e]}contains(e){return void 0!==this.nodes[e]}containsKeyword(e){return void 0!==this.keywords[e]}},Ao=class extends As{constructor(e,t){super(e),this.scope="",t=t??{},this.shared=void 0===t.shared||t.shared,this.unique=void 0!==t.unique&&t.unique}build(e,t,i,r){if(t=t??this.getType(e),this.getShared(e,t)){let a=this.getUnique(e,t);a&&void 0===this.uuid&&(this.uuid=tK.generateUUID()),i=e.getUUID(i??this.getUUID(),!a);let o=e.getNodeData(i),h=o.output||this.getType(e);if(e.analyzing)return(o.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,o,t),this.generate(e,t,i)):super.build(e,t,i);if(a)return o.name=o.name||super.build(e,t,i),o.name;if(!this.getLabel()&&(!this.getShared(e,h)||e.context.ignoreCache||1===o.deps))return super.build(e,t,i);i=this.getUUID(!1);let c=this.getTemp(e,i);if(c)return e.format(c,h,t);{c=super.generate(e,t,i,o.output,r);let a=this.generate(e,h,i);return e.addNodeCode(c+" = "+a+";"),e.format(c,h,t)}}return super.build(e,t,i)}getShared(e,t){return"sampler2D"!==t&&"samplerCube"!==t&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return"string"==typeof this.scope&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let i=e.getVars()[t];return i?i.name:void 0}generate(e,t,i,r,a){return this.getShared(e,t)||console.error("TempNode is not shared"),i=i??this.uuid,e.getTempVar(i,r??this.getType(e),a,this.getLabel()).name}},Al=class extends Ao{constructor(e,t){(t=t??{}).shared=void 0!==t.shared&&t.shared,super(e,t),this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,i,r,a,o){i=e.getUUID(i??this.getUUID()),r=r??this.getType(e);let h=e.getNodeData(i);return this.getReadonly()&&void 0!==this.generateReadonly?this.generateReadonly(e,t,i,r,a,o):e.isShader("vertex")?(h.vertex||(h.vertex=e.createVertexUniform(r,this,a,o,this.getLabel())),e.format(h.vertex.name,r,t)):(h.fragment||(h.fragment=e.createFragmentUniform(r,this,a,o,this.getLabel())),e.format(h.fragment.name,r,t))}},Ah=class extends Al{constructor(e=0,t){super("v2"),this.nodeType="Vector2",this.value=e instanceof tJ?e:new tJ(e,t)}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,t,i,r,a,o){return e.format("vec2("+this.value.x+", "+this.value.y+")",r,t)}},Ac=class extends Al{constructor(e=0,t,i){super("v3"),this.nodeType="Vector3",this.value=e instanceof ib?e:new ib(e,t,i)}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,t,i,r,a,o){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",r,t)}},Ad=class extends Al{constructor(e){super("v4"),this.nodeType="Vector4",this.value=e instanceof xx?e:new xx(e.r,e.g,e.b,e.a)}generateReadonly(e,t,i,r,a,o){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",r,t)}},Au=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Ap=/[a-z_0-9]+/gi,Af=class extends Ao{constructor(e,t,i,r,a){super(a),this.src="",this.nodeType="Function",this.useKeywords=!0,this.includes=[],this.extensions={},this.keywords={},this.isMethod=void 0===a,this.isInterface=!1,this.parse(e,t,i,r)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,i,r,a){let o,h=0,c=this.src;if(this.includes)for(let t=0;t<this.includes.length;t++)e.include(this.includes[t],this);for(let t in this.extensions)e.extensions[t]=!0;let d=[];for(;o=Ap.exec(this.src);)d.push(o);for(let t=0;t<d.length;t++){let i=d[t],r=i[0],a=!this.isMethod||!this.getInputByName(r),o=r;if(this.keywords[r]||this.useKeywords&&a&&An.containsKeyword(r)){let t=this.keywords[r];if(!t){let i=An.getKeywordData(r);i.cache&&(t=e.keywords[r]),t=t||An.getKeyword(r,e),i.cache&&(e.keywords[r]=t)}o=t.build(e)}r!==o&&"."!==c[i.index+h-1]&&(c=c.substring(0,i.index+h)+o+c.substring(i.index+r.length+h),h+=o.length-r.length),void 0===this.getIncludeByName(o)&&An.contains(o)&&e.include(An.get(o))}return"source"===t?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),t)}parse(e,t,i,r){if(this.src=e||"",this.includes=t??[],this.extensions=i??{},this.keywords=r??{},this.isMethod){let e=Au.exec(this.src);if(this.inputs=[],e&&4==e.length){this.type=e[1],this.name=e[2];let t=e[3].match(Ap);if(t){let e=0;for(;e<t.length;){let i=t[e++],r;"in"===i||"out"===i||"inout"===i?r=t[e++]:(r=i,i="");let a=t[e++];this.inputs.push({name:a,type:r,qualifier:i})}}this.isInterface=-1===this.src.indexOf("{")}else this.type="",this.name=""}}},Am=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Ag=class extends Ao{constructor(e="",t){super(),this.src="",this.useDefine=!1,this.nodeType="Const",this.parse(e||Ag.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,i,r,a){this.src=e||"";let o,h,c="",d=Am.exec(e);this.useDefine=a??"#"===this.src.charAt(0),d&&d.length>1?(h=d[1],o=d[2],c=d[3]):(o=this.src,h="f"),this.name=o,this.type=h,this.value=c}build(e,t){if("source"===t){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),t)}generate(e,t,i,r,a){return e.format(this.name,this.getType(e),t)}};Ag.PI="PI",Ag.PI2="PI2",Ag.RECIPROCAL_PI="RECIPROCAL_PI",Ag.RECIPROCAL_PI2="RECIPROCAL_PI2",Ag.LOG2="LOG2",Ag.EPSILON="EPSILON";var Av=RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
3157)*?)}`,"gim"),Ay=RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Ax=class extends Ao{constructor(e=""){super(),this.inputs=[],this.src="",this.nodeType="Struct",this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,i,r,a){return"source"===t?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=Av.exec(e);if(t){let e=t[2],i;for(;i=Ay.exec(e);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}},Ab=class extends Ao{constructor(e){super("v2",{shared:!1}),this.nodeType="UV",this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let i=this.index>0?this.index+1:"",r=e.isShader("vertex")?"uv"+i:"vUv"+i;return e.format(r,this.getType(e),t)}};An.addKeyword("uv",function(){return new Ab}),An.addKeyword("uv2",function(){return new Ab(1)});var Aw=class extends Ao{constructor(e,t){super("v4"),this.nodeType="ColorSpace",this.input=e,this.method=t??Aw.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case 3e3:return["Linear"];case 3001:return["sRGB"];default:return[]}}generate(e,t){let i=this.input.build(e,"v4"),r=this.getType(e),a=Aw.Nodes[this.method],o=e.include(a);if(o===Aw.LINEAR_TO_LINEAR)return e.format(i,r,t);if(a.inputs?.length!==2)return e.format(o+"( "+i+" )",r,t);{let a=this.factor.build(e,"f");return e.format(o+"( "+i+", "+a+" )",r,t)}}fromEncoding(e){let t=Aw.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Aw.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}};Aw.Nodes={LinearToLinear:new Af(["vec4 LinearToLinear( in vec4 value ) {","	return value;","}"].join(`
3158`)),sRGBToLinear:new Af(["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(`
3159`)),LinearTosRGB:new Af(["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(`
3160`))},Aw.LINEAR_TO_LINEAR="LinearToLinear",Aw.SRGB_TO_LINEAR="sRGBToLinear",Aw.LINEAR_TO_SRGB="LinearTosRGB";var AS=class extends Af{constructor(e="",t,i,r,a){super(e,a,r,i,t),this.nodeType="Expression"}},A_=class extends Al{constructor(e=new iu,t,i,r){super("v4",{shared:!0}),this.nodeType="Texture",this.value=e,this.uv=t??new Ab,this.bias=i,this.project=void 0!==r&&r}getTexture(e,t){return super.generate(e,t,this.value.uuid,"t")}generate(e,t){let i,r;if("sampler2D"===t)return this.getTexture(e,t);let a=this.getTexture(e,t),o=this.uv.build(e,this.project?"v4":"v2"),h=this.bias?this.bias.build(e,"f"):void 0;void 0===h&&e.context.bias&&(h=e.context.bias.setTexture(this).build(e,"f")),i=this.project?"texture2DProj":h?"tex2DBias":"tex2D",r=h?i+"( "+a+", "+o+", "+h+" )":i+"( "+a+", "+o+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},d=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new Aw(new AS("",d)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(r),r=this.colorSpace.build(e,d),e.removeContext(),e.format(r,d,t)}},AA=class extends Al{constructor(e){super("f"),this.nodeType="Float",this.value=e??0}generateReadonly(e,t,i,r,a,o){return e.format(this.value+(this.value%1?"":".0"),r,t)}},AM=class extends Ao{constructor(e,t){super(),this.inputs=[],this.nodeType="FunctionCall",this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,i,r,a){r=this.getType(e);let o=this.value,h=o.build(e,t)+"( ",c=[];if(o.inputs){for(let t=0;t<o.inputs.length;t++){let i=o.inputs[t],r=this.inputs[t]||this.inputs[i.name];c.push(r.build(e,e.getTypeByFormat(i.type)))}h+=c.join(", ")+" )"}return e.format(h,r,t)}},AE=class extends Ao{constructor(e,t,i=AE.ADD){super(),this.nodeType="Operator",this.type=e.type,this.a=e,this.b=t,this.op=i}getType(e){let t=this.a.getType(e),i=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(i)>e.getTypeLength(t)?i:t}generate(e,t){let i=this.getType(e);this.type=i;let r=this.a.build(e,i),a=this.b.build(e,i);return e.format("( "+r+" "+this.op+" "+a+" )",i,t)}};AE.ADD="+",AE.SUB="-",AE.MUL="*",AE.DIV="/";var AC=class extends Ao{constructor(e,t=AC.ABS,i,r){super(),this.nodeType="Math",this.a=e,"string"!=typeof t?this.b=t:r=t,"string"!=typeof i?this.c=i:r=i,this.method=r,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case AC.MIX:case AC.CLAMP:case AC.REFRACT:case AC.SMOOTHSTEP:case AC.FACEFORWARD:return 3;case AC.MIN:case AC.MAX:case AC.MOD:case AC.STEP:case AC.REFLECT:case AC.DISTANCE:case AC.DOT:case AC.CROSS:case AC.POW:return 2;default:return 1}}getInputType(e){let t=e.getTypeLength(this.a.getType(e)),i=this.b?e.getTypeLength(this.b.getType(e)):0,r=this.c?e.getTypeLength(this.c.getType(e)):0;return t>i&&t>r?this.a.getType(e):i>r?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case AC.LENGTH:case AC.DISTANCE:case AC.DOT:return"f";case AC.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let i,r,a,o=this.a?e.getTypeLength(this.a.getType(e)):0,h=this.b?e.getTypeLength(this.b.getType(e)):0,c=this.c?e.getTypeLength(this.c.getType(e)):0,d=this.getInputType(e),u=this.getType(e);switch(this.type=u,this.method){case AC.NEGATE:return e.format("( -"+this.a.build(e,d)+" )",d,t);case AC.INVERT:return e.format("( 1.0 - "+this.a.build(e,d)+" )",d,t);case AC.CROSS:i=this.a.build(e,"v3"),r=this.b.build(e,"v3");break;case AC.STEP:i=this.a.build(e,1===o?"f":d),r=this.b.build(e,d);break;case AC.MIN:case AC.MAX:case AC.MOD:i=this.a.build(e,d),r=this.b.build(e,1===h?"f":d);break;case AC.REFRACT:i=this.a.build(e,d),r=this.b.build(e,d),a=this.c.build(e,"f");break;case AC.MIX:i=this.a.build(e,d),r=this.b.build(e,d),a=this.c.build(e,1===c?"f":d);break;default:i=this.a.build(e,d),this.b&&(r=this.b.build(e,d)),this.c&&(a=this.c.build(e,d))}let p=[];p.push(i),r&&p.push(r),a&&p.push(a);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",u,t)}};AC.RAD="radians",AC.DEG="degrees",AC.EXP="exp",AC.EXP2="exp2",AC.LOG="log",AC.LOG2="log2",AC.SQRT="sqrt",AC.INV_SQRT="inversesqrt",AC.FLOOR="floor",AC.CEIL="ceil",AC.NORMALIZE="normalize",AC.FRACT="fract",AC.SATURATE="saturate",AC.SIN="sin",AC.COS="cos",AC.TAN="tan",AC.ASIN="asin",AC.ACOS="acos",AC.ARCTAN="atan",AC.ABS="abs",AC.SIGN="sign",AC.LENGTH="length",AC.NEGATE="negate",AC.INVERT="invert",AC.MIN="min",AC.MAX="max",AC.MOD="mod",AC.STEP="step",AC.REFLECT="reflect",AC.DISTANCE="distance",AC.DOT="dot",AC.CROSS="cross",AC.POW="pow",AC.MIX="mix",AC.CLAMP="clamp",AC.REFRACT="refract",AC.SMOOTHSTEP="smoothstep",AC.FACEFORWARD="faceforward";var AT=class extends Ao{constructor(e,t,i){super("v4"),this.nodeType="TextureCubeUV",this.value=e,this.uv=t,this.bias=i}bilinearCubeUV(e,t,i,r){let a=new AM(AT.Nodes.bilinearCubeUV,[t,i,r]);this.colorSpaceTL=this.colorSpaceTL??new Aw(new AS("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new Aw(new AS("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new Aw(new AS("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new Aw(new AS("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(a.build(e)+".br");let o={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(o),this.colorSpaceTLExp=new AS(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new AS(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new AS(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new AS(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();
3160let h=new AS("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return h.keywords.cubeUV_TL=this.colorSpaceTLExp,h.keywords.cubeUV_TR=this.colorSpaceTRExp,h.keywords.cubeUV_BL=this.colorSpaceBLExp,h.keywords.cubeUV_BR=this.colorSpaceBRExp,h.keywords.cubeUV=a,h}generate(e,t){if(!e.isShader("fragment"))return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t);{let i=this.uv,r=this.bias||e.context.roughness,a=new AC(new AM(AT.Nodes.roughnessToMip,[r]),AT.Nodes.m0,AT.Nodes.cubeUV_maxMipLevel,AC.CLAMP),o=new AC(a,AC.FLOOR),h=new AC(a,AC.FRACT),c=new AC(this.bilinearCubeUV(e,this.value,i,o),this.bilinearCubeUV(e,this.value,i,new AE(o,new AA(1).setReadonly(!0),AE.ADD)),h,AC.MIX);return e.format(c.build(e),"v4",t)}}};AT.Nodes=(eg=new Ax(`struct TextureCubeUVData {
3161			vec4 tl;
3162			vec4 tr;
3163			vec4 br;
3164			vec4 bl;
3165			vec2 f;
3166		}`),ev=new Ag("float cubeUV_maxMipLevel 8.0",!0),ey=new Ag("float cubeUV_minMipLevel 4.0",!0),ex=new Ag("float cubeUV_maxTileSize 256.0",!0),eb=new Ag("float cubeUV_minTileSize 16.0",!0),(ew=new Af(`float getFace(vec3 direction) {
3167				vec3 absDirection = abs(direction);
3168				float face = -1.0;
3169				if (absDirection.x > absDirection.z) {
3170					if (absDirection.x > absDirection.y)
3171						face = direction.x > 0.0 ? 0.0 : 3.0;
3172					else
3173						face = direction.y > 0.0 ? 1.0 : 4.0;
3174				} else {
3175					if (absDirection.z > absDirection.y)
3176						face = direction.z > 0.0 ? 2.0 : 5.0;
3177					else
3178						face = direction.y > 0.0 ? 1.0 : 4.0;
3179				}
3180				return face;
3181		}`)).useKeywords=!1,(eS=new Af(`vec2 getUV(vec3 direction, float face) {
3182				vec2 uv;
3183				if (face == 0.0) {
3184					uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
3185				} else if (face == 1.0) {
3186					uv = vec2(-direction.x, -direction.z) / abs(direction.y); // pos y
3187				} else if (face == 2.0) {
3188					uv = vec2(-direction.x, direction.y) / abs(direction.z); // pos z
3189				} else if (face == 3.0) {
3190					uv = vec2(-direction.z, direction.y) / abs(direction.x); // neg x
3191				} else if (face == 4.0) {
3192					uv = vec2(-direction.x, direction.z) / abs(direction.y); // neg y
3193				} else {
3194					uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
3195				}
3196				return 0.5 * (uv + 1.0);
3197		}`)).useKeywords=!1,(e_=new Af(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
3198			float face = getFace(direction);
3199			float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
3200			mipInt = max(mipInt, cubeUV_minMipLevel);
3201			float faceSize = exp2(mipInt);
3202			float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);
3203			vec2 uv = getUV(direction, face) * (faceSize - 1.0);
3204			vec2 f = fract(uv);
3205			uv += 0.5 - f;
3206			if (face > 2.0) {
3207				uv.y += faceSize;
3208				face -= 3.0;
3209			}
3210			uv.x += face * faceSize;
3211			if(mipInt < cubeUV_maxMipLevel){
3212				uv.y += 2.0 * cubeUV_maxTileSize;
3213			}
3214			uv.y += filterInt * 2.0 * cubeUV_minTileSize;
3215			uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);
3216			uv *= texelSize;
3217			vec4 tl = texture2D(envMap, uv);
3218			uv.x += texelSize;
3219			vec4 tr = texture2D(envMap, uv);
3220			uv.y += texelSize;
3221			vec4 br = texture2D(envMap, uv);
3222			uv.x -= texelSize;
3223			vec4 bl = texture2D(envMap, uv);
3224			return TextureCubeUVData( tl, tr, br, bl, f );
3225		}`,[eg,ew,eS,ev,ey,ex,eb])).useKeywords=!1,{bilinearCubeUV:e_,roughnessToMip:new Af(`float roughnessToMip(float roughness) {
3226			float mip = 0.0;
3227			if (roughness >= r1) {
3228				mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
3229			} else if (roughness >= r4) {
3230				mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;
3231			} else if (roughness >= r5) {
3232				mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;
3233			} else if (roughness >= r6) {
3234				mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;
3235			} else {
3236				mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
3237			}
3238			return mip;
3239		}`,[new Ag("float r0 1.0",!0),new Ag("float v0 0.339",!0),eA=new Ag("float m0 -2.0",!0),new Ag("float r1 0.8",!0),new Ag("float v1 0.276",!0),new Ag("float m1 -1.0",!0),new Ag("float r4 0.4",!0),new Ag("float v4 0.046",!0),new Ag("float m4 2.0",!0),new Ag("float r5 0.305",!0),new Ag("float v5 0.016",!0),new Ag("float m5 3.0",!0),new Ag("float r6 0.21",!0),new Ag("float v6 0.0038",!0),new Ag("float m6 4.0",!0)]),m0:eA,cubeUV_maxMipLevel:ev});var AP=class extends Ao{constructor(e){super("v3"),this.nodeType="Normal",this.scope=e??AP.VIEW}getShared(){return this.scope===AP.WORLD}build(e,t,i,r){let a=e.context[this.scope+"Normal"];return a?a.build(e,t,i,r):super.build(e,t,i)}generate(e,t,i,r,a){let o;switch(this.scope){case AP.VIEW:o=e.isShader("vertex")?"transformedNormal":"geometryNormal";break;case AP.LOCAL:e.isShader("vertex")?o="objectNormal":(e.requires.normal=!0,o="vObjectNormal");break;case AP.WORLD:e.isShader("vertex")?o="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,o="vWNormal")}return e.format(o,this.getType(e),t)}};AP.LOCAL="local",AP.WORLD="world",AP.VIEW="view",AP.NORMAL="normal",An.addKeyword("viewNormal",function(){return new AP(AP.VIEW)}),An.addKeyword("localNormal",function(){return new AP(AP.NORMAL)}),An.addKeyword("worldNormal",function(){return new AP(AP.WORLD)});var AD=class extends Ao{constructor(e){super("v3"),this.nodeType="Position",this.scope=e??AD.LOCAL}
vendor: 7,843 bytes, lines 3239-3349
3239getType(){return this.scope===AD.PROJECTION?"v4":this.type}getShader(){switch(this.scope){case AD.LOCAL:case AD.WORLD:return!1}return!0}generate(e,t,i,r,a){let o;switch(this.scope){case AD.LOCAL:e.isShader("vertex")?o="transformed":(e.requires.position=!0,o="vPosition");break;case AD.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,o="vWPosition";break;case AD.VIEW:o=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case AD.PROJECTION:o=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )"}return e.format(o,this.getType(),t)}};AD.LOCAL="local",AD.WORLD="world",AD.VIEW="view",AD.PROJECTION="projection",An.addKeyword("position",function(){return new AD}),An.addKeyword("worldPosition",function(){return new AD(AD.WORLD)}),An.addKeyword("viewPosition",function(){return new AD(AD.VIEW)});var AO=class extends Ao{constructor(e){super("v3"),this.nodeType="Reflect",this.scope=e??AO.CUBE}getUnique(e){return!e.context.viewNormal}getType(){return this.scope===AO.SPHERE?"v2":this.type}generate(e,t){let i=this.getUnique(e);if(!e.isShader("fragment"))return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,t);{let r;switch(this.scope){case AO.VECTOR:{let t=new AP(AP.VIEW),a=e.context.roughness,o=t.build(e,"v3"),h=new AD(AD.VIEW).build(e,"v3"),c=a?a.build(e,"f"):void 0,d=`reflect( -normalize( ${h} ), ${o} )`;c&&(d=`normalize( mix( ${d}, ${o}, ${c} * ${c} ) )`);let u=`inverseTransformDirection( ${d}, viewMatrix )`;i?(e.addNodeCode(`vec3 reflectVec = ${u};`),r="reflectVec"):r=u;break}case AO.CUBE:{let t=new AO(AO.VECTOR).build(e,"v3"),a="vec3( -"+t+".x, "+t+".yz )";i?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),r="reflectCubeVec"):r=a;break}case AO.SPHERE:{let t="normalize( ( viewMatrix * vec4( "+new AO(AO.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";i?(e.addNodeCode(`vec2 reflectSphereVec = ${t};`),r="reflectSphereVec"):r=t}}return e.format(r,this.getType(),t)}}};AO.CUBE="cube",AO.SPHERE="sphere",AO.VECTOR="vector";var AI=class extends Ao{constructor(e=new A_,t,i){super("v4"),this.nodeType="TextureCube",this.value=e,this.radianceNode=new AT(this.value,t??new AO(AO.VECTOR),i),this.irradianceNode=new AT(this.value,new AP(AP.WORLD),new AA(1).setReadonly(!0))}generate(e,t){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),("irradiance"===e.slot?this.irradianceNode:this.radianceNode).build(e,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}},AR=class extends Al{constructor(e=new si,t,i){super("v4",{shared:!0}),this.nodeType="CubeTexture",this.value=e,this.uv=t??new AO,this.bias=i}getTexture(e,t){return super.generate(e,t,this.value.uuid,"tc")}generate(e,t){let i;if("samplerCube"===t)return this.getTexture(e,t);let r=this.getTexture(e,t),a=this.uv?.build(e,"v3"),o=this.bias?this.bias.build(e,"f"):void 0;void 0===o&&e.context.bias&&(o=e.context.bias.setTexture(this).build(e,"f")),i=o?"texCubeBias( "+r+", "+a+", "+o+" )":"texCube( "+r+", "+a+" )";let h={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(h),this.colorSpace=this.colorSpace??new Aw(new AS("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(i),i=this.colorSpace.build(e,c),e.removeContext(),e.format(i,c,t)}},AL=`
3240uniform int frameIndex;
3241uniform vec2 resolution;
3242uniform mat4 previousModelViewMatrix;
3243uniform mat4 previousProjectionMatrix;
3244
3245varying vec4 vCurrentPosition;
3246varying vec4 vPreviousPosition;
3247`,AB=`
3248layout(location = 1) out vec4 gVelocity;
3249
3250uniform int frameIndex;
3251uniform vec2 resolution;
3252
3253varying vec4 vCurrentPosition;
3254varying vec4 vPreviousPosition;
3255
3256const vec2 haltonSequence[16] = vec2[16](
3257vec2( 0.000000,-0.333334),
3258vec2(-0.500000, 0.333334),
3259vec2( 0.500000,-0.777778),
3260vec2(-0.750000,-0.111112),
3261vec2( 0.250000, 0.555556),
3262vec2(-0.250000,-0.555556),
3263vec2( 0.750000, 0.111112),
3264vec2(-0.875000, 0.777778),
3265vec2(0.125000, -0.925926),
3266vec2(-0.375000, -0.259260),
3267vec2(0.625000, 0.407408),
3268vec2(-0.625000, -0.703704),
3269vec2(0.375000, -0.037038),
3270vec2(-0.125000, 0.629630),
3271vec2(0.875000, -0.481482),
3272vec2(-0.937500, 0.185186));
3273
3274vec2 vogelDiskSample(int sampleIndex, int sampleCount, float angle) {
3275  const float goldenAngle = 2.399963f; // radians
3276  float r = sqrt(float(sampleIndex) + 0.5f) / sqrt(float(sampleCount));
3277  float theta = float(sampleIndex) * goldenAngle + angle;
3278  float sine = sin(theta);
3279  float cosine = cos(theta);
3280  return vec2(cosine, sine) * r;
3281}
3282
3283// Derived from the interleaved gradient function from Jimenez 2014 http:goo.gl/eomGso
3284float getNoiseInterleavedGradient(vec2 screenPos) {
3285    vec3 magic = vec3(0.06711056f, 0.00583715f, 52.9829189f);
3286    return fract(magic.z * fract(dot(screenPos, magic.xy)));
3287}
3288
3289`,Az=`
3290// TODO: This could be generated CPU side and passed to the shader every frame
3291const vec2 haltonSequence[16] = vec2[16](
3292vec2( 0.000000,-0.333334),
3293vec2(-0.500000, 0.333334),
3294vec2( 0.500000,-0.777778),
3295vec2(-0.750000,-0.111112),
3296vec2( 0.250000, 0.555556),
3297vec2(-0.250000,-0.555556),
3298vec2( 0.750000, 0.111112),
3299vec2(-0.875000, 0.777778),
3300vec2(0.125000, -0.925926),
3301vec2(-0.375000, -0.259260),
3302vec2(0.625000, 0.407408),
3303vec2(-0.625000, -0.703704),
3304vec2(0.375000, -0.037038),
3305vec2(-0.125000, 0.629630),
3306vec2(0.875000, -0.481482),
3307vec2(-0.937500, 0.185186));
3308
3309// TODO: Pass correct view size
3310vec2 offset = haltonSequence[frameIndex];
3311offset.x /= resolution.x;
3312offset.y /= resolution.y;
3313
3314vec4 currentPosition = gl_Position;
3315vec4 currentPositionJittered = currentPosition + (vec4(offset.x, offset.y, 0.0, 0.0) * currentPosition.w);
3316
3317// We want to calculate the velocity with unjittered positions
3318// so that things that are not moving get a velocity = 0
3319vCurrentPosition = currentPosition;
3320vPreviousPosition = previousProjectionMatrix * previousModelViewMatrix * vec4(transformed, 1.0);
3321#ifdef OUTLINE_COMPENSATION
3322vPreviousPosition.xy += OUTLINE_COMPENSATION;
3323#endif
3324gl_Position = currentPositionJittered;
3325
3326`,AF=`
3327vec2 oldPos = vPreviousPosition.xy;
3328    oldPos /= vPreviousPosition.w;
3329    oldPos.xy = (oldPos.xy+1.)/2.0;
3330
3331vec2 newPos = vCurrentPosition.xy;
3332    newPos /= vCurrentPosition.w;
3333    newPos.xy = (newPos.xy+1.)/2.0;
3334
3335vec2 velocity = (newPos - oldPos);
3336
3337// Discard fully transparent pixels 
3338if (gl_FragColor.a <= 0.0) discard;
3339
3340gVelocity = vec4(velocity, 0.0, 1.0);
3341`,AN=`
3342layout(location = 1) out vec4 gVelocity;
3343`,AU=`
3344    // Discard fully transparent pixels 
3345    if (gl_FragColor.a <= 0.0) discard;
3346
3347    gVelocity = vec4(0.0, 0.0, 0.0, 1.0);
3348`,Ak=["x","y","z","w"],AV=["float","vec2","vec3","vec4"],Aj={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},AG={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[]"},AH=class{constructor(){this.includes={consts:{},functions:{},structs:{}},this.cache="",this.slot="",this.shader="",this.context={},this.needsJitter=!0,this.getIncludesCode=function(){function e(e,t){return e.deps.length-t.deps.length}return function(t,i){let r=this.getIncludes(t,i);if(!r)return"";let a="";r=r.sort(e);for(let e=0;e<r.length;e++)r[e].src&&(a+=r[e].src+`
3349`);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={}
vendor: 4,744 bytes, lines 3349-3392
3349,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",`
3350			// NOTE: Include Spline's blending modes. This could be part of BlendNode
3351			#define SPE_BLENDING_NORMAL 0
3352			#define SPE_BLENDING_MULTIPLY 1
3353			#define SPE_BLENDING_SCREEN 2
3354			#define SPE_BLENDING_OVERLAY 3
3355
3356			vec3 spe_normalBlend( vec3 a, vec3 b, float alpha ) {
3357				return mix( a, b, alpha );
3358			}
3359
3360			vec3 spe_multiplyBlend( vec3 a, vec3 b, float alpha ) {
3361				return mix( a, a * b, alpha );
3362			}
3363
3364			vec3 spe_screenBlend( vec3 a, vec3 b, float alpha ) {
3365				vec3 tmp = 1.0 - ( 1.0 - a ) * ( 1.0 - b );
3366				return mix( a, tmp, alpha );
3367			}
3368
3369			vec3 spe_overlayBlend( vec3 a, vec3 b, float alpha ) {
3370				vec3 tmp = mix( 1. - 2. * (1. - a) * (1. - b), 2. * a * b, step( a, vec3(.5) ) );
3371				return clamp( mix( a, tmp, alpha ), 0.0, 1.0 );
3372			}
3373
3374			vec3 spe_blend( vec3 a, vec3 b, float alpha, int mode ) {
3375				if ( mode == SPE_BLENDING_NORMAL ) return spe_normalBlend( a, b, alpha );
3376				else if ( mode == SPE_BLENDING_MULTIPLY ) return spe_multiplyBlend( a, b, alpha );
3377				else if ( mode == SPE_BLENDING_SCREEN ) return spe_screenBlend( a, b, alpha );
3378				else if ( mode == SPE_BLENDING_OVERLAY ) return spe_overlayBlend( a, b, alpha );
3379				return vec3( 1.0 );
3380			}
3381			`,"#include <packing>","#include <common>"].join(`
3382`),this.parsCode={vertex:["float neighbor_offset = 0.0001;",""].join(`
3383`),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
3384					accumAlpha += (1.0 - accumAlpha) * alpha;
3385				}`,""].join(`
3386`)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(e,t){this.addVertexParsCode(AL),this.addFragmentParsCode(AB),this.buildShader("vertex",e),this.buildShader("fragment",t);for(let e=0;e<this.requires.uv.length;e++)if(this.requires.uv[e]){let t=e>0?e+1:"";this.addVaryCode("varying vec2 vUv"+t+";"),e>0&&this.addVertexParsCode("attribute vec2 uv"+t+";"),this.addVertexFinalCode("vUv"+t+" = uv"+t+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode(`
3387				#ifndef SHAPEBLEND 
3388					vObjectNormal = normal;
3389				#else
3390					vObjectNormal = objectNormal;
3391				#endif
3392			`)),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ?  ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(Az),this.addFragmentFinalCode(AF)),this}buildShader(e,t){this.resultCode[e]=t.build(this.setShader(e),"v4")}setMaterial(e,t){return this.defines={},this}addFlow(e,t,i){return this.addSlot(e).addCache(t).addContext(i)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(e){return this.cache=e??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(e){return this.context=Object.assign({},this.context,e),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}
vendor: 9,920 bytes, lines 3392-3399
3392removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(e){return this.slot=e||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(e,t){void 0===this.fragmentVariables[e]&&(this.addFragmentCode(`${t} ${e};`),this.fragmentVariables[e]="")}addFragmentParsVariable(e,t){void 0===this.fragmentParsVariables[e]&&(this.addFragmentParsCode(`${t} ${e};`),this.fragmentParsVariables[e]="")}addVertexParsVariable(e,t){void 0===this.vertexParsVariables[e]&&(this.addVertexParsCode(`${t} ${e};`),this.vertexParsVariables[e]="")}addVertexCode(e){this.addCode(e,"vertex")}addFragmentCode(e){this.addCode(e,"fragment")}addCode(e,t){this.code[t??this.shader]+=e+`
3393`}addVertexNodeCode(e){this.addNodeCode(e,"vertex")}addFragmentNodeCode(e){this.addNodeCode(e,"fragment")}addNodeCode(e,t){this.nodeCode[t??this.shader]+=e+`
3394`}clearNodeCode(e){e=e??this.shader;let t=this.nodeCode[e];return this.nodeCode[e]="",t}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(e){this.addFinalCode(e,"vertex")}addFragmentFinalCode(e){this.addFinalCode(e,"fragment")}addFinalCode(e,t){this.finalCode[t??this.shader]+=e+`
3395`}addVertexParsCode(e){this.addParsCode(e,"vertex")}addFragmentParsCode(e){this.addParsCode(e,"fragment")}addParsCode(e,t){this.parsCode[t??this.shader]+=e+`
3396`}addVaryCode(e){this.addVertexParsCode(e),this.addFragmentParsCode(e)}isCache(e){return -1!==this.caches.indexOf(e)}isSlot(e){return -1!==this.slots.indexOf(e)}define(e,t){this.defines[e]=void 0===t?1:t}require(e){this.requires[e]=!0}isDefined(e){return void 0!==this.defines[e]}getVar(e,t,i,r="varying",a="V",o=""){let h=this.getVars(r),c=h[e];if(!c){let r=h.length;c={name:i||"node"+a+r+(o?"_"+o:""),type:t},h.push(c),h[e]=c}return c}getTempVar(e,t,i,r){return this.getVar(e,t,i,this.shader,"T",r)}getAttribute(e,t){if(!this.attributes[e]){let i=this.getVar(e,t);this.addVertexParsCode("attribute "+t+" "+e+";"),this.addVertexFinalCode(i.name+" = "+e+";"),this.attributes[e]={varying:i,name:e,type:t}}return this.attributes[e]}getCode(e){return[this.prefixCode,this.parsCode[e],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[e],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[e],"uniform"),this.getIncludesCode("consts",e),this.getIncludesCode("structs",e),this.getIncludesCode("functions",e),"void main() {",this.getVarListCode(this.getVars(e)),this.code[e],this.resultCode[e],this.finalCode[e],"}"].join(`
3397`)}getVarListCode(e,t){t=t??"";let i="";for(let r=0,a=e.length;r<a;++r){let a=e[r],o=a.type,h=a.name,c=a.size,d=this.getFormatByType(o);if(void 0===d)throw Error("Node pars "+d+" not found.");d.includes("[]")?i+=t+" "+d.substring(0,d.length-2)+" "+h+`[${c}];
3398`:i+=t+" "+d+" "+h+`;
3399`}return i}getVars(e){return this.inputs.vars[e??this.shader]}getNodeData(e){let t=e instanceof As?e.uuid:e;return this.nodeData[t]=this.nodeData[t]||{}}createUniform(e,t,i,r,a,o){if(t.includes("[]")){let h=this.inputs.arrayUniforms,c=h.list.length,d=new Aa({type:t,size:i.size,name:r||"nodeUA"+c+(o?"_"+o:""),node:i,needsUpdate:a});return h.list.push(d),h[e].push(d),h[e][d.name]=d,this.uniforms[d.name]=d,d}{let h=this.inputs.uniforms,c=h.list.length,d=new Aa({type:t,name:r||"nodeU"+c+(o?"_"+o:""),node:i,needsUpdate:a});return h.list.push(d),h[e].push(d),h[e][d.name]=d,this.uniforms[d.name]=d,d}}createVertexUniform(e,t,i,r,a){return this.createUniform("vertex",e,t,i,r,a)}createFragmentUniform(e,t,i,r,a){return this.createUniform("fragment",e,t,i,r,a)}include(e,t,i){let r;if(e="string"==typeof e?An.get(e):e,!1===this.context.include)return e.name;e instanceof Af?r=this.includes.functions:e instanceof Ag?r=this.includes.consts:e instanceof Ax&&(r=this.includes.structs);let a=r[this.shader]=r[this.shader]||[];if(e){let r=a[e.name];if(r||(r=a[e.name]={node:e,deps:[]},a.push(r),r.src=e.build(this,"source")),e instanceof Af&&t&&a[t.name]&&-1===a[t.name].deps.indexOf(e)&&(a[t.name].deps.push(e),e.includes?.length)){let i=0;do this.include(e.includes[i++],t);while(i<e.includes.length)}return i&&(r.src=i),e.name}throw Error("Include not found.")}colorToVectorProperties(e){return e.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(e){return e.replace(/c/g,"v3")}getIncludes(e,t){return this.includes[e][t||this.shader]}getConstructorFromLength(e){return AV[e-1]}isTypeMatrix(e){return/^m/.test(e)}getTypeLength(e){return"f"===e?1:parseInt(this.colorToVector(e).substr(1))}getTypeFromLength(e){return 1===e?"f":"v"+e}findNode(...e){for(let t=0;t<arguments.length;t++){let i=e[t];if(i?.isNode)return i}}resolve(...e){for(let t=0;t<arguments.length;t++){let i=e[t];if(void 0!==i){if(i.isNode)return i;if(i.isTexture)switch(i.mapping){case 301:case 302:return new AR(i);case 306:return new AI(new A_(i));default:return new A_(i)}else{if(i.isVector2)return new Ah(i);if(i.isVector3)return new Ac(i);if(i.isVector4)return new Ad(i)}}}}format(e,t,i){switch(this.colorToVector(i+" <- "+t)){case"f <- v2":case"f <- v3":case"f <- v4":return e+".x";case"f <- i":case"f <- b":return"float( "+e+" )";case"v2 <- f":return"vec2( "+e+" )";case"v2 <- v3":case"v2 <- v4":return e+".xy";case"v2 <- i":case"v2 <- b":case"v3 <- i":case"v3 <- b":return"vec2( float( "+e+" ) )";case"v3 <- f":return"vec3( "+e+" )";case"v3 <- v2":return"vec3( "+e+", 0.0 )";case"v3 <- v4":return e+".xyz";case"v4 <- f":return"vec4( "+e+" )";case"v4 <- v2":return"vec4( "+e+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+e+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+e+" ) )";case"i <- f":case"i <- b":return"int( "+e+" )";case"i <- v2":case"i <- v3":case"i <- v4":return"int( "+e+".x )";case"b <- f":return"( "+e+" != 0.0 )";case"b <- v2":return"( "+e+" != vec2( 0.0 ) )";case"b <- v3":return"( "+e+" != vec3( 0.0 ) )";case"b <- v4":return"( "+e+" != vec4( 0.0 ) )";case"b <- i":return"( "+e+" != 0 )"}return e}getTypeByFormat(e){return Aj[e]||e}getFormatByType(e){return AG[e]||e}getUUID(e,t){return(t=void 0===t||t)&&this.cache&&(e=this.cache+"-"+e),e}getElementByIndex(e){return Ak[e]}getIndexByElement(e){return Ak.indexOf(e)}isShader(e){return this.shader===e}setShader(e){return this.shader=e,this}mergeDefines(e){for(let t in e)this.defines[t]=e[t];return this.defines}mergeUniform(e){for(let t in e)this.uniforms[t]=e[t];return this.uniforms}getTextureEncodingFromMap(e){let t;return e?e.isTexture&&(t=e.encoding):t=3e3,3e3===t&&this.context.gamma&&(t=3001),t}},AW=class extends Al{constructor(e=0,t,i,r){super("c"),this.nodeType="Color",this.value=e instanceof xx?e:new xx(e||0,t,i,r)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,i,r,a,o){i=e.getUUID(i??this.getUUID()),r=r??this.getType(e);let h=e.getNodeData(i),c=this.getReadonly()&&void 0!==this.generateReadonly;if(this.alpha){let t=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${t};`)}return c?this.generateReadonly(e,t,i,r,a,o):e.isShader("vertex")?(h.vertex||(h.vertex=e.createVertexUniform(r,this,a,o,this.getLabel())),e.format(h.vertex.name,r,t)):(h.fragment||(h.fragment=e.createFragmentUniform(r,this,a,o,this.getLabel())),e.format(h.fragment.name,r,t))}generateReadonly(e,t,i,r,a,o){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",r,t)}},Aq=class extends Al{constructor(e){super("i"),this.nodeType="Int",this.value=Math.floor(e??0)}generateReadonly(e,t,i,r,a,o){return e.format(this.value.toString(),r,t)}},AX=class extends Al{constructor(e){super("b"),this.nodeType="Bool",this.value=e??!1}generateReadonly(e,t,i,r){return e.format(this.value?"true":"false",r,t)}},AY=class extends Al{constructor(e=1,t){super("f[]"),this.nodeType="FloatArray",this.size=e,this.value=Array.isArray(t)?t:"number"==typeof t?Array(e).fill(t):Array(e).fill(0)}},AQ=class extends Al{},AZ=class extends AQ{constructor(e){super("v3"),this.image=e,this._value=new ib}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}},AK=class extends AQ{constructor(e,t,i=1008,r=1006){super("t"),this.image=e,this.wrap=t,this.minFilter=i,this.magFilter=r}get value(){return this.image.getTexture(this.wrap,this.minFilter,this.magFilter)}},AJ=class extends Al{constructor(e){super("m3"),this.nodeType="Matrix3",this.value=e??new t$}generateReadonly(e,t,i,r,a,o){return e.format("mat3("+this.value.elements.join(", ")+")",r,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}},A$=class extends Al{constructor(e){super("m4"),this.nodeType="Matrix4",this.value=e??new iZ}generateReadonly(e,t,i,r,a,o){return e.format("mat4("+this.value.elements.join(", ")+")",r,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};function A0(e,t,i,r=0){e.setUvTransform(i[0],i[1],t[0],t[1],0,0,0).premultiply(new t$().makeRotation(r*tK.DEG2RAD))}var A1=class extends AJ{constructor(e,t,i=0){super(new t$),this.repeat=e,this.offset=t,this.rotation=i,A0(this.value,e,t,i)}updateMatrix(){A0(this.value,this.repeat,this.offset,this.rotation)}},A2=class extends Al{constructor(e=1,t){super("v4[]"),this.nodeType="Vector4Array",this.size=e,this.value=Array.isArray(t)?t:t instanceof ip?Array(e).fill(t):Array(e).fill(new ip(0))}},A3=class extends Ao{constructor(e,t,i,r){super("v3"),this.nodeType="Blend",this.a=e,this.b=t,this.alpha=i,this.mode=r}generate(e,t){if(!e.isShader("fragment"))return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t);{let i=[];return i.push(this.a.build(e,"c")),i.push(this.b.build(e,"c")),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),e.format("spe_blend("
3399+i.join(",")+")",this.getType(e),t)}}},A4=class extends Ao{constructor(e,t){super("v3"),this.nodeType="CustomColor",this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(!e.isShader("fragment"))return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t);{let i=e.include(A4.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let r=[];return r.push(this.color.build(e,"v3")),r.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),r.push(this.alpha.build(e,"f")),r.push(this.calpha),e.format(i+"("+r.join(",")+")",this.getType(e),t)}}};A4.Nodes={customColor:new Af(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
3400				float lalpha = alpha * mask;
3401				calpha =  lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
3402				accumAlpha += (1.0 - accumAlpha) * lalpha;
3403
3404				return color;
3405			}`)};var A5=class extends Ao{constructor(e,t){super("v3"),this.nodeType="CustomNormal",this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(!e.isShader("fragment"))return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t);{let i=e.include(A5.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let r=[];return r.push(this.cnormal.build(e,"v3")),r.push("normal"),r.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),r.push(this.alpha.build(e,"f")),r.push(this.calpha),e.format(i+"("+r.join(",")+")",this.getType(e),t)}}};A5.Nodes={customNormal:new Af(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
3406				vec3 normal = packNormalToRGB( norm ).rgb;
3407				normal *= step( vec3(0.5), cnormal );
3408
3409				float lalpha = alpha * mask;
3410				calpha =  lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
3411				accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
3412
3413				return normal;
3414			}`)};var A6=class extends Ao{constructor(e,t,i,r,a,o,h,c,d,u,p,f){super("v3"),this.nodeType="CustomTexture",this.texture=e,this.textureSize=t,this.crop=i,this.projection=r,this.axis=a,this.side=o,this.size=h,this.blending=c,this.mat=d,this.isMask=f,this.alpha=u,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let i=`g${this.uuid.toString().replace(/-/g,"")}`,r;switch(this.projection.value){case 3:r=e.include(A6.Nodes.cylindrical);break;case 2:r=e.include(A6.Nodes.spherical);break;case 1:let a=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],o=["zy","xz","xy"][this.axis.value],h=new Af(`
3415		vec3 ${i}_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) {
3416				vec2 projected = (1. + (position.${o})) / 2.;
3417				vec2 uvs = ( mat * vec3( (projected * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
3418				writeUv = uvs;
3419
3420				vec4 tmp = texture2D( tex, uvs );
3421
3422				vec3 col = tmp.rgb;
3423				float lalpha = alpha * tmp.a;
3424				${2===this.side.value?"":`lalpha *= step(0.0, ${1===this.side.value?"-1.0 * ":""}dot(vObjectNormal, ${a}));`}
3425
3426				if ( crop > 0.5 ) {
3427					if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 )  {
3428						lalpha = 0.0;
3429					}
3430				}
3431				
3432				lalpha *= mask;
3433
3434				calpha =  lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
3435				accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
3436
3437				return col;
3438			}`);r=e.include(h);break;case 4:r=e.include(A6.Nodes.triplanar);break;default:r=e.include(A6.Nodes.uv)}e.addFragmentVariable(this.calpha,"float");let c=[];if(c.push("normal"),c.push(this.texture.generate(e,"t")),c.push(this.textureSize.build(e,"v2")),c.push(this.crop.build(e,"f")),c.push(this.mat.build(e,"mat3")),c.push(this.size.build(e,"v2")),c.push(this.blending.build(e,"f")),c.push(this.isMask.build(e,"b")),c.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),c.push(this.alpha.build(e,"f")),c.push(this.mode.build(e,"i")),c.push(this.calpha),4===this.projection.value){let t=`${i}_writeUvs`,r=t+"0",a=t+"1",o=t+"2",h=`${i}_triplanarWeights`;e.addFragmentVariable(r,"vec2"),e.addFragmentVariable(a,"vec2"),e.addFragmentVariable(o,"vec2"),e.addFragmentVariable(h,"vec3"),c.push(r),c.push(a),c.push(o),c.push(h)}else{let t=`${i}_writeUvs`;e.addFragmentVariable(t,"vec2"),c.push(t)}return e.format(r+"("+c.join(",")+")",this.getType(e),t)}};A6.Nodes={cylindrical:new Af(`
3439vec3 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) {
3440                vec3 posN = normalize(position);
3441                float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
3442                float scaledHeight = position.y / (size.y * 0.5);
3443                float v =  (scaledHeight / 2.) + .5;
3444
3445                vec2 calculatedUv = vec2(u,v);
3446				vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
3447				writeUv = uvs;
3448
3449                vec2 df = fwidth(uvs);
3450               	if(df.x > 0.5) df.x = 0.;
3451
3452				#ifdef GL_EXT_shader_texture_lod
3453                vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
3454				#else
3455                vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
3456				#endif
3457
3458				vec3 col = tmp.rgb;
3459				float lalpha = alpha * tmp.a;
3460				if ( crop > 0.5 ) {
3461					if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 )  {
3462						lalpha = 0.0;
3463					}
3464				}
3465
3466				lalpha *= mask;
3467				
3468				calpha =  lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
3469				accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
3470
3471				return col;
3472			}
3473`),spherical:new Af(`
3474vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
3475                vec3 posN = normalize(vPosition);
3476                float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
3477                float v = 0.5 + asin(posN.y) / 3.1415;
3478
3479                vec2 calculatedUv = vec2(u,v);
3480				vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
3481				writeUv = uvs;
3482
3483                vec2 df = fwidth(uvs);
3484               	if(df.x > 0.5) df.x = 0.;
3485				#ifdef GL_EXT_shader_texture_lod
3486                vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
3487				#else
3488                vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
3489				#endif
3490
3491				vec3 col = tmp.rgb;
3492				float lalpha = alpha * tmp.a;
3493				if ( crop > 0.5 ) {
3494					if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 )  {
3495						lalpha = 0.0;
3496					}
3497				}
3498
3499				lalpha *= mask;
3500
3501				calpha =  lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
3502				accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
3503
3504				return col;
3505			}
3506`),uv:new Af(`vec3 uvTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUv) {
3507				vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
3508				writeUv = uvs;
3509
3510				vec4 tmp = texture2D( tex, uvs );
3511
3512				vec3 col = tmp.rgb;
3513
3514				float lalpha = alpha * tmp.a;
3515				if ( crop > 0.5 ) {
3516					if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 )  {
3517						lalpha = 0.0;
3518					}
3519				}
3520				
3521				lalpha *= mask;
3522
3523				calpha =  lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
3524				accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
3525
3526				return col;
3527			}`),triplanar:new Af(`vec3 triplanarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha, out vec2 writeUvs0, out vec2 writeUvs1, out vec2 writeUvs2, out vec3 writeWeights) {
3528				vec3 p = position;
3529				vec2 uv0 = (1.0 + p.xy) / 2.0;     
3530				vec2 uv1 = (1.0 + p.zy) / 2.0;		
3531				vec2 uv2 = (1.0 + p.xz) / 2.0;		
3532	
3533				uv0 = (mat * vec3((uv0 * 2.0 - 1.0) / (size * 0.5), 1.0) / 2.0 + 0.5).xy;
3534				uv1 = (mat * vec3((uv1 * 2.0 - 1.0) / (size * 0.5), 1.0) / 2.0 + 0.5).xy;
3535				uv2 = (mat * vec3((uv2 * 2.0 - 1.0) / (size * 0.5), 1.0) / 2.0 + 0.5).xy;
3536
3537				// Range from 3 to 128 seems to be good
3538				float exponent = (1.0 - blending) * 125.0 + 3.0;
3539
3540				vec3 n = vObjectNormal;
3541				vec3 weights = abs(normalize(n));
3542				weights = pow(weights, vec3(exponent));
3543				weights /= dot(weights, vec3(1.0));
3544
3545				// Write out all sets of UVs that we generated
3546				writeUvs0 = uv0;
3547				writeUvs1 = uv1;
3548				writeUvs2 = uv2;
3549				writeWeights = weights;
3550
3551				// Derivatives for LOD
3552				vec2 df0 = fwidth(uv0);
3553				vec2 df1 = fwidth(uv1);
3554				vec2 df2 = fwidth(uv2);
3555				if (df0.x > 0.5) df0.x = 0.0;
3556				if (df1.x > 0.5) df1.x = 0.0;
3557				if (df2.x > 0.5) df2.x = 0.0;
3558
3559				#ifdef GL_EXT_shader_texture_lod
3560                	vec4 tmp = 
3561						texture2DLodEXT(tex, uv0, log2(max(df0.x, df0.y)*min(textureSize.x, textureSize.y))) * weights.z + 
3562						texture2DLodEXT(tex, uv1, log2(max(df1.x, df1.y)*min(textureSize.x, textureSize.y))) * weights.x + 
3563						texture2DLodEXT(tex, uv2, log2(max(df2.x, df2.y)*min(textureSize.x, textureSize.y))) * weights.y;
3564				#else
3565                	vec4 tmp = 
3566						textureLod(tex, uv0, log2(max(df0.x, df0.y)*min(textureSize.x, textureSize.y))) * weights.z + 
3567						textureLod(tex, uv1, log2(max(df1.x, df1.y)*min(textureSize.x, textureSize.y))) * weights.x + 
3568						textureLod(tex, uv2, log2(max(df2.x, df2.y)*min(textureSize.x, textureSize.y))) * weights.y;
3569				#endif
3570
3571				vec3 col = tmp.rgb;
3572				float lalpha = alpha * tmp.a;
3573
3574				// Apply cropping across all 3 planes
3575				if ( crop > 0.5 ) {
3576					if ( uv0.x < 0.0 || uv0.x > 1.0 || uv0.y < 0.0 || uv0.y > 1.0 )  {
3577						lalpha = 0.0;
3578					}
3579					if ( uv1.x < 0.0 || uv1.x > 1.0 || uv1.y < 0.0 || uv1.y > 1.0 )  {
3580						lalpha = 0.0;
3581					}
3582					if ( uv2.x < 0.0 || uv2.x > 1.0 || uv2.y < 0.0 || uv2.y > 1.0 )  {
3583						lalpha = 0.0;
3584					}
3585				}
3586
3587				lalpha *= mask;
3588				calpha =  lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
3589				accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
3590
3591				return col;//n * 0.5 + 0.5;
3592			}			
3593			`)};var A8=class extends Ao{constructor(e,t,i,r,a,o,h,c,d,u,p,f){super("v3"),this.nodeType="Depth",this.gradientType=e,this.smooth=t,this.near=i,this.far=r,this.isVector=a,this.isWorldSpace=o,this.origin=h,this.direction=c,this.colors=d,this.steps=u,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let i=`g${this.uuid.toString().replace(/-/g,"")}`,r=new Af(`vec3 ${i}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${i}_MAX_COLORS], float steps[${i}_MAX_COLORS], bool isMask, float mask, float alpha, out float calpha) {
3594               vec4 color = colors[0];
3595               #ifdef ${i}_IS_VECTOR
3596                   #ifdef ${i}_LINEAR
3597                       #ifdef ${i}_WORLDSPACE
3598                       float depth = vectorLinearWorldSpaceDepth(direction, origin, near, far);
3599                       #else
3600                       float depth = vectorLinearObjectSpaceDepth(direction, origin, near, far);
3601                       #endif
3602                   #else
3603                       #ifdef ${i}_WORLDSPACE
3604                           float depth = vectorSphericalWorldSpaceDepth(origin, near, far);
3605                       #else
3606                           float depth = vectorSphericalObjectSpaceDepth(origin, near, far);
3607                       #endif
3608                   #endif
3609               #else
3610                   float dist = length(vWPosition - cameraPosition);
3611			       float depth = ( dist - near ) / ( far - near );
3612               #endif
3613
3614
3615              float p;
3616              #ifdef ${i}_SMOOTH
3617				for ( int i = 1; i < ${i}_MAX_COLORS; i++ ) {
3618						p = clamp( ( depth - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
3619						color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
3620					}
3621              #else
3622                for ( int i = 1; i < ${i}_MAX_COLORS; i++ ) {
3623                   p = clamp(( depth - steps[i - 1] ) / ( steps[i] - steps[i - 1] ), 0.0, 1.0);
3624                   color = mix(color, colors[i], p);
3625                 }
3626              #endif
3627
3628               float lalpha = alpha * color.a * mask;
3629               calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
3630			   accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
3631			   
3632               return color.rgb;
3633			}`,[A8.Nodes.vectorLinearWorldSpaceDepth,A8.Nodes.vectorLinearObjectSpaceDepth,A8.Nodes.vectorSphericalObjectSpaceDepth,A8.Nodes.vectorSphericalWorldSpaceDepth]);if(!e.isShader("fragment"))return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t);{e.define(`${i}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${i}_SMOOTH`),this.isVector.value>.5&&e.define(`${i}_IS_VECTOR`),0===this.gradientType.value&&e.define(`${i}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${i}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let a=e.include(r),o=[];return o.push(this.near.build(e,"f")),o.push(this.far.build(e,"f")),o.push(this.origin.build(e,"v3")),o.push(this.direction.build(e,"v3")),o.push(this.colors.build(e,"v4[]")),o.push(this.steps.build(e,"f[]")),o.push(this.isMask.build(e,"b")),o.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),o.push(this.alpha.build(e,"f")),o.push(this.calpha),e.format(a+"("+o.join(",")+")",this.getType(e),t)}}};A8.Nodes={vectorLinearWorldSpaceDepth:new Af(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
3634               vec3 n = normalize(direction);
3635               float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
3636               return ( dist - near ) / ( far - near );
3637            }`),vectorLinearObjectSpaceDepth:new Af(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
3638               vec3 n = normalize(direction);
3639               float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
3640               return ( dist - near ) / ( far - near );
3641            }`),vectorSphericalWorldSpaceDepth:new Af(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
3642               float dist = length(vWPosition - origin);
3643               return ( dist - near ) / ( far - near );
3644            }`),vectorSphericalObjectSpaceDepth:new Af(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
3645               float dist = length(position - origin);
3646               return ( dist - near ) / ( far - near );
3647            }`)};var A9=class extends Ao{constructor(e,t,i,r,a,o,h,c){super("v3"),this.nodeType="Fresnel",this.color=e,this.bias=t,this.scale=i,this.intensity=r,this.factor=a,this.isMask=c,this.alpha=o,this.mode=h,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),!e.isShader("fragment"))return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t);{e.addFragmentVariable(this.calpha,"float");
3647let i=new Af(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
3648					float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
3649
3650					float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
3651					calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
3652					accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
3653
3654					return color;
3655				}`),r=e.include(i),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(r+"("+a.join(",")+")",this.getType(e),t)}}},A7=class extends Ao{constructor(e,t,i,r,a,o,h,c,d){super("v3"),this.nodeType="Gradient",this.gradientType=e,this.smooth=t,this.colors=i,this.steps=r,this.offset=a,this.morph=o,this.angle=h,this.isMask=d,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(!e.isShader("fragment"))return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t);{e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(A7.Nodes.gradient),r=[];return r.push(this.gradientType.build(e,"i")),r.push(this.smooth.build(e,"b")),r.push(this.colors.build(e,"v4[]")),r.push(this.steps.build(e,"f[]")),r.push(this.offset.build(e,"v2")),r.push(this.morph.build(e,"v2")),r.push(this.angle.build(e,"f")),r.push(this.isMask.build(e,"b")),r.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),r.push(this.alpha.build(e,"f")),r.push(this.calpha),e.format(i+"("+r.join(",")+")",this.getType(e),t)}}};A7.Nodes={gradient:new Af(`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) {
3656				vec4 color = colors[0];
3657				vec2 m = morph / vUv.xy;
3658				vec2 rot = vec2( 0.5 + m.x, m.y );
3659				vec2 dt = vec2(
3660					cos( angle ) * rot.x - sin( angle ) * rot.y,
3661					sin( angle ) * rot.x + cos( angle ) * rot.y
3662				);
3663				vec2 pt = ( vUv - 0.5 + offset ) / 2.0 + dt / 2.0;
3664				float t = dot( pt, dt ) / dot( dt, dt );
3665				if ( gradientType == 1 ) {
3666					t = distance (
3667						( vUv + morph ) * 3.0,
3668						( vUv + offset ) + 1.0
3669					) + angle;
3670				} else if ( gradientType == 2 ) {
3671					float polar = atan(
3672						vUv.x + morph.x - 0.5 + offset.x,
3673						vUv.y + morph.y - 0.5 + offset.y
3674					) * -1.0;
3675					t = fract( ( angle / PI / -2.0 ) + 0.5 * ( polar / PI ) );
3676				}
3677
3678				float p;
3679				if (smoothed) {
3680					for ( int i = 1; i < GRAD_MAX; i++ ) {
3681						p = clamp( ( t - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
3682						color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
3683					}
3684
3685				} else {
3686					for ( int i = 1; i < GRAD_MAX; i++ ) {
3687						p = clamp( ( t - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
3688						color = mix(color, colors[i], p);
3689					}
3690				}
3691
3692				float lalpha = alpha * color.a * mask;
3693				calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
3694				accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
3695				
3696				return color.xyz;
3697			}`)};var Me=class extends Ao{constructor(e,t,i,r,a){super("v3"),this.nodeType="Matcap",this.texture=e,this.isMask=r,this.alpha=t,this.mode=i,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`,this.rotation=a}generate(e,t){if(!e.isShader("fragment"))return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t);{e.addFragmentVariable(this.calpha,"float");let i=e.include(Me.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let r=[];return r.push(this.texture.generate(e,"t")),r.push("normal"),r.push(this.isMask.build(e,"b")),r.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),r.push(this.alpha.build(e,"f")),r.push(this.mode.build(e,"i")),r.push(this.calpha),r.push(this.rotation.build(e,"f")),e.format(i+"("+r.join(",")+")",this.getType(e),t)}}};Me.Nodes={matcap:new Af(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha, float rotation) {
3698					vec3 viewDir = normalize( vViewPosition );
3699					vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
3700					vec3 y = cross( viewDir, x );
3701					vec2 uv = vec2( dot( x, normal ), dot( y, normal ) );
3702					uv = mat2( cos(rotation), sin(rotation), -sin(rotation), cos(rotation) ) * uv;
3703					uv = uv * 0.495 + 0.5;
3704					vec4 matcapColor = texture2D( matcapTex, uv );
3705
3706					float lalpha = alpha * mask;
3707					calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
3708					accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
3709					
3710					return matcapColor.rgb;
3711            	}`)};var Mt=(eM=new Af(`vec3 random3(vec3 c) {
3712			float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
3713			vec3 r;
3714			r.z = fract(512.0*j);
3715			j *= .125;
3716			r.x = fract(512.0*j);
3717			j *= .125;
3718			r.y = fract(512.0*j);
3719			return r-0.5;
3720		}`),(eE=new Af(`float simplexFast(vec3 p) {
3721			 vec3 s = floor(p + dot(p, vec3(F3)));
3722			 mediump vec3 x = p - s + dot(s, vec3(G3));
3723			 mediump vec3 hs = s;
3724			 
3725			 mediump vec3 e = step(vec3(0.0), x - x.yzx);
3726			 mediump vec3 i1 = e*(1.0 - e.zxy);
3727			 mediump vec3 i2 = 1.0 - e.zxy*(1.0 - e);
3728				
3729			 mediump vec3 x1 = x - i1 + G3;
3730			 mediump vec3 x2 = x - i2 + 2.0*G3;
3731			 mediump vec3 x3 = x - 1.0 + 3.0*G3;
3732			 
3733			 mediump vec4 w, d;
3734			 
3735			 w.x = dot(x, x);
3736			 w.y = dot(x1, x1);
3737			 w.z = dot(x2, x2);
3738			 w.w = dot(x3, x3);
3739			 
3740			 w = max(0.6 - w, 0.0);
3741			 
3742			 d.x = dot(random3(hs), x);
3743			 d.y = dot(random3(hs + i1), x1);
3744			 d.z = dot(random3(hs + i2), x2);
3745			 d.w = dot(random3(hs + 1.0), x3);
3746			 
3747			 w *= w;
3748			 w *= w;
3749			 d *= w;
3750			 
3751			 return dot(d, vec4(52.0));
3752		}`,[eM])).keywords.F3=new Ag("float F3 0.3333333"),eE.keywords.G3=new Ag("float G3 0.1666667"),(eC=new Af(`float simplexPrecise(vec3 p) {
3753			 vec3 s = floor(p + dot(p, vec3(F3)));
3754			 vec3 x = p - s + dot(s, vec3(G3));
3755			 
3756			 vec3 e = step(vec3(0.0), x - x.yzx);
3757			 vec3 i1 = e*(1.0 - e.zxy);
3758			 vec3 i2 = 1.0 - e.zxy*(1.0 - e);
3759				
3760			 vec3 x1 = x - i1 + G3;
3761			 vec3 x2 = x - i2 + 2.0*G3;
3762			 vec3 x3 = x - 1.0 + 3.0*G3;
3763			 
3764			 vec4 w, d;
3765			 
3766			 w.x = dot(x, x);
3767			 w.y = dot(x1, x1);
3768			 w.z = dot(x2, x2);
3769			 w.w = dot(x3, x3);
3770			 
3771			 w = max(0.6 - w, 0.0);
3772			 
3773			 d.x = dot(random3(s), x);
3774			 d.y = dot(random3(s + i1), x1);
3775			 d.z = dot(random3(s + i2), x2);
3776			 d.w = dot(random3(s + 1.0), x3);
3777			 
3778			 w *= w;
3779			 w *= w;
3780			 d *= w;
3781			 
3782			 return dot(d, vec4(52.0));
3783		}`,[eM])).keywords.F3=new Ag("float F3 0.3333333"),eC.keywords.G3=new Ag("float G3 0.1666667"),eT=new Af(`float simplexFractal(vec3 m) {
3784			mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
3785			mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
3786			mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
3787			return 0.5333333 * simplexFast(m * rot1)
3788				 + 0.2666667 * simplexFast(2.0 * m * rot2)
3789				 + 0.1333333 * simplexFast(4.0 * m * rot3)
3790				 + 0.0666667 * simplexFast(8.0 * m);
3791		}`,[eE]),eP=new Af("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),eD=new Af("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),eO=new Af(`float simplexAshima(vec3 v) {
3792		  const vec2  C = vec2(1.0/6.0, 1.0/3.0) ;
3793		  const vec4  D = vec4(0.0, 0.5, 1.0, 2.0);
3794		  vec3 i  = floor(v + dot(v, C.yyy) );
3795		  vec3 x0 =   v - i + dot(i, C.xxx) ;
3796		  vec3 g = step(x0.yzx, x0.xyz);
3797		  vec3 l = 1.0 - g;
3798		  vec3 i1 = min( g.xyz, l.zxy );
3799		  vec3 i2 = max( g.xyz, l.zxy );
3800		  vec3 x1 = x0 - i1 + 1.0 * C.xxx;
3801		  vec3 x2 = x0 - i2 + 2.0 * C.xxx;
3802		  vec3 x3 = x0 - 1. + 3.0 * C.xxx;
3803		  i = mod(i, 289.0 ); 
3804		  vec4 p = permute( permute( permute( 
3805					 i.z + vec4(0.0, i1.z, i2.z, 1.0 ))
3806				   + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) 
3807				   + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));
3808		  float n_ = 1.0/7.0; // N=7
3809		  vec3  ns = n_ * D.wyz - D.xzx;
3810		  vec4 j = p - 49.0 * floor(p * ns.z *ns.z);  //  mod(p,N*N)
3811		  vec4 x_ = floor(j * ns.z);
3812		  vec4 y_ = floor(j - 7.0 * x_ );    // mod(j,N)
3813		  vec4 x = x_ *ns.x + ns.yyyy;
3814		  vec4 y = y_ *ns.x + ns.yyyy;
3815		  vec4 h = 1.0 - abs(x) - abs(y);
3816		  vec4 b0 = vec4( x.xy, y.xy );
3817		  vec4 b1 = vec4( x.zw, y.zw );
3818		  vec4 s0 = floor(b0)*2.0 + 1.0;
3819		  vec4 s1 = floor(b1)*2.0 + 1.0;
3820		  vec4 sh = -step(h, vec4(0.0));
3821		  vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;
3822		  vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;
3823		  vec3 p0 = vec3(a0.xy,h.x);
3824		  vec3 p1 = vec3(a0.zw,h.y);
3825		  vec3 p2 = vec3(a1.xy,h.z);
3826		  vec3 p3 = vec3(a1.zw,h.w);
3827		  vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));
3828		  p0 *= norm.x;
3829		  p1 *= norm.y;
3830		  p2 *= norm.z;
3831		  p3 *= norm.w;
3832		  vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);
3833		  m = m * m;
3834		  return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), 
3835										dot(p2,x2), dot(p3,x3) ) );
3836		}`,[eP,eD]),eI=new Af("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),eR=new Af("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[eI]),eL=new Af(`float noise(vec3 p){
3837			vec3 a = floor(p);
3838			vec3 d = p - a;
3839			d = d * d * (3.0 - 2.0 * d);
3840			vec4 b = a.xxyy + vec4(0.0, 1.0, 0.0, 1.0);
3841			vec4 k1 = perm(b.xyxy);
3842			vec4 k2 = perm(k1.xyxy + b.zzww);
3843			vec4 c = k2 + a.zzzz;
3844			vec4 k3 = perm(c);
3845			vec4 k4 = perm(c + 1.0);
3846			vec4 o1 = fract(k3 * (1.0 / 41.0));
3847			vec4 o2 = fract(k4 * (1.0 / 41.0));
3848			vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
3849			vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
3850			return o4.y * d.y + o4.x * (1.0 - d.y);
3851		}`,[eR]),(eB=new Af(`float fbm(vec3 x) {
3852			float v = 0.0;
3853			float a = 0.5;
3854			vec3 shift = vec3(100);
3855			for (int i = 0; i < NUM_OCTAVES; ++i) {
3856				v += a * noise(x);
3857				x = x * 2.0 + shift;
3858				a *= 0.5;
3859			}
3860			return v;
3861		}`,[eL])).keywords.NUM_OCTAVES=new Ag("int NUM_OCTAVES 5"),ez=new Af("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),eF=new Af(`float perlin(vec3 P){
3862		  vec3 Pi0 = floor(P);
3863		  vec3 Pi1 = Pi0 + vec3(1.0);
3864		  Pi0 = mod(Pi0, 289.0);
3865		  Pi1 = mod(Pi1, 289.0);
3866		  vec3 Pf0 = fract(P);
3867		  vec3 Pf1 = Pf0 - vec3(1.0);
3868		  vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);
3869		  vec4 iy = vec4(Pi0.yy, Pi1.yy);
3870		  vec4 iz0 = Pi0.zzzz;
3871		  vec4 iz1 = Pi1.zzzz;
3872		  vec4 ixy = permute(permute(ix) + iy);
3873		  vec4 ixy0 = permute(ixy + iz0);
3874		  vec4 ixy1 = permute(ixy + iz1);
3875		  vec4 gx0 = ixy0 / 7.0;
3876		  vec4 gy0 = fract(floor(gx0) / 7.0) - 0.5;
3877		  gx0 = fract(gx0);
3878		  vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);
3879		  vec4 sz0 = step(gz0, vec4(0.0));
3880		  gx0 -= sz0 * (step(0.0, gx0) - 0.5);
3881		  gy0 -= sz0 * (step(0.0, gy0) - 0.5);
3882		  vec4 gx1 = ixy1 / 7.0;
3883		  vec4 gy1 = fract(floor(gx1) / 7.0) - 0.5;
3884		  gx1 = fract(gx1);
3885		  vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);
3886		  vec4 sz1 = step(gz1, vec4(0.0));
3887		  gx1 -= sz1 * (step(0.0, gx1) - 0.5);
3888		  gy1 -= sz1 * (step(0.0, gy1) - 0.5);
3889		  vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);
3890		  vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);
3891		  vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);
3892		  vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);
3893		  vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);
3894		  vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);
3895		  vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);
3896		  vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);
3897		  vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));
3898		  g000 *= norm0.x;
3899		  g010 *= norm0.y;
3900		  g100 *= norm0.z;
3901		  g110 *= norm0.w;
3902		  vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));
3903		  g001 *= norm1.x;
3904		  g011 *= norm1.y;
3905		  g101 *= norm1.z;
3906		  g111 *= norm1.w;
3907		  float n000 = dot(g000, Pf0);
3908		  float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));
3909		  float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));
3910		  float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));
3911		  float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));
3912		  float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));
3913		  float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));
3914		  float n111 = dot(g111, Pf1);
3915		  vec3 fade_xyz = fade(Pf0);
3916		  vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);
3917		  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
3918		  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x); 
3919		  return 2.2 * n_xyz;
3920		}`,[eP,eD,ez]),eN=new Af(`float hashwithoutsine13(vec3 p3)
3921		{
3922			p3  = fract(p3 * .1031);
3923			p3 += dot(p3, p3.yzx + 33.33);
3924			return fract((p3.x + p3.y) * p3.z);
3925		}`),eU=new Af(`vec3 hashwithoutsine33(vec3 p3)
3926		{
3927			p3 = fract(p3 * vec3(.1031, .1030, .0973));
3928			p3 += dot(p3, p3.yxz+33.33);
3929			return fract((p3.xxy + p3.yxx)*p3.zyx);
3930		}`),ek=new Af(`float metric(in vec3 p)
3931		{
3932			// L2 
3933			return length(p);
3934
3935			// Chebyshev 
3936			// vec3 a = abs(p);
3937			// return max(a.x, max(a.y, a.z));
3938		}`),eV=new Af(`float smin( float a, float b, float k )
3939		{
3940			float h = smoothstep(0.0, 1.0, 0.5 + 0.5 * (b - a) / k);
3941			float correction = k * h * (1.0 - h);
3942			return mix(b, a, h) - correction;
3943		}`),ej=new Af(`float smax( float a, float b, float k )
3944		{
3945			float h = smoothstep(1.0, 0.0, 0.5 + 0.5 * (a - b) / k);
3946			float correction = k * h * (1.0 - h);
3947			return mix(a, b, h) + correction;
3948		}`),eG=new Af(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
3949			// Compute width of each interval
3950			float input_width = input_max - input_min;
3951			float output_width = output_max - output_min;
3952		
3953			// Convert input range into a 0-1 range 
3954			float scaled = (value - input_min) / input_width;
3955		
3956			// Convert the 0-1 range into a value in output range
3957			return output_min + (scaled * output_width);
3958		}
3958`),{simplexFast:eE,simplexPrecise:eC,simplexFractal:eT,simplexAshima:eO,fbm:eB,perlin:eF,voronoi:new Af(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality) 
3959		{
3960			// Integer and fractional parts of this point's coordinates
3961			ivec3 p = ivec3(floor(x));
3962			vec3 f = fract(x);
3963
3964			// Different variables that we will use to construct noise:
3965			//
3966			// f1: distance to the closest feature point
3967			// f2: distance to the second closest feature point
3968			// e: distance to the closest edge (cell boundary)
3969			//
3970			// We also compute "smooth" versions of all of the above quantites, essentially
3971			// replacing "hard" minimums with "smooth" minimums (described by IQ)
3972			float f1_smooth = 8.0;
3973			float f1 = 8.0;
3974			float f2_smooth = 8.0;
3975			float f2 = 8.0;
3976			float e_smooth = 8.0;
3977			float e = 8.0;
3978
3979			// Variables stored from closest cell
3980			ivec3 mb;
3981			vec3 mr; 
3982
3983			int steps = quality;
3984			
3985			for (int x = -steps; x <= steps; x++) 
3986			for (int y = -steps; y <= steps; y++)
3987			for (int z = -steps; z <= steps; z++)
3988			{
3989				ivec3 b = ivec3(x, y, z);
3990				vec3 r = vec3(b) + hashwithoutsine33(vec3(p + b) + seed) - f;
3991				float d = length(r);
3992				
3993				f1_smooth = smin(d, f1_smooth, smoothness);
3994
3995				// Store un-smoothed distances too 
3996				if (d < f1) 
3997				{
3998					f2 = f1;
3999					f1 = d;
4000
4001					mb = ivec3(x, y, z);
4002					mr = r;
4003				} 
4004				else if (d < f2) 
4005				{
4006					f2 = d;
4007				}
4008			}	
4009			
4010			// Second pass for edge distance  
4011			// skip for styles don't need
4012			if (style != 0 &&  style != 5 && style != 7)
4013			for (int x = -steps; x <= steps; x++) 
4014			for (int y = -steps; y <= steps; y++)
4015			for (int z = -steps; z <= steps; z++)
4016			{
4017				// Start search at the cell that contains the closest point to "x" (found in 1st pass)
4018				ivec3 b = mb + ivec3(x, y, z);
4019				vec3 r = vec3(b) + hashwithoutsine33(vec3(p + b) + seed) - f;
4020				float d1 = dot(0.5 * (mr + r), (r - mr)); 				// IQ normalizes "r - mr" but that breaks things for the smooth version?
4021				float d2 = dot(0.5 * (mr + r), normalize(r - mr));
4022
4023				e_smooth = smin(d1, e_smooth, smoothness);
4024
4025				e = min(e, d2);
4026
4027				// Also compute a smooth version of F2 in this pass
4028				{
4029					ivec3 b = ivec3(x, y, z);
4030					if (b != mb) 
4031					{
4032						vec3 r = vec3(b) + hashwithoutsine33(vec3(p + b) + seed) - f;
4033						float d = length(r);
4034
4035						f2_smooth = smin(d, f2_smooth, smoothness);
4036					}
4037				}
4038			}
4039
4040			// Different visualization modes 
4041			if (style == 0) 
4042			{
4043				return f1_smooth;
4044			}
4045			if (style == 1) 
4046			{
4047				return f2_smooth;
4048			}
4049			if (style == 2) 
4050			{
4051				return f2_smooth - f1_smooth;
4052				
4053				// "Pebbles" also cool
4054				//return step(0.2, f2_smooth - f1_smooth);
4055			}
4056			if (style == 3) 
4057			{
4058				// This one is really good for rock / stone effects
4059				float a = f1; 
4060				float b = f2;
4061				float k = 3.0;
4062				float h = max(k - abs(a - b), 0.0) / k;
4063				float final = min(a, b) - h * h * k * (1.0 / 4.0);
4064				return final;
4065			}
4066			if (style == 4) 
4067			{
4068				// Some random adjustments to make this style stand out more 
4069				return exp(5.0 * e_smooth);
4070			}
4071			if (style == 5) 
4072			{
4073				return pow(f1_smooth, 3.0);
4074			}
4075			if (style == 6) 
4076			{				
4077				const float eps = 0.0125;
4078
4079				// Thicker lines as the user increases the smoothness slider
4080				float thickness = smoothness * 0.25 + eps;
4081
4082				// Blurrier lines as the user increases the smoothness slider
4083				float blur = pow(smoothness, 3.0) * 0.25 + eps;
4084
4085				return smoothstep(
4086					thickness - thickness * blur, 
4087					thickness + thickness * blur, 
4088					e
4089				);
4090			}
4091			if (style == 7) 
4092			{
4093				return hashwithoutsine13(vec3(p + mb) + seed);
4094			}
4095		}
4096	`,[eN,eU,ek,eV,ej,eG])}),Mi=class extends Ao{constructor(e,t,i,r,a,o,h,c,d,u,p,f,m,g,v,y,x,b,w){super("v3"),this.nodeType="Noise",this.scale=e,this.size=t,this.move=i,this.fA=r,this.fB=a,this.distortion=o,this.colorA=h,this.colorB=c,this.colorC=d,this.colorD=u,this.noiseType=f,this.voronoiStyle=g,this.highCut=v,this.lowCut=y,this.smoothness=x,this.seed=b,this.quality=w,this.isMask=m,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,i,r,a){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");
4096let o=["simplexFast","simplexFractal","simplexAshima","fbm","perlin","voronoi"][this.noiseType.value],h="voronoi"==o?`
4097		float v = ${o}(st + move, voronoiStyle, smoothness, seed, quality);
4098
4099		// Apply clipping to colors
4100		v = remap(v, lowCut, highCut, 0.0, 1.0);
4101		v = smax(v, 0.0, smoothness * 0.25);
4102		v = smin(v, 1.0, smoothness * 0.25);
4103
4104		// Note that the voronoi mode only uses colors "A" and "C" from the UI 
4105		vec4 color = mix(colorA, colorC, v); 
4106		`:`
4107		vec3 q = vec3(${o}(st),
4108					   ${o}(st + vec3(1.0)),
4109					   ${o}(st + vec3(1.0)));
4110		vec3 r = vec3(${o}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
4111					  ${o}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move), 
4112					  ${o}(st * q));
4113		float f = ${o}(st + r);
4114		vec4 color;
4115		color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
4116		color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
4117		color = mix(color, colorD, clamp(length(r.x), 0.0, 1.0));
4118		`,c=new Af(`vec3 ${o}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, int voronoiStyle, float highCut, float lowCut, float smoothness, float seed, int quality, bool isMask, float mask, float alpha, out float calpha) 
4119			{
4120                // Prevent scale of zero 
4121				scale = max(abs(scale), 0.001);
4122
4123				vec3 st = position / size;
4124				st /= scale;
4125
4126				${h}
4127
4128				float lalpha = alpha * color.a * mask;
4129				calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
4130				accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
4131
4132				return clamp(color, 0.0, 1.0).rgb;
4133			}`,[Mt.simplexFast,Mt.simplexFractal,Mt.simplexAshima,Mt.fbm,Mt.perlin,Mt.voronoi]),d=e.include(c),u=[];return u.push(this.scale.build(e,"f")),u.push(this.size.build(e,"v3")),u.push(this.move.build(e,"f")),u.push(this.fA.build(e,"v2")),u.push(this.fB.build(e,"v2")),u.push(this.distortion.build(e,"v2")),u.push(this.colorA.build(e,"v4")),u.push(this.colorB.build(e,"v4")),u.push(this.colorC.build(e,"v4")),u.push(this.colorD.build(e,"v4")),u.push(this.voronoiStyle.build(e,"i")),u.push(this.highCut.build(e,"f")),u.push(this.lowCut.build(e,"f")),u.push(this.smoothness.build(e,"f")),u.push(this.seed.build(e,"f")),u.push(this.quality.build(e,"i")),u.push(this.isMask.build(e,"b")),u.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),u.push(this.alpha.build(e,"f")),u.push(this.calpha),e.format(d+"("+u.join(",")+")",this.getType(e),t)}};Mi.numOctaves=5;var Mr=class extends Ao{constructor(e,t,i,r,a,o,h,c,d,u,p,f,m,g,v,y){super("v3"),this.nodeType="Outline",this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=i,this.contourWidth=r,this.contourThreshold=a,this.outlineThreshold=o,this.contourFrequency=h,this.outlineSmoothing=c,this.contourDirection=d,this.positionalLines=u,this.compensation=p,this.resolution=f,this.normalMap=m,this.depthMap=g,this.pixelRatio=v,this.alpha=y,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let i=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${i}_offset`),this.firstTime){let t=this.outlineWidth.build(e,"f"),r=this.resolution.build(e,"v2"),a=this.compensation.build(e,"b"),o=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(t,"uniform float"),e.addVertexParsVariable(r,"uniform vec2"),e.addVertexParsVariable(a,"uniform bool"),e.addVertexParsVariable(o,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
4134                vID = randomColor.r;
4135                vec2 ${i}_offset = vec2(0.0);
4136                if (${a}) {
4137                    vec4 ${i}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(transformed, 1.0));
4138                    // NOTE: For certain shapes, like spheres, we get incorrect extrusion when the
4139                    // normals face the camera directly. So we hackily fix this by offsetting the normal
4140                    // by a tiny amount.
4141                    vec3 ${i}_clipNormal = mat3(projectionMatrix) * (mat3(modelViewMatrix) * extrudeNormal) + 0.0000001;
4142                    ${i}_offset = normalize(${i}_clipNormal.xy) / ${r} * (${t} / 2.0) * ${i}_clipPosition.w * 2.0 * ${o};
4143                    ${i}_clipPosition.xy += ${i}_offset;
4144                    // TODO(MAX): To handle multiple outline layers, we only want to extrude
4145                    // if this offset is the biggest of all the potential offsets
4146                    gl_Position = ${i}_clipPosition;
4147                }
4148            `)}if(!e.isShader("fragment"))return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),"";{e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(Mr.Nodes.outline),r=[];return r.push(this.outlineColor.build(e,"c")),r.push(this.contourColor.build(e,"c")),r.push(this.outlineWidth.build(e,"f")),r.push(this.contourWidth.build(e,"f")),r.push(this.contourThreshold.build(e,"f")),r.push(this.outlineThreshold.build(e,"f")),r.push(this.contourFrequency.build(e,"f")),r.push(this.outlineSmoothing.build(e,"f")),r.push(this.contourDirection.build(e,"v3")),r.push(this.positionalLines.build(e,"b")),r.push(this.resolution.build(e,"v2")),r.push(this.normalMap.getTexture(e,"t")),r.push(this.depthMap.getTexture(e,"t")),r.push(this.pixelRatio.build(e,"f")),r.push(this.compensation.build(e,"b")),r.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),r.push(this.alpha.build(e,"f")),r.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+r.join(",")+")",this.getType(e),t)}}};Mr.Nodes=(eH=new Af(`
4149float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
4150{
4151    vec2 halton = haltonSequence[frameIndex];
4152    float temporalOffset = getNoiseInterleavedGradient(gl_FragCoord.xy + halton);
4153    float temporalAngle  = temporalOffset * PI2;
4154
4155    vec2 texelSize = (vec2(1.0) / resolution);
4156    vec2 offsetSize = texelSize * outlineWidth * pixelRatio;
4157
4158    vec2 uvSamples[9];
4159    vec4 normalSamples[9];
4160
4161	uvSamples[0] = uv + vec2( -offsetSize.x, -offsetSize.y) + (vogelDiskSample(0, 9, temporalAngle) * texelSize);
4162	uvSamples[1] = uv + vec2(0.0, -offsetSize.y) + (vogelDiskSample(1, 9, temporalAngle) * texelSize);
4163	uvSamples[2] = uv + vec2(  offsetSize.x, -offsetSize.y) + (vogelDiskSample(2, 9, temporalAngle) * texelSize);
4164	uvSamples[3] = uv + vec2( -offsetSize.x, 0.0) + (vogelDiskSample(3, 9, temporalAngle) * texelSize);
4165	uvSamples[4] = uv;
4166	uvSamples[5] = uv + vec2(  offsetSize.x, 0.0) + (vogelDiskSample(5, 9, temporalAngle) * texelSize);
4167	uvSamples[6] = uv + vec2( -offsetSize.x, offsetSize.y) + (vogelDiskSample(6, 9, temporalAngle) * texelSize);
4168	uvSamples[7] = uv + vec2(0.0, offsetSize.y) + (vogelDiskSample(7, 9, temporalAngle) * texelSize);
4169	uvSamples[8] = uv + vec2(  offsetSize.x, offsetSize.y) + (vogelDiskSample(8, 9, temporalAngle) * texelSize);
4170
4171
4172    normalSamples[0] = texture2D(t, uvSamples[0]);
4173    normalSamples[1] = texture2D(t, uvSamples[1]);
4174    normalSamples[2] = texture2D(t, uvSamples[2]);
4175    normalSamples[3] = texture2D(t, uvSamples[3]);
4176    normalSamples[4] = texture2D(t, uvSamples[4]);
4177    normalSamples[5] = texture2D(t, uvSamples[5]);
4178    normalSamples[6] = texture2D(t, uvSamples[6]);
4179    normalSamples[7] = texture2D(t, uvSamples[7]);
4180    normalSamples[8] = texture2D(t, uvSamples[8]);
4181
4182    float depthBias = 0.0001;
4183    // TODO(MAX): Can we somehow reduce the number of conditionals here with MATH?!
4184    if (normalSamples[0].a != vID && normalSamples[0].a != 0.0) {
4185        float depthAtSample = texture2D(d, uvSamples[0]).r + depthBias;
4186        if (gl_FragCoord.z > depthAtSample) {
4187           return 0.0;
4188        }
4189    }
4190
4191    if (normalSamples[1].a != vID && normalSamples[1].a != 0.0) {
4192        float depthAtSample = texture2D(d, uvSamples[1]).r + depthBias;
4193        if (gl_FragCoord.z > depthAtSample) {
4194           return 0.0;
4195        }
4196    }
4197
4198    if (normalSamples[2].a != vID && normalSamples[2].a != 0.0) {
4199        float depthAtSample = texture2D(d, uvSamples[2]).r + depthBias;
4200        if (gl_FragCoord.z > depthAtSample) {
4201           return 0.0;
4202        }
4203    }
4204
4205    if (normalSamples[3].a != vID && normalSamples[3].a != 0.0) {
4206        float depthAtSample = texture2D(d, uvSamples[3]).r + depthBias;
4207        if (gl_FragCoord.z > depthAtSample) {
4208           return 0.0;
4209        }
4210    }
4211
4212
4213    if (normalSamples[4].a != vID && normalSamples[4].a != 0.0) {
4214        float depthAtSample = texture2D(d, uvSamples[4]).r + depthBias;
4215        if (gl_FragCoord.z > depthAtSample) {
4216           return 0.0;
4217        }
4218    }
4219
4220    if (normalSamples[5].a != vID && normalSamples[5].a != 0.0) {
4221        float depthAtSample = texture2D(d, uvSamples[5]).r + depthBias;
4222        if (gl_FragCoord.z > depthAtSample) {
4223           return 0.0;
4224        }
4225    }
4226
4227    if (normalSamples[6].a != vID && normalSamples[6].a != 0.0) {
4228        float depthAtSample = texture2D(d, uvSamples[6]).r + depthBias;
4229        if (gl_FragCoord.z > depthAtSample) {
4230           return 0.0;
4231        }
4232    }
4233
4234    if (normalSamples[7].a != vID && normalSamples[7].a != 0.0) {
4235        float depthAtSample = texture2D(d, uvSamples[7]).r + depthBias;
4236        if (gl_FragCoord.z > depthAtSample) {
4237           return 0.0;
4238        }
4239    }
4240
4241    if (normalSamples[8].a != vID && normalSamples[8].a != 0.0) {
4242        float depthAtSample = texture2D(d, uvSamples[8]).r + depthBias;
4243        if (gl_FragCoord.z > depthAtSample) {
4244           return 0.0;
4245        }
4246    }
4247
4248    vec3 sobel_edge_h = normalSamples[2].rgb + (2.0*normalSamples[5].rgb) + normalSamples[8].rgb - (normalSamples[0].rgb + (2.0*normalSamples[3].rgb) + normalSamples[6].rgb);
4249  	vec3 sobel_edge_v = normalSamples[0].rgb + (2.0*normalSamples[1].rgb) + normalSamples[2].rgb - (normalSamples[6].rgb + (2.0*normalSamples[7].rgb) + normalSamples[8].rgb);
4250
4251    float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
4252    return edgeNormal;
4253}
4254`),{outline:new Af(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float mask, float alpha, out float calpha) {
4255                vec3 result = outlineColor;
4256                float resultAlpha = 0.0;
4257
4258                vec3 N = normalize(vWNormal);
4259                vec2 nuv = (gl_FragCoord.xy / resolution);
4260                float sobelSample = compensation ? sobelSample(normalMap, depthMap, nuv, resolution, outlineWidth / 2., pixelRatio) : sobelSample(normalMap, depthMap, nuv, resolution, outlineWidth, pixelRatio);
4261                resultAlpha = smoothstep(outlineThreshold - outlineSmoothing, outlineThreshold + outlineSmoothing, sobelSample);
4262
4263                //resultAlpha = 1.0;
4264                //result = vec3(sobelSample);
4265
4266                float t = 1.0 - contourThreshold;
4267                if(positionalLines) {
4268                    vec3 NDir = position * contourDirection;
4269                    float NT = NDir.x + NDir.y + NDir.z;
4270                    float f  = fract(NT * contourFrequency * 0.01);
4271                    float df = fwidth(NT * contourFrequency);
4272
4273                    float g = smoothstep(df * (contourWidth * 0.01), df * (contourWidth * 0.01 * 2.0), f);
4274                    if (g < 1.0 && resultAlpha == 0.0) {
4275                        result = contourColor;
4276                        resultAlpha = 1.0;
4277                    }
4278                 }
4279                 else {
4280                    vec3 NDir = N * contourDirection;
4281                    float NT = NDir.x + NDir.y + NDir.z;
4282                    float df = fwidth(NT * contourThreshold);
4283                    float f = sin(NT * 1.0 * contourFrequency);
4284                    float g = smoothstep(0.0, df * contourWidth, 1.0 - f);
4285
4286                    if (df > (t * 0.5) && g < 1.0 && resultAlpha == 0.0) {
4287                        result = contourColor;
4288                        resultAlpha = 1.0 - g;
4289                    }
4290                 }
4291
4292                 float lalpha = alpha * resultAlpha * mask;
4293                 calpha =  lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
4294                 accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
4295				 
4296                 return result;
4297             }`,[eH])});var Ms=class extends Ao{constructor(e,t,i,r,a,o,h,c,d,u,p,f,m,g,v,y,x,b){super("v3"),this.nodeType="Pattern",this.style=e,this.projection=t,this.axis=i,this.blending=r,this.offset=a,this.colorA=o,this.colorB=h,this.frequency=c,this.size=d,this.variation=u,this.smoothness=p,this.zigzag=f,this.rotation=m,this.vertical=g,this.horizontal=v,this.sides=y,this.isMask=b,this.alpha=x,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(!e.isShader("fragment"))return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),t);{let i;switch(e.require("position"),e.require("uv"),e.requires.uv=[!0],e.require("normal"),e.requires.normal=!0,e.addFragmentVariable(this.calpha,"float"),this.style.value){case 0:default:i="circle";break;case 1:i="ring";break;case 2:i="polygon";break;case 3:i="xcross";break;case 4:i="diamond";break;case 5:i="checkerboard";break;case 6:i="line";break;case 7:i="wave"}let r=`g${this.uuid.toString().replace(/-/g,"")}`,a=new Af(`float hashwithoutsine12(vec2 p)
4298				{
4299					vec3 p3 = fract(vec3(p.xyx) * .1031);
4300					p3 += dot(p3, p3.yzx + 33.33);
4301					return fract((p3.x + p3.y) * p3.z);
4302				}`),o=new Af(`vec2 rotate_uv(in vec2 uv, float a, bool repeat) 
4303				{
4304					const float mid = 0.5;
4305					float radians = a * (PI / 180.0);
4306					vec2 rotated = vec2(
4307						cos(radians) * (uv.x - mid) + sin(radians) * (uv.y - mid) + mid,
4308						cos(radians) * (uv.y - mid) - sin(radians) * (uv.x - mid) + mid
4309					);
4310					return repeat ? fract(rotated): rotated;
4311				}`),h="";if(4===this.projection.value){let e=2===this.style.value?`${i}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${i}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,t=2===this.style.value?`${i}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${i}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,r=2===this.style.value?`${i}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${i}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation)`;h=`
4312				vec3 p = position;
4313				float factor = 0.0125;
4314				vec2 uv0 = fract(p.xy * factor);
4315				vec2 uv1 = fract(p.zy * factor);
4316				vec2 uv2 = fract(p.xz * factor);
4317				
4318				uv0 = rotate_uv(uv0 + offset, rotation, true);
4319				uv1 = rotate_uv(uv1 + offset, rotation, true);
4320				uv2 = rotate_uv(uv2 + offset, rotation, true);
4321	
4322				float d0 = ${e};
4323				float d1 = ${t};
4324				float d2 = ${r};
4325				
4326				// Range from 3 to 128 seems to be good
4327				float exponent = (1.0 - blending) * 125.0 + 3.0;
4328
4329				vec3 n = vObjectNormal;
4330				vec3 weights = abs(normalize(n));
4331				weights = pow(weights, vec3(exponent));
4332				weights /= dot(weights, vec3(1.0));
4333				d0 *= weights.z;
4334				d1 *= weights.x;
4335				d2 *= weights.y;
4336				float draw = d0 + d1 + d2;
4337	
4338				vec2 custom_uv = uv0 * weights.z + uv1 * weights.x + uv2 * weights.y;
4339				`}else{let e=2===this.style.value?`${i}(custom_uv, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${i}(custom_uv, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,t="";0===this.axis.value?t=`float radius = length(p);
4340					float theta = atan(p.y, p.z);
4341					float phi = acos(p.x / radius);`:1===this.axis.value?t=`float radius = length(p);
4342					float theta = atan(p.x, p.z);
4343					float phi = acos(p.y / radius);`:(this.axis.value,t=`float radius = length(p);
4344					float theta = atan(p.y, p.x);
4345					float phi = acos(p.z / radius);`);let r="";switch(this.projection.value){case 0:r="custom_uv = vUv.st;";break;case 1:case 3:break;case 2:r=`
4346							vec3 p = position;
4347							${t}
4348							custom_uv = vec2(theta, phi);
4349							custom_uv /= PI;
4350							`}h=`
4351				vec2 custom_uv;
4352				${r}
4353	
4354				custom_uv += offset;
4355				custom_uv = fract(custom_uv);
4356				custom_uv = rotate_uv(custom_uv, rotation, true);
4357	
4358				float draw = ${e};
4359				`}let c=new Af(`vec3 ${r}_pattern(vec3 normal, float blending, int style, vec2 offset, vec4 colorA, vec4 colorB, vec2 frequency, float size, float variation, float smoothness, float zigzag, float rotation, vec2 vertical, vec2 horizontal, int sides, bool isMask, float mask, float alpha, out float calpha) {
4360					const float TWO_PI = PI * 2.0;
4361					float smoothness_remapped = pow(smoothness, 5.0);	
4362
4363					${h}
4364
4365					// Construct final output color
4366					vec4 color = mix(colorA, colorB, draw);
4367					color.a = clamp(color.a, 0.0, 1.0);
4368
4369					// Apply cuts
4370					color.a *= 
4371						step(vertical.x, custom_uv.y) * 
4372						step(custom_uv.y, vertical.y);
4373					color.a *= 
4374						step(horizontal.x, abs(custom_uv.x)) * 
4375						step(abs(custom_uv.x), horizontal.y);
4376
4377					// Accumulate alpha 
4378					float lalpha = alpha * clamp(color.a, 0.0, 1.0) * mask;
4379					calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
4380					accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
4381
4382					return clamp(color, 0.0, 1.0).rgb;
4383				}`,[o,a,Ms.DrawFunctions.circle,Ms.DrawFunctions.ring,Ms.DrawFunctions.polygon,Ms.DrawFunctions.cross,Ms.DrawFunctions.diamond,Ms.DrawFunctions.checkerboard,Ms.DrawFunctions.line,Ms.DrawFunctions.wave]),d=e.include(c),u=[];return u.push("normal"),u.push(this.blending.build(e,"f")),u.push(this.style.build(e,"i")),u.push(this.offset.build(e,"v2")),u.push(this.colorA.build(e,"v4")),u.push(this.colorB.build(e,"v4")),u.push(this.frequency.build(e,"v2")),u.push(this.size.build(e,"f")),u.push(this.variation.build(e,"f")),u.push(this.smoothness.build(e,"f")),u.push(this.zigzag.build(e,"f")),u.push(this.rotation.build(e,"f")),u.push(this.vertical.build(e,"v2")),u.push(this.horizontal.build(e,"v2")),u.push(this.sides.build(e,"i")),u.push(this.isMask.build(e,"b")),u.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),u.push(this.alpha.build(e,"f")),u.push(this.calpha),e.format(d+"("+u.join(",")+")",this.getType(e),t)}}};Ms.DrawFunctions=(eW=new Af(`float hashwithoutsine12(vec2 p) {
4384				vec3 p3 = fract(vec3(p.xyx) * 0.1031);
4385				p3 += dot(p3, p3.yzx + 33.33);
4386				return fract((p3.x + p3.y) * p3.z);
4387			}`),eq=new Af(`vec2 tile_and_center(in vec2 uv, in vec2 frequency, in float variation, in float zigzag, in float rotation) {
4388                // Create tiles in UV-space
4389                uv *= frequency;
4390
4391                // Integer coords
4392                vec2 i = floor(uv);
4393
4394                // Offset every other row based on zigzag param, then compute fractional coords
4395                float row_offset = mod(i.y, 2.0);
4396                uv.x += row_offset * zigzag;
4397                vec2 f = fract(uv);
4398
4399				// Rotate the tile itself:
4400				// const float mid = 0.5;
4401				// f = vec2(
4402				// 	cos(rotation) * (f.x - mid) + sin(rotation) * (f.y - mid) + mid,
4403				// 	cos(rotation) * (f.y - mid) - sin(rotation) * (f.x - mid) + mid
4404				// );
4405				// f = fract(f);
4406
4407                f = f * 2.0 - 1.0;
4408
4409				// Recompute integer coords after shifting - then, random value per tile 
4410				i = floor(uv);
4411				float rand = (hashwithoutsine12(i) * 5.0 + 1.0);
4412				float jitter = mix(1.0, rand, variation);
4413				f *= jitter;
4414
4415                return f;
4416            }`,[eW]),eX=new Af(`float circle(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
4417                vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
4418                return smoothstep(
4419                    -smoothness, 
4420                     smoothness, 
4421                     length(f) - size
4422                );
4423            }`,[eq]),eY=new Af(`float ring(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
4424                vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
4425
4426				float d = length(f);
4427                const float inner_width = 0.5;
4428
4429                float outer = smoothstep(-smoothness, smoothness, d - size);
4430                float inner = smoothstep(-smoothness, smoothness, d - size * inner_width);
4431				return outer + (1.0 - inner);   
4432            }`,[eq]),eQ=new Af(`float sdf_ngon(in vec2 p, in float r, in int n) {
4433                float an = (PI * 2.0) / float(n);
4434                float he = r * tan(0.5 * an);
4435                
4436                // Rotate to first sector
4437                p = -p.yx; 
4438                float bn = an * floor((atan(p.y, p.x) + 0.5 * an) / an);
4439                vec2  cs = vec2(cos(bn), sin(bn));
4440                p = mat2(cs.x, -cs.y, cs.y, cs.x)*p;
4441            
4442                // Side of polygon
4443                return length(p - vec2(r, clamp(p.y, -he, he))) * sign(p.x - r);
4444            }
4445            
4446            float polygon(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation, in int sides) {
4447                vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
4448                return smoothstep(-smoothness, smoothness, sdf_ngon(f, size, sides));
4449            }`,[eq]),eZ=new Af(`float sdf_cross(in vec2 p, in vec2 b, float r ) {
4450                p = abs(p); 
4451				p = (p.y > p.x) ? p.yx : p.xy;
4452                vec2  q = p - b;
4453                float k = max(q.y, q.x);
4454                vec2  w = (k > 0.0) ? q : vec2(b.y - p.x, -k);
4455                return sign(k) * length(max(w, 0.0)) + r;
4456            }
4457            
4458            // Avoid namespace conflicts 
4459            float xcross(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
4460                vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
4461                return smoothstep(-smoothness, smoothness, sdf_cross(f, vec2(size, size * 0.25), smoothness));
4462            }`,[eq]),eK=new Af(`float ndot(vec2 a, vec2 b) { 
4463                return a.x*b.x - a.y*b.y; 
4464            }
4465            
4466            float sdf_diamond(in vec2 p, in vec2 b) {
4467                p = abs(p);
4468                float h = clamp(ndot(b - 2.0 * p, b) / dot(b, b), -1.0, 1.0);
4469                float d = length(p - 0.5 * b * vec2(1.0 - h, 1.0 + h));
4470                return d * sign(p.x * b.y + p.y * b.x - b.x * b.y);
4471            }
4472
4473            float diamond(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
4474                vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
4475	            return smoothstep(-smoothness, smoothness, sdf_diamond(f, vec2(size)));
4476            }`,[eq]),eJ=new Af(`float checkerboard(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
4477                uv *= frequency;
4478                vec2 i = floor(uv);
4479
4480                float offset = mod(i.y, 2.0);
4481
4482                uv.x += offset + zigzag * offset;
4483                float x = floor(uv.x);
4484                
4485                return mod(x, 2.0);
4486            }`),e$=new Af(`float line(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
4487                vec2 f = tile_and_center(uv, frequency, 0.0, zigzag, rotation);
4488				
4489				// Different approach for variation param here
4490				float row = floor(uv * frequency).y;
4491				float rand = hashwithoutsine12(vec2(row));
4492				float s = mix(size, size * rand, variation);
4493
4494				return smoothstep(
4495					s - smoothness, 
4496					s + smoothness, 
4497					abs(f.y)
4498				);
4499            }`,[eq]),{tileAndCenter:eq,circle:eX,ring:eY,polygon:eQ,cross:eZ,diamond:eK,checkerboard:eJ,line:e$,wave:new Af(`// Uses bisection 
4500            float udf_cos(in vec2 p, in float a, in float b, in float c, in float d) {
4501                // Convert all data to a primitive cosine wave
4502                p = c * (p - vec2(d, a));
4503                
4504                const float TWO_PI = PI * 2.0;
4505
4506                // Reduce to principal half cycle
4507                p.x = mod(p.x, TWO_PI); 
4508                if (p.x > PI) {
4509                    p.x = TWO_PI - p.x;
4510                }
4511            
4512                // Find zero of derivative (minimize distance)
4513                float xa = 0.0;
4514                float xb = TWO_PI;
4515
4516                // 24 bit precision
4517                for (int i = 0; i < 24; i++) {
4518                    float x = 0.5 * (xa + xb);
4519                    float y = x - p.x + b * c * sin(x) * (p.y - b * c * cos(x));
4520                    if (y < 0.0) xa = x; 
4521                    else xb = x;
4522                }
4523                float x = 0.5 * (xa + xb);
4524                
4525                // Compute distance    
4526                vec2 q = vec2(x, b * c * cos(x));
4527                return length(p - q) / c;
4528            }
4529
4530            float wave(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
4531                float repeat = frequency.x;
4532                uv *= repeat;
4533                vec2 i = floor(uv);
4534                float row_offset = mod(i.y, 2.0);
4535                uv.x += row_offset * zigzag;
4536                vec2 f = vec2(uv.x, fract(uv.y));
4537
4538                // Generalized cosine: y(x) = a + b * cos(cx + d)
4539                const float amplitude = 0.125;
4540                float wave_frequency = frequency.y * 0.1;
4541                float distance_estimate = udf_cos(f, 0.50, amplitude, wave_frequency * (2.0 * PI), 0.0);
4542
4543				// Different approach for variation param here
4544				float rand = hashwithoutsine12(vec2(i.y));
4545				float s = mix(size, size * rand, variation);
4546
4547                return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
4548            }`)});var Ma=class extends Ao{constructor(e,t,i,r,a,o,h,c){super("v3"),this.nodeType="Rainbow",this.filmThickness=e,this.movement=t,this.wavelengths=i,this.noiseStrength=r,this.noiseScale=a,this.offset=o,this.isMask=c,this.alpha=h,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),!e.isShader("fragment"))return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t);{e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(Ma.Nodes.rainbow),r=[];return r.push(this.filmThickness.build(e,"f")),r.push(this.movement.build(e,"f")),r.push(this.wavelengths.build(e,"v3")),r.push(this.noiseStrength.build(e,"f")),r.push(this.noiseScale.build(e,"f")),r.push(this.offset.build(e,"v3")),r.push(this.isMask.build(e,"b")),r.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),r.push(this.alpha.build(e,"f")),r.push(this.calpha),e.format(i+"("+r.join(",")+")",this.getType(e),t)}}};Ma.Nodes=(e0=new Af(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
4549				float f = 0.0;
4550				
4551				if (noiseStrength != 0.0) {
4552					vec3 st = position / noiseScale;
4553					float noise = simplexFast(1.6 * st + vec3(1.8, 1.5, 1.9) * simplexFast(st) + vec3(1.7, 9.2, 1.0));
4554					f = noise * noiseStrength;
4555				}
4556
4557				vec3 waves = wavelengths * vec3(1.0, 0.8, 0.6) + 1.0;
4558				float angle = dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal));
4559
4560				mediump vec3 color = cos((((filmThickness + f) / waves) * angle) + movement);
4561				return .5 + .5 * color;
4562			 }`,[Mt.simplexFast]),{rainbow:new Af(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, bool isMask, float mask, float alpha, out float calpha) {
4563				mediump vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
4564
4565				float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
4566
4567				float lalpha = alpha * rainbowContribution * mask;
4568				calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
4569				accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
4570
4571				return res;
4572			 }`,[e0])});var Mn=class extends Ao{constructor(e,t,i,r,a,o,h,c,d,u){super("v3"),this.nodeType="Toon",this.positioning=e,this.colors=t,this.steps=i,this.source=r,this.isWorldSpace=a,this.noiseStrength=o,this.noiseScale=h,this.shadowColor=c,this.offset=d,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),!e.isShader("fragment"))return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t);{e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let i=e.include(Mn.Nodes.toon),r=[];return r.push(this.positioning.build(e,"i")),r.push(this.colors.build(e,"v4[]")),r.push(this.steps.build(e,"f[]")),r.push(this.source.build(e,"v3")),r.push(this.isWorldSpace.build(e,"b")),r.push(this.noiseStrength.build(e,"f")),r.push(this.noiseScale.build(e,"f")),r.push(this.shadowColor.build(e,"v4")),r.push(this.offset.build(e,"v3")),r.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),r.push(this.alpha.build(e,"f")),r.push(this.calpha),e.format(i+"("+r.join(",")+")",this.getType(e),t)}}};Mn.Nodes=(e1=new Af(`float rand(float n) {
4573				return fract(sin(n) * 43758.5453123);
4574			}`),e2=new Af(`float hash1(float p) { 
4575				p = fract(p * 0.011); 
4576				p *= p + 7.5; 
4577				p *= p + p; 
4578				return fract(p); 
4579			}`),e3=new Af(`float valueNoise(vec3 x) {
4580				const vec3 step = vec3(110, 241, 171);
4581			
4582				vec3 i = floor(x);
4583				vec3 f = fract(x);
4584			 
4585				// For performance, compute the base input to a 1D hash from the integer part of the argument and the 
4586				// incremental change to the 1D based on the 3D -> 1D wrapping
4587				float n = dot(i, step);
4588			
4589				vec3 u = f * f * (3.0 - 2.0 * f);
4590				return mix(mix(mix( hash1(n + dot(step, vec3(0, 0, 0))), hash1(n + dot(step, vec3(1, 0, 0))), u.x),
4591							   mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
4592						   mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
4593							   mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
4594			}`,[e2]),e4=new Af(`vec3 hash3(vec3 x) {
4595				x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
4596						 dot(x,vec3(269.5, 183.3, 246.1)),
4597						 dot(x,vec3(113.5, 271.9, 124.6)));
4598			
4599				return fract(sin(x)*43758.5453123);
4600			}`),e5=new Af(`vec3 voronoiNoise(in vec3 x)
4601			{
4602				vec3 p = floor(x);
4603				vec3 f = fract(x);
4604
4605				float id = 0.0;
4606				vec2 res = vec2(100.0);
4607
4608				for(int k=-1; k<=1; k++)
4609				for(int j=-1; j<=1; j++)
4610				for(int i=-1; i<=1; i++)
4611				{
4612					vec3 b = vec3(float(i), float(j), float(k));
4613
4614					// Comment out the "+ hash(p + b);" part below to get "square" cells
4615					vec3 r = vec3(b) - f + hash3(p + b);
4616					float d = dot(r, r);
4617
4618					if (d < res.x)
4619					{
4620						id = dot(p + b, vec3(1.0, 57.0, 113.0));
4621						res = vec2(d, res.x);			
4622					}
4623					else if (d < res.y)
4624					{
4625						res.y = d;
4626					}
4627				}
4628
4629				return vec3(sqrt(res), abs(id));
4630			}
4631			`,[e4]),{toon:new Af(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float mask, float alpha, out float calpha) {
4632				float t = 0.0;
4633				float shadow = 1.0;
4634
4635				if (positioning == 0) {
4636
4637					// Can't do this mode if lighting is "none"
4638					#if (defined(PHONG) || defined(LAMBERT) || defined(STANDARD))
4639
4640						// Algorithm from Chapter 10 of Graphics Shaders
4641						const vec3 weights = vec3(0.2125, 0.7154, 0.0721);
4642						vec3 lpos;
4643						vec3 l;
4644						float dproduct;
4645
4646						#if (NUM_POINT_LIGHTS > 0)
4647
4648							#if defined(USE_SHADOWMAP) && (NUM_POINT_LIGHT_SHADOWS > 0)
4649								PointLightShadow pointLightShadow;
4650							#endif 
4651
4652							#pragma unroll_loop_start
4653							for (int i = 0; i < NUM_POINT_LIGHTS; i++) {
4654								// Light positions are in view-space for some reason?
4655								lpos = (inverse(viewMatrix) * vec4(pointLights[UNROLLED_LOOP_INDEX].position, 1.0
4655)).xyz;
4656								l = normalize(lpos - worldPosition);
4657								
4658								dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
4659								
4660								// TODO: we want to use "intensity" but it isn't available in the shader code
4661								//dproduct += dot(pointLights[UNROLLED_LOOP_INDEX].color, weights);
4662
4663								t = max(t, dproduct);
4664
4665								// Accumulate shadow contribution
4666								#if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS)
4667									pointLightShadow = pointLightShadows[UNROLLED_LOOP_INDEX];
4668									shadow *= getPointShadow( 
4669											pointShadowMap[UNROLLED_LOOP_INDEX], 
4670											pointLightShadow.shadowMapSize, 
4671											pointLightShadow.shadowBias, 
4672											pointLightShadow.shadowRadius,
4673											vPointShadowCoord[UNROLLED_LOOP_INDEX], 
4674											pointLightShadow.shadowCameraNear, 
4675											pointLightShadow.shadowCameraFar);
4676								#endif
4677							}
4678							#pragma unroll_loop_end
4679
4680						#endif
4681
4682						#if NUM_DIR_LIGHTS > 0 
4683							
4684							#if defined(USE_SHADOWMAP) && (NUM_DIR_LIGHT_SHADOWS > 0)
4685								DirectionalLightShadow directionalLightShadow;
4686							#endif 
4687
4688							#pragma unroll_loop_start
4689							for (int i = 0; i < NUM_DIR_LIGHTS; i++) {
4690								// Use the direction vector for directional lights instead
4691								l = (inverse(viewMatrix) * vec4(directionalLights[UNROLLED_LOOP_INDEX].direction, 0.0)).xyz;
4692		
4693								dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
4694								t = max(t, dproduct);
4695
4696								// Accumulate shadow contribution
4697								#if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS)
4698									directionalLightShadow = directionalLightShadows[UNROLLED_LOOP_INDEX];
4699									shadow *= getShadow( 
4700										UNROLLED_LOOP_INDEX,
4701										directionalShadowMap[UNROLLED_LOOP_INDEX], 
4702										directionalLightShadow.shadowMapSize, 
4703										directionalLightShadow.shadowBias, 
4704										directionalLightShadow.shadowRadius, 
4705										vDirectionalShadowCoord[UNROLLED_LOOP_INDEX]);
4706								#endif
4707							}
4708							#pragma unroll_loop_end
4709
4710						#endif
4711
4712						#if NUM_SPOT_LIGHTS > 0 
4713							
4714							#if defined(USE_SHADOWMAP) && (NUM_SPOT_LIGHT_SHADOWS > 0)
4715								SpotLightShadow spotLightShadow;
4716							#endif 
4717
4718							#pragma unroll_loop_start
4719							for (int i = 0; i < NUM_SPOT_LIGHTS; i++) {
4720								lpos = (inverse(viewMatrix) * vec4(spotLights[UNROLLED_LOOP_INDEX].position, 1.0)).xyz;
4721								l = normalize(lpos - worldPosition);
4722								
4723								dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
4724								t = max(t, dproduct);
4725
4726								// Accumulate shadow contribution
4727								#if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS)
4728									spotLightShadow = spotLightShadows[UNROLLED_LOOP_INDEX];
4729									shadow *= getShadow(
4730										UNROLLED_LOOP_INDEX,
4731										spotShadowMap[UNROLLED_LOOP_INDEX], 
4732										spotLightShadow.shadowMapSize, 
4733										spotLightShadow.shadowBias, 
4734										spotLightShadow.shadowRadius, 
4735										vSpotLightCoord[UNROLLED_LOOP_INDEX]);
4736								#endif
4737							}
4738							#pragma unroll_loop_end
4739
4740						#endif
4741
4742						t = clamp(t, 0.0, 1.0);
4743				
4744					#endif
4745
4746				} else if (positioning == 1) {
4747					
4748					vec3 origin = mix(position, worldPosition, float(isWorldSpace));
4749					vec3 direction = normalize(source - origin);
4750					t = dot(direction, normalize(worldNormal)) * 0.5 + 0.5;	
4751
4752				} else {
4753
4754					vec3 origin = worldPosition;
4755					vec3 source = cameraPosition - offset;
4756					vec3 direction = normalize(source - origin);
4757					t = dot(direction, normalize(worldNormal)) * 0.5 + 0.5;	
4758					
4759				}
4760
4761				if (noiseStrength > 0.0) {
4762					// Distort with noise
4763					vec3 st = position / noiseScale;
4764					
4765					// Voronoi "smooth" noise
4766					float noise = 1.0 - voronoiNoise(st).x;
4767
4768					// Voronoi cellular noise
4769					//float noise = 1.0 - rand(voronoiNoise(st).z);
4770
4771					// Position warp noise
4772					// vec3 offset = vec3(
4773					// 	simplexFast(st),
4774					// 	simplexFast(st + vec3(111.1, 143.89, 217.19)),
4775					// 	simplexFast(st + vec3(171.1, 247.89, 117.23))
4776					// );
4777					// st += offset;
4778					// float noise = valueNoise(st);
4779
4780					t += noise * noiseStrength;
4781				}
4782
4783				t = clamp(t, 0.0, 1.0);
4784
4785				// Compute ramp color
4786				float p;
4787				vec4 color = colors[0];
4788				for (int i = 1; i < COLORS_MAX; i++) {
4789					p = clamp((t - steps[i-1]) / (steps[i] - steps[i-1]), 0.0, 1.0);
4790					color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
4791				}
4792
4793				// Incorporate custom shadow color
4794				if (positioning == 0) {
4795
4796					vec3 blendedShadow = mix(color.rgb, shadowColor.rgb, shadowColor.a);
4797					color.rgb = mix(blendedShadow, color.rgb, shadow);
4798				
4799				}
4800
4801				// Accumulate alpha as usual
4802				float lalpha = alpha * color.a * mask;
4803				calpha =  lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
4804				accumAlpha += (1.0 - accumAlpha) * lalpha;
4805
4806				return color.xyz;
4807
4808            }`,[Mt.simplexFast,e1,e3,e5])});var Mo={textureBicubic:new Af(`float w0( float a ) {
4809            return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
4810        }
4811    
4812        float w1( float a ) {
4813            return ( 1.0 / 6.0 ) * ( a *  a * ( 3.0 * a - 6.0 ) + 4.0 );
4814        }
4815    
4816        float w2( float a ){
4817            return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );
4818        }
4819    
4820        float w3( float a ) {
4821            return ( 1.0 / 6.0 ) * ( a * a * a );
4822        }
4823    
4824        // g0 and g1 are the two amplitude functions
4825        float g0( float a ) {
4826            return w0( a ) + w1( a );
4827        }
4828    
4829        float g1( float a ) {
4830            return w2( a ) + w3( a );
4831        }
4832    
4833        // h0 and h1 are the two offset functions
4834        float h0( float a ) {
4835            return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );
4836        }
4837    
4838        float h1( float a ) {
4839            return 1.0 + w3( a ) / ( w2( a ) + w3( a ) );
4840        }
4841    
4842        vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {
4843            uv = uv * texelSize.zw + 0.5;
4844    
4845            vec2 iuv = floor( uv );
4846            vec2 fuv = fract( uv );
4847    
4848            float g0x = g0( fuv.x );
4849            float g1x = g1( fuv.x );
4850            float h0x = h0( fuv.x );
4851            float h1x = h1( fuv.x );
4852            float h0y = h0( fuv.y );
4853            float h1y = h1( fuv.y );
4854    
4855            vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;
4856            vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;
4857            vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;
4858            vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;
4859    
4860            return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + 
4861                   g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );
4862        }
4863
4864        vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {
4865            vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );
4866            vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );
4867            vec2 fLodSizeInv = 1.0 / fLodSize;
4868            vec2 cLodSizeInv = 1.0 / cLodSize;
4869            vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
4870            vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
4871            return mix( fSample, cSample, fract( lod ) );
4872        }`)},Ml=class extends Ao{constructor(e,t,i,r,a,o,h,c){super("v3"),this.nodeType="Transmission",this.thickness=e,this.ior=t,this.roughness=i,this.transmissionSamplerSize=r,this.transmissionSamplerMap=a,this.transmissionDepthMap=o,this.aspectRatio=h,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,!e.isShader("fragment"))return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t);{e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,Md.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");
4872let i=e.include(Ml.Nodes.transmission),r=[];return r.push(this.thickness.build(e,"f")),r.push(this.ior.build(e,"f")),r.push(this.roughness.build(e,"f")),r.push(this.transmissionSamplerSize.build(e,"v2")),r.push(this.transmissionSamplerMap.getTexture(e,"t")),r.push(this.transmissionDepthMap.getTexture(e,"t")),r.push(this.aspectRatio.build(e,"v2")),r.push("normal"),r.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),r.push(this.alpha.build(e,"f")),r.push(this.calpha),e.format(i+"("+r.join(",")+")",this.getType(e),t)}}};Ml.Nodes=(e6=new Af(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
4873                // Slightly modified version of this:
4874                // https://www.shadertoy.com/view/ltScRG
4875
4876				// Special case for blur == 0.0
4877				if (lod == 0.0) {
4878					#ifdef TEXTURE_LOD_EXT
4879					return texture2DLodEXT( sp, U, 0.0).rgb;
4880					#else
4881					return textureLod( sp, U, 0.0).rgb;
4882					#endif
4883				}
4884				
4885				vec2 texelSize = vec2(1.0) / resolution;
4886                vec2 halton = haltonSequence[frameIndex];
4887                float temporalOffset = getNoiseInterleavedGradient(gl_FragCoord.xy + halton);
4888                float temporalAngle  = temporalOffset * PI2;
4889				vec3 res = vec3(0.0);
4890                vec2 uv = vec2(0.0);
4891                vec2 offset = vec2(0.0);
4892                vec2 vogelSample = vec2(0.0);
4893                for (int i = 0; i < NUM_SAMPLES; i++) {
4894                    vogelSample =  vogelDiskSample(i, NUM_SAMPLES, temporalAngle) * texelSize;
4895                    offset = vogelSample * scale * (lod * 10.0); // TODO: used to be hardcoded to 20
4896                    uv = U + offset;
4897                    float opaqueDepth = unpackRGBAToDepth(textureLod(dm, uv, lod));
4898                    if (opaqueDepth != 0.0 && opaqueDepth < gl_FragCoord.z) {
4899                        uv = unrefractedU;
4900                        lod = lod > 4.0 ? lod : lod / 2.0;
4901                    }
4902                    res += textureLod(sp, uv, lod).rgb;
4903                }
4904                return res / float(NUM_SAMPLES);
4905            }`),e8=new Af(`vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
4906		        // Direction of refracted light.
4907		        vec3 refractionVector = refract( -v,  n, 1.0 / ior );
4908		        
4909				// Compute rotation-independant scaling of the model matrix.
4910		        vec3 modelScale;
4911		        modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );
4912		        modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );
4913		        modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
4914
4915		        // The thickness is specified in local space
4916		        return normalize( refractionVector ) * thickness * modelScale;
4917	        }`),e9=new Af(`float applyIorToRoughness( float roughness, float ior ) {
4918				// Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
4919				// an IOR of 1.5 results in the default amount of microfacet refraction.
4920				return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
4921			}`),e7=new Af(`vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
4922				// Threejs exports do not pass a depth map to this shader, so we have to fallback to the "Threejs method of blurring" - see
4923				// also the code in convertTransmission.ts, which runs during export
4924				#ifdef IS_THREEJS_EXPORT
4925					float lod = log2(transmissionSamplerSize.x) * applyIorToRoughness(roughness / 5.0, ior);
4926					return textureBicubic(transmissionSamplerMap, fragCoord.xy, lod).rgb;
4927				#else
4928					float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
4929					float lod = applyIorToRoughness(roughness, ior);
4930					return blur(transmissionSamplerMap, fragCoord, vec2(lod), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
4931				#endif
4932			}`,[Mo.textureBicubic,e9,e6]),te=new Af(`vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
4933				vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
4934				vec3 refractedRayExit = position + transmissionRay;
4935
4936				// Project refracted vector on the framebuffer, while mapping to normalized device coordinates.
4937				vec4 ndcPos = projMatrix * viewMatrix *  vec4( refractedRayExit, 1.0 );
4938				vec2 refractionCoords = ndcPos.xy / ndcPos.w;
4939				refractionCoords += 1.0;
4940				refractionCoords /= 2.0;
4941
4942				vec4 ndcPosUnrefracted = projMatrix * viewMatrix * vec4(position, 1.0 );
4943				vec2 unrefractedCoords = ndcPosUnrefracted.xy / ndcPosUnrefracted.w;
4944				unrefractedCoords += 1.0;
4945				unrefractedCoords /= 2.0;
4946
4947				// Sample framebuffer to get pixel the refracted ray hits.
4948				return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
4949    		}`,[e7,e8]),{transmission:new Af(`vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float mask, float alpha, out float calpha) {
4950                vec3 v = vec3(0.);
4951                if (isOrthographic) {
4952                    v = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
4953                } else {
4954                    v = normalize(vWPosition - cameraPosition);
4955                }
4956                vec3 transmission = getIBLVolumeRefraction(vWNormal, -v, roughness,  vWPosition, modelMatrix, viewMatrix, projectionMatrix, ior, thickness, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, aspectRatio );
4957                
4958				float lalpha = alpha * mask;
4959				calpha =  lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
4960				accumAlpha += ( 1.0 - accumAlpha ) * alpha;
4961
4962				return transmission;
4963            }`,[te])});var Mh=((tt=Mh||{}).NOISE="noise",tt.MAP="map",tt),Mc=class extends Ao{constructor(e,t,i,r,a,o,h,c,d,u,p){super("v3"),this.displacementTypeIndex=new Aq(0),this.nodeType="VertexDisplacement",this.intensity=e,this.movementOrTexture=t,"map"===Object.values(Mh)[this.displacementTypeIndex.value]&&(this.mat=new AJ(this.movementOrTexture.value.matrix)),this.cropOrOffset=i,this.scale=u,this.noiseFunctionIndex=p,this.voronoiStyle=r,this.smoothness=a,this.seed=o,this.highCut=h,this.lowCut=c,this.quality=d}generate(e,t){if(!e.isShader("vertex"))return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t);{e.define("USE_LAYER_DISPLACE");let i,r=[];switch(r.push("displaced_position"),r.push("displaced_normal"),Object.values(Mh)[this.displacementTypeIndex.value]){case"map":i=e.include(Mc.Nodes.map),r.push(this.movementOrTexture.getTexture(e,"t")),r.push("uv"),r.push(this.cropOrOffset.build(e,"f")),this.mat&&r.push(this.mat.build(e,"mat3"));break;case"noise":{let t=["simplexPrecise","simplexFractal","simplexAshima","fbm","perlin","voronoi"][this.noiseFunctionIndex.value],a=new Af(`vec3 orthogonal(vec3 v) {
4964							return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
4965						}`),o="voronoi"==t?`
4966					float v = ${t}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
4967					v = remap(v, lowCut, highCut, 0.0, 1.0);
4968					v = smax(v, 0.0, smoothness * 0.25);
4969					v = smin(v, 1.0, smoothness * 0.25);
4970
4971					return p + n * v * intensity;
4972					`:`
4973					return p + n * ${t}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
4974					`,h=new Af(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality) {
4975							${o}
4976						}`,[Mt.simplexPrecise,Mt.simplexFractal,Mt.simplexAshima,Mt.fbm,Mt.perlin,Mt.voronoi]),c=new Af(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality, float intensity, out vec3 displaced_normal) {
4977							vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
4978							vec3 tangent1 = orthogonal(normal);
4979							vec3 tangent2 = normalize(cross(normal, tangent1));
4980
4981                            // TODO(Max): The distance to the neighbors was originally scaled by 0.1.
4982                            // This caused some small oval/circular visual artifacts in the lighting.
4983                            // For now, simply using neighbors further away betters the problem,
4984                            // but we should figure out the underlying cause when we have some time.
4985                            // Maybe its related to how we calculate the tangent and bitangent?
4986							vec3 nearby1 = position + tangent1;
4987							vec3 nearby2 = position + tangent2;
4988							vec3 distorted1 = distorted(nearby1, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
4989							vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
4990							displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
4991							return displaced_position;
4992						}`,[h,a]);i=e.include(c),r.push(this.scale.build(e,"f")),r.push(this.cropOrOffset.build(e,"v3")),r.push(this.movementOrTexture.build(e,"f")),r.push(this.voronoiStyle.build(e,"i")),r.push(this.smoothness.build(e,"f")),r.push(this.seed.build(e,"f")),r.push(this.highCut.build(e,"f")),r.push(this.lowCut.build(e,"f")),r.push(this.qual
4992ity.build(e,"i"))}}return r.push(this.intensity.build(e,"f")),r.push("displaced_normal"),e.format(i+"("+r.join(",")+")",this.getType(e),t)}}};Mc.Nodes=(ti=new Af(`vec3 orthogonal(vec3 v) {
4993				return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
4994			}`),tr=new Af(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
4995				vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
4996				vec4 tmp = texture2D(tex, uvs);
4997				vec3 col = tmp.rgb;
4998				if (crop > 0.5) {
4999					if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 )  {
5000						return 0.0;
5001					}
5002				}
5003				return col.r;
5004			}`),{map:new Af(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
5005				vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
5006				vec3 tangent1 = normalize(orthogonal(normal));
5007				vec3 tangent2 = normalize(cross(normal, tangent1));
5008				vec3 nearby1 = position + tangent1 * 0.1;
5009				vec3 nearby2 = position + tangent2 * 0.1;
5010				vec3 distorted1 = nearby1 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
5011				vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
5012				displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
5013				return displaced_position;
5014			}`,[ti,tr])});var Md={normalRenderTarget:new A_,normalRenderTargetDepth:new A_,transmissionRenderTarget:new A_,aspectRatio:new Ah,transmissionSize:new Ah(2048,2048),transmissionRenderTargetDepth:new A_,aoRenderTarget:new A_,aoEnabled:new AX,pixelRatioNode:new AA(1),resolution:new Ah,penumbraSize:new AY(5,.5),frameIndex:new Aq(0),transmissionLod:new Aq(2),taaEnabled:new AX(!0)};for(let e of Object.values(Md))e.isRenderGlobal=!0;var Mu,Mp,Mf,Mm,Mg,Mv={skiaWasmUrl:"https://unpkg.com/@splinetool/[email protected]/build/ui.wasm"},My=class extends As{constructor(){super("basic"),this.nodeType="Basic",this.color=new AW(5526619),this.shadingAlpha=new AA(1),this.shadingBlend=new Aq(0),this.previousModelViewMatrix=new A$,this.previouseProjectionMatrix=new A$}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let i=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Md.frameIndex}),e.mergeUniform({resolution:Md.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(r5.merge([sm.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>"].join(`
5015`));let r=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
5016				#include <skinbase_vertex>
5017				#include <skinnormal_vertex>
5018				#if !defined( USE_LAYER_DISPLACE )
5019					#include <defaultnormal_vertex>
5020				#endif
5021
5022				vec3 displaced_position = position;
5023				vec3 displaced_normal = normal;
5024
5025				#if defined( USE_LAYER_DISPLACE )
5026					vec3 transformed;
5027					vec3 transformedNormal;
5028				#endif
5029				`,"#include <normal_vertex>",`
5030				#if !defined( USE_LAYER_DISPLACE )
5031					#include <begin_vertex>
5032				#endif /* !USE_LAYER_DISPLACE */
5033				`];i&&r.push(i.code,i.result?"displaced_position = "+i.result+";
5033":""),r.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED","	vNormal = transformedNormal;","#endif"),r.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>","	vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),r.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=r.join(`
5034`)}else{void 0===this.color&&(this.color=new AW(5526619)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let i=this.color.flow(e,"c",{slot:"color"}),r=this.alpha?this.alpha.flow(e,"f"):void 0,a=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,o=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=void 0!==r,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
5035`));let h=["#include <normal_fragment_begin>",i.code];r&&h.push(r.code,"#ifdef ALPHATEST"," if ( "+r.result+" <= ALPHATEST ) discard;","#endif"),o?h.push(o.code,`vec3 outgoingLight = ${i.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${o.result}, 1.0, SPE_BLENDING_NORMAL);`):h.push(`vec3 finalColor = ${i.result};`);let c="1.0";this.mask&&(this.mask.analyze(e),c=`luminance(${this.mask.flow(e,"v3").result})`),r?h.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${r.result} * ${c} );`):h.push("gl_FragColor = vec4("+i.result+", 1.0 );"),a&&h.push(`gl_FragColor.a *= ${a.result};`),h.push("#include <fog_fragment>","#include <dithering_fragment>"),t=h.join(`
5036`)}return t}},Mx=class extends As{constructor(){super("lambert"),this.nodeType="Lambert",this.color=new AW(5526619),this.emissive=new AW(0),this.emissiveIntensity=new AA(1),this.previousModelViewMatrix=new A$,this.previouseProjectionMatrix=new A$,this.shadingAlpha=new AA(1),this.shadingBlend=new Aq(0),this.occlusion=new AX(!0)}get category(){return"lambert"}build(e){let t;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let i=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Md.frameIndex}),e.mergeUniform({resolution:Md.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(r5.merge([sm.fog,sm.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED","   #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED","	varying vec3 vLightBack;","	varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
5037`));let r=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
5038				#include <skinbase_vertex>
5039				#include <skinnormal_vertex>
5040				#ifndef USE_LAYER_DISPLACE
5041					#include <defaultnormal_vertex>
5042				#endif
5043
5044				vec3 displaced_position = position;
5045				vec3 displaced_normal = objectNormal;
5046
5047				#ifdef USE_LAYER_DISPLACE
5048					vec3 transformed;
5049					vec3 transformedNormal;
5050				#endif
5051				`,"#include <normal_vertex>",`
5052				#ifndef USE_LAYER_DISPLACE
5053					#include <begin_vertex>
5054				#endif
5055				`];i&&r.push(i.code,i.result?"displaced_position = "+i.result+";
5055":""),r.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED","    vNormal = transformedNormal;","#endif"),r.push("	#include <project_vertex>","	#include <clipping_planes_vertex>","	vViewPosition = - mvPosition.xyz;","	#include <worldpos_vertex>",`
5056					vec3 diffuse = vec3( 1.0 );
5057					GeometricContext geometry;
5058					geometry.position = mvPosition.xyz;
5059					geometry.normal = normalize( transformedNormal );
5060					geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
5061				`),r.push(`
5062					GeometricContext backGeometry;
5063					backGeometry.position = geometry.position;
5064					backGeometry.normal = -geometry.normal;
5065					backGeometry.viewDir = geometry.viewDir;
5066					vLightFront = vec3( 0.0 );
5067					vIndirectFront = vec3( 0.0 );
5068					#ifdef DOUBLE_SIDED
5069						vLightBack = vec3( 0.0 );
5070						vIndirectBack = vec3( 0.0 );
5071					#endif
5072					IncidentLight directLight;
5073					float dotNL;
5074					vec3 directLightColor_Diffuse;
5075					vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
5076					vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );
5077					#ifdef DOUBLE_SIDED
5078						vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
5079						vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );
5080					#endif
5081					#if NUM_POINT_LIGHTS > 0
5082						#pragma unroll_loop_start
5083						for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
5084							getPointLightInfo( pointLights[ i ], geometry, directLight );
5085							dotNL = dot( geometry.normal, directLight.direction );
5086							directLightColor_Diffuse = directLight.color;
5087							vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
5088							#ifdef DOUBLE_SIDED
5089								vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
5090							#endif
5091						}
5092						#pragma unroll_loop_end
5093					#endif
5094					#if NUM_SPOT_LIGHTS > 0
5095						#pragma unroll_loop_start
5096						for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
5097							getSpotLightInfo( spotLights[ i ], geometry, directLight );
5098							dotNL = dot( geometry.normal, directLight.direction );
5099							directLightColor_Diffuse = directLight.color;
5100							vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
5101							#ifdef DOUBLE_SIDED
5102								vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
5103							#endif
5104						}
5105						#pragma unroll_loop_end
5106					#endif
5107					#if NUM_DIR_LIGHTS > 0
5108						#pragma unroll_loop_start
5109						for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
5110							getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
5111							dotNL = dot( geometry.normal, directLight.direction );
5112							directLightColor_Diffuse = directLight.color;
5113							vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
5114							#ifdef DOUBLE_SIDED
5115								vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
5116							#endif
5117						}
5118						#pragma unroll_loop_end
5119					#endif
5120					#if NUM_HEMI_LIGHTS > 0
5121						#pragma unroll_loop_start
5122						for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
5123							vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
5124							#ifdef DOUBLE_SIDED
5125								vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );
5126							#endif
5127						}
5128						#pragma unroll_loop_end
5129					#endif
5130				`,"	#include <shadowmap_vertex>","	#include <fog_vertex>"),r.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=r.join(`
5131`)}else{e.mergeUniform({penumbraSize:Md.penumbraSize}),e.mergeUniform({frameIndex:Md.frameIndex}),e.mergeUniform({aoMap:Md.aoRenderTarget}),e.mergeUniform({aoEnabled:Md.aoEnabled}),void 0===this.color&&(this.color=new AW(5526619)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let i=this.color.flow(e,"c",{slot:"color"}),r=this.emissive.flow(e,"c",{slot:"emissive"}),a=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),o=this.occlusion.flow(e,"b",{slot:"occlusion"}
vendor: 6,231 bytes, lines 5131-5197
5131),h=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),d=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=void 0!==u,e.addParsCode(["uniform float penumbraSize[5];","uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED","   #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED","	varying vec3 vLightBack;","	varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
5132`));let f=["#include <normal_fragment_begin>",`
5133				// NOTE: gl_FrontFacing alternative using face normal estimation.
5134				vec3 viewdx = dFdx(vViewPosition);
5135				vec3 viewdy = dFdy(vViewPosition);
5136				vec3 faceNormal = normalize(cross(viewdx, viewdy));
5137				bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
5138				`,"#include <clipping_planes_fragment>"];f.push(i.code,"vec3 diffuseColor = "+i.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),u&&f.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),f.push("#ifdef DOUBLE_SIDED","	reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else","	reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED","	reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else","	reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),r&&f.push(r.code,"reflectedLight.directDiffuse += "+r.result+" * "+a.result+";"),f.push("vec3 ao = aoEnabled && "+o.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = (reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) ;");let m="1.0";this.mask&&(this.mask.analyze(e),m=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
5139				if (outgoingLight != diffuseColor) {
5140					float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
5141					accumAlpha += ( 1.0 - accumAlpha ) * ${h.result} * ${m} * lightAccu;
5142					outgoingLight = spe_blend( diffuseColor, outgoingLight, ${h.result} * ${m}, ${c.result} );
5143
5144					outgoingLight *= ao;
5145				}
5146				`),d&&f.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),u?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&f.push(`gl_FragColor.a *= ${p.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=f.join(`
5147`)}return t}},Mb={dHdxy:new Af(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
5148
5149            // Gradient of UVs w.r.t. X coordinate (in screen-space)
5150            vec2 dSTdx = dFdx(bumpMapUv);
5151
5152            // Gradient of UVs w.r.t. Y coordinate (in screen-space)
5153            vec2 dSTdy = dFdy(bumpMapUv);
5154            
5155            // Forward differencing
5156            float Hll = bumpScale * luminance(texture(bumpMap, bumpMapUv).rgb);
5157            float dBx = bumpScale * luminance(texture(bumpMap, bumpMapUv + dSTdx).rgb) - Hll;
5158            float dBy = bumpScale * luminance(texture(bumpMap, bumpMapUv + dSTdy).rgb) - Hll;
5159            
5160            return vec2( dBx, dBy );
5161        }`),perturbNormalArb:new Af(`vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
5162            vec3 vSigmaX = dFdx( surf_pos.xyz );
5163            vec3 vSigmaY = dFdy( surf_pos.xyz );
5164            vec3 vN = surf_norm; // normalized
5165            
5166            vN = normalize(vN);
5167
5168            vec3 R1 = cross( vSigmaY, vN );
5169            vec3 R2 = cross( vN, vSigmaX );
5170
5171            R1 = normalize(R1);
5172            R2 = normalize(R2);
5173    
5174            float fDet = dot( vSigmaX, R1 ) * faceDirection;
5175    
5176            vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
5177            return normalize( abs( fDet ) * vN - vGrad );
5178        }`)},Mw=class extends As{constructor(){super("phong"),this.nodeType="Phong",this.color=new AW(5526619),this.specular=new AW(1118481),this.shininess=new AA(30),this.previousModelViewMatrix=new A$,this.previouseProjectionMatrix=new A$,this.shadingAlpha=new AA(1),this.shadingBlend=new Aq(0),this.occlusion=new AX(!0)}get category(){return"phong"}build(e){let t;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let i=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Md.frameIndex}),e.mergeUniform({resolution:Md.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(r5.merge([sm.fog,sm.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
5179`));let r=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
5180				#include <skinbase_vertex>
5181				#include <skinnormal_vertex>
5182				#ifndef USE_LAYER_DISPLACE
5183					#include <defaultnormal_vertex>
5184				#endif
5185
5186				vec3 displaced_position = position;
5187				vec3 displaced_normal = objectNormal;
5188
5189				#ifdef USE_LAYER_DISPLACE
5190					vec3 transformed;
5191					vec3 transformedNormal;
5192				#endif
5193				`,"#include <normal_vertex>",`
5194				#ifndef USE_LAYER_DISPLACE
5195					#include <begin_vertex>
5196				#endif
5197				`];i&&r.push(i.code,i.result?"displaced_position = "+i.result+";
5197":""),r.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED","    vNormal = transformedNormal;","#endif"),r.push("	#include <project_vertex>","	#include <clipping_planes_vertex>","	vViewPosition = - mvPosition.xyz;","	#include <worldpos_vertex>","	#include <shadowmap_vertex>","	#include <fog_vertex>"),r.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=r.join(`
5198`)}else{e.mergeUniform({penumbraSize:Md.penumbraSize}),e.mergeUniform({frameIndex:Md.frameIndex}),e.mergeUniform({aoMap:Md.aoRenderTarget}),e.mergeUniform({aoEnabled:Md.aoEnabled}),void 0===this.color&&(this.color=new AW(5526619)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e);let i=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let r=this.color.flow(e,"c",{slot:"color"}),a=this.specular.flow(e,"c"),o=this.shininess.flow(e,"f"),h=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),d=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=void 0!==u,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;","uniform float penumbraSize[5];","uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
5199`));let f=["#include <normal_fragment_begin>",`
5200				// NOTE: gl_FrontFacing alternative using face normal estimation.
5201				vec3 viewdx = dFdx(vViewPosition);
5202				vec3 viewdy = dFdy(vViewPosition);
5203				vec3 faceNormal = normalize(cross(viewdx,viewdy));
5204				if (dot(normal, faceNormal) < 0.0) {
5205					normal *= -1.0;
5206				}
5207				`,"	BlinnPhongMaterial material;"];
vendor: 4,202 bytes, lines 5207-5245
5207if(this.bumpMap){e.include(Mb.dHdxy),e.include(Mb.perturbNormalArb);let t=this.bumpMap.texture.flow(e,"t"),i=this.bumpMap.flow(e,"v3"),r=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",a="";a=4===this.bumpMap.projection.value?`
5208					vec3 bumpNormal = vec3(0.0);
5209					{
5210						vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
5211						vec2 uv1 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs1;
5212						vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
5213						vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
5214
5215						vec2 grad0 = dHdxy(${t.result}, uv0, ${r});
5216						vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
5217
5218						vec2 grad1 = dHdxy(${t.result}, uv1, ${r});
5219						vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
5220
5221						vec2 grad2 = dHdxy(${t.result}, uv2, ${r});
5222						vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
5223						
5224						bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
5225						bumpNormal = normalize(bumpNormal);
5226					}
5227
5228					normal = bumpNormal;
5229					`:`
5230					vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
5231					vec2 grad = dHdxy(${t.result}, bumpMapCachedUv, ${r});
5232					normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
5233					`,f.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
5234					${i.result};
5235					${a}
5236					`)}f.push(r.code,"	vec3 diffuseColor = "+r.result+";","	ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );","	vec3 totalEmissiveRadiance = emissive;",a.code,"	vec3 specular = "+a.result+";",o.code,"	float shininess = max( 0.0001, "+o.result+" );","	float specularStrength = 1.0;"),u&&f.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),f.push("material.diffuseColor = diffuseColor;"),f.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),f.push("vec3 ao = aoEnabled && "+i.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;");let m="1.0";this.mask&&(this.mask.analyze(e),m=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
5237				if (outgoingLight != diffuseColor) {
5238					float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
5239					accumAlpha += ( 1.0 - accumAlpha ) * ${h.result} * ${m} * lightAccu;
5240					outgoingLight = spe_blend( diffuseColor, outgoingLight, ${h.result} * ${m}, ${c.result} );
5241					
5242					outgoingLight *= ao;
5243				}
5244				`),d&&f.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),u?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result});`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&f.push(`gl_FragColor.a *= ${p.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=f.join(`
5245`)}return t}},MS=class extends As{constructor(){super("standard"),this.nodeType="Standard",this.color=new AW(5526619),this.roughness=new AA(.3),this.metalness=new AA(0),this.reflectivity=new AA(.5),this.previousModelViewMatrix=new A$,this.previouseProjectionMatrix=new A$,this.shadingAlpha=new AA(1),this.shadingBlend=new Aq(0),this.occlusion=new AX(!0)}get category(){return"physical"}build(e){let t;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let i=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Md.frameIndex}),e.mergeUniform({resolution:Md.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}
5245),e.mergeUniform(r5.merge([sm.fog,sm.lights])),sm.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
5246`));let r=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
5247				#include <skinbase_vertex>
5248				#include <skinnormal_vertex>
5249				#if !defined( USE_LAYER_DISPLACE )
5250					#include <defaultnormal_vertex>
5251				#endif
5252
5253				vec3 displaced_position = position;
5254				vec3 displaced_normal = objectNormal;
5255
5256				#if defined( USE_LAYER_DISPLACE )
5257					vec3 transformed;
5258					vec3 transformedNormal;
5259				#endif
5260				`,"#include <normal_vertex>",`
5261				#if !defined( USE_LAYER_DISPLACE )
5262					#include <begin_vertex>
5263				#endif /* !USE_LAYER_DISPLACE */
5264				`];i&&r.push(i.code,i.result?"displaced_position = "+i.result+";
5264":""),r.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED","    vNormal = transformedNormal;","#endif"),r.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>","	vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),r.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=r.join(`
5265`)}else{e.mergeUniform({penumbraSize:Md.penumbraSize}),e.mergeUniform({frameIndex:Md.frameIndex}),e.mergeUniform({aoMap:Md.aoRenderTarget}),e.mergeUniform({aoEnabled:Md.aoEnabled});let i={gamma:!0};void 0===this.color&&(this.color=new AW(5526619)),this.color.analyze(e,{slot:"color",context:i}),this.roughness.analyze(e),this.metalness.analyze(e);let r=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let a=this.color.flow(e,"c",{slot:"color",context:i}),o=this.roughness.flow(e,"f"),h=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),d=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,f=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,m=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=void 0!==p,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","uniform float penumbraSize[5];","uniform sampler2D aoMap;","uniform bool aoEnabled;","#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
5266`));let g=["#include <clipping_planes_fragment>","	#include <normal_fragment_begin>",`
5267				// NOTE: gl_FrontFacing alternative using face normal estimation.
5268				vec3 viewdx = dFdx(vViewPosition);
5269				vec3 viewdy = dFdy(vViewPosition);
5270				vec3 faceNormal = normalize(cross(viewdx,viewdy));
5271				if (dot(normal, faceNormal) < 0.0) {
5272					normal *= -1.0;
5273				}
5274				`,"	PhysicalMaterial material;","	material.diffuseColor = vec3( 1.0 );"];
vendor: 6,733 bytes, lines 5274-5357
5274if(this.bumpMap){e.include(Mb.dHdxy),e.include(Mb.perturbNormalArb);let t=this.bumpMap.texture.flow(e,"t"),i=this.bumpMap.flow(e,"v3"),r=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",a="";a=4===this.bumpMap.projection.value?`
5275					vec3 bumpNormal = vec3(0.0);
5276					{
5277						vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
5278						vec2 uv1 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs1;
5279						vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
5280						vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
5281
5282						vec2 grad0 = dHdxy(${t.result}, uv0, ${r});
5283						vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
5284
5285						vec2 grad1 = dHdxy(${t.result}, uv1, ${r});
5286						vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
5287
5288						vec2 grad2 = dHdxy(${t.result}, uv2, ${r});
5289						vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
5290						
5291						bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
5292						bumpNormal = normalize(bumpNormal);
5293					}
5294
5295					normal = bumpNormal;
5296					`:`
5297					vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
5298					vec2 grad = dHdxy(${t.result}, bumpMapCachedUv, ${r});
5299					normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
5300					`,g.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
5301					${i.result};
5302					${a}
5303					`)}if(g.push(a.code,"	vec3 diffuseColor = "+a.result+";","	ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",h.code,"	float metalnessFactor = "+h.result+";"),this.roughnessMap){let t=this.roughnessMap.texture.flow(e,"t"),i=this.roughnessMap.flow(e,"v3"),r="";r=4===this.roughnessMap.projection.value?`
5304					float roughnessChange = 1.0;
5305					{
5306						vec2 uv0 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
5307						vec2 uv1 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs1;
5308						vec2 uv2 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
5309						vec3 weights = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
5310
5311						float r0 = luminance(texture(${t.result}, uv0).rgb) * roughnessScale;
5312						float r1 = luminance(texture(${t.result}, uv1).rgb) * roughnessScale;
5313						float r2 = luminance(texture(${t.result}, uv2).rgb) * roughnessScale;
5314
5315						roughnessChange = (r0 * weights.z + r1 * weights.x + r2 * weights.y);
5316					}
5317					float roughnessFactor = roughnessChange * ${o.result};
5318					`:`
5319					vec2 roughnessMapCachedUv = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs;
5320
5321					vec4 vals = texture(${t.result},  roughnessMapCachedUv);
5322					float roughnessFactor = luminance(vals.rgb) * ${o.result};
5323					`,g.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
5324					${i.result};
5325
5326					const float roughnessScale = 1.0;
5327
5328					${r}
5329				`)}else g.push(o.code,"	float roughnessFactor = "+o.result+";");p&&g.push(p.code,"#ifdef ALPHATEST","	if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),g.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),g.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),m?g.push(m.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+m.result+" ) ), diffuseColor, metalnessFactor );"):g.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),g.push("#include <lights_fragment_begin>"),g.push("#include <lights_fragment_end>"),g.push("vec3 ao = aoEnabled && "+r.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular;");let v="1.0";this.mask&&(this.mask.analyze(e),v=`luminance(${this.mask.flow(e,"v3").result})`),g.push(`
5330				if (outgoingLight != diffuseColor) {
5331					float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
5332					accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * ${v} * lightAccu;
5333					outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result} * ${v}, ${d.result} );
5334					
5335					outgoingLight *= ao;
5336				}
5337				`),u&&g.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),p?g.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):g.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f&&g.push(`gl_FragColor.a *= ${f.result};`),g.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=g.join(`
5338`)}return t}},M_=class extends As{constructor(){super("toon"),this.nodeType="Toon",this.color=new AW(5526619),this.specular=new AW(1118481),this.shininess=new AA(30),this.previousModelViewMatrix=new A$,this.previouseProjectionMatrix=new A$,this.shadingAlpha=new AA(1),this.shadingBlend=new Aq(0)}get category(){return"toon"}build(e){let t;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let i=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Md.frameIndex}),e.mergeUniform({resolution:Md.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(r5.merge([sm.fog,sm.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <morphtarget_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
5339`));let r=["#include <beginnormal_vertex>","#include <morphnormal_vertex>",`
5340				#include <skinbase_vertex>
5341				#include <skinnormal_vertex>
5342				#ifndef USE_LAYER_DISPLACE
5343					#include <defaultnormal_vertex>
5344				#endif
5345
5346				vec3 displaced_position = position;
5347				vec3 displaced_normal = objectNormal;
5348
5349				#ifdef USE_LAYER_DISPLACE
5350					vec3 transformed;
5351					vec3 transformedNormal;
5352				#endif
5353				`,"#include <normal_vertex>",`
5354				#ifndef USE_LAYER_DISPLACE
5355					#include <begin_vertex>
5356				#endif
5357				`];i&&r.push(i.code,i.result?"displaced_position = "+i.result+";
5357":""),r.push("transformed = displaced_position;","#include <morphtarget_vertex>","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED","    vNormal = transformedNormal;","#endif"),r.push("	#include <project_vertex>","	#include <fog_vertex>","	#include <clipping_planes_vertex>","	vViewPosition = - mvPosition.xyz;","	#include <worldpos_vertex>","	#include <shadowmap_vertex>","	#include <fog_vertex>"),r.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=r.join(`
5358`)}else{e.mergeUniform({penumbraSize:Md.penumbraSize}),e.mergeUniform({frameIndex:Md.frameIndex}),e.mergeUniform({aoMap:Md.aoRenderTarget}),e.mergeUniform({aoEnabled:Md.aoEnabled}),void 0===this.color&&(this.color=new AW(5526619)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let i=this.color.flow(e,"c",{slot:"color"}),r=this.specular.flow(e,"c"),a=this.shininess.flow(e,"f"),o=this.shadingAlpha.flow(e,"f"),h=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,d=this.alpha?this.alpha.flow(e,"f"):void 0,u=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=void 0!==d,e.addParsCode(["uniform float penumbraSize[5];","uniform sampler2D aoMap;","uniform bool aoEnabled;","varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
5359					varying vec3 vViewPosition;
5360					struct ToonMaterial {
5361						vec3	diffuseColor;
5362						vec3	specularColor;
5363						float	specularShininess;
5364						float	specularStrength;
5365					};
5366					void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
5367						vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
5368			
5369						reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
5370						reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
5371					}
5372					void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
5373						reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
5374					}
5375					#define RE_Direct				RE_Direct_Toon
5376					#define RE_IndirectDiffuse		RE_IndirectDiffuse_Toon
5377					#define Material_LightProbeLOD( material )	(0)
5378					`,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
5379`));let p=["#include <normal_fragment_begin>",`
5380				// NOTE: gl_FrontFacing alternative using face normal estimation.
5381				vec3 viewdx = dFdx(vViewPosition);
5382				vec3 viewdy = dFdy(vViewPosition);
5383				vec3 faceNormal = normalize(cross(viewdx,viewdy));
5384				if (dot(normal, faceNormal) < 0.0) {
5385					normal *= -1.0;
5386				}
5387				`,"	ToonMaterial material;"];
5387if(this.bumpMap){e.include(Mb.dHdxy),e.include(Mb.perturbNormalArb);let t=this.bumpMap.texture.flow(e,"t"),i=this.bumpMap.flow(e,"v3"),r=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",a="";a=4===this.bumpMap.projection.value?`
5388					vec3 bumpNormal = vec3(0.0);
5389					{
5390						vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
5391						vec2 uv1 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs1;
5392						vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
5393						vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
5394
5395						vec2 grad0 = dHdxy(${t.result}, uv0, ${r});
5396						vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
5397
5398						vec2 grad1 = dHdxy(${t.result}, uv1, ${r});
5399						vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
5400
5401						vec2 grad2 = dHdxy(${t.result}, uv2, ${r});
5402						vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
5403						
5404						bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
5405						bumpNormal = normalize(bumpNormal);
5406					}
5407
5408					normal = bumpNormal;
5409					`:`
5410					vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
5411					vec2 grad = dHdxy(${t.result}, bumpMapCachedUv, ${r});
5412					normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
5413					`,p.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
5414					${i.result};
5415					${a}
5416					`)}p.push(i.code,"	vec3 diffuseColor = "+i.result+";","	ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",r.code,"	vec3 specular = "+r.result+";",a.code,"	float shininess = max( 0.0001, "+a.result+" );","	float specularStrength = 1.0;"),d&&p.push(d.code,"#ifdef ALPHATEST","if ( "+d.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 ao = aoEnabled ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) * ao) + reflectedLight.directSpecular;");let f="1.0";this.mask&&(this.mask.analyze(e),f=`luminance(${this.mask.flow(e,"v3").result})`),p.push(`
5417				if (outgoingLight != diffuseColor) {
5418					float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
5419					accumAlpha += ( 1.0 - accumAlpha ) * ${o.result} * ${f} * lightAccu;
5420					outgoingLight = spe_blend( diffuseColor, outgoingLight, ${o.result} * ${f}, ${h.result} );
5421				}
5422				`),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),d?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u&&p.push(`gl_FragColor.a *= ${u.result};`),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=p.join(`
5423`)}return t}},MA=class{constructor(e=1e4){this.timeout=e,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(...e){}remove(e){let t=this.cache.get(e);t&&(this.dispose(e,t.data),this.cache.delete(e),t.prev.next=t.next,t.next.prev=t.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let e=Date.now(),t=this.head.next;for(;t.time<e-this.timeout;)this.dispose(t.src,t.data),this.cache.delete(t.src),(t=t.next).prev=this.head,this.head.next=t;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(e){return this.cache.get(e)?.data}load(e){let t=Date.now(),i=this.cache.get(e);return void 0===i?(i={data:this.create(e),src:e,time:t,next:null,prev:null},this.cache.set(e,i)):(i.time=t,i.prev.next=i.next,i.next.prev=i.prev),i.prev=this.tail.prev,i.next=this.tail,this.tail.prev.next=i,this.tail.prev=i,this.scheduleCleanup(),i.data}},MM=class extends MA{create(e){return URL.createObjectURL(new Blob([e]))}dispose(e,t){URL.revokeObjectURL(t)}},ME=class{constructor(e,t){this.data=e,this.cache=t,this.refCount=0}deref(){this.refCount,this.refCount-=1,0===this.refCount&&(this.cache.remove(this),this.dispose())}dispose(){this.refCount}},MC=class{constructor(){this.cache=new Map}remove(e){this.cache.delete(e.data)}load(e){let t=this.cache.get(e);return void 0===t&&(t=this.create(e),this.cache.set(e,t)),t.refCount+=1,t}},MT=class extends ME{constructor(e,t){super(e,t.imageHolderCache),this.data=e,this.shared=t,this.loaded=!1,this.isVideo=!1,this.isBuffer=!1,this._cache={1e3:{},1001:{},1002:{}},this.isVideo="video"===e.type,this.isBuffer=!0===e.isWebGLRenderTarget,this.loadPromise=this.updateSrc(this.isBuffer?e:e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{for(let e of(this.loaded=!0,Object.values(this._cache)))for(let t of Object.values(e))for(let e of Object.values(t))e&&(e.image=this.img,e.needsUpdate=!0);this.shared.requestRender()};if(this.isBuffer)this.img=e,this.loaded=!0;else if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInl
5423ine=!0,this.img.currentTime=.01,"string"!=typeof e){let t;var i=new FileReader;i.readAsDataURL(new Blob([e],{type:"video/mp4"})),await new Promise(e=>{i.onloadend=i=>{t=i.target?.result,e(null)}}),this.img.src=t}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src="string"==typeof e?e:(Mg||(Mg=new MM),Mg.load(e)),this.img.onload=t,await new Promise(e=>{this.img.onload=()=>{t(),e(null)}})}getTexture(e,t=1008,i=1006){let r=this._cache[e]?.[t]?.[i];if(r)return r;{let r;return r=this.isBuffer?this.img.texture:this.isVideo?new nQ(this.img,void 0,e,e):new iu(this.img,void 0,e,e,i,t),this.loaded&&(r.needsUpdate=!0),void 0===this._cache[e]&&(this._cache[e]={}),void 0===this._cache[e][t]&&(this._cache[e][t]={}),this._cache[e][t][i]=r,r}}setNeedsUpdate(e){for(let t of Object.values(this._cache))for(let i of Object.values(t))for(let t of Object.values(i))t&&(t.needsUpdate=e)}disposeTextures(){for(let[e,t]of Object.entries(this._cache))for(let[i,r]of Object.entries(t))for(let[t,a]of Object.entries(r))a?.dispose(),void 0!==this._cache[e]&&void 0!==this._cache[e][i]&&(this._cache[e][i][t]=void 0)}dispose(){super.dispose(),this.disposeTextures()}},MP=class extends MT{},MD={year:0,month:1,day:2,hour:3,minute:4,second:5},MO={};function MI(e,t,i,r,a,o,h){var c=new Date(0);return c.setUTCFullYear(e,t,i),c.setUTCHours(r,a,o,h),c}var MR={timezoneZ:/^(Z)$/,timezoneHH:/^([+-]\d{2})$/,timezoneHHMM:/^([+-]\d{2}):?(\d{2})$/};function ML(e,t,i){if(!e||(r=MR.timezoneZ.exec(e)))return 0;if(r=MR.timezoneHH.exec(e))return Mz(o=parseInt(r[1],10))?-(36e5*o):NaN;if(r=MR.timezoneHHMM.exec(e)){o=parseInt(r[1],10);var r,a,o,h=parseInt(r[2],10);return Mz(o,h)?(a=36e5*Math.abs(o)+6e4*h,o>0?-a:a):NaN}if(function(e){if(MF[e])return!0;try{return new Intl.DateTimeFormat(void 0,{timeZone:e}),MF[e]=!0,!0}catch{return!1}}(e)){t=new Date(t||Date.now());var c,d=MB(i?t:MI((c=t).getFullYear(),c.getMonth(),c.getDate(),c.getHours(),c.getMinutes(),c.getSeconds(),c.getMilliseconds()),e);return-(i?d:function(e,t,i){var r=e.getTime()-t,a=MB(new Date(r),i);if(t===a)return t;var o=MB(new Date(r-=a-t),i);return a===o?a:Math.max(a,o)}(t,d,e))}return NaN}function MB(e,t){var i,r,a,o=(a=function(e){if(!MO[e]){var t=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:"America/New_York",year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(new Date("2014-06-25T04:00:00.123Z"));MO[e]="06/25/2014, 00:00:00"===t||"‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00"===t?new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:e,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):new Intl.DateTimeFormat("en-US",{hourCycle:"h23",timeZone:e,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}return MO[e]}(t)).formatToParts?function(e,t){try{for(var i=e.formatToParts(t),r=[],a=0;a<i.length;a++){var o=MD[i[a].type];o>=0&&(r[o]=parseInt(i[a].value,10))}return r}catch(e){if(e instanceof RangeError)return[NaN];throw e}}(a,e):(i=a.format(e).replace(/\u200E/g,""),[(r=/(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(i))[3],r[1],r[2],r[4],r[5],r[6]]),h=MI(o[0],o[1]-1,o[2],o[3]%24,o[4],o[5],0).getTime(),c=e.getTime(),d=c%1e3;return h-(c-=d>=0?d:1e3+d)}function Mz(e,t){return -23<=e&&e<=23&&(null==t||0<=t&&t<=59)}var MF={},MN=tA(tT(),1),MU=tA(tP(),1),Mk={dateTimePattern:/^([0-9W+-]+)(T| )(.*)/,datePattern:/^([0-9W+-]+)(.*)/,YY:/^(\d{2})$/,YYY:[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],YYYY:/^(\d{4})/,YYYYY:[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],MM:/^-(\d{2})$/,DDD:/^-?(\d{3})$/,MMDD:/^-?(\d{2})-?(\d{2})$/,Www:/^-?W(\d{2})$/,WwwD:/^-?W(\d{2})-?(\d{1})$/,HH:/^(\d{2}([.,]\d*)?)$/,HHMM:/^(\d{2}):?(\d{2}([.,]\d*)?)$/,HHMMSS:/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,timeZone:/(Z|[+-]\d{2}(?::?\d{2})?| UTC| [a-zA-Z]+\/[a-zA-Z_]+(?:\/[a-zA-Z_]+)?)$/};function MV(e,t,i){t=t||0,i=i||0;var r=new Date(0);r.setUTCFullYear(e,0,4);var a=7*t+i+1-(r.getUTCDay()||7);return r.setUTCDate(r.getUTCDate()+a),r}var Mj=[31,28,31,30,31,30,31,31,30,31,30,31],MG=[31,29,31,30,31,30,31,31,30,31,30,31];function MH(e){return e%400==0||e%4==0&&e%100!=0}function MW(e,t,i){if(t<0||t>11)return!1;if(null!=i){if(i<1)return!1;var r=MH(e);if(r&&i>MG[t]||!r&&i>Mj[t])return!1}return!0}function Mq(e,t,i){return!(t<0||t>52||null!=i&&(i<0||i>6))}function MX(e,t,i){return!(null!=e&&(e<0||e>=25)||null!=t&&(t<0||t>=60)||null!=i&&(i<0||i>=60))}function MY(e,t){return t.color(e)}function MQ(e=new Date,t){var i,r,a,o,h,c;let d,u,p=t.format,f=e.getSeconds(),m=e;t&&null!==t.timeZone&&(i=new Date,r=t.timeZone,a=function(e,t){if(arguments.length<1)throw TypeError("1 argument required, but only "+arguments.length+" present");if(null===e)return new Date(NaN);var i=t||{},r=null==i.additionalDigits?2:(0,MN.default)(i.additionalDigits);if(2!==r&&1!==r&&0!==r)throw RangeError("additionalDigits must be 0, 1 or 2");if(e instanceof Date||"object"==typeof e&&"[object Date]"===Object.prototype.toString.call(e))return new Date(e.getTime());if("number"==typeof e||"[object Number]"===Object.prototype.toString.call(e))return new Date(e);if(!("string"==typeof e||"[object String]"===Object.prototype.toString.call(e)))return new Date(NaN);var a=function(e){var t,i={},r=Mk.dateTimePattern.exec(e);if(r?(i.date=r[1],t=r[3]):(r=Mk.datePattern.exec(e))?(i.date=r[1],t=r[2]):(i.date=null,t=e),t){var a=Mk.timeZone.exec(t);a?(i.time=t.replace(a[1],""),i.timeZone=a[1].trim()):i.time=t}return i}(e),o=function(e,t){var i,r=Mk.YYY[t],a=Mk.YYYYY[t];if(i=Mk.YYYY.exec(e)||a.exec(e)){var o=i[1];return{year:parseInt(o,10),restDateString:e.slice(o.length)}}if(i=Mk.YY.exec(e)||r.exec(e)){var h=i[1];return{year:100*parseInt(h,10),restDateString:e.slice(h.length)}}return{year:null}}(a.date,r),h=o.year,c=function(e,t){if(null===t)return null;
5423if(0===e.length)return(r=new Date(0)).setUTCFullYear(t),r;if(i=Mk.MM.exec(e))return r=new Date(0),MW(t,a=parseInt(i[1],10)-1)?(r.setUTCFullYear(t,a),r):new Date(NaN);if(i=Mk.DDD.exec(e)){r=new Date(0);var i,r,a,o,h=parseInt(i[1],10);return!function(e,t){if(t<1)return!1;var i=MH(e);return!(i&&t>366||!i&&t>365)}(t,h)?new Date(NaN):(r.setUTCFullYear(t,0,h),r)}if(i=Mk.MMDD.exec(e)){r=new Date(0),a=parseInt(i[1],10)-1;var c=parseInt(i[2],10);return MW(t,a,c)?(r.setUTCFullYear(t,a,c),r):new Date(NaN)}if(i=Mk.Www.exec(e))return Mq(t,o=parseInt(i[1],10)-1)?MV(t,o):new Date(NaN);if(i=Mk.WwwD.exec(e)){o=parseInt(i[1],10)-1;var d=parseInt(i[2],10)-1;return Mq(t,o,d)?MV(t,o,d):new Date(NaN)}return null}(o.restDateString,h);if(isNaN(c)||!c)return new Date(NaN);var d,u=c.getTime(),p=0;if(a.time&&isNaN(p=function(e){var t,i,r;if(t=Mk.HH.exec(e))return MX(i=parseFloat(t[1].replace(",",".")))?i%24*36e5:NaN;if(t=Mk.HHMM.exec(e))return MX(i=parseInt(t[1],10),r=parseFloat(t[2].replace(",",".")))?i%24*36e5+6e4*r:NaN;if(t=Mk.HHMMSS.exec(e)){i=parseInt(t[1],10),r=parseInt(t[2],10);var a=parseFloat(t[3].replace(",","."));return MX(i,r,a)?i%24*36e5+6e4*r+1e3*a:NaN}return null}(a.time)))return new Date(NaN);if(a.timeZone||i.timeZone){if(isNaN(d=ML(a.timeZone||i.timeZone,new Date(u+p))))return new Date(NaN)}else d=(0,MU.default)(new Date(u+p)),d=(0,MU.default)(new Date(u+p+d));return new Date(u+p+d)}(i,void 0),o=ML(r,a,!0),h=new Date(a.getTime()-o),(c=new Date(0)).setFullYear(h.getUTCFullYear(),h.getUTCMonth(),h.getUTCDate()),c.setHours(h.getUTCHours(),h.getUTCMinutes(),h.getUTCSeconds(),h.getUTCMilliseconds()),m=c);let g=m.getHours(),v=m.getMinutes(),y;"12ampm"===t.format12h24h&&(y=g>=12?"PM":"AM");let x=g;switch("24"!==t.format12h24h&&0==(x=g%12)&&(x=12),p){case"HH:mm:ss":d=[x,v,f];break;case"HH:mm":d=[x,v];break;case"HH":d=[x],y=void 0;break;case"mm":d=[v],y=void 0;break;case"ss":d=[f],y=void 0;break;case"year":u=m.getFullYear();break;case"month":u=m.getMonth()+1;break;case"dayOfYear":u=Math.floor((m.getTime()-new Date(m.getFullYear(),0,0).getTime())/864e5);break;case"dayOfMonth":u=m.getDate();break;case"secondOfDay":u=3600*g+60*v+f;break;default:console.error("Unknown time format",p),u=0}return void 0!==d?{textValue:d,suffix:y}:u}function MZ(e,t){let{alpha:i,mode:r,isMask:a}=e,o="string"==typeof i?(Number(t.getVariable(i))??100)/100:i;return{type:e.type,alpha:o,mode:r,isMask:a}}var MK=class extends xx{},MJ={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},M$={depth:["colors"]};function M0(e,t){if(Array.isArray(t)){if(!Array.isArray(e)||e.length!==t.length)return!1;for(let[i,r]of t.entries()){let t=e[i];if("string"==typeof r||"number"==typeof r&&"string"==typeof t)return!0}return!1}let i="string"==typeof e,r="string"==typeof t;return i!==r||i&&r}function M1(e,t,i){let r=i.uniforms[`f${i.id}_texture`];if(!r)return!1;let a=!1;if("image"in e){let i=e.image,a=t.image(i);r.image instanceof MP||r.image.deref(),r.image=a}if("video"in e){let i=e.video,a=t.video(i);r.image instanceof MP||r.image.deref(),r.image=a}if("wrapping"in e&&(r.wrap=e.wrapping),"minFilter"in e&&(r.minFilter=e.minFilter),"magFilter"in e&&(r.magFilter=e.magFilter),"rotation"in e&&i.uniforms[`f${i.id}_rotation`])return i.uniforms[`f${i.id}_rotation`].value=(M3(e.rotation??0,t)??0)*tK.DEG2RAD,a;if("repeat"in e||"offset"in e||"rotation"in e){let r=i.uniforms[`f${i.id}_mat`];if(!r)return a;
5423if("repeat"in e){let o=e.repeat;M0(i.data.texture.repeat,o)&&(a=!0),r.repeat=M6(o,t).map((e,t)=>"string"==typeof o[t]?1/e:e)}if("offset"in e){let o=e.offset;M0(i.data.texture.offset,o)&&(a=!0),r.offset=M6(o,t).map((e,t)=>"string"==typeof o[t]?-e:e)}if("rotation"in e){let o=i.data.texture.rotation,h=e.rotation??0;(void 0===o||M0(o,h))&&(a=!0),r.rotation=M3(h,t)??0}r.updateMatrix()}return a}var M2=(e,t,i)=>Math.max(0,Math.min(1,Number(t.getVariable("number"==typeof e?100*e:e,i)??100)/100))??1,M3=(e,t,i)=>"number"==typeof e?e:t.getVariable(e,i),M4=(e,t)=>(e||(e=new ib),e.x=M3(e.x,t)??0,e.y=M3(e.y,t)??0,e.z=M3(e.z,t)??0,e),M5=(e,t)=>(e||(e=new tJ),e.x=M3(e.x,t)??0,e.y=M3(e.y,t)??0,e),M6=(e,t)=>{let i=e.map(e=>M3(e,t)??0);return[i[0],i[1]]},M8=class{constructor(e,t,i,r,a){for(let a in this.id=e,this.uuid=t,this.data=i,this.uniforms={},r)this.uniforms[`f${this.id}_${a}`]=r[a];for(let e in i)Ei(e,this,i,a)}get type(){return this.data.type}static create(e,t,i,r){if("light"===i.type)return Ee.createLightLayer(e,t,i,r);if("texture"===i.type||"video"===i.type){let a="texture"===i.type?r.uiBuffer(i.texture.image)??r.image(i.texture.image):r.video(i.texture.video),o=new AK(a,i.texture.wrapping,i.texture.minFilter??1008,i.texture.magFilter??1006),h=new AZ(a),c=new A1(M6(i.texture.repeat,r),M6(i.texture.offset,r),M3(i.texture.rotation??0,r)),d=new AA(i.crop?1:0),u=new Aq(i.projection??0),p=new Aq(["x","y","z"].indexOf(i.axis)??0),f=new Aq(i.side??0),m=new Ah(i.size?new tJ(...M6(i.size,r)):new tJ(100,100)),g=new AA(i.blending??0),v=new AA(M2(i.alpha,r)),y=new Aq(i.mode??0),x=new AX(i.isMask??!1),b=new A6(o,h,d,u,p,f,m,g,c,v,y,x),w=new AS(b.calpha,"f");return new M9(e,t,i,{texture:o,textureSize:h,crop:d,projection:u,axis:p,side:f,size:m,blending:g,mat:c,alpha:v,mode:y,isMask:x},b,y,w,x,r)}if("matcap"===i.type){let a=new AK(r.image(i.texture.image),i.texture.wrapping,i.texture.minFilter??1008,i.texture.magFilter??1006),o=new AA(M2(i.alpha,r)),h=new Aq(i.mode??0),c=new AX(i.isMask??!1),d=new AA((M3(i.texture.rotation??0,r)??0)*tK.DEG2RAD),u=new Me(a,o,h,c,d),p=new AS(u.calpha,"f");return new M9(e,t,i,{texture:a,alpha:o,mode:h,isMask:c,rotation:d},u,h,p,c,r)}if("displace"!==i.type){let a;return a=function(e,t){switch(e.type){case"fresnel":return function(e,t){let{bias:i,scale:r,intensity:a,factor:o,color:h}=e;return{...MZ(e,t),color:MY(h,t),bias:i,scale:r,intensity:a,factor:o}}(e,t);case"gradient":return function(e,t){let{gradientType:i,smooth:r,colors:a,steps:o,angle:h,offset:c,morph:d}=e;return{...MZ(e,t),gradientType:i,smooth:r,colors:a.map(e=>new ip(e[0],e[1],e[2],e[3])),num:a.length,steps:o,offset:new tJ(...c),morph:new tJ(...d),angle:h}}(e,t);case"depth":return function(e,t){let{gradientType:i,near:r,far:a,isVector:o,isWorldSpace:h,origin:c,direction:d,colors:u,steps:p,smooth:f}=e;return{...MZ(e,t),gradientType:i,near:r,far:a,isVector:o,isWorldSpace:h,origin:new ib(...c),direction:d?new ib(...d):new ib(1,0,0),colors:u.map(e=>void 0!==e?new ip(e[0],e[1],e[2],e[3]):new ip(0,0,0,0)),steps:p.slice(0,u.length),smooth:f}}(e,t);case"normal":return function(e,t){let{cnormal:i}=e;return{...MZ(e,t),cnormal:new ib(i[0],i[1],i[2])}}(e,t);case"noise":return{...MZ(e,t),scale:e.scale,move:e.move,fA:new tJ(...e.fA),fB:new tJ(...e.fB),size:new ib(...e.size),distortion:new tJ(...e.distortion),colorA:MY(e.colorA,t),colorB:MY(e.colorB,t),colorC:MY(e.colorC,t),colorD:MY(e.colorD,t),noiseType:e.noiseType,voronoiStyle:e.voronoiStyle,highCut:e.highCut,lowCut:e.lowCut,smoothness:e.smoothness,seed:e.seed,quality:e.quality};case"rainbow":return{...MZ(e,t),filmThickness:e.filmThickness,movement:e.movement,wavelengths:new ib(...e.wavelengths),noiseStrength:e.noiseStrength,noiseScale:e.noiseScale,offset:new ib(...e.offset)};case"toon":return{...MZ(e,t),positioning:e.positioning,colors:e.colors.map(e=>new ip(e[0],e[1],e[2],e[3])),num:e.colors.length,steps:e.steps,source:new ib(...e.source),isWorldSpace:e.isWorldSpace,noiseStrength:e.noiseStrength,noiseScale:e.noiseScale,shadowColor:MY(e.shadowColor,t),offset:new ib(...e.offset)};case"outline":return{...MZ(e,t),outlineColor:MY(e.outlineColor,t),contourColor:MY(e.contourColor,t),outlineWidth:e.outlineWidth,contourWidth:e.contourWidth,outlineThreshold:e.outlineThreshold,contourThreshold:e.contourThreshold,outlineSmoothing:e.outlineSmoothing,contourFrequency:e.contourFrequency,contourDirection:new ib(...e.contourDirection),positionalLines:e.positionalLines,compensation:e.compensation};case"transmission":return{...MZ(e,t),thickness:e.thickness,ior:e.ior,roughness:e.roughness};case"color":return{...MZ(e,t),color:MY(e.color,t)};case"pattern":return{...MZ(e,t),style:e.style,projection:e.projection,axis:e.axis,blending:e.blending,offset:new tJ(...e.offset),colorA:MY(e.colorA,t),colorB:MY(e.colorB,t),frequency:new tJ(...e.frequency),size:e.size,variation:e.variation,smoothness:e.smoothness,zigzag:e.zigzag,rotation:e.rotation,vertical:new tJ(...e.vertical),horizontal:new tJ(...e.horizontal),sides:e.sides}}}(i,r),function(e,t,i,r,a){switch(e.type){case"color":{let o=new AW(r.color??5526619),h=Et(r),c=new A4(o,h.alpha),d=new AS(c.calpha,"f");return new M9(t,i,e,{color:o,...h},c,h.mode,d,h.isMask,a)}case"fresnel":{let o=new AW(r.color??16777215),h=new AA(M3(r.bias,a)??.1),c=new AA(M3(r.scale,a)??1),d=new AA(M3(r.intensity,a)??2),u=new AA(M3(r.factor,a)??1),p=Et(r),f=new A9(o,h,c,d,u,p.alpha,p.mode,p.isMask),m=new AS(f.calpha,"f");return new M9(t,i,e,{color:o,bias:h,scale:c,intensity:d,factor:u,...p},f,p.mode,m,p.isMask,a)}case"rainbow":{let o=new AA(M3(r.filmThickness,a)??30),h=new AA(M3(r.movement,a)??0),c=new Ac(M4(r.wavelengths,a)),d=new AA(M3(r.noiseStrength,a)??0),u=new AA(M3(r.noiseScale,a)??1),p=new Ac(M4(r.offset,a)),f=Et(r),m=new Ma(o,h,c,d,u,p,f.alpha,f.isMask),g=new AS(m.calpha,"f");return new M9(t,i,e,{filmThickness:o,movement:h,wavelengths:c,noiseStrength:d,noiseScale:u,offset:p,...f},m,f.mode,g,f.isMask,a)}case"transmission":{let o=new AA(M3(r.thickness??10,a)),h=new AA(M3(r.ior??1.5,a)),c=new AA(M3(r.roughness??.5,a)),d=Md.transmissionSize,u=Md.transmissionRenderTarget,p=Md.transmissionRenderTargetDepth,f=window.innerWidth,m=window.innerHeight,g=f>=m?new Ah(m/f,1):new Ah(1,f/m),v=Et(r),y=new Ml(o,h,c,d,u,p,g,v.alpha),x=new AS(y.calpha,"f");return new M9(t,i,e,{thickness:o,ior:h,roughness:c,aspectRatio:g,...v},y,v.mode,x,v.isMask,a)}case"toon":{let o,h=new Aq(r.positioning??0),c;r.colors?c=new A2(r.colors.length,r.colors):(c=new A2(10,new ip(0,0,0,1))).value[1]=new ip(1,1,1,1),r.steps?o=new AY(r.steps.length,r.steps):(o=new AY(10,1)).value[0]=0;let d=new Ac(M4(r.source??new ib(0,0,0),a)),u=new AX(r.isWorldSpace??!0),p=new AA(M3(r.noiseStrength??0,a)),f=new AA(M3(r.noiseScale??1,a)),m=new Ad(r.shadowColor),g=new Ac(M4(r.offset??new ib(0,0,0),a)),v=Et(r),y=new Mn(h,c,o,d,u,p,f,m,g,v.alpha),x=new AS(y.calpha,"f");return new M9(t,i,e,{positioning:h,colors:c,steps:o,source:d,isWorldSpace:u,noiseStrength:p,noiseScale:f,shadowColor:m,offset:g,...v},y,v.mode,x,v.isMask,a)}case"outline":{let o=new AW(r.outlineColor??16777215),h=new AW(r.contourColor??16777215),c=new AA(M3(r.outlineWidth??.1,a)),d=new AA(M3(r.contourWidth??.1,a)),u=new AA(M3(r.outlineThreshold??.1,a)),p=new AA(M3(r.contourThreshold??.1,a)),f=new AA(M3(r.outlineSmoothing??.1,a)),m=new AA(M3(r.contourFrequency??.1,a)),g=new Ac(M4(r.contourDirection??new ib(0,1,0),a)),v=new AX(r.positionalLines??!1),y=new AX(r.compensation??!0),x=Md.normalRenderTarget,b=Md.normalRenderTargetDepth,w=Md.pixelRatioNode,S=Md.resolution,_=Et(r),A=new Mr(o,h,c,d,u,p,f,m,g,v,y,S,x,b,w,_.alpha),M=new AS(A.calpha,"f");return new M9(t,i,e,{outlineColor:o,contourColor:h,outlineWidth:c,contourWidth:d,outlineThreshold:u,contourThreshold:p,outlineSmoothing:f,contourFrequency:m,contourDirection:g,positionalLines:v,compensation:y,..._},A,_.mode,M,_.isMask,a)}case"depth":{let o,h=new Aq(r.gradientType??0),c=new AX(r.smooth??!1),d=new AA(M3(r.near,a)??50),u=new AA(M3(r.far,a)??200),p=new AA(r.isVector??1),f=new AA(r.isWorldSpace??0),m=new Ac(M4(r.origin,a)),g=new Ac(M4(r.direction,a)),v;r.colors?v=new A2(r.colors.length,r.colors):(v=new A2(2,new ip(0,0,0,1))).value[1]=new ip(1,1,1,1),r.steps?o=new AY(r.steps.length,r.steps):(o=new AY(2,1)).value[0]=0;let y=Et(r),x=new A8(h,c,d,u,p,f,m,g,v,o,y.alpha,y.isMask),b=new AS(x.calpha,"f");return new M9(t,i,e,{gradientType:h,smooth:c,near:d,far:u,isVector:p,isWorldSpace:f,origin:m,direction:g,colors:v,steps:o,...y},x,y.mode,b,y.isMask,a)}case"noise":{let o=new AA(M3(r.scale,a)??1),h=new Ac(M4(r.size??new ib(100,100,100),a)),c=new AA(M3(r.move,a)??1),d=new Ah(M5(r.fA??new tJ(1.7,9.2),a)),u=new Ah(M5(r.fB??new tJ(8.3,2.8),a)),p=new Ah(M5(r.distortion??new tJ(1,1),a)),f=new Ad(r.colorA),m=new Ad(r.colorB),g=new Ad(r.colorC),v=new Ad(r.colorD),y=new Aq(r.noiseType??0),x=new Aq(r.voronoiStyle??0),b=new AA(M3(r.highCut,a)??1),w=new AA(M3(r.lowCut,a)??0),S=new AA(M3(r.smoothness,a)??.5),_=new AA(M3(r.seed,a)??.5),A=new Aq(r.quality??1),M=Et(r),E=new Mi(o,h,c,d,u,p,f,m,g,v,M.alpha,y,M.isMask,x,b,w,S,_,A),C=new AS(E.calpha,"f");return new M9(t,i,e,{scale:o,size:h,move:c,fA:d,fB:u,distortion:p,colorA:f,colorB:m,colorC:g,colorD:v,noiseType:y,...M,voronoiStyle:x,highCut:b,lowCut:w,smoothness:S,seed:_,quality:A},E,M.mode,C,M.isMask,a)}case"normal":{let o=new Ac(r.cnormal??new ib(1,1,1)),h=Et(r),c=new A5(o,h.alpha),d=new AS(c.calpha,"f");return new M9(t,i,e,{cnormal:o,...h},c,h.mode,d,h.isMask,a)}case"gradient":{let o,h=new Aq(r.gradientType??0),c=new AX(r.smooth??!1),d;r.colors?d=new A2(r.colors.length,r.colors):(d=new A2(10,new ip(0,0,0,1))).value[1]=new ip(1,1,1,1),r.steps?o=new AY(r.steps.length,r.steps):(o=new AY(10,1)).value[0]=0;let u=new Ah(M5(r.offset??new tJ(0,0),a)),p=new Ah(M5(r.morph??new tJ(0,0),a)),f=new AA(M3(r.angle??0,a)),m=Et(r),g=new A7(h,c,d,o,u,p,f,m.alpha,m.isMask),v=new AS(g.calpha,"f");return new M9(t,i,e,{gradientType:h,smooth:c,colors:d,steps:o,offset:u,morph:p,angle:f,...m},g,m.mode,v,m.isMask,a)}case"pattern":{let o=new Aq(r.style??0),h=new Aq(r.projection??0),c=new Aq(["x","y","z"].indexOf(r.axis)??0),d=new AA(M3(r.blending??0,a)),u=new Ah(M5(r.offset,a)),p=new Ad(r.colorA),f=new Ad(r.colorB),m=new Ah(M5(r.frequency??new tJ(10,10),a)),g=new AA(M3(r.size??.5,a)),v=new AA(M3(r.variation??0,a)),y=new AA(M3(r.smoothness??.5,a)),x=new AA(M3(r.zigzag??0,a)),b=new AA(M3(r.rotation??0,a)),w=new Ah(M5(r.vertical??new tJ(0,1),a)),S=new Ah(M5(r.horizontal??new tJ(0,1),a)),_=new Aq(r.sides??6),A=Et(r),M=new Ms(o,h,c,d,u,p,f,m,g,v,y,x,b,w,S,_,A.alpha,A.isMask),E=new AS(M.calpha,"f");return new M9(t,i,e,{style:o,projection:h,axis:c,blending:d,offset:u,colorA:p,colorB:f,frequency:m,size:g,variation:v,smoothness:y,zigzag:x,rotation:b,vertical:w,horizontal:S,sides:_,...A},M,A.mode,E,A.isMask,a)}default:{let o=new AW(1,0,0,1),h=Et(r),c=new A4(o,h.alpha),d=new AS(c.calpha,"f");return new M9(t,i,e,{color:o,...h},c,h.mode,d,h.isMask,a)}}}(i,e,t,a,r)}if("noise"===i.displacementType){let a=new Ac(new ib(...i.offset.map(e=>M3(e,r)??0))),o=new AA(M3(i.scale,r)??10),h=new AA(M3(i.intensity,r)??8),c=new AA(M3(i.movement,r)??1),d=new Aq(i.noiseType??0),u=new Aq(i.voronoiStyle??0),p=new AA(M3(i.smoothness,r)??.5),f=new AA(M3(i.seed,r)??0),m=new AA(M3(i.highCut,r)??1),g=new AA(M3(i.lowCut,r)??0),v=new Aq(M3(i.quality,r)??1),y=new Mc(h,c,a,u,p,f,m,g,v,o,d);return new M7(e,t,i,{offset:a,scale:o,intensity:h,movement:c,noiseType:d,voronoiStyle:u,smoothness:p,seed:f,highCut:m,lowCut:g,quality:v},y,r)}throw Error()}updateByOp(e,t,i){let r=!1;if(void 0===e.path[0]){for(let i of Object.keys(e.props))try{let e=this.data[i],a=t[i];if(Array.isArray(e)&&Array.isArray(a)){for(let[t,i]of a.entries()){let a=e[t];if("string"==typeof i||"number"==typeof i&&"string"==typeof a){r=!0;break}}if(r)break}else if("string"==typeof a&&"number"==typeof e||"number"==typeof a&&"string"==typeof e||"string"==typeof a&&"string"==typeof e&&a!==e){r=!0;break}}catch(e){console.error(e)}if(0===e.type)return"type"in e.props||"category"in e.props||"visible"in e.props||"noiseType"in e.props?(i.scene.markNeedsUpdateRendererDirty(),!0):function(e,t,i,r){let a=!1;for(let[o,h]of Object.entries(e)){if("bumpMap"===o||"roughnessMap"===o){a=!0;continue}if(!o||void 0===h)continue;if(Ei(o,i,r,t)){"visible"===o&&"light"===i.type&&(a=!0);continue}i.visible=r.visible;let e=i.uniforms[`f${i.id}_${o}`];if(e&&!(e instanceof AQ))switch(a=a||function(e,t,i){if("isMask"===t)return!0;let r=MJ[e.type],a=M$[e.type];if(void 0!==a){let r=e.color;if(a.includes(t)){let e=r[t]?.value?.length;if(void 0!==e&&e!==i.length)return!0}}return void 0!==r&&r.includes(t)}(i,o,h),e.constructor){case AW:if("string"==typeof h){let i=t.getColor(h);i&&(e.value=i);break}e.value instanceof MK?e.value=new xx(h.r,h.g,h.b,h.a):e.setRGBA(h);break;case Ad:if("string"==typeof h){let i=t.getColor(h);i&&(e.value=i);break}e.value instanceof MK?e.value=new xx(h.r,h.g,h.b,h.a):e.value.setRGBA(h.r,h.g,h.b,h.a);break;case Ah:e.value.setX(h[0]),e.value.setY(h[1]);break;case Ac:e.value.setX(h[0]),e.value.setY(h[1]),e.value.setZ(h[2]);break;case A_:M1(h,t,i);break;case A2:e.value=h.map(e=>new ip(...e));break;default:e.value=h}}return a}(e.props,i.shared,this,t)||r}else if("texture"===e.path[0])return!("texture"in t)&&!("video"in t)||M1(e.props,i.shared,this)||r;return r}dispose(){let e;if("texture"===(e=this instanceof M8?this.type:this)||"video"===e||"displace_map"===e||"matcap"===e){let e=this.uniforms[`f${this.id}_texture`];if(!e)return!1;e.image instanceof MP||e.image.deref()}}hasValueByKey(e){return void 0!==this.uniforms[e]}hasValue(e){return this.hasValueByKey(`f${this.id}_${e}`)}setValue(e,t){let i=`f${this.id}_${e}`;this.hasValueByKey(i)&&void 0!==t&&(this.uniforms[i].value=t)}
5423getNode(e){let t=`f${this.id}_${e}`;if(this.hasValueByKey(t))return this.uniforms[t]}getValue(e){let t=`f${this.id}_${e}`;if(this.hasValueByKey(t))return this.uniforms[t].value}getName(e){let t=/f\d+_(.*)/.exec(e);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${e}`)}getNames(){let e=[];for(let t in this.uniforms){let i=this.getName(t);i&&e.push(i)}return e}},M9=class extends M8{constructor(e,t,i,r,a,o,h,c,d){super(e,t,i,r,d),this.params=r,this.color=a,this.mode=o,this.alpha=h,this.isMask=c}},M7=class extends M8{constructor(e,t,i,r,a,o){super(e,t,i,r,o),this.position=a}},Ee=class extends M8{constructor(e,t,i,r,a,o){super(e,t,i,a,o),this.node=r}static createLightLayer(e,t,i,r){let a,o=new AA(M2(i.alpha,r)),h=new Aq(i.mode),c=new AA(i.bumpMapIntensity),d=new AA(M2(i.alphaOverride,r)),u;if(i.visible){if("lambert"===i.category){a=new Mx;let e=new AW(r.color(i.emissive)??0),t=new AX(i.occlusion??!0);u={emissive:e,occlusion:t},a.emissive=e,a.occlusion=t}else if("toon"===i.category){a=new M_;let e=new AA(i.shininess??30),t=new AW(r.color(i.specular)??1118481);u={shininess:e,specular:t},a.shininess=e,a.specular=t}else if("physical"===i.category){a=new MS;let e=new AA(i.roughness??.3),t=new AA(i.metalness??0),r=new AA(i.reflectivity??.5),o=new AX(i.occlusion??!0);u={roughness:e,metalness:t,reflectivity:r,occlusion:o},a.roughness=e,a.metalness=t,a.reflectivity=r,a.occlusion=o}else{a=new Mw;let e=new AA(i.shininess??30),t=new AW(void 0!==i.specular?r.color(i.specular)??1118481:1118481),o=new AX(i.occlusion??!0);u={shininess:e,specular:t,occlusion:o},a.shininess=e,a.specular=t,a.occlusion=o}}else a=new My,u={};return a.alpha=new AA(1),a.shadingAlpha=o,a.shadingBlend=h,a.bumpMapIntensity=c,a.alphaOverride=d,u.alpha=a.shadingAlp
5423ha,u.mode=a.shadingBlend,u.bumpMapIntensity=a.bumpMapIntensity,u.alphaOverride=a.alphaOverride,new Ee(e,t,i,a,u,r)}get category(){return this.node.category}};function Et(e){return{alpha:new AA(e.alpha??1),mode:new Aq(e.mode??0),isMask:new AX(e.isMask??!1)}}function Ei(e,t,i,r){if("displace"===i.type&&("intensity"===e||"visible"===e)){let e=t.uniforms[`f${t.id}_intensity`];return e?(e.value=(M3(i.intensity,r)??1)*(i.visible?1:0),e):void 0}if("displace"!==i.type&&("alpha"===e||"visible"===e)){let a=t.uniforms[`f${t.id}_alpha`];if(!a)return;if(a.value=M2(i.alpha,r)*(i.visible?1:0),"outline"===i.type&&"visible"===e){let e=t.uniforms[`f${t.id}_compensation`];e&&(e.value=i.compensation&&i.visible)}return a}}function Er(e,t,i,r,a,o,h=[]){let c=i;for(let e of h)e in c&&(c=c[e]);for(let t of e)t in c&&a.getVariable(c[t],["material",o,"layer",r,...h,String(t)]);for(let e of t)e in c&&c[e].forEach((t,i)=>{a.getVariable(t,["material",o,"layer",r,...h,String(e),0===i?"x":1===i?"y":"z"])})}function Es(e,t){let i=0,r=e.layers.find(e=>"light"===e.data.type);if(r){let e=r.data,i=Number(t.getVariable(e.alphaOverride));if(("string"==typeof e.alphaOverride?i/100:e.alphaOverride)<1)return!0}for(let r of e.layers){if("displace"!==r.data.type&&r.data.isMask)return!0;if("displace"!==r.data.type&&"alpha"in r.data&&"light"!==r.data.type&&"fresnel"!==r.data.type&&"texture"!==r.data.type&&"matcap"!==r.data.type&&"rainbow"!==r.data.type&&"outline"!==r.data.type&&"pattern"!==r.data.type){let e=r.data.visible?r.data.alpha:0;if("string"==typeof e&&(e=Math.max(0,Math.min(1,Number(t.getVariable(e)??100)/100))),1===e&&"depth"===r.data.type||"gradient"===r.data.type){for(let t of r.data.colors)if(t[3]<1){e=t[3];break}}else if(1===e&&"noise"===r.data.type){let i=Math.min(t.color(r.data.colorA).a,Math.min(t.color(r.data.colorB).a,Math.min(t.color(r.data.colorC).a,t.color(r.data.colorD).a)));i<1&&(e=i)}i+=(1-i)*e}}return i<1}var Ea=class extends r9{constructor(){super(void 0),this.flatShading=!1,this.needsJitter=!0,this.shadersPatchedForShapeBlend=!1,this.nodeContextUuid=0,this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return""}},En=class extends Ea{constructor(e,t,i,r){super(),this.flatShading=e,this.side=t,this.wireframe=i,this.root=r}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,Object.assign(this.defines,e.defines),Object.assign(this.uniforms,e.uniforms),this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,t,i,r){return this.root.getFlavor(e,t,i,r)}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,t,i){this.root.updateByOp(e,t,i)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},Eo=class extends Ea{constructor(e,t,i=!0){super(),this.data=e,this.allowVariableSaves=i,this.layerIdGen=0,this.flavors=[],this.masks={},this.type="NodeMaterial",this.updaters=[],this.needsJitter=t.shared.needsJitter,As.startContext(this),this.reset0(e,t),As.endContext(this)}get nodeMaterial(){return this}getFlavor(e,t,i,r){let a=i?6:(e?3:0)+t;if(0===(a+=((r?.resolutionLevel??0)-(r?.useChildrenColors?4:0))*7))return this;void 0===this.flavors&&(this.flavors=[]),a-=1;let o=this.flavors[a];return void 0===o&&((o=new En(e,t,i,this)).needsJitter=this.needsJitter,this.flavors[a]=o,o.flatShading=e,o.side=t,o.updateAfterBuild(),r&&(o.defines.SHAPEBLEND=r.resolutionLevel,o.defines.SHAPEBLEND_C=r.useChildrenColors?1:0)),o}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t,i=!1){As.startContext(this),(this.data!==e||i)&&this.reset0(e,t),As.endContext(this)}reset0(e,t){this.data=e;let i=e.layers??g6.defaultTwoLayerData("phong").layers;try{this.layers=i.map(e=>M8.create(this.layerIdGen++,e.id,e.data,t.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(t.shared),this.transparent=Es(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,i){if("alphaOverride"===e[0])this.transparent=Es(this.data,i.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(t)/100,1)));else if("layer"===e[0]){let r=e[1],a=e[2];if(r&&a){let o=this.layers.find(e=>e.uuid===r);if(o?.hasValue(a)){if("alpha"===a)this.transparent=Es(this.data,i.shared),o.setValue(a,Math.max(0,Math.min(Number(t)/100,1)));else{let r=o.getValue(a),h=e[3],c=e[4];if(r instanceof iu){let e=r[h],a;"number"==typeof e?a=Number(t):e.isVector2&&(a=e.toArray(),"x"===c?a[0]=Number(t):"y"===c&&(a[1]=Number(t))),M1({[h]:a},i.shared,o);return}("x"===h||"y"===h||"z"===h)&&r.isVector3||("x"===h||"y"===h)&&r.isVector2?r[h]=Number(t):o.setValue(a,t)}}}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let t=this.data.layers.find(e=>"light"===e.data.type);t&&e.shared.getVariable(t.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEac
vendor: 5,996 bytes, line 5423
5423h(t=>{"alpha"in t.data&&"string"==typeof t.data.alpha&&e.shared.getVariable(t.data.alpha,["material",this.uuid,"layer",t.id,"alpha"]),"displace"===t.data.type?"noise"===t.data.displacementType?Er(["intensity","scale","movement","smoothness","seed","highCut","lowCut"],["offset"],t.data,t.id,e.shared,this.uuid):Er(["intensity"],[],t.data,t.id,e.shared,this.uuid):"depth"===t.data.type?Er(["near","far"],["origin","direction"],t.data,t.id,e.shared,this.uuid):"fresnel"===t.data.type?Er(["bias","scale","intensity","factor"],[],t.data,t.id,e.shared,this.uuid):"rainbow"===t.data.type?Er(["filmThickness","movement","noiseStrength","noiseScale"],["offset","wavelengths"],t.data,t.id,e.shared,this.uuid):"noise"===t.data.type?Er(["scale","move","seed","highCut","lowCut","smoothness"],["size","distortion","fA","fB"],t.data,t.id,e.shared,this.uuid):"pattern"===t.data.type?Er(["blending","size","variation","smoothness","zigzag","rotation"],["offset","frequency","vertical","horizontal"],t.data,t.id,e.shared,this.uuid):"outline"===t.data.type?Er(["outlineWidth","contourWidth","outlineThreshold","contourThreshold","outlineSmoothing","contourFrequency"],["contourDirection"],t.data,t.id,e.shared,this.uuid):"toon"===t.data.type?Er(["noiseStrength","noiseScale"],["offset","source"],t.data,t.id,e.shared,this.uuid):"transmission"===t.data.type?Er(["roughness","thickness","ior"],[],t.data,t.id,e.shared,this.uuid):"texture"===t.data.type||"video"===t.data.type?(Er([],["size"],t.data,t.id,e.shared,this.uuid),Er(["rotation"],["repeat","offset"],t.data,t.id,e.shared,this.uuid,["texture"])):"gradient"===t.data.type?Er(["angle"],["offset","morph"],t.data,t.id,e.shared,this.uuid):"matcap"===t.data.type&&Er(["rotation"],[],t.data,t.id,e.shared,this.uuid,["texture"])})}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(e){for(let t of(this.lightLayer=this.layers.find(e=>e instanceof Ee),void 0===this.lightLayer&&(this.lightLayer=new Ee(0,"",{...gY.defaultData("light","phong"),visible:!1},new My,{},e)),this.dispose(),this.flavors))t&&t.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.build(),this.nodeContextUuid=0}applyTextureMaps(){let e=this.layers.find(e=>e instanceof Ee);if(!e)return;let t=e.data,i=t.bumpMap,r=t.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let t=0;t<this.layers.length;++t){let a=this.layers[t];a instanceof M9&&a.color instanceof A6&&(a.uuid===i&&(e.node.bumpMap=a.color),a.uuid===r&&(e.node.roughnessMap=a.color))}}updateByOp(e,t,i){if(As.startContext(this),void 0!==t?this.data=t:t=this.data,this.transparent=Es(t,i.shared),"layers"===e.path[0]){let r=i.shared,a=e.path[1];if(void 0===a)i.scene.markNeedsUpdateRendererDirty(),this.reset0(t,i);else{0===e.type&&void 0!==e.props.occlusion&&i.scene.markNeedsUpdateRendererDirty();let o=this.layers.find(e=>e.uuid===a);if(o){let h=t.layers.data(a),c;0===e.type&&("alpha"in e.props||"alphaOverride"in e.props)&&(c="alpha"in e.props?{...e.props,alpha:M2(e.props.alpha,r,["material",this.uuid,"layer",a,"alpha"])}:{...e.props,alphaOverride:M2(e.props.alphaOverride,r,["material",this.uuid,"alphaOverride"])}),o.updateByOp({...e,...c?{props:c}:{},path:e.path.slice(2)},h,i)&&this.reset0(t,i)}}}else this.reset0(t,i);As.endContext(this)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof M9?t.color.mask=void 0:t instanceof Ee&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof M9&&t.isMask.value&&t.data.visible&&e>0){let i=e-1,r=this.layers[i];r instanceof Ee?r.node.mask=new AE(t.color,t.alpha,AE.MUL):r instanceof M9&&(r.isMask.value||(r.color.mask=new AE(t.color,t.alpha,AE.MUL)))}}}blendColors(){let e=this.layers.findIndex(e=>e instanceof M9),t=this.layers.findIndex(e=>e instanceof Ee);if(-1!==e&&e<t){let i=this.layers[e].color;for(let r=e+1;r<t;++r){let e=this.layers[r];if(e instanceof M9){if(e.isMask.value)continue;i=new A3(i,e.color,e.alpha,e.mode)}}this.fragment.color=i}else this.fragment.color=void 0}blendAfterColors(){let e=new AS("outgoingLight","f"),t=this.layers.findIndex(e=>e instanceof Ee);if(this.layers.length>t+1){for(let i=t+1;i<this.layers.length;++i){let t=this.layers[i];if(t instanceof M9){if(t.isMask.value)continue;e=new A3(e,t.color,t.alpha,t.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(e=>e instanceof M7);if(e.length>0){let t=e[0].position;for(let i=1;i<e.length;++i)e[i]&&(t=new AE(t,e[i].position,AE.ADD),t=new AE(t,new AA(.5).setReadonly(!0),AE.MUL));this.fragment.position=t}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.shapeBlendhack&&this.shapeBlendhack(this),e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=!0===this.extensions.derivatives,e.extensionFragDepth=!0===this.extensions.fragDepth,e.extensionDrawBuffers=!0===this.extensions.drawBuffers,e.extensionShaderTextureLOD=!0===this.extensions.shaderTextureLOD}clampUniformsForPreview(e,t){let i=(e,t,i)=>Math.min(Math.max(e,t),i);for(let r of this.layers)if("displace"===r.type){let a=i(r.uniforms[`f${r.id}_intensity`].value,e,t);r.uniforms[`f${r.id}_intensity`].value=a}}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new AH;for(let t of(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,this.flavors))t&&t.updateAfterBuild();return this.shadersPatchedForShapeBlend=!1,this}
5423nodeMaterialDispose(){for(let e of(this.layers.forEach(e=>e.dispose()),super.dispose(),this.flavors))e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof M9){let t=e.params.texture;if(t instanceof AK&&!t.image.loaded)return!1}return!0}};Object.defineProperties(Ea.prototype,{properties:{get:function(){return this.fragment.properties}}});var El,Eh=class extends Eo{constructor(e,t,i){super(e,t,!1),this.uuid=i,this.allowVariableSaves=!0,this.saveVariableLocations(t)}},Ec=new Map,Ed=new Promise(e=>{El=e}),Eu=!1;function Ep(e,t){e.forEach(e=>{"dragDropActions"in e.data?(t.push(...e.data.dragDropActions.drag),t.push(...e.data.dragDropActions.drop)):"inActions"in e.data?(t.push(...e.data.inActions),t.push(...e.data.outActions)):"gameActions"in e.data?(t.push(...e.data.gameActions.idle),t.push(...e.data.gameActions.move),t.push(...e.data.gameActions.jump),t.push(...e.data.gameActions.run)):"breakpoints"in e.data?e.data.breakpoints.forEach(e=>{t.push(...e.data.actions)}):"actions"in e.data&&(t.push(...e.data.actions),e.data.actions.forEach(e=>{"Conditional"===e.data.type&&e.data.ifActions&&(t.push(...e.data.ifActions),t.push(...e.data.elseActions))}))})}Ed.then(e=>Em=e);var Ef,Em,Eg,Ev=class{constructor({src:e,volume:t,delay:i,loop:r}){let a;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)},a="string"==typeof e?{src:e}:{src:function(e){if("string"==typeof e)return e;let t=Ec.get(e);return t||(t={url:URL.createObjectURL(new Blob([e]))},Ec.set(e,t)),t.url}(e),format:"wav"},this.sound=new Em.Howl(a),this.sound.on("end",this.onEnd),this.src=e,void 0!==t&&(this.volume=t),void 0!==i&&(this.delay=i),void 0!==r&&(this.loop=r)}get status(){return this._status}get volume(){return this._volume}set volume(e){this._volume=e,this.sound.volume(e)}get loop(){return this._loop}set loop(e){this._loop=e,this.loopsRemaining=e}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(e,t=1e3){e?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,t),this.clearFade()},e)):this.sound.fade(this._volume,0,t)}on(e,t,i){this.sound.on(e,t,i)}off(e,t,i){this.sound.off(e,t,i)}play(){"playing"===this._status||this.sound.playing()||("paused"===this._status?(0===this.sound.seek()?this.replay():this.sound.play(),this._status="playing"):"stopped"===this._status&&(this.replay(),this._status="playing"))}pause(){"playing"===this._status&&(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(e=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}},Ey=class{constructor(){this.type="ShapePath",this.color=new ia,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new ol,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath?.lineTo(e,t),this}quadraticCurveTo(e,t,i,r){return this.currentPath?.quadraticCurveTo(e,t,i,r),this}bezierCurveTo(e,t,i,r,a,o){return this.currentPath?.bezierCurveTo(e,t,i,r,a,o),this}splineThru(e){return this.currentPath?.splineThru(e),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function i(i,r,a){let o,h=a.x-r.x,c=a.y-r.y,d=i.x-r.x,u=i.y-r.y,p=h*u-d*c;if(i.x===r.x&&i.y===r.y){t.loc=e.ORIGIN,t.t=0;return}if(i.x===a.x&&i.y===a.y){t.loc=e.DESTINATION,t.t=1;return}if(p<-Number.EPSILON){t.loc=e.LEFT;return}if(p>Number.EPSILON){t.loc=e.RIGHT;return}if(h*d<0||c*u<0){t.loc=e.BEHIND;return}if(Math.sqrt(h*h+c*c)<Math.sqrt(d*d+u*u)){t.loc=e.BEYOND;return}o=0!==h?d/h:u/c,t.loc=e.BETWEEN,t.t=o}let r=0,a=999999999,o=-999999999,h=[];
5423this.subPaths.forEach(e=>{let t=e.getPoints(),i=-999999999,c=999999999,d=-999999999,u=999999999;for(let e=0;e<t.length;e++){let r=t[e];r.y>i&&(i=r.y),r.y<c&&(c=r.y),r.x>d&&(d=r.x),r.x<u&&(u=r.x)}o<=d&&(o=d+1),a>=u&&(a=u-1),t.length&&h.push({curves:e.curves,points:t,isCW:oO.isClockWise(t),identifier:r++,boundingBox:new lU(new tJ(u,c),new tJ(d,i))})});let c=h.map(r=>(function(r,a,o,h,c){(null==c||""===c)&&(c="nonzero");let d=new tJ;r.boundingBox.getCenter(d);let u=function(r,a,o){let h=new tJ;a.getCenter(h);let c=[];return o.forEach(a=>{a.boundingBox.containsPoint(h)&&(function(r,a){let o=[],h=[];for(let c=1;c<r.length;c++){let d=r[c-1],u=r[c];for(let r=1;r<a.length;r++){let c=function(r,a,o,h){let c=r.x,d=a.x,u=o.x,p=h.x,f=r.y,m=a.y,g=o.y,v=h.y,y=(p-u)*(f-g)-(v-g)*(c-u),x=(v-g)*(d-c)-(p-u)*(m-f),b=y/x,w=((d-c)*(f-g)-(m-f)*(c-u))/x;if(0===x&&0!==y||b<=0||b>=1||w<0||w>1)return null;if(0===y&&0===x){for(let u=0;u<2;u++)if(i(0===u?o:h,r,a),t.loc===e.ORIGIN){let e=0===u?o:h;return{x:e.x,y:e.y,t:t.t}}else if(t.loc===e.BETWEEN)return{x:+(c+t.t*(d-c)).toPrecision(10),y:+(f+t.t*(m-f)).toPrecision(10),t:t.t};return null}for(let c=0;c<2;c++)if(i(0===c?o:h,r,a),t.loc===e.ORIGIN){let e=0===c?o:h;return{x:e.x,y:e.y,t:t.t}}return{x:+(c+b*(d-c)).toPrecision(10),y:+(f+b*(m-f)).toPrecision(10),t:b}}(d,u,a[r-1],a[r]);null!==c&&void 0===o.find(e=>e.t<=c.t+Number.EPSILON&&e.t>=c.t-Number.EPSILON)&&(o.push(c),h.push(new tJ(c.x,c.y)))}}return h})(r,a.points).forEach(e=>{c.push({identifier:a.identifier,isCW:a.isCW,point:e})})}),c.sort((e,t)=>e.point.x-t.point.x),c}([new tJ(o,d.y),new tJ(h,d.y)],r.boundingBox,a);u.sort((e,t)=>e.point.x-t.point.x);let p=[],f=[];u.forEach(e=>{e.identifier===r.identifier?p.push(e):f.push(e)});let m=p[0].point.x,g=[],v=0;for(;v<f.length&&f[v].point.x<m;)g.length>0&&g[g.length-1]===f[v].identifier?g.pop():g.push(f[v].identifier),v++;if(g.push(r.identifier),"evenodd"===c){let e=g.length%2==0,t=g[g.length-2];return{identifier:r.identifier,isHole:e,for:t}}if("nonzero"===c){let e=!0,t=null,i=null;for(let r=0;r<g.length;r++){let o=g[r];a[o]&&(e?(i=a[o].isCW,e=!1,t=o):i!==a[o].isCW&&(i=a[o].isCW,e=!0))}return{identifier:r.identifier,isHole:e,for:t}}console.warn('fill-rule: "'+c+'" is currently not implemented.')})(r,h,a,o,this.userData?.style.fillRule)),d=[];return h.forEach(e=>{let t=c[e.identifier];if(t&&!t.isHole){let t=new of;t.curves=e.curves,c.filter(t=>t?.isHole&&t.for===e.identifier).forEach(e=>{if(e){let i=h[e.identifier],r=new ol;r.curves=i.curves,t.holes.push(r)}}),d.push(t)}}),d}},Ex=!1,Eb=new Promise(e=>{Eg=e}),Ew=!1;async function ES(e){return await (await fetch(e)).arrayBuffer()}var E_=new class{async load(e,t,i=()=>{}){let{load:r}=await Eb;r(e,(e,r)=>{e||!r?i(e??"Something went wrong"):t(r)})}async parse(e){let{parse:t,Bidi:i}=await Eb;try{let r=t(e),a=new i;return a.registerModifier("glyphIndex",null,e=>r.charToGlyphIndex(e.char)),a.applyFeatures(r,r.defaultRenderOptions.features),{font:r,bidi:a}}catch(e){console.error(e)}}};async function EA(e){let t,i,r=!1;if(e.url?(t=await ES(e.url),i=e.url,r=e.url.startsWith("/")):e.data&&(t=e.data.buffer.slice(e.data.byteOffset,e.data.byteOffset+e.data.byteLength)),t){if(!Ex)return{font:void 0,url:i,intercepted:r,arr:t,bidi:null};{let e=await E_.parse(t);if(e)return{font:e.font,url:i,intercepted:r,arr:t,bidi:e.bidi}}}}var EM=class{constructor(e){this._arrayBuffer=new ArrayBuffer(1),this._isLoaded=!1,this._intercepted=!1,this._isUserFont=e.isUserFont??!1,this._loadingPromise=EA(e).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(e){this._isLoaded=!1,this._isUserFont=e.isUserFont??!1,this._loadingPromise=EA(e).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(e,t,i){if(!this._bidi)return[];let r=this._bidi;r.getTextGlyphs(t);let a=r.tokenizer.tokens,o=[],h=0,c=i.length===a.length;for(let r=0;r<i.length;r++){let d=i[r].index,u=String.fromCharCode(i[r].unicode),p=a[h];if(p.state.glyphIndex===d||p.state.fina===d||p.state.medi===d||p.state.init===d||c)o.push({char:u,index:d,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),h++;else{let i=p.char,r="",a=[p.state.glyphIndex],c=[],f=!1;for(;!f;)h++,i+=r=t.charAt(h),a.push(e.charToGlyphIndex(r)),1===(c=e.stringToGlyphs(i)).length&&c[0].index===d&&(f=!0),h>t.length&&(f=!0);o.push({char:u,index:d,replacements:a,replacementChars:Array.from(i)}),h++}}return o}generateShapes(e,t,i){if(!this._isLoaded)return;let r=this.font,a=t.fontSize/this.unitsPerEm,o=t.fontSize*t.lineHeight,h=e.map(e=>this.getTextWidth(e,t)),c="string"==typeof t.width?Number(i.getVariable(t.width)):t.width,d="string"==typeof t.height?Number(i.getVariable(t.height)):t.height,u=this.getCharWidth(`
5424`,t),p=1===t.horizontalAlign?u:0,f=this.getLineInitialOffsetX(h[0],c,t.horizontalAlign,e[0],u),m=this.getLineInitialOffsetY(o,e.length,d,a,t.verticalAlign),g=[],v=e.map(e=>[]),y=e.map(e=>[]);for(let d=0;d<e.length;d++){let x=e[d],b={features:{liga:!0},letterSpacing:t.letterSpacing},w=[];try{w=r.stringToGlyphs(x,b)}catch(e){console.warn(e)}f=this.getLineInitialOffsetX(h[d],c,t.horizontalAlign,x,u);let S=[];try{S=this.reverseLigaturesTable(r,x,w)}catch(e){console.warn(e)}let _=this.computeSpaceWidthForLine(e,d,t,i),A=0,M=w[0];M&&2===t.horizontalAlign&&void 0!==M.leftSideBearing&&(f-=M.leftSideBearing*a),this.font?.forEachGlyph(x,f,m,t.fontSize,b,(e,i,o,h,c)=>{let u=0===e.index?`
5425`:e.unicode?String.fromCharCode(e.unicode):void 0,f=S[A],m=0;if(u===`
5426`)m=p;else if(" "===u)m=_;else{let r=this.createPath(e,a,i,o,t);r&&(m=r.offsetX,g.push(r.path))}if(1===f.replacements.length)y[d].push([i,o]),v[d].push(m);else{let e=f.replacements.map(e=>(r.glyphs.get(e).advanceWidth??0)*a),t=e.reduce((e,t)=>
5426e+=t,0),h=e.map(e=>e/t),c=i;for(let e=0;e<h.length;e++){let t=m*h[e];y[d].push([c,o]),v[d].push(t),c+=t}}A++}),m-=o}let x=[];for(let e=0,t=g.length;e<t;e++)x.push(...g[e].toShapes());return{shapes:x,charWidths:v,lineWidths:h,charCoords:y}}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(e,t,i,r,a){return(3===i||2===i)&&r.indexOf(`
5427`)>=0&&(e-=a),3===i?.5*t-.5*e:2===i?t-e:0}getLineInitialOffsetY(e,t,i,r,a){let o=t*e,h=Math.abs(this.ascender-this.descender)*r,c=-this.ascender*r-(e-h)/2;return 3===a?-(i-o-c):2===a?-(.5*i-.5*o-c):c}createPath(e,t,i,r,a){let o=e.getPath(i,-r,a.fontSize,{kerning:!1,letterSpacing:a.letterSpacing});if(!o){console.error('THREE.Font: character "'+e+'" does not exists in font family '+this.familyName+".");return}let h=new Ey,c=(e.advanceWidth??1)*t;if(e)for(let e of o.commands){let t=h.currentPath?.currentPoint;if(!(t&&"Z"!==e.type&&t.x===e.x&&-t.y===e.y))switch(e.type){case"M":h.moveTo(e.x,-e.y);break;case"L":h.lineTo(e.x,-e.y);break;case"Q":h.quadraticCurveTo(e.x1,-e.y1,e.x,-e.y);break;case"C":h.bezierCurveTo(e.x1,-e.y1,e.x2,-e.y2,e.x,-e.y)}}return h.subPaths.forEach(e=>{let t=function(e){if(e.length){let t=e[0];if(t instanceof ot)return t.v1;if(t instanceof n7||t instanceof or)return t.v0}}(e.curves);void 0!==t&&e.currentPoint.distanceTo(t)>0&&e.lineTo(t.x,t.y)}),{offsetX:c,path:h}}getCharWidth(e,t){return this.font?.getAdvanceWidth(e,t.fontSize,{kerning:!0,letterSpacing:t.letterSpacing})??0}getTextWidth(e,t){return this.font?.getAdvanceWidth(e,t.fontSize,{kerning:!0,letterSpacing:t.letterSpacing})??0}computeSpaceWidthForLine(e,t,i,r){let a=this.getCharWidth(" ",i),o=e[t];if(o){let h=this.countSpaces(o.trimEnd());if(4===i.horizontalAlign&&t<e.length-1&&h)return(("string"==typeof i.width?Number(r.getVariable(i.width)):i.width)-(this.getTextWidth(o,i)-h*a))/h}return a}countSpaces(e){return(e.match(/ /g)||[]).length}},EE=class{constructor(){this.objects=new Map,this.unreachable=new Set}getCached(e){return this.objects.get(e)}get size(){return this.objects.size}get(e,t,i){let r=this.objects.get(e);return void 0===r?(r=this.createObject(e,t,i),this.objects.set(e,r)):r.isShared=!0,r}forceDelete(e){let t=this.objects.get(e);t&&(this.disposeObject(t),this.objects.delete(e))}mutateIfUnique(e,t){let i=this.objects.get(e);if(i&&!0!==i.isShared)return this.objects.delete(e),this.objects.set(t,i),i}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(e,t){t===this.objects.get(e)&&this.unreachable.delete(e)}endGc(){this.unreachable.forEach(e=>{this.disposeObject(this.objects.get(e)),this.objects.delete(e)}),this.unreachable.clear()}dispose(){this.objects.forEach(e=>{this.disposeObject(e)}),this.objects.clear()}},EC=class extends EE{constructor(e){super(),this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t,i){let r=_O(e,t,this.flatShading,i);return r.computeBoundingSphere(),r}},ET={markNeedsUpdateRendererDirty:()=>{}},EP=class{constructor(e,t){this.id=e,this.userWebhook=t,this.result=void 0,this._connected=!1,this.emitter=_n(),this.reconnectWaitFor=1e3,this._onError=e=>{this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this._scheduleReconnect()},this._onConnected=e=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=1e3,this._connected=!0},this._onDisconnected=()=>{clearTimeout(this.scheduledReconnectHandle),this.reconnectWaitFor=1e3,this._connected=!1},this._onMessage=e=>{let t=e.data,i;try{i=JSON.parse(t)}catch(e){console.error("Error parsing webhook message",e)}if(i){let e=!1;this.userWebhook.parametersSchemas.forEach(({data:t})=>{var r,a;let o;void 0!==i[t.name]&&(r=i[t.name],a=t.type,o=typeof r,("string"===a||"number"===a)&&o===a||"boolean"===a&&("true"===r||"false"===r||!0===r||!1===r)||"image"===a&&"string"===o&&r.startsWith("http"))&&(void 0===this.result&&(this.result={}),this.result[t.name]=i[t.name],e=!0)}),e&&this.emitter.emit("message",{userWebhookId:this.id})}}}connect(){clearTimeout(this.scheduledReconnectHandle),this.userWebhook.url&&(this.eventSource=new EventSource("https://hooks.spline.design/events?hashFile="+this.userWebhook.url),this.eventSource.addEventListener("message",this._onMessage),this.eventSource.addEventListener("error",this._onError),this.eventSource.addEventListener("open",this._onConnected))}disconnect(){this.eventSource?.removeEventListener("message",this._onMessage),this.eventSource?.removeEventListener("error",this._onError),this.eventSource?.removeEventListener("open",this._onConnected),this.eventSource?.close(),this._onDisconnected(),clearTimeout(this.scheduledReconnectHandle)}_scheduleReconnect(){this.reconnectWaitFor*=2,this.reconnectWaitFor>512e3&&(this.reconnectWaitFor=512e3),clearTimeout(this.scheduledReconnectHandle),this.scheduledReconnectHandle=setTimeout(()=>{this.scheduledReconnectHandle=void 0,this.connect()},this.reconnectWaitFor)}update(e){this.userWebhook=e}dispose(){this._connected&&this.disconnect()}get connected(){return this._connected}on(e,t){this.emitter.on(e,t)}off(e,t){this.emitter.off(e,t)}getParametersKeys(){return this.userWebhook.parametersSchemas.map(e=>e.data.name)}getParameterValue(e){if(this.getParametersKeys().includes(e)){if(this.result)return this.result?.[e];for(let t of this.userWebhook.parametersSchemas)if(t.data.name===e)return yq.defaultParameterValueByType(t.data.type)}}},ED=[4186.01,4434.92,4698.63,4978.03,5274.04,5587.65,5919.91,6271.93,6644.88,7040,7458.62,7902.13],EO=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],EI=[],ER=[];for(let e=1;e<=8;e++)for(let t=0;t<ED.length;t++){let i=ED[t];EI.push(i/Math.pow(2,8-e)),ER.push(EO[t]+e)}var EL=EI.filter((e,t)=>
5427EI[t]>32&&EI[t]<2e3),EB=ER.filter((e,t)=>EI[t]>32&&EI[t]<2e3),Ez=class{static getFrequencies(e,t,i,r="frequency",a=-100,o=-30){i||(i=new Float32Array(e.frequencyBinCount),e.getFloatFrequencyData(i));let h=1/i.length*(t/2),c,d,u;if("music"===r||"voice"===r){let e="voice"===r?EL:EI,t=Array(e.length).fill(a);for(let r=0;r<i.length;r++){let a=r*h,o=i[r];for(let i=e.length-1;i>=0;i--)if(a>e[i]){t[i]=Math.max(t[i],o);break}}c=t,d="voice"===r?EL:EI,u="voice"===r?EB:ER}else u=(d=(c=Array.from(i)).map((e,t)=>h*t)).map(e=>`${e.toFixed(2)} Hz`);return{values:new Float32Array(c.map(e=>Math.max(0,Math.min((e-a)/(o-a),1)))),frequencies:d,labels:u}}},EF=()=>"https://relayserver.spline.design/";async function EN(e){try{return(await (await fetch(EF()+"session?uuidfile="+e)).json()).token}catch(e){console.error("Token generation error:",e)}}var EU=class{constructor(e){this.value=0,this.frequencies=new Float32Array(0);let t=new AudioContext;this.source=t.createMediaStreamSource(e),this.analyser=t.createAnalyser(),this.source.connect(this.analyser),this.analyser.fftSize=8192,this.analyser.smoothingTimeConstant=.1}getFrequencies(e=-100,t=-30){if(!this.analyser)throw Error("Not connected, please call .connect() first");return Ez.getFrequencies(this.analyser,44100,void 0,"voice",e,t)}update(){let e=this.getFrequencies(),t=e.values.reduce((e,t)=>e+t,0)/e.values.length;this.value=t,this.frequencies=e.values}disconnect(){this.source.disconnect(),this.analyser.disconnect()}},Ek=class{constructor(e,t,i){this.data=e,this.id=t,this.shared=i,this.emitter=_n(),this.rafId=0,this.voice=0,this.frequencies=new Float32Array([0]),this.events=[],this.isConnected=!1,this.isToolsAdded=!1,this.tools=[],this.onMessage=e=>{let t=JSON.parse(e.data);if(this.appendEvent(t),"session.created"===t.type&&this.onSessionCreated(),"response.done"===t.type&&t.response?.output){for(let e of t.response.output)if("function_call"===e.type)for(let[t,i]of this.tools)e.name===t.name&&(i(JSON.parse(e.arguments)),setTimeout(()=>{this.sendClientEvent({type:"response.create",response:{instructions:"notice the user about what you just did"}})}))}},this.onSessionCreated=()=>{this.isToolsAdded||this.registerTools()},this.onOpen=()=>{this.events=[],this.isConnected=!0,this.sendClientEvent({type:"response.create",response:{instructions:"Say hi"}})},this.animate=()=>{if(this.rafId=requestAnimationFrame(this.animate),this.isConnected&&this.analyser){this.analyser.update();let e=this.analyser.value,t=this.analyser.frequencies;this.voice=e,this.frequencies=t,this.emitter.emit("voice",{value:e,frequencies:t})}}}update(e){this.data=e}setColorByName(e,t){let i=this.shared.getColorByName(e);if(i){let{id:e}=i,{r:r,g:a,b:o}=_t.hexStringToRgb(t)??{r:0,g:0,b:0};this.shared.updateColor(e,{r:r/255,g:a/255,b:o/255})}}async connect(){if(this.isConnected)return;let e=await EN(this.data.integration.hash);this.pc=new RTCPeerConnection,this.audioElement=document.createElement("audio"),this.audioElement.autoplay=!0,this.pc.ontrack=e=>{let t=e.streams[0];this.audioElement.srcObject=t,this.analyser=new EU(t)};let t=await navigator.mediaDevices.getUserMedia({audio:!0});this.pc.addTrack(t.getTracks()[0]),this.dc=this.pc.createDataChannel("oai-events"),this.dc.addEventListener("message",this.onMessage),this.dc.addEventListener("open",this.onOpen);let i=await this.pc.createOffer();await this.pc.setLocalDescription(i);let r={type:"answer",sdp:await (await fetch("https://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview-2024-12-17",{method:"POST",body:i.sdp,headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/sdp"}})).text()};await this.pc.setRemoteDescription(r),this.animate()}appendEvent(e){this.events=[e,...this.events]}sendClientEvent(e){this.dc?(e.event_id=e.event_id||crypto.randomUUID(),this.dc.send(JSON.stringify(e)),this.appendEvent(e)):console.error("Failed to send message - no data channel available",e)}registerTools(){this.isToolsAdded=!0,this.registerTool({type:"function",name:"set_personality_color",description:"returns a color based on the voice personality of the ai assistant. This should be called by the voice assistant each time it is asks to speak differently. If a color cannot be associated to the personality, the color should be a neutral color.",parameters:{type:"object",properties:{color:{type:"string",description:"css hex color string, reflecting the personality"},personality:{type:"string",description:"the personality of the voice assistant"}},required:["color","personality"]}},({color:e})=>{this.setColorByName("Voice Assistant Color",e)});let e=this.shared.getVariablesNames().join(", ");this.registerTool({type:"function",name:"set_variable",description:"Sets a Spline variable value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the variable that needs to be set. Here's a list of available variables: ${e}. It the variable does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"The new value for this variable, should always be a string even for number and boolean variables, assume that the value will be cast to the proper type afterwards."}},required:["name","value","type"]}},({name:e,value:t})=>{let i=this.shared.getVariableByName(e);
5427if(i){let e=this.shared.getVariable(i.id),r;r="number"==typeof e?parseFloat(t):"boolean"==typeof e?"true"===t.toLowerCase():{textValue:t},this.shared.updateVariable(i.id,r)}});let t=this.shared.getColorNames().join(", ");this.registerTool({type:"function",name:"set_color",description:"Sets a Spline color asset value when asked by the user.",parameters:{type:"object",properties:{name:{type:"string",description:`The name of the color asset that needs to be set. Here's a list of available color assets: ${t}. It the color asset does not exist, don't call the function and warn the user about it.`},value:{type:"string",description:"css hex color string"}},required:["name","value"]}},({name:e,value:t})=>{this.setColorByName(e,t)});let i=this.shared.scene,r=[];i.traverseEntity(e=>{e.data.events.forEach(e=>{if("AIAssistantTrigger"===e.data.type){let{description:t}=e.data;r.push(t)}})}),this.registerTool({type:"function",name:"trigger_event",description:"Trigger an event by name, here are the available events, please match what the user is asking for to one of these if it applies, otherwise don't call the function and warn the user.",parameters:{type:"object",properties:{description:{type:"string",description:`The name of the event that needs to be triggered. Here's a list of available events: ${JSON.stringify(r)}.`},direction:{type:"string",description:"default is forward, but can be forward or backward. Always set to forward unless the user ask to reverse or cancel the event, then set to backward."}},required:["description","direction"]}},({description:e,direction:t})=>{this.emitter.emit("trigger_event",{description:e,direction:t})}),this.sendClientEvent({type:"session.update",session:{tools:this.tools.map(([e])=>e)}})}registerTool(e,t){this.tools.push([e,t])}disconnect(){cancelAnimationFrame(this.rafId),this.analyser?.disconnect(),this.voice=0,this.isConnected=!1,this.isToolsAdded=!1,this.dc?.removeEventListener("message",this.onMessage),this.dc?.removeEventListener("open",this.onOpen),this.dc?.close(),this.pc?.getSenders().forEach(e=>{e.track&&e.track.stop()}),this.pc?.close(),this.pc=void 0}computeAnalysisForListenerEvent(e){if("range"===e.analysis){let t=this.frequencies.slice(...e.analysisRange);return t.reduce((e,t)=>e+t,0)/t.length}return"single"===e.analysis?this.frequencies[e.analysisSingle]:this.voice}on(e,t){this.emitter.on(e,t)}off(e,t){this.emitter.off(e,t)}};function EV(e){return"variable_"+e}var Ej=class extends MC{constructor(e){super(),this.shared=e}create(e){return new MT(e,this.shared)}},EG=class{constructor(e,t={},i=!0,r=!1){if(this.data=e,this.needsJitter=i,this.enableLocalStorageForPersistentVariables=r,this.geometryCache=new EC(!0),this.geometryCache2=new EC(!1),this.imageHolderCache=new Ej(this),this.thisContext={scene:ET,shared:this},this.deletedMaterial=new Eh(g6.defaultTwoLayerData("phong"),this.thisContext,""),this.deletedImage=new MP(y3.emptyImage,this),this.deletedVideo=new MP(gW.defaultVideo,this),this.materials={},this.images={},this.uiBuffers={},this.videos={},this.colors={},this.audios={},this.particles={},this.fonts={},this.timelineAnimations={},this.variables={},this.userAPIs={},this.userWebhooks={},this.mouseProperty=null,this.raycastProperty=null,this.requestRender=()=>{this._requestRender&&this._requestRender()},t.images)for(let[e,i]of Object.entries(t.images))this.addImage(e,i);if(t.videos)for(let[e,i]of Object.entries(t.videos))this.addVideo(e,i);if(t.audios)for(let[e,i]of Object.entries(t.audios))this.addAudio(e,i);if(t.particles)for(let[e,i]of Object.entries(t.particles))this.addParticle(e,i);this.reset(e)}setRequestRender(e){this._requestRender=e}getImageLoadPromises(){return Object.values(this.images).map(e=>e.loadPromise)}setEntityOpContext(e){this.entityOpContext=e}reset(e,t=!1,i=!1){for(let{id:i,data:r}of(this.data=e,this.resetLib(e.lib),e.variables))this.addVariableHolder(i,r),t&&this.updateVariableHolder(i,r);for(let[t,i]of Object.entries(e.userAPIs??{}))this.addUserAPI(t,i);for(let[t,i]of Object.entries(e.userWebhooks??{}))this.addUserWebhook(t,i);if(!i){for(let[t,i]of Object.entries(e.images))this.addImage(t,i);for(let[t,i]of Object.entries(e.videos))this.addVideo(t,i)}
5427for(let[t,i]of Object.entries(e.colors))this.addColor(t,i);for(let[t,i]of Object.entries(e.materials))this.addMaterial(t,i);for(let[t,i]of Object.entries(e.audios))this.addAudio(t,i);for(let[t,i]of Object.entries(e.particles))this.addParticle(t,i);for(let[t,i]of Object.entries(e.fonts))this.addFont(t,i);for(let[t,i]of Object.entries(e.timelineAnimations??{}))this.addAnimation(t,i)}addMaterial(e,t){if(this.materials[e]){let i=this.materials[e];i.reset(t,this.thisContext),i.dispose()}else{let i=new Eh(t,this.thisContext,e);this.materials[e]=i}}deleteMaterial(e){this.materials[e]&&(this.materials[e].nodeMaterialDispose(),delete this.materials[e])}getMaterial(e){return this.materials[e]}getMaterialOrDeletedPlaceholder(e){return this.materials[e]??this.deletedMaterial}material(e){return"string"==typeof e?this.getMaterialOrDeletedPlaceholder(e):null==e?(console.error("material is undefined or null"),this.deletedMaterial):new Eo(e,this.thisContext)}getMaterials(){return this.materials}addImage(e,t){return this.images[e]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[e].updateSrc(t.data),!0):(this.images[e]=new MP(t,this),!1)}deleteImage(e){let t=this.images[e];t&&(t.dispose(),delete this.images[e])}getDefaultImage(){return this.images.image_0}getImage(e){return this.images[e]??this.deletedImage}image(e){return"string"==typeof e?this.getImage(e):this.imageHolderCache.load(e)}addUIBuffer(e,t){return this.uiBuffers[e]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.uiBuffers[e].updateSrc(t),!0):(this.uiBuffers[e]=new MP(t,this),!1)}uiBuffer(e){return this.uiBuffers[e]}addVideo(e,t){return this.videos[e]?(this.videos[e].updateSrc(t.data),!0):(this.videos[e]=new MP(t,this),!1)}deleteVideo(e){let t=this.videos[e];t&&(t.dispose(),delete this.videos[e])}getVideo(e){return this.videos[e]??this.deletedVideo}video(e){return"string"==typeof e?this.getVideo(e):this.imageHolderCache.load(e)}addColor(e,t){return this.colors[e]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in t?this.colors[e].setRGBA(t.r,t.g,t.b,t.a):this.colors[e].setRGBA(t.r,t.g,t.b,1),!0):("a"in t?this.colors[e]=new MK(t.r,t.g,t.b,t.a):this.colors[e]=new MK(t.r,t.g,t.b,1),!1)}updateColor(e,t){if(this.colors[e]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let i=this.colors[e];return this.colors[e].r=t.r??i.r,this.colors[e].g=t.g??i.g,this.colors[e].b=t.b??i.b,this.colors[e].a=t.a??i.a,!0}return!1}deleteColor(e){this.colors[e]&&delete this.colors[e]}getColor(e){return this.colors[e]}getColorNames(){return Object.values(this.data.colors).map(e=>e.name)}getColorByName(e){for(let t in this.data.colors)if(this.data.colors[t].name===e)return{color:this.colors[t],id:t}}color(e){let t;if("string"!=typeof e)return"a"in e?new xx(e.r,e.g,e.b,e.a):new xx(e.r,e.g,e.b,1);{let i=this.getColor(e);i?t=i:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),t=new xx(0,0,0,0))}return t}addAudio(e,t){this.audios[e]=t}getAudio(e){let t=this.audios[e];if(t instanceof Ev)return t;{let i=new Ev({src:t.data});return this.audios[e]=i,i}}addParticle(e,t){this.particles[e]=t}getParticle(e){return this.particles[e]}deleteParticle(e){this.particles[e]&&delete this.particles[e]}deleteAudio(e){let t=this.audios[e];t&&(t instanceof Ev&&t.dispose(),delete this.audios[e])}addFont(e,t){this.fonts[e]=new EM(t),this.fonts[e].loadingPromise.then(()=>this.requestRender())}getFont(e){return this.fonts[e]}deleteFont(e){this.fonts[e]&&delete this.fonts[e]}addAnimation(e,t){this.timelineAnimations[e]=t}getAnimation(e){return this.timelineAnimations[e]}deleteAniamtion(e){this.timelineAnimations[e]&&delete this.timelineAnimations[e]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof Ev&&e.dispose()}),this.audios={},this.particles={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(e,t){if(void 0===this.variables[e]){let i=t.value;if(this.enableLocalStorageForPersistentVariables&&t.persistent){let r=localStorage.getItem(EV(e));i=null!==r?JSON.parse(r):t.value}return this.variables[e]={value:i,locations:[],persistent:t.persistent},"dynamicVariableType"in t&&(this.variables[e].dynamicVariablePlayState="Playing",this.variables[e].dynamicVariableToggleIsForward=void 0),!0}return this.variables[e].value=t.value,!1}resetDynamicVariablePlayState(){for(let e in this.variables)void 0!==this.variables[e].dynamicVariablePlayState&&(this.variables[e].dynamicVariablePlayState="Playing",this.variables[e].dynamicVariableToggleIsForward=void 0)}
vendor: 4,164 bytes, line 5427
5427updateVariableHolder(e,t){this.updateVariable(e,t.value)}updateVariable(e,t){if(void 0===this.variables[e])return!1;this.variables[e].value=t,this.enableLocalStorageForPersistentVariables&&this.variables[e].persistent&&localStorage.setItem(EV(e),JSON.stringify(t));let i=t;for(;"string"==typeof i;)i=this.variables[i].value;let r=this.entityOpContext.scene;for(let t=this.variables[e].locations.length-1;t>=0;t--){let a=this.variables[e].locations[t];if("material"===a[0]){let e=a[1],t=i,o={scene:r,shared:this},h=a.slice(2);r.traverseMaterial(i=>{let r=i.root??i;r.uuid===e&&r.onVariableUpdate(h,t,o)});let c=this.materials[e];c&&c.onVariableUpdate(h,t,o)}else{let o=r.find(a[0]);if(void 0===o){this.variables[e].locations.splice(t,1);continue}if("geometry"!==a[1]&&"particles"!==a[1]){for(let e=1;e<a.length-1;e++)o=o[a[e]];"rotation"===a[1]?o[a[a.length-1]]=i*tK.DEG2RAD:o[a[a.length-1]]=i}if("ParticleEmitter"===(o=r.find(a[0])).type&&o.updateVariableState(i,a),_S.is(o)){if("position"===a[1]||"rotation"===a[1]||"scale"===a[1])o.onVariableUpdate();else if("geometry"===a[1]){let e=o;o.component&&(e=o.component);let t=e.dataPatched;e.chooseGeoemtryCache(this).forceDelete(t.geometry),e.createGeometryDelayed(this.entityOpContext),e.onVariableUpdate(!0),e.invalidateDownstreamBooleanData(),e.instances.forEach(e=>{let t=e.dataPatched;e.chooseGeoemtryCache(this).forceDelete(t.geometry),e.createGeometryDelayed(this.entityOpContext),e.onVariableUpdate(!0),e.invalidateDownstreamBooleanData()})}else"morphTargetInfluences"===a[1]&&o.updateMorphInfluences(a[2],i)}}}return this.requestRender(),!0}deleteVariable(e){this.variables[e]&&delete this.variables[e]}getVariable(e,t){if(Array.isArray(e)){if("mouse"===e[0])return this.mouseProperty?.[e[1]]??0;if("raycast"===e[0])return this.raycastProperty?.[e[1]]??0;let t=this.entityOpContext.scene.find(e[0]);if("width"===e[1]||"height"===e[1]||"depth"===e[1])return t.geometry.userData.parameters[e[1]];for(let i=1;i<e.length;i++)t=t[e[i]];return"rotation"===e[1]&&(t*=tK.RAD2DEG),t}for(let e in this.variables){if(void 0===t)break;let i=this.variables[e],r=i.locations?.findIndex(e=>fp.equal(e,t));void 0!==r&&-1!==r&&i.locations.splice(r,1)}if("string"!=typeof e)return e;{let i=e,r=e;do{if(r=i,void 0===this.variables[i])break;let e=this.variables[i].value;t&&void 0!==this.variables[r]&&this.variables[r].locations.push(t),i=e}while("string"==typeof i);return i}}getVariables(){return this.variables}getVariablesNames(){return this.data.variables.map(e=>e.data.name)}getVariableByName(e){for(let t of this.data.variables)if(t.data.name===e)return{variable:t.data,id:t.id}}getDynamicVariablePlayState(e){return this.variables[e]?.dynamicVariablePlayState}setDynamicVariablePlayState(e,t){void 0!==this.variables[e]&&(this.variables[e].dynamicVariablePlayState=t)}getDynamicVariableToggleIsForward(e){return this.variables[e]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(e,t){void 0!==this.variables[e]&&(this.variables[e].dynamicVariableToggleIsForward=t)}resetLib(e){for(let[t,i]of Object.entries(e.images))this.addImage(t,i.asset);for(let[t,i]of Object.entries(e.audios))this.addAudio(t,i.asset);for(let[t,i]of Object.entries(e.particles))this.addParticle(t,i.asset);for(let[t,i]of Object.entries(e.colors))this.addColor(t,i.asset);for(let[t,i]of Object.entries(e.fonts))this.addFont(t,i.asset);for(let[t,i]of Object.entries(e.materials))this.addMaterial(t,i.asset);for(let[t,i]of Object.entries(e.videos))this.addVideo(t,i.asset);for(let[t,i]of Object.entries(e.variables))this.addVariableHolder(t,i.asset)}updateLibByOp(e,t){"images"===e.path[0]?1===e.path.length&&1===e.type?this.addImage(e.id,e.data.asset):1===e.path.length&&2===e.type&&this.deleteImage(e.id):"videos"===e.path[0]?1===e.path.length&&1===e.type?this.addVideo(e.id,e.data.asset):1===e.path.length&&2===e.type&&this.deleteVideo(e.id):"audios"===e.path[0]?1===e.path.length&&1===e.type?this.addAudio(e.id,e.data.asset):1===e.path.length&&2===e.type&&this.deleteAudio(e.id):"particles"===e.path[0]?1===e.path.length&&1===e.type?this.addParticle(e.id,e.data.asset):1===e.path.length&&2===e.type&&this.deleteParticle(e.id):"c
5427olors"===e.path[0]?1===e.path.length&&1===e.type?this.addColor(e.id,e.data.asset):1===e.path.length&&2===e.type&&this.deleteColor(e.id):"materials"===e.path[0]?1===e.path.length&&1===e.type?this.addMaterial(e.id,e.data.asset):1===e.path.length&&2===e.type&&this.deleteMaterial(e.id):"fonts"===e.path[0]?1===e.path.length&&1===e.type?this.addFont(e.id,e.data.asset):1===e.path.length&&2===e.type&&this.deleteFont(e.id):"variables"===e.path[0]?1===e.path.length&&1===e.type?this.addVariableHolder(e.id,e.data.asset):1===e.path.length&&2===e.type&&this.deleteVariable(e.id):"components"===e.path[0]&&t.updateByLibOp(e,this)}updateByOp(e,t,i){if(this.data=t,"images"===e.path[0])2===e.path.length&&0===e.type?e.props.data&&this.getImage(e.path[1]).updateSrc(e.props.data):1===e.path.length&&1===e.type?this.addImage(e.id,e.data):1===e.path.length&&2===e.type&&this.deleteImage(e.id);else if("videos"===e.path[0])2===e.path.length&&0===e.type?e.props.data&&this.getVideo(e.path[1]).updateSrc(e.props.data):1===e.path.length&&1===e.type?this.addVideo(e.id,e.data):1===e.path.length&&2===e.type&&this.deleteVideo(e.id);else if("audios"===e.path[0])2===e.path.length&&0===e.type?e.props.data&&this.addAudio(e.path[1],t.audios[e.path[1]]):1===e.path.length&&1===e.type?this.addAudio(e.id,e.data):1===e.path.length&&2===e.type&&this.deleteAudio(e.id);else if("particles"===e.path[0])2===e.path.length&&0===e.type?e.props.data&&this.addParticle(e.path[1],t.particles[e.path[1]]):1===e.path.length&&1===e.type?this.addParticle(e.id,e.data):1===e.path.length&&2===e.type&&this.deleteParticle(e.id);else if("colors"===e.path[0])2===e.path.length&&0===e.type?this.updateColor(e.path[1],e.props):1===e.path.length&&1===e.type?this.addColor(e.id,e.data):1===e.path.length&&2===e.type&&this.deleteColor(e.id);else if("materials"===e.path[0])1===e.path.length&&1===e.type?this.addMaterial(e.id,e.data):1===e.path.length&&2===e.type?this.deleteMaterial(e.id):e.path.length>1&&this.getMaterial(e.path[1]).updateByOp(fd.drop(e,2),t.materials[e.path[1]],{shared:this,scene:i});else if("fonts"===e.path[0])2===e.path.length&&0===e.type?this.updateFont(e.path[1],e,i):1===e.path.length&&1===e.type?this.addFont(e.id,e.data):1===e.path.length&&2===e.type&&this.deleteFont(e.id);else if("variables"===e.path[0])2===e.path.length&&0===e.type?"value"in e.props?this.updateVariable(e.path[1],e.props.value):"persistent"in e.props&&(this.variables[e.path[1]].persistent=e.props.persistent):1===e.path.length&&4===e.type?this.addVariableHolder(e.id,e.data):1===e.path.length&&5===e.type&&this.deleteVariable(e.id);else if("userAPIs"===e.path[0]){if(1===e.path.length&&1===e.type)this.addUserAPI(e.id,e.data);else if(1===e.path.length&&2===e.type)this.deleteUserAPI(e.id);else if("string"==typeof e.path[1]){let i=t.userAPIs[e.path[1]];if(i){let t=0===e.type&&void 0===e.props.debounce,r=this.getUserAPI(e.path[1]);r instanceof Ek?r.update(i):r?.update(i,this,t)}}}else if("userWebhooks"===e.path[0]){if(1===e.path.length&&1===e.type)this.addUserWebhook(e.id,e.data);else if(1===e.path.length&&2===e.type)this.deleteUserWebhook(e.id);else if("string"==typeof e.path[1]){let i=t.userWebhooks[e.path[1]];i&&this.getUserWebhook(e.path[1])?.update(i)}}else"lib"===e.path[0]&&this.updateLibByOp(fd.drop(e,1),i)}updateFont(e,t,i){if(t.props.url){let r=this.getFont(e),a={...this.data.fonts[e],url:t.props.url};r.update(a),r.loadingPromise.then(()=>this.requestRender()),i.updateFont(e,this)}}addUserAPI(e,t){return this.userAPIs[e]?(this.userAPIs[e].update(t,this),!0):this.openAIRealtime?.id===e?(this.openAIRealtime.update(t),!0):(t.integration?.type==="VoiceAssistant"?this.openAIRealtime=new Ek(t,e,this):this.userAPIs[e]=new _o(e,t,this),!1)}getUserAPI(e){return this.openAIRealtime?.id===e?this.openAIRealtime:this.userAPIs[e]}getUserAPIs(){return this.userAPIs}deleteUserAPI(e){let t=this.userAPIs[e];t&&(t.dispose(),delete this.userAPIs[e])}addUserWebhook(e,t){return this.userWebhooks[e]?(this.userWebhooks[e].update(t),!0):(this.userWebhooks[e]=new EP(e,t),!1)}getUserWebhook(e){return this.userWebhooks[e]}getUserWebhooks(){return this.userWebhooks}deleteUserWebhook(e){let t=this.userWebhooks[e];t&&(t.dispose(),delete this.userWebhooks[e])}get scene(){return this.entityOpContext.scene}};new EG(y$.emptyData());var EH=class extends Ai{updateByPatchedOp(e,t,i){if(super.updateByPatchedOp(e,t,i),null!==function(e,t){let i=[];if(t.length!==e.length)return null;for(var r=0;r<e.length;){if("*"===t[r])i.push(e[r]);else if(e[r]!==t[r])return null;r+=1}return i}(e.path,["materials"])&&0===e.type&&Array.isArray(this.material))for(let[t,r]of Object.entries(e.props)){let e=i.shared.material(r);this.material[Number(t)]=e}else if(fa(e.path,["material"])&&this.material instanceof Ea)"material"in t&&"string"!=typeof t.material&&this.material.updateByOp(fd.drop(e,1),t.material,i);else if(fa(e.path,["materials","*"])&&Array.isArray(this.material)){let r=e.path[1];if("materials"in t&&r<this.material.length){let a=t.materials[r];"string"!=typeof a&&this.material[r].updateByOp(fd.drop(e,2),a,i)}}}get needsAO(){return void 0!==this.material&&(Array.isArray(this.material)?this.material[0]:this.material).hasAO}updateState(e,t){let i;super.updateState(e,t),void 0!==e.castShadow&&(this.castShadow=e.castShadow),void 0!==e.receiveShadow&&(this.receiveShadow=e.receiveShadow);let r=this.dataPatched;"Mesh"===this.dataPatched.type&&this.dataPatched.geometry.shapeBlendNode&&this.layers.set(9),"Mesh"===this.dataPatched.type&&"ShapeBlendGeometry"===this.dataPatched.geometry.type&&(i={resolutionLevel:this.dataPatched.geometry.resolutionLevel,useChildrenColors:this.dataPatched.geometry.useChildrenColors}),e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&void 0!==e.material&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(r.flatShading,r.side,r.wireframe,i),t.scene.markNeedsUpdateRendererDirty()),(e.geometry?.type==="NonParametricGeometry"||"materials"in e)&&("materials"in e&&void 0!==e.materials?(this.disposeMaterial(),this.material=e.materials.map(e=>t.shared.material(e).getFlavor(r.flatShading,r.side,r.wireframe)),t.scene.markNeedsUpdateRendererDirty()):"material"in e&&void 0!==e.material&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(r.flatShading,r.side,r.wireframe)],t.scene.markNeedsUpdateRendererDirty()));let a=this.data;if(a.geometry?.type!=="NonParametricGeometry"&&"materials"in a&&void 0!==a.materials&&(this.disposeMaterial(),this.material=t.shared.material(a.materials[0]).getFlavor(r.flatShading,r.side,r.wireframe)),void 0!==e.flatShading||void 0!==e.wireframe||void 0!==e.side){if(Array.isArray(this.material))for(let e=0;e<this.material.length;e++)this.material[e]=this.material[e].getFlavor(r.flatShading,r.side,r.wireframe);else this.material=this.material.getFlavor(r.flatShading,r.side,r.wireframe,i)}}
5427disposeMaterial(){this.material&&pc(this.material).forEach(e=>{e instanceof Ea&&(e instanceof Eh||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}},EW=new ib,Eq=new ip,EX=new ip,EY=new ib,EQ=new iZ,EZ=class extends EH{constructor(e,t,i){super(e,t),this.data=t,this.isSkinnedMesh=!1,this.localGeometry=void 0,t.bindMode&&t.bindMatrix&&(this.bindMode=t.bindMode,this.bindMatrix=new iZ().fromArray(t.bindMatrix),this.bindMatrixInverse=new iZ)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof rU&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(void 0!==this.localGeometry)return this.localGeometry;if(this.geometryCreateDeleyed instanceof EG){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return ve.is2DParametricMesh(e.type)&&0===e.depth}get is2DType(){return ve.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return"NonParametricGeometry"===this.geometry.userData.type}updateByPatchedOp(e,t,i){super.updateByPatchedOp(e,t,i),fa(e.path,["geometry"])&&this.updateByPatchedOpGeometry(fd.drop(e,1),t.geometry,i)}removeInteractionGeometry(e){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let i=this.data.geometry.type;if("NonParametricGeometry"===i||"SubdivGeometry"===i){let i,r,a;if(void 0===this.localGeometry){let i={...this.data.geometry,...e};this.localGeometry=_O(i,t,this.data.flatShading,this)}e.scaleBaked?[i,r,a]=e.scaleBaked:{width:i,height:r,depth:a}=e;let o=this.localGeometry.userData;void 0!==o.sxPrev&&_R(this.localGeometry.attributes,i/o.sxPrev,r/o.syPrev,a/o.szPrev),o.sxPrev=i,o.syPrev=r,o.szPrev=a}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=_O(i,t,this.data.flatShading,this)}}refreshAttachedClonersInteractions(){for(let e of this.attachedSurfaceCloners)e.update()}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,i){let r=!1;0===e.type&&0===e.path.length&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof _V&&this.chooseGeoemtryCache(i.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(r=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(i),this.refreshAttachedPaths(i)),r||(i.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(i)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){void 0!==e.geometry&&this.updateGeometryOnStateUpdate(e.geometry,t);let i=e.morphTargetInfluences;if(i)for(let{data:{name:e,value:r}}of(this.updateMorphTargets(),this.geometry.morphTargetsRelative=!0,i))this.updateMorphInfluences(e,t.shared.getVariable(r,[this.uuid,"morphTargetInfluences",e]));super.updateState(e,t)}updateMorphInfluences(e,t){if(void 0===this.morphTargetDictionary)return;let i=this.morphTargetDictionary[e];void 0!==i&&(this.morphTargetInfluences[i]=t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&0===this.geometry.groups.length&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let i=this.geometry.userData.parameters;this.is2DType?e.set(0,0,.5*i.depth):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(i.width,i.height,i.depth??0).multiplyScalar(.5)):i.centerOffset?e.fromArray(i.centerOffset):e.setScalar(0),t.set(i.width,i.height,i.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),"attached"===this.bindMode?this.bindMatrixInverse.copy(this.matrixWorld).invert():"detached"===this.bindMode&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,t){this.skeleton=e,this.isSkinnedMesh=!0,void 0===t&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let t=new ip,i=this.geometry.attributes.skinWeight;for(let e=0,r=i.count;e<r;e++){t.fromBufferAttribute(i,e);let r=1/t.manhattanLength();r!==1/0?t.multiplyScalar(r):t.set(1,0,0,0),i.setXYZW(e,t.x,t.y,t.z,t.w)}}boneTransform(e,t){let i=this.skeleton;if(void 0===i)return;let r=this.geometry;Eq.fromBufferAttribute(r.attributes.skinIndex,e),EX.fromBufferAttribute(r.attributes.skinWeight,e),EW.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let e=0;e<4;e++){let r=EX.getComponent(e);
vendor: 5,404 bytes, line 5427
5427if(0!==r){let a=Eq.getComponent(e);EQ.multiplyMatrices(i.bones[a].matrixWorld,i.boneInverses[a]),t.addScaledVector(EY.copy(EW).applyMatrix4(EQ),r)}}return t.applyMatrix4(this.bindMatrixInverse)}};function EK(e){if(Array.isArray(e.material)){for(let t of e.material)if(0===t.getLayersOfType("outline").length)return}else if(!(e.material instanceof Ea)||0===e.material.getLayersOfType("outline").length)return;e instanceof EZ&&e.is2DAndNoDepth?function(e){if(e.geometry.attributes.extrudeNormals||!e.geometry.attributes.position)return;let t=e.geometry.attributes.position.array,i=new Float32Array(t.length),r=new ib;for(let e=0;e<t.length;e+=3)r.set(t[e],t[e+1],t[e+2]).normalize(),i[e]=r.x,i[e+1]=r.y,i[e+2]=r.z;e.geometry.setAttribute("extrudeNormal",new rO(i,3))}(e):function(e){if(e.geometry.attributes.extrudeNormal||!e.geometry.attributes.position||!e.geometry.attributes.normal)return;let t=new Map,i=e.geometry.attributes,r=i.position.array,a=i.normal.array,o=new Float32Array(r.length);for(let e=0;e<r.length;e+=3){let i=`${r[e]}_${r[e+1]}_${r[e+2]}`,o=new ib(a[e],a[e+1],a[e+2]);t.has(i)?t.get(i)?.normals.push(o):t.set(i,{normals:[o],result:new ib})}t.forEach((e,t)=>{for(let t of e.normals)e.result.add(t);e.result.divideScalar(e.normals.length)});for(let e=0;e<r.length;e+=3){let i=`${r[e]}_${r[e+1]}_${r[e+2]}`,a=t.get(i)?.result;a&&(o[e]=a.x,o[e+1]=a.y,o[e+2]=a.z)}e.geometry.setAttribute("extrudeNormal",new rO(o,3))}(e)}function EJ(e){if(!e.geometry.attributes.position)return;let t=e.geometry.attributes.position.array,i=new Float32Array(t.length),r=parseInt(e.uuid.replace(/\D/g,"")),a=[tK.seededRandom(r),tK.seededRandom(r+1e4),tK.seededRandom(r+2e4)];for(let e=0;e<t.length;e++)i[e]=a[e%3];e.geometry.setAttribute("randomColor",new rT(i,3))}var E$=new i_,E0=new ib,E1=class extends EZ{constructor(e,t,i){super(e,t,i),this.data=t,this.hiddenMatrixOld=new iZ,this.smoothShading=!0,this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return void 0!==this.localGeometry?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return void 0!==this.localGeometry?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,t){let i=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(i.width,i.height,i.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(!0===this.skipReactionUpdate)return;let t=this.localGeometry?.uuid,{originalGeometry:i,subdividedGeometry:r,subdivPointer:a}=_V.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,void 0!==i&&(this.originalGeometry?.dispose(),this.originalGeometry=i),void 0!==r&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=r??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,EK(this),EJ(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),void 0!==e.flatShading){let i=this.material;this.material=Array.isArray(i)?i.map(e=>e.getFlavor(!1,e.side,e.wireframe)):i.getFlavor(!1,i.side,i.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){_V.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&_V.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=_V.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=_V.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let i=this.localGeometry;this.localGeometry=this.originalGeometryNew,Ai.prototype.raycast.call(this,e,t),this.localGeometry=i}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;null===e.boundingSphere&&(e.boundingSphere=new iV,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,i=e.boundingSphere.center;E$.setFromBufferAttribute(t),E$.getCenter(i),e.boundingSphere.radius=i.distanceTo(E$.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),E$.getSize(E0),this.hasNonUniformScale&&E0.divide(this.scale);let r={width:E0.x,height:E0.y,depth:E0.z};return this.geometry.userData.parameters=r,r}updateBoundingSphere(e){let t=this.originalGeometry;E$.min.set(e[0],e[2],e[4]),E$.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(E$.min.applyMatrix4(this.shearScaleInv),E$.max.applyMatrix4(this.shearScaleInv)),null===t.boundingSphere&&(t.boun
5427dingSphere=new iV);let i=t.boundingSphere.center;E$.getCenter(i),t.boundingSphere.radius=i.distanceTo(E$.max)}freeSubdivPointer(){this.subdivPointer&&(_V.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,i){super.updateByPatchedOpGeometry(e,t,i),this.localGeometry&&this.createGeometryByControls(t)}},E2={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},E3={polygon_center:0,edge:1,vertex:2},E4=(e,t)=>(i,r)=>t&&0!==i&&0!==e?e*r/100:0,E5=(e,t)=>{let i=Math.abs(t),r=-1*i;return(e- -1)*(i-r)/2+r},E6=new ib,E8=new ib,E9=new ib,E7=new ib;function Ce(e,t){let i=E9.fromArray(e),r=E7.fromArray(t);E8.copy(r).sub(i);let a=E8.length();return E8.normalize().multiplyScalar(.5*a),E6.copy(i).add(E8).toArray()}var Ct=new rS,Ci=new ib,Cr=new ib,Cs=new ib,Ca=e=>.5*(1-Math.cos(e*Math.PI)),Cn=class{constructor(){this.perlin=Array(4096)}noise(e,t=0,i=0){if(null==this.perlin){this.perlin=Array(4096);for(let e=0;e<4096;e++)this.perlin[e]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),i<0&&(i=-i);let r=Math.floor(e),a=Math.floor(t),o=Math.floor(i),h=e-r,c=t-a,d=i-o,u,p,f=0,m=.5,g,v,y;for(let e=0;e<4;e++){let e=r+(a<<4)+(o<<8);u=Ca(h),p=Ca(c),g=this.perlin[4095&e],g+=u*(this.perlin[e+1&4095]-g),v=this.perlin[e+16&4095],v+=u*(this.perlin[e+16+1&4095]-v),g+=p*(v-g),e+=256,v=this.perlin[4095&e],v+=u*(this.perlin[e+1&4095]-v),y=this.perlin[e+16&4095],y+=u*(this.perlin[e+16+1&4095]-y),v+=p*(y-v),g+=Ca(d)*(v-g),f+=g*m,m*=.5,r<<=1,a<<=1,c*=2,o<<=1,d*=2,(h*=2)>=1&&(r++,h--),c>=1&&(a++,c--),d>=1&&(o++,d--)}return f}noiseSeed(e){let t,i;let r={setSeed(e){i=t=(e??4294967296*Math.random())>>>0},getSeed:()=>t,rand:()=>(i=(1664525*i+1013904223)%4294967296)/4294967296};r.setSeed(e),this.perlin=Array(4096);for(let e=0;e<4096;e++)this.perlin[e]=r.rand()}},Co=new ib,Cl=new iZ,Ch=new iQ;function Cc(e){let t=!1;return e.scene.objects.traverse((e,i)=>{"Mesh"===i.type&&("TextGeometry"===i.geometry.type||"InputGeometry"===i.geometry.type)&&(t=!0)}),t}var Cd,Cu,Cp,Cf,Cm,Cg=class extends EZ{constructor(e,t,i){super(e,t,i),this.data=t}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,t){let{matrixWorld:i}=this;if(!(isNaN(e.ray.origin.x)||0===this.scale.x||0===this.scale.y||0===this.scale.z)&&(Cl.copy(i).invert(),Ch.copy(e.ray).applyMatrix4(Cl),Ch.intersectBox(this.singleBBox,Co))){let r=Co.applyMatrix4(i),a=e.ray.origin.distanceTo(r);t.push({distance:a,point:r.clone(),object:this})}}},Cv=new ib,Cy=new ib;_T.then(e=>{Cp=[(Cu=e).get_face_center,Cu.get_edge_midpoint,Cu.get_vertex_position],Cf=[Cu.get_face_normal,Cu.get_edge_normal,Cu.get_vertex_normal],Cm=[Cu.face_count,Cu.edge_count,Cu.vertex_count]});var Cx=new iZ,Cb=new iZ,Cw=new ib,CS=new ib,C_=new ib,CA=new ib,CM=new ib,CE=new ib,CC=class{constructor(e,t){this.data=e,this.is3D=t,this.perlin=new Cn,"perlin"===e.noiseType?(this.perlin.noiseSeed(e.seed),t?this.noise=(e,t,i)=>this.perlin.noise(e,t,i):this.noise=e=>this.perlin.noise(e)):t?this.noise=function(e=Math.random){let t=bq(e),i=new Float64Array(t).map(e=>bW[e%12*3]),r=new Float64Array(t).map(e=>bW[e%12*3+1]),a=new Float64Array(t).map(e=>bW[e%12*3+2]);return function(e,o,h){let c,d,u,p,f=(e+o+h)*bV,m=bG(e+f),g=bG(o+f),v=bG(h+f),y=(m+g+v)*bj,x=e-(m-y),b=
5427o-(g-y),w=h-(v-y),S,_,A,M,E,C;x>=b?b>=w?(S=1,_=0,A=0,M=1,E=1,C=0):(x>=w?(S=1,_=0,A=0):(S=0,_=0,A=1),M=1,E=0,C=1):b<w?(S=0,_=0,A=1,M=0,E=1,C=1):x<w?(S=0,_=1,A=0,M=0,E=1,C=1):(S=0,_=1,A=0,M=1,E=1,C=0);let T=x-S+bj,P=b-_+bj,D=w-A+bj,O=x-M+2*bj,I=b-E+2*bj,R=w-C+2*bj,L=x-1+3*bj,B=b-1+3*bj,z=w-1+3*bj,F=255&m,N=255&g,U=255&v,k=.6-x*x-b*b-w*w;if(k<0)c=0;else{let e=F+t[N+t[U]];k*=k,c=k*k*(i[e]*x+r[e]*b+a[e]*w)}let V=.6-T*T-P*P-D*D;if(V<0)d=0;else{let e=F+S+t[N+_+t[U+A]];V*=V,d=V*V*(i[e]*T+r[e]*P+a[e]*D)}let j=.6-O*O-I*I-R*R;if(j<0)u=0;else{let e=F+M+t[N+E+t[U+C]];j*=j,u=j*j*(i[e]*O+r[e]*I+a[e]*R)}let G=.6-L*L-B*B-z*z;if(G<0)p=0;else{let e=F+1+t[N+1+t[U+1]];G*=G,p=G*G*(i[e]*L+r[e]*B+a[e]*z)}return 32*(c+d+u+p)}}((0,bN.default)(e.seed)):this.noise=function(e=Math.random){let t=bq(e),i=new Float64Array(t).map(e=>bH[e%12*2]),r=new Float64Array(t).map(e=>bH[e%12*2+1]);return function(e,a){let o=0,h=0,c=0,d=(e+a)*bU,u=bG(e+d),p=bG(a+d),f=(u+p)*bk,m=e-(u-f),g=a-(p-f),v,y;m>g?(v=1,y=0):(v=0,y=1);let x=m-v+bk,b=g-y+bk,w=m-1+2*bk,S=g-1+2*bk,_=255&u,A=255&p,M=.5-m*m-g*g;if(M>=0){let e=_+t[A],a=i[e],h=r[e];M*=M,o=M*M*(a*m+h*g)}let E=.5-x*x-b*b;if(E>=0){let e=_+v+t[A+y],a=i[e],o=r[e];E*=E,h=E*E*(a*x+o*b)}let C=.5-w*w-S*S;if(C>=0){let e=_+1+t[A+1],a=i[e],o=r[e];C*=C,c=C*C*(a*w+o*S)}return 70*(o+h+c)}}((0,bN.default)(e.seed))}},CT=class extends b0(rd){constructor(e,t){super(),this.parameters=t,this.objectForSample=void 0,this._pendingMediaLoad=!1,this.random=null,this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(null===this.parent)this.updateState(this.parameters,e);else for(let e of this.children)e instanceof b3&&e.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof b3&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){"toObject"!==this.parameters.type&&(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 t;if(t=void 0!==e?e:"grid"===this.parameters.type?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,"toObject"===this.parameters.type){if(this.parameters.toObject.object){if(void 0===e&&"random"!==this.parameters.toObject.spreadType)return}else t=0}if("toObject"===this.parameters.type&&this.objectForSample){let e=this.children;if(e.length===t)return;if(e.length<t)for(let i=0,r=t-e.length;i<r;++i){let e=new b3(this.object);e.expand(),this.add(e)}else for(let i=0,r=e.length-t;i<r;++i)this.remove(e[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let e=0,i=t-this.children.length;e<i;++e){let e=new b3(this.object);e.expand(),this.add(e)}else for(let e=0,i=this.children.length-t;e<i;++e)this.remove(this.children[e])}}getRandom(e,t=!1){return(null===this.random||this.random.data.seed!==e.seed||this.random.is3D!==t)&&(this.random=new CC(e,t)),this.random}_updateRadial(e){let t=e.radial,i=t.start*tK.DEG2RAD,r=i-t.end*tK.DEG2RAD,a=new i6(t.rotation[0],t.rotation[1],t.rotation[2]),o;switch(t.axis){case"z":o=new ib(0,0,1);break;case"y":o=new ib(0,1,0);break;default:o=new ib(1,0,0)}let h=e.randomnessObject??gB.defaultData([1,1,1]).randomnessObject,c=this.getRandom(h),d=E4(h.strength,this.parameters.randomness);for(let[u,p]of this.children.entries()){let f=h.freqScale/10*u+h.movement,m=c.noise(f,f,f),g=u+1;p.scale.x=t.scale[0]+d(g,E5(m,h.scale[0]))||1e-4,p.scale.y=t.scale[1]+d(g,E5(m,h.scale[1]))||1e-4,p.scale.z=t.scale[2]+d(g,E5(m,h.scale[2]))||1e-4,p.position.setScalar(0);let v=r/e.count*u-i;switch(t.axis){case"x":p.rotation.set(0,v,0);break;case"y":p.rotation.set(0,0,v);break;case"z":p.rotation.set(v,0,0)}p.translateOnAxis(o,t.radius),p.position.x+=t.position[0]+d(g,E5(m,h.position[0])),p.position.y+=t.position[1]+d(g,E5(m,h.position[1])),p.position.z+=t.position[2]+d(g,E5(m,h.position[2]));let y=d(g,E5(m,h.rotation[0])),x=d(g,E5(m,h.rotation[1])),b=d(g,E5(m,h.rotation[2]));!0===t.alignment?(p.rotation.x+=a.x+y,p.rotation.y+=a.y+x,p.rotation.z+=a.z+b):p.rotation.set(a.x+y,a.y+x,a.z+b)}}_updateLinear(e){if("linear"!==e.type)throw Error();let t=e.linear,i=new i6(t.rotation[0],t.rotation[1],t.rotation[2]),r=e.randomnessObject??gB.defaultData([1,1,1]).randomnessObject,a=this.getRandom(r),o=E4(r.strength,this.parameters.randomness);for(let[e,h]of this.children.entries()){let c=r.freqScale/10*e+r.movement,d=a.noise(c,c,c),u=e+1,p=o(u,E5(d,r.rotation[0])),f=o(u,E5(d,r.rotation[1])),m=o(u,E5(d,r.rotation[2]));
5427h.scale.x=1+(t.scale[0]-1)*e+o(u,E5(d,r.scale[0]))||1e-4,h.scale.y=1+(t.scale[1]-1)*e+o(u,E5(d,r.scale[1]))||1e-4,h.scale.z=1+(t.scale[2]-1)*e+o(u,E5(d,r.scale[2]))||1e-4,h.rotation.x=i.x*e+p,h.rotation.y=i.y*e+f,h.rotation.z=i.z*e+m,h.position.x=t.position[0]*e+o(u,E5(d,r.position[0])),h.position.y=t.position[1]*e+o(u,E5(d,r.position[1])),h.position.z=t.position[2]*e+o(u,E5(d,r.position[2]))}}_updateGrid(e){let t=0,i=e.grid,r=e.randomnessObject??gB.defaultData([1,1,1]).randomnessObject,a=this.getRandom(r,!0),o=E4(r.strength,this.parameters.randomness);if(!0===i.useCenter){let e={x:i.count[0]%2==0?2:1,y:i.count[1]%2==0?2:1,z:i.count[2]%2==0?2:1},h=new ib(i.size[0]*(i.count[0]-e.x)*.5,i.size[1]*(i.count[1]-e.y)*.5,i.size[2]*(i.count[2]-e.z)*.5);for(let e=0;e<i.count[0];e++)for(let c=0;c<i.count[1];c++)for(let d=0;d<i.count[2];d++){let u=a.noise(r.freqScale/10*(e+1)+r.movement,r.freqScale/10*(c+1)+r.movement,r.freqScale/10*(d+1)+r.movement),p=this.children[t++];p.scale.x=1+o(t,E5(u,r.scale[0]))||1e-4,p.scale.y=1+o(t,E5(u,r.scale[1]))||1e-4,p.scale.z=1+o(t,E5(u,r.scale[2]))||1e-4;let f=o(t,E5(u,r.rotation[0])),m=o(t,E5(u,r.rotation[1])),g=o(t,E5(u,r.rotation[2]));p.rotation.set(f,m,g),p.position.x=i.size[0]*e-h.x+o(t,E5(u,r.position[0])),p.position.y=i.size[1]*c-h.y+o(t,E5(u,r.position[1])),p.position.z=i.size[2]*d-h.z+o(t,E5(u,r.position[2]))}}else for(let e=0;e<i.count[0];e++)for(let h=0;h<i.count[1];h++)for(let c=0;c<i.count[2];c++){let d=a.noise(r.freqScale/10*(e+1)+r.movement,r.freqScale/10*(h+1)+r.movement,r.freqScale/10*(c+1)+r.movement),u=this.children[t++];
5427u.scale.x=1+o(t,E5(d,r.scale[0]))||1e-4,u.scale.y=1+o(t,E5(d,r.scale[1]))||1e-4,u.scale.z=1+o(t,E5(d,r.scale[2]))||1e-4;let p=o(t,E5(d,r.rotation[0])),f=o(t,E5(d,r.rotation[1])),m=o(t,E5(d,r.rotation[2]));u.rotation.set(p,f,m),u.position.x=i.size[0]*e+o(t,E5(d,r.position[0])),u.position.y=-i.size[1]*h+o(t,E5(d,r.position[1])),u.position.z=-i.size[2]*c+o(t,E5(d,r.position[2]))}}_updateToObject(e){if("toObject"!==e.type)throw Error();let{toObject:t}=e,i=new i6(t.rotation[0],t.rotation[1],t.rotation[2]),r=e.randomnessObject??gB.defaultData([1,1,1]).randomnessObject,a=this.getRandom(r),o=E4(r.strength,this.parameters.randomness);if(!t.object){for(let[,e]of this.children.entries())e.position.set(0,0,0),e.scale.setScalar(1),e.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof Cg){if(this.objectForSample.font?.isLoaded&&void 0!==this.objectForSample.geometry.attributes.position)this._pendingMediaLoad=!1;else{this._pendingMediaLoad=!0;return}}if(void 0===this.objectForSample.geometry&&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 h=this.getSubdivData();if(h.length>0){let e=Math.round(h.length*t.count/100);this._updateCount(e)}else{let e=this.objectForSample.geometry.getAttribute("position");if(!e||isNaN(e.count)||0===e.count){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 c=new bQ(this.objectForSample).build(),d=E2[t.axis],u=this.children;for(let[e,p]of(c.setRandomGenerator((0,bN.default)(this.object.uuid+t.seed)),u.entries())){let u=r.freqScale/10*e+r.movement,f=a.noise(u,u,u),m=e+1,g=o(m,E5(f,r.rotation[0])),v=o(m,E5(f,r.rotation[1])),y=o(m,E5(f,r.rotation[2]));"random"===t.spreadType?c.sample(C_,CA):(h.length&&(C_.fromArray(h[e].pos),CA.fromArray(h[e].norm)),this.objectForSample instanceof E1&&C_.applyMatrix4(Cx.copy(this.objectForSample.matrixWorld).invert())),C_.applyMatrix4(this.object.hiddenMatrix.clone().invert()),p.position.copy(C_),Cw.fromArray(d);let x="normal"===t.align?CA:this.object.getWorldDirection(CE),b=CS.fromArray(t.position);CS.x+=o(m,E5(f,r.position[0])),CS.y+=o(m,E5(f,r.position[1])),CS.z+=o(m,E5(f,r.position[2]));let w=Math.acos(x.dot(Cw)),S=CM.crossVectors(Cw,x).normalize(),_=Cb.makeRotationAxis(S,w),A=x.clone().cross(this.object.up).normalize(),M=A.clone().cross(x).normalize(),E=new iZ().makeBasis(A,x,M),C=new ib(Cw.y,Cw.z,Cw.x).normalize(),T=C.clone().cross(Cw).normalize(),P=new iZ().makeBasis(C,Cw,T).invert(),D=new iZ().multiplyMatrices(E,P);
5427p.rotation.setFromRotationMatrix(D),b.applyMatrix4(_),p.position.add(b),p.rotation.x=p.rotation.x+i.x+g,p.rotation.y=p.rotation.y+i.y+v,p.rotation.z=p.rotation.z+i.z+y,p.scale.setScalar(1),p.scale.x=p.scale.x+t.scale[0]+o(m,E5(f,r.scale[0]))||1e-4,p.scale.y=p.scale.y+t.scale[1]+o(m,E5(f,r.scale[1]))||1e-4,p.scale.z=p.scale.z+t.scale[2]+o(m,E5(f,r.scale[2]))||1e-4,p.scale.multiply(this.object.scale),p.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType,t=new Map,i=(e,i)=>{let r=Math.round(1e4*e[0])+"_"+Math.round(1e4*e[1])+"_"+Math.round(1e4*e[2]),a=t.get(r);a?(a.pos[0]+=e[0],a.pos[1]+=e[1],a.pos[2]+=e[2],a.norm[0]+=i[0],a.norm[1]+=i[1],a.norm[2]+=i[2],a.count+=1):t.set(r,{pos:[...e],norm:[...i],count:1})};if("random"===e)return[];if(this.objectForSample instanceof E1){let t=this.objectForSample,r=E3[e],a=Cm[r],o=Cp[r],h=Cf[r],c=a(t.subdivPointerNew);for(let e=0;e<=c-1;e++){let r=o(t.subdivPointerNew,e),a=h(t.subdivPointerNew,e);Cv.fromArray(r).applyMatrix4(t.matrixWorld),Cy.fromArray(a),i(Cv.toArray(),Cy.toArray())}}else(this.objectForSample.geometry.index?function(e){let t=[];for(let i=0;i<=e.index.count;i++)if(Ci.fromArray(e.index.array,3*i),Ct.setFromAttributeAndIndices(e.attributes.position,Ci.x,Ci.y,Ci.z),Ct.getNormal(Cr),Ct.getMidpoint(Cs),!(isNaN(Cs.x)||isNaN(Cs.y)||isNaN(Cs.z))){let{a:e,b:i,c:r}=Ct,a=e.toArray(),o=i.toArray(),h=r.toArray(),c=e.distanceTo(i),d=i.distanceTo(r),u=r.distanceTo(e),p=Ce(a,o),f=Ce(o,h),m=Ce(h,a),g=[c,d,u],v=Math.max(...g),y=g.filter(e=>Math.round(e)===Math.round(v)).length>1,x=[],b=Ct.getMidpoint(Cs).toArray();v!==c||y||(x=[f,m,m],b=p),v!==d||y||(x=[p,m,m],b=f),v!==u||y||(x=[p,f,f],b=m),y&&(x=[p,f,m]),t.push({vertices:[a,o,h],faceCenters:x,midpoint:b,norm:Ct.getNormal(Cr).toArray()})}return t}(this.objectForSample.geometry):function(e){let t=[],{position:i}=e.attributes;for(let e=0;e<i.count;e++){Ct.setFromAttributeAndIndices(i,3*e,3*e+1,3*e+2),Ct.getNormal(Cr),Ct.getMidpoint(Cs);let r=Ct.a.toArray(),a=Ct.b.toArray(),o=Ct.c.toArray();t.push({vertices:[r,a,o],faceCenters:[Ce(r,a),Ce(a,o),Ce(o,r)],midpoint:Cs.toArray(),norm:Cr.toArray()})}return t}(this.objectForSample.geometry)).forEach((t,r)=>{"polygon_center"===e&&i(t.midpoint,t.norm),"vertex"===e&&(i(t.vertices[0],t.norm),i(t.vertices[1],t.norm),i(t.vertices[2],t.norm)),"edge"===e&&(i(t.faceCenters[0],t.norm),i(t.faceCenters[1],t.norm),i(t.faceCenters[2],t.norm))});let r=Array.from(t.values());for(let e of r)e.pos[0]/=e.count,e.pos[1]/=e.count,e.pos[2]/=e.count,e.norm[0]/=e.count,e.norm[1]/=e.count,e.norm[2]/=e.count;return r}updateState(e,t){if(this.parameters=uD(e),"toObject"!==this.parameters.type)(null===this.parent||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(null===this.parent||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let e=t.find(this.parameters.toObject.object);e instanceof Ai?this.objectForSample=e:this.objectForSample=void 0,this.matrix=new iZ,this.hiddenMatrix=new iZ,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,e&&e.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}},CP=e=>{var t;return(t=class extends e{}).geometryHelper=new r1(30,30,30),t},CD=new iQ,CO=new iV,CI=new iZ,CR=(e,t,i,r,a=!1,o=e)=>{let h=o.matrixWorld;if(null===t.boundingSphere&&t.computeBoundingSphere(),CO.copy(t.boundingSphere),CO.applyMatrix4(h),!1===i.ray.intersectsSphere(CO)||(CI.copy(h).invert(),CD.copy(i.ray).applyMatrix4(CI),null!==t.boundingBox&&!1===CD.intersectsBox(t.boundingBox)))return;let c,d=t.index,u=t.attributes.position,p=t.drawRange,f;if(!1===a){let t=Math.max(0,p.start),a=Math.min(d.count,p.start+p.count);for(f=t;f<a;f+=3)if(c=function(e,t,i,r,a,o,h){let c=new ib,d=new ib,u=new ib,p=new ib,f=new ib;if(c.fromBufferAttribute(r,a),d.fromBufferAttribute(r,o),u.fromBufferAttribute(r,h),null===i.intersectTriangle(c,d,u,!1,p))return null;
5427f.copy(p),f.applyMatrix4(e.matrixWorld);let m=t.ray.origin.distanceTo(f);return m<t.near||m>t.far?null:{faceIndex:1,distance:m,point:f.clone(),object:e}}(e,i,CD,u,d.getX(f),d.getX(f+1),d.getX(f+2))){c.faceIndex=Math.floor(f/3),r.push(c);return}}else{let a=t.attributes.position,h=new ib,c=new ib,d=new ib,u=new ib,f=1/((o.scale.x+o.scale.y+o.scale.z)/3),m=f*f,g=Math.max(0,p.start),v=Math.min(a.count,p.start+p.count);for(let t=g,p=v-1;t<p;t+=2){if(h.fromBufferAttribute(a,t),c.fromBufferAttribute(a,t+1),CD.distanceSqToSegment(h,c,u,d)>m)continue;u.applyMatrix4(o.matrixWorld);let p=i.ray.origin.distanceTo(u);p<i.near||p>i.far||r.push({distance:p,point:d.clone().applyMatrix4(o.matrixWorld),object:e})}}},CL=new ib,CB=new r7,Cz=class extends nY{constructor(e){let t=new rU,i=new nU({color:16777215,vertexColors:!0,toneMapped:!1}),r=[],a=[],o={},h=new ia(15711266),c=new ia(15711266),d=new ia(2857471);function u(e,t,i){p(e,i),p(t,i)}function p(e,t){r.push(0,0,0),a.push(t.r,t.g,t.b),void 0===o[e]&&(o[e]=[]),o[e].push(r.length/3-1)}u("n1","n2",h),u("n2","n4",h),u("n4","n3",h),u("n3","n1",h),u("f1","f2",h),u("f2","f4",h),u("f4","f3",h),u("f3","f1",h),u("n1","f1",h),u("n2","f2",h),u("n3","f3",h),u("n4","f4",h),u("p","n1",c),u("p","n2",c),u("p","n3",c),u("p","n4",c),u("u1","u2",d),u("u2","u3",d),u("u3","u1",d),t.setAttribute("position",new rO(r,3)),t.setAttribute("color",new rO(a,3)),super(t,i),this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=o,this.update()}update(){let e=this.geometry,t=this.pointMap;CB.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001],CF("n1",t,e,CB,-1,-1,.8),CF("n2",t,e,CB,1,-1,.8),CF("n3",t,e,CB,-1,1,.8),CF("n4",t,e,CB,1,1,.8),CF("f1",t,e,CB,-1,-1,.8),CF("f2",t,e,CB,1,-1,.8),CF("f3",t,e,CB,-1,1,.8),CF("f4",t,e,CB,1,1,.8),CF("u1",t,e,CB,.35,1.1,.8),CF("u2",t,e,CB,-.35,1.1,.8),CF("u3",t,e,CB,0,1.55,.8),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function CF(e,t,i,r,a,o,h){CL.set(a,o,h).unproject(r);let c=t[e];if(void 0!==c){let e=i.getAttribute("position");for(let t=0,i=c.length;t<i;t++)e.setXYZ(c[t],CL.x,CL.y,CL.z)}}var CN=class extends CP(Cz){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,t){CR(this.object,this.geometry,e,t,!0)}};(Do||(Do={})).is=e=>"objectHelper"in e;var CU=(e,t)=>class extends wu(e){constructor(){super(...arguments),this.objectHelper=new t(this),this.gizmos={}}get geometryHelper(){return t.geometryHelper}raycast(e,t){this.objectHelper.raycast(e,t)}showGizmos(){for(let e in this.gizmos){let t=this.gizmos[e];t instanceof l0&&(t.visible=!0)}}updateEntityBoxSize(e,t){this.objectHelper.visible&&this.geometryHelper instanceof r1?(e.setScalar(0),t.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(e,t)}hideGizmos(){for(let e in this.gizmos){let t=this.gizmos[e];t instanceof l0&&(t.visible=!1)}}},Ck=new ib,CV=new ib,Cj=new ix,CG=new ib,CH=new ib,CW=new ib,Cq=class extends CU(r7,CN){constructor(e="",t={...yO.defaultData,name:""}){super(),this._cameraType="OrthographicCamera",this.targetOffset=gL.DefaultTargetOffset,this.isUpVectorFlipped=!1,this.angleOffsetFromUp=0,this.wasMovedByUser=!1,this.wasMovedBySwitchCameraAction=!1,this.super_Entity(e,t),this.previousProjectionMatrix=new iZ,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let i=this.width,r=this.height;this.orthoCamera=new sA(-.5*i,.5*i,.5*r,-.5*r,-5e4,1e4),this.perspCamera=new se(45,i/r,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(
vendor: 4,234 bytes, line 5427
5427)}get isPerspectiveCamera(){return"PerspectiveCamera"===this.cameraType}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,t){"PerspectiveCamera"===e?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&("PerspectiveCamera"===e?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}set cameraType(e){"PerspectiveCamera"===e?this.toPerspective():"OrthographicCamera"===e&&this.toOrthographic()}get near(){return"PerspectiveCamera"===this._cameraType?this.perspCamera.near:this.orthoCamera.near}set near(e){"PerspectiveCamera"===this._cameraType?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return"PerspectiveCamera"===this._cameraType?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&("PerspectiveCamera"===this._cameraType?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,t,i){"number"==typeof e&&(e=new ib(e,t,i)),super.lookAt(e),this.getWorldPosition(Ck),this.targetOffset=Ck.distanceTo(e)}getTarget(e=new ib){return this.getWorldDirection(CV),this.getWorldPosition(Ck),CV.multiplyScalar(this.targetOffset),e.copy(Ck).add(CV),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Ck),Ck.distanceTo(e)}updateUp(){this.getWorldQuaternion(Cj),CG.set(0,0,1).applyQuaternion(Cj),CH.copy(rd.DEFAULT_UP),this.isUpVectorFlipped&&CH.negate(),CH.applyQuaternion(Cj),CW.copy(rd.DEFAULT_UP).projectOnPlane(CG),this.angleOffsetFromUp=CW.angleTo(CH),this.angleOffsetFromUp*=CW.cross(CH).dot(CG)>=0?1:-1}updateTransformState(e,t){let i=super.updateTransformState(e,t);return void 0!==e.isUpVectorFlipped&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),i}getViewFrontToObject(e){let t=e.getWorldPosition(new ib),i=e.getWorldDirection(new ib).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let t=this.getWorldDirection(new ib).multiplyScalar(this.targetOffset);return{position:e.clone().sub(t),target:e}}getViewToObject(e){let t=new ib;return e.getWorldPosition(t),this.getViewToTarget(t)}setViewplaneSize(e,t,i=!1){if(this.aspect=e/t,i){let i=e>t?this.aspect:1,r=e>t?1:this.aspect;this.left=-395*i,this.right=395*i,this.top=1/r*395,this.bottom=-(1/r*395)}else this.left=-(.5*e),this.right=.5*e,this.top=.5*t,this.bottom=-(.5*t);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,t,i,r,a,o){"PerspectiveCamera"===this._cameraType?this.perspCamera.setViewOffset(e,t,i,r,a,o):this.orthoCamera.setViewOffset(e,t,i,r,a,o)}clearViewOffset(){"PerspectiveCamera"===this._cameraType?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){"PerspectiveCamera"===this._cameraType?this.toPerspective():"Orthogra
5427phicCamera"===this._cameraType&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),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=null===e.view?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=[]){return u4({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},e)}updateCameraSubtype(e,t){let i="perspective"===e?"PerspectiveCamera":"OrthographicCamera";void 0!==t.zoom&&this.setZoom(i,t.zoom),void 0!==t.near&&this.setNear(i,t.near),void 0!==t.fov&&"PerspectiveCamera"===i&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),void 0!==e.far&&(this.far=e.far),void 0!==e.orthographic&&this.updateCameraSubtype("orthographic",e.orthographic),void 0!==e.perspective&&this.updateCameraSubtype("perspective",e.perspective),void 0!==e.type&&(this.cameraType=e.type),void 0!==e.up&&this.up.fromArray(e.up),void 0!==e.targetOffset&&(this.targetOffset=e.targetOffset),void 0!==e.isUpVectorFlipped&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix()}updateByPatchedOp(e,t,i){super.updateByPatchedOp(e,t,i),1===e.path.length&&0===e.type&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}},CX=new iZ,CY=new iZ;function CQ(e){let t=!1;return e.scene.objects.traverse((e,i)=>{i.geometry?.type==="BooleanGeometry"&&(t=!0)}),t}var CZ=class extends EH{constructor(e,t,i){super(e,t),this.data=t,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry=new rU,this.onAfterRender=(e,t,i,r,a,o)=>{super.onAfterRender(e,t,i,r,a,o),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,t,i){super.updateByPatchedOp(e,t,i),1===e.path.length&&"geometry"===e.path[0]&&0===e.type&&void 0!==e.props.operation&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(-1!==this.booleanMeshSetAddress&&!e)return;for(let i=0;i<this.children.length;i++){let r=this.children[i];r instanceof CZ&&!0===r.dataPatched.visible&&r.recomputeBoolean(!0===e,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let r=this.children[i];if(r instanceof Ai&&!0===r.dataPatched.visible&&r.geometry.attributes.position?.count>0&&r.geometry.drawRange.count>0&&0!==r.booleanMeshSetAddress){CX.multiplyMatrices(r.hiddenMatrix,r.matrix);try{if(-1===r.booleanMeshSetAddress){if((r.geometry.index??r.geometry.getAttribute("position")).count/3<15e5&&(r.booleanMeshSetAddress=_Q.getMeshSet(r.geometry,!0===e,t)),-1===r.booleanMeshSetAddress)return;_Q.transformMeshSet(r.booleanMeshSetAddress,CX),r.booleanMatrixInvOld.copy(CX).invert(),r.booleanWasTransformed=!1}else r instanceof CZ&&!0===r.needsTransformForDownstream?(_Q.transformMeshSet(r.booleanMeshSetAddress,CX),r.needsTransformForDownstream=!1):!0===r.booleanWasTransformed&&(_Q.transformMeshSet(r.booleanMeshSetAddress,CY.multiplyMatrices(CX,r.booleanMatrixInvOld)),r.booleanMatrixInvOld.copy(CX).invert(),r.booleanWasTransformed=!1)}catch(e){console.error(e),r.booleanMeshSetAddress=0,r.geometry.userData.booleanOperationDidFail=!0;continue}!1===_Q.hasOpenEdges(r.booleanMeshSetAddress)||i===this.children.length-1&&2===this.booleanOp?(this.meshSetAddresses.push(r.booleanMeshSetAddress),r.geometry.userData.booleanOperationDidFail=!1):r.geometry.userData.booleanOperationDidFail="openEdges"}}if(0===this.meshSetAddresses.length){this.geometry.setAttribute("position",new rO([],0)),this.geometry.setDrawRange(0,0);return}if(!0===e)return _Q.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let i=this.geometry;i.dispose(),this.geometry=new rU,this.geometry.userData=i.userData,this.geometry.boundingSphere=i.boundingSphere;try{this.booleanMeshSetAddress=_Q.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(e){this.booleanMeshSetAddress=0,this.geometry.userData.booleanOperationDidFail=!0,console.error(e)}
vendor: 16,384 bytes, lines 5427-5548
5427this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,EK(this),EJ(this)}dispose(){super.dispose(),this.geometry.dispose()}};(Dl||(Dl={})).is=function(e){return _S.is(e)&&e instanceof li};var CK=(e,t)=>class extends CU(e,t){updateState_Light(e,t){this.updateState_Entity(e,t),void 0!==e.color&&(this.color=t.shared.color(e.color)),void 0!==e.intensity&&(this.intensity=e.intensity),void 0!==e.depth&&(this.shadow.camera.far=e.depth,this.shadow.needsUpdate=!0),void 0!==e.shadows&&(this.castShadow=e.shadows)}},CJ=e=>e instanceof Ai,C$=e=>null!==e&&e instanceof CZ,C0=e=>Do.is(e),C1=new ib(1,1,1),C2=new ib,C3=new ib,C4=new ix,C5=class extends CP(l1){constructor(e,t=15){super(t),this.object=e,this.dummy=new nf,this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=this.dummy.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,t){CR(this.object,C5.geometryHelper,e,t,!1,this.dummy)}update(){}updateMatrix(){}updateMatrixWorld(e){this.object.matrixWorld.decompose(C2,C4,C3),this.matrix.compose(C2,C4,C1),super.updateMatrixWorld(e)}updateWorldMatrix(e,t){}},C6=class extends CU(nf,C5){constructor(e,t){super(),this.super_Entity(e,t),this.objectHelper.update()}updateState(e,t){this.updateState_Entity(e,t),"buffer"in e&&1===Object.keys(e).length&&t.scene.reloadSplats()}},C8=class extends CU(nf,C5){constructor(e,t,i){super(),this.super_Entity(e,t),this.context=i,this.objectHelper.update()}updateState(e,t){this.updateState_Entity(e,t)}},C9="varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}",C7=`#ifdef FRAMEBUFFER_PRECISION_HIGH
5428uniform mediump sampler2D inputBuffer;
5429#else
5430uniform lowp sampler2D inputBuffer;
5431#endif
5432uniform lowp sampler2D cocBuffer;uniform vec2 texelSize;uniform float scale;uniform vec4 kernel64[32];varying vec2 vUv;void main(){
5433#ifdef FOREGROUND
5434vec2 CoCNearFar=texture2D(cocBuffer,vUv).rg;float CoC=CoCNearFar.r*scale;
5435#else
5436float CoC=texture2D(cocBuffer,vUv).g*scale;
5437#endif
5438if(CoC==0.0){gl_FragColor=texture2D(inputBuffer,vUv);}else{
5439#ifdef FOREGROUND
5440vec2 step=texelSize*max(CoC,CoCNearFar.g*scale);
5441#else
5442vec2 step=texelSize*CoC;
5443#endif
5444vec4 acc=vec4(0.0);for(int i=0;i<32;++i){vec4 kernel=kernel64[i];vec2 uv=step*kernel.xy+vUv;acc+=texture2D(inputBuffer,uv);uv=step*kernel.zw+vUv;acc+=texture2D(inputBuffer,uv);}gl_FragColor=acc/64.0;}}`,Te=class extends r9{constructor(e=!1,t=!1){super({name:"BokehMaterial",defines:{PASS:e?"2":"1"},uniforms:{kernel64:new lR(null),kernel16:new lR(null),inputBuffer:new lR(null),cocBuffer:new lR(null),texelSize:new lR(new tJ),scale:new lR(1)},blending:0,depthWrite:!1,depthTest:!1,fragmentShader:C7,vertexShader:C9}),this.toneMapped=!1,t&&(this.defines.FOREGROUND="1"),this.generateKernel()}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}set cocBuffer(e){this.uniforms.cocBuffer.value=e}setCoCBuffer(e){this.uniforms.cocBuffer.value=e}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}getScale(e){return this.uniforms.scale.value=e}setScale(e){this.uniforms.scale.value=e}generateKernel(){let e=new Float32Array(128),t=new Float32Array(32),i=0,r=0;for(let a=0;a<80;++a){let o=2.39996323*a,h=Math.sqrt(a)/Math.sqrt(80),c=h*Math.cos(o),d=h*Math.sin(o);a%5==0?(t[r++]=c,t[r++]=d):(e[i++]=c,e[i++]=d)}let a=[],o=[];for(let t=0;t<128;)a.push(new ip(e[t++],e[t++],e[t++],e[t++]));for(let e=0;e<32;)o.push(new ip(t[e++],t[e++],t[e++],t[e++]));this.uniforms.kernel64.value=a,this.uniforms.kernel16.value=o}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t)}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}};function Tt(e,t,i){return Math.min(Math.max((e+t)/(t-i),0),1)}var Ti=`#include <common>
5445#include <packing>
5446#ifdef GL_FRAGMENT_PRECISION_HIGH
5447uniform highp sampler2D depthBuffer;
5448#else
5449uniform mediump sampler2D depthBuffer;
5450#endif
5451uniform float focusDistance;uniform float focusRange;uniform float cameraNear;uniform float cameraFar;varying vec2 vUv;float readDepth(const in vec2 uv){
5452#if DEPTH_PACKING == 3201
5453return unpackRGBAToDepth(texture2D(depthBuffer,uv));
5454#else
5455return texture2D(depthBuffer,uv).r;
5456#endif
5457}void main(){float depth=readDepth(vUv);
5458#ifdef PERSPECTIVE_CAMERA
5459float viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar);float linearDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar);
5460#else
5461float linearDepth=depth;
5462#endif
5463float signedDistance=linearDepth-focusDistance;float magnitude=smoothstep(0.0,focusRange,abs(signedDistance));gl_FragColor.rg=magnitude*vec2(step(signedDistance,0.0),step(0.0,signedDistance));}`,Tr=class extends r9{constructor(e){super({name:"CircleOfConfusionMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new lR(null),focusDistance:new lR(0),focusRange:new lR(0),cameraNear:new lR(.3),cameraFar:new lR(1e3)},blending:0,depthWrite:!1,depthTest:!1,fragmentShader:Ti,vertexShader:C9}),this.toneMapped=!1,this.uniforms.focalLength=this.uniforms.focusRange,this.adoptCameraSettings(e)}get near(){return this.uniforms.cameraNear.value}get far(){return this.uniforms.cameraFar.value}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=3200){this.depthBuffer=e,this.depthPacking=t}get focusDistance(){return this.uniforms.focusDistance.value}set focusDistance(e){this.uniforms.focusDistance.value=e}get worldFocusDistance(){var e;return-(this.focusDistance*((e=this.near)-this.far)-e)}set worldFocusDistance(e){this.focusDistance=Tt(-e,this.near,this.far)}getFocusDistance(e){this.uniforms.focusDistance.value=e}setFocusDistance(e){this.uniforms.focusDistance.value=e}get focalLength(){return this.focusRange}set focalLength(e){this.focusRange=e}get focusRange(){return this.uniforms.focusRange.value}set focusRange(e){this.uniforms.focusRange.value=e}get worldFocusRange(){var e;return-(this.focusRange*((e=this.near)-this.far)-e)}set worldFocusRange(e){this.focusRange=Tt(-e,this.near,this.far)}getFocalLength(e){return this.focusRange}setFocalLength(e){this.focusRange=e}adoptCameraSettings(e){e&&(this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far,e instanceof se?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}},Ts=`#include <common>
5464#include <dithering_pars_fragment>
5465#ifdef FRAMEBUFFER_PRECISION_HIGH
5466uniform mediump sampler2D inputBuffer;
5467#else
5468uniform lowp sampler2D inputBuffer;
5469#endif
5470varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec4 sum=texture2D(inputBuffer,vUv0);sum+=texture2D(inputBuffer,vUv1);sum+=texture2D(inputBuffer,vUv2);sum+=texture2D(inputBuffer,vUv3);gl_FragColor=sum*0.25;
5471#include <encodings_fragment>
5472#include <dithering_fragment>
5473}`,Ta=class extends r9{constructor(e=new tJ){super({name:"KawaseBlurMaterial",uniforms:{inputBuffer:new lR(null),texelSize:new lR(new tJ),halfTexelSize:new lR(new tJ),kernel:new lR(0),scale:new lR(1)},blending:0,depthWrite:!1,depthTest:!1,fragmentShader:Ts,vertexShader:"uniform vec2 texelSize;uniform vec2 halfTexelSize;uniform float kernel;uniform float scale;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vec2 dUv=(texelSize*vec2(kernel)+halfTexelSize)*scale;vUv0=vec2(uv.x-dUv.x,uv.y+dUv.y);vUv1=vec2(uv.x+dUv.x,uv.y+dUv.y);vUv2=vec2(uv.x+dUv.x,uv.y-dUv.y);vUv3=vec2(uv.x-dUv.x,uv.y-dUv.y);gl_Position=vec4(position.xy,1.0,1.0);}"}),this.toneMapped=!1,this.setTexelSize(e.x,e.y)}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.inputBuffer=e}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}getScale(){return this.uniforms.scale.value}setScale(e){this.uniforms.scale.value=e}getKernel(){return null}get kernel(){return this.uniforms.kernel.value}set kernel(e){this.uniforms.kernel.value=e}setKernel(e){this.kernel=e}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t),this.uniforms.halfTexelSize.value.set(e,t).multiplyScalar(.5)}setSize(e,t){let i=this.uniforms;i.texelSize.value.set(1/e,1/t),i.halfTexelSize.value.copy(i.texelSize.value).multiplyScalar(.5)}},Tn=`#ifdef FRAMEBUFFER_PRECISION_HIGH
5474uniform mediump sampler2D inputBuffer;
5475#else
5476uniform lowp sampler2D inputBuffer;
5477#endif
5478uniform float opacity;varying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);gl_FragColor=opacity*texel;
5479#include <encodings_fragment>
5480}`,To=class extends r9{constructor(){super({name:"CopyMaterial",uniforms:{inputBuffer:new lR(null),opacity:new lR(1)},blending:0,depthWrite:!1,depthTest:!1,fragmentShader:Tn,vertexShader:C9}),this.toneMapped=!1}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}getOpacity(e){return this.uniforms.opacity.value}setOpacity(e){this.uniforms.opacity.value=e}},Tl=`varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;
5481#if THREE_REVISION < 143
5482#define luminance(v) linearToRelativeLuminance(v)
5483#endif
5484#if EDGE_DETECTION_MODE != 0
5485varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;
5486#endif
5487#if EDGE_DETECTION_MODE == 1
5488#include <common>
5489#endif
5490#if EDGE_DETECTION_MODE == 0 || PREDICATION_MODE == 1
5491#ifdef GL_FRAGMENT_PRECISION_HIGH
5492uniform highp sampler2D depthBuffer;
5493#else
5494uniform mediump sampler2D depthBuffer;
5495#endif
5496float readDepth(const in vec2 uv){
5497#if DEPTH_PACKING == 3201
5498return unpackRGBAToDepth(texture2D(depthBuffer,uv));
5499#else
5500return texture2D(depthBuffer,uv).r;
5501#endif
5502}vec3 gatherNeighbors(){float p=readDepth(vUv);float pLeft=readDepth(vUv0);float pTop=readDepth(vUv1);return vec3(p,pLeft,pTop);}
5503#elif PREDICATION_MODE == 2
5504uniform sampler2D predicationBuffer;vec3 gatherNeighbors(){float p=texture2D(predicationBuffer,vUv).r;float pLeft=texture2D(predicationBuffer,vUv0).r;float pTop=texture2D(predicationBuffer,vUv1).r;return vec3(p,pLeft,pTop);}
5505#endif
5506#if PREDICATION_MODE != 0
5507vec2 calculatePredicatedThreshold(){vec3 neighbours=gatherNeighbors();vec2 delta=abs(neighbours.xx-neighbours.yz);vec2 edges=step(PREDICATION_THRESHOLD,delta);return PREDICATION_SCALE*EDGE_THRESHOLD*(1.0-PREDICATION_STRENGTH*edges);}
5508#endif
5509#if EDGE_DETECTION_MODE != 0
5510uniform sampler2D inputBuffer;
5511#endif
5512void main(){
5513#if EDGE_DETECTION_MODE == 0
5514const vec2 threshold=vec2(DEPTH_THRESHOLD);
5515#elif PREDICATION_MODE != 0
5516vec2 threshold=calculatePredicatedThreshold();
5517#else
5518const vec2 threshold=vec2(EDGE_THRESHOLD);
5519#endif
5520#if EDGE_DETECTION_MODE == 0
5521vec3 neighbors=gatherNeighbors();vec2 delta=abs(neighbors.xx-vec2(neighbors.y,neighbors.z));vec2 edges=step(threshold,delta);if(dot(edges,vec2(1.0))==0.0){discard;}gl_FragColor=vec4(edges,0.0,1.0);
5522#elif EDGE_DETECTION_MODE == 1
5523float l=luminance(texture2D(inputBuffer,vUv).rgb);float lLeft=luminance(texture2D(inputBuffer,vUv0).rgb);float lTop=luminance(texture2D(inputBuffer,vUv1).rgb);vec4 delta;delta.xy=abs(l-vec2(lLeft,lTop));vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}float lRight=luminance(texture2D(inputBuffer,vUv2).rgb);float lBottom=luminance(texture2D(inputBuffer,vUv3).rgb);delta.zw=abs(l-vec2(lRight,lBottom));vec2 maxDelta=max(delta.xy,delta.zw);float lLeftLeft=luminance(texture2D(inputBuffer,vUv4).rgb);float lTopTop=luminance(texture2D(inputBuffer,vUv5).rgb);delta.zw=abs(vec2(lLeft,lTop)-vec2(lLeftLeft,lTopTop));maxDelta=max(maxDelta.xy,delta.zw);float finalDelta=max(maxDelta.x,maxDelta.y);edges.xy*=step(finalDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0);
5524#elif EDGE_DETECTION_MODE == 2
5525vec4 delta;vec3 c=texture2D(inputBuffer,vUv).rgb;vec3 cLeft=texture2D(inputBuffer,vUv0).rgb;vec3 t=abs(c-cLeft);delta.x=max(max(t.r,t.g),t.b);vec3 cTop=texture2D(inputBuffer,vUv1).rgb;t=abs(c-cTop);delta.y=max(max(t.r,t.g),t.b);vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}vec3 cRight=texture2D(inputBuffer,vUv2).rgb;t=abs(c-cRight);delta.z=max(max(t.r,t.g),t.b);vec3 cBottom=texture2D(inputBuffer,vUv3).rgb;t=abs(c-cBottom);delta.w=max(max(t.r,t.g),t.b);vec2 maxDelta=max(delta.xy,delta.zw);vec3 cLeftLeft=texture2D(inputBuffer,vUv4).rgb;t=abs(c-cLeftLeft);delta.z=max(max(t.r,t.g),t.b);vec3 cTopTop=texture2D(inputBuffer,vUv5).rgb;t=abs(c-cTopTop);delta.w=max(max(t.r,t.g),t.b);maxDelta=max(maxDelta.xy,delta.zw);float finalDelta=max(maxDelta.x,maxDelta.y);edges*=step(finalDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0);
5526#endif
5527}`,Th=`uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;
5528#if EDGE_DETECTION_MODE != 0
5529varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;
5530#endif
5531void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,0.0);vUv1=vUv+texelSize*vec2(0.0,-1.0);
5532#if EDGE_DETECTION_MODE != 0
5533vUv2=vUv+texelSize*vec2(1.0,0.0);vUv3=vUv+texelSize*vec2(0.0,1.0);vUv4=vUv+texelSize*vec2(-2.0,0.0);vUv5=vUv+texelSize*vec2(0.0,-2.0);
5534#endif
5535gl_Position=vec4(position.xy,1.0,1.0);}`,Tc=class extends r9{constructor(e=new tJ,t=2){super({name:"EdgeDetectionMaterial",defines:{THREE_REVISION:"149".replace(/\D+/g,""),LOCAL_CONTRAST_ADAPTATION_FACTOR:"2.0",EDGE_THRESHOLD:"0.1",DEPTH_THRESHOLD:"0.01",PREDICATION_MODE:"0",PREDICATION_THRESHOLD:"0.01",PREDICATION_SCALE:"2.0",PREDICATION_STRENGTH:"1.0",DEPTH_PACKING:"0"},uniforms:{inputBuffer:new lR(null),depthBuffer:new lR(null),predicationBuffer:new lR(null),texelSize:new lR(e)},blending:0,depthWrite:!1,depthTest:!1,fragmentShader:Tl,vertexShader:Th}),this.toneMapped=!1,this.edgeDetectionMode=t}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=3200){this.depthBuffer=e,this.depthPacking=t}get edgeDetectionMode(){return Number(this.defines.EDGE_DETECTION_MODE)}set edgeDetectionMode(e){this.defines.EDGE_DETECTION_MODE=e.toFixed(0),this.needsUpdate=!0}getEdgeDetectionMode(){return this.edgeDetectionMode}setEdgeDetectionMode(e){this.edgeDetectionMode=e}get localContrastAdaptationFactor(){return Number(this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR)}set localContrastAdaptationFactor(e){this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR=e.toFixed("6"),this.needsUpdate=!0}getLocalContrastAdaptationFactor(){return this.localContrastAdaptationFactor}setLocalContrastAdaptationFactor(e){this.localContrastAdaptationFactor=e}get edgeDetectionThreshold(){return Number(this.defines.EDGE_THRESHOLD)}set edgeDetectionThreshold(e){this.defines.EDGE_THRESHOLD=e.toFixed("6"),this.defines.DEPTH_THRESHOLD=(.1*e).toFixed("6"),this.needsUpdate=!0}getEdgeDetectionThreshold(){return this.edgeDetectionThreshold}setEdgeDetectionThreshold(e){this.edgeDetectionThreshold=e}get predicationMode(){return Number(this.defines.PREDICATION_MODE)}set predicationMode(e){this.defines.PREDICATION_MODE=e.toFixed(0),this.needsUpdate=!0}getPredicationMode(){return this.predicationMode}setPredicationMode(e){this.predicationMode=e}set predicationBuffer(e){this.uniforms.predicationBuffer.value=e}setPredicationBuffer(e){this.uniforms.predicationBuffer.value=e}get predicationThreshold(){return Number(this.defines.PREDICATION_THRESHOLD)}set predicationThreshold(e){this.defines.PREDICATION_THRESHOLD=e.toFixed("6"),this.needsUpdate=!0}getPredicationThreshold(){return this.predicationThreshold}setPredicationThreshold(e){this.predicationThreshold=e}get predicationScale(){return Number(this.defines.PREDICATION_SCALE)}set predicationScale(e){this.defines.PREDICATION_SCALE=e.toFixed("6"),this.needsUpdate=!0}getPredicationScale(){return this.predicationScale}setPredicationScale(e){this.predicationScale=e}get predicationStrength(){return Number(this.defines.PREDICATION_STRENGTH)}set predicationStrength(e){this.defines.PREDICATION_STRENGTH=e.toFixed("6"),this.needsUpdate=!0}getPredicationStrength(){return this.predicationStrength}setPredicationStrength(e){this.predicationStrength=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}},Td=`#include <common>
5536#include <packing>
5537#include <dithering_pars_fragment>
5538#define packFloatToRGBA(v) packDepthToRGBA(v)
5539#define unpackRGBAToFloat(v) unpackRGBAToDepth(v)
5540#ifdef FRAMEBUFFER_PRECISION_HIGH
5541uniform mediump sampler2D inputBuffer;
5542#else
5543uniform lowp sampler2D inputBuffer;
5544#endif
5545#ifdef GL_FRAGMENT_PRECISION_HIGH
5546uniform highp sampler2D depthBuffer;
5547#else
5548u
5548niform mediump sampler2D depthBuffer;
5549#endif
5550uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;
5551#if THREE_REVISION < 143
5552#define luminance(v) linearToRelativeLuminance(v)
5553#endif
5554#if THREE_REVISION >= 137
5555vec4 sRGBToLinear(const 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.a);}
5556#endif
5557float readDepth(const in vec2 uv){
5558#if DEPTH_PACKING == 3201
5559return unpackRGBAToDepth(texture2D(depthBuffer,uv));
5560#else
5561return texture2D(depthBuffer,uv).r;
5562#endif
5563}float getViewZ(const in float depth){
5564#ifdef PERSPECTIVE_CAMERA
5565return perspectiveDepthToViewZ(depth,cameraNear,cameraFar);
5566#else
5567return orthographicDepthToViewZ(depth,cameraNear,cameraFar);
5568#endif
5569}FRAGMENT_HEADvoid main(){FRAGMENT_MAIN_UVvec4 color0=texture2D(inputBuffer,UV);vec4 color1=vec4(0.0);FRAGMENT_MAIN_IMAGEgl_FragColor=color0;
5570#ifdef ENCODE_OUTPUT
5571#include <encodings_fragment>
5572#endif
5573#include <dithering_fragment>
5574}`,Tu={FRAGMENT_HEAD:"FRAGMENT_HEAD",FRAGMENT_MAIN_UV:"FRAGMENT_MAIN_UV",FRAGMENT_MAIN_IMAGE:"FRAGMENT_MAIN_IMAGE",VERTEX_HEAD:"VERTEX_HEAD",VERTEX_MAIN_SUPPORT:"VERTEX_MAIN_SUPPORT"},Tp=class extends r9{constructor(e,t,i,r,a=!1){super({name:"EffectMaterial",defines:{THREE_REVISION:"149".replace(/\D+/g,""),DEPTH_PACKING:"0",ENCODE_OUTPUT:"1"},uniforms:{inputBuffer:new lR(null),depthBuffer:new lR(null),resolution:new lR(new tJ),texelSize:new lR(new tJ),cameraNear:new lR(.3),cameraFar:new lR(1e3),aspect:new lR(1),time:new lR(0)},blending:0,depthWrite:!1,depthTest:!1,dithering:a}),this.toneMapped=!1,e&&this.setShaderParts(e),t&&this.setDefines(t),i&&this.setUniforms(i),this.adoptCameraSettings(r)}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){this.uniforms.depthBuffer.value=e}get depthPacking(){return Number(this.defines.DEPTH_PACKING)}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e,t=3200){this.depthBuffer=e,this.depthPacking=t}setShaderParts(e){return this.fragmentShader=Td.replace(Tu.FRAGMENT_HEAD,e.get(Tu.FRAGMENT_HEAD)).replace(Tu.FRAGMENT_MAIN_UV,e.get(Tu.FRAGMENT_MAIN_UV)).replace(Tu.FRAGMENT_MAIN_IMAGE,e.get(Tu.FRAGMENT_MAIN_IMAGE)),this.vertexShader="uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;VERTEX_HEADvoid main(){vUv=position.xy*0.5+0.5;VERTEX_MAIN_SUPPORTgl_Position=vec4(position.xy,1.0,1.0);}".replace(Tu.VERTEX_HEAD,e.get(Tu.VERTEX_HEAD)).replace(Tu.VERTEX_MAIN_SUPPORT,e.get(Tu.VERTEX_MAIN_SUPPORT)),this.needsUpdate=!0,this}setDefines(e){for(let t of e.entries())this.defines[t[0]]=t[1];return this.needsUpdate=!0,this}setUniforms(e){for(let t of e.entries())this.uniforms[t[0]]=t[1];return this}setExtensions(e){for(let t of(this.extensions={},e))this.extensions[t]=!0;return this}get encodeOutput(){return void 0!==this.defines.ENCODE_OUTPUT}set encodeOutput(e){this.encodeOutput!==e&&(e?this.defines.ENCODE_OUTPUT="1":delete this.defines.ENCODE_OUTPUT,this.needsUpdate=!0)}isOutputEncodingEnabled(e){return this.encodeOutput}setOutputEncodingEnabled(e){this.encodeOutput=e}get time(){return this.uniforms.time.value}set time(e){this.uniforms.time.value=e}setDeltaTime(e){this.uniforms.time.value+=e}adoptCameraSettings(e){e&&(this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far,e instanceof se?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}setSize(e,t){let i=this.uniforms;i.resolution.value.set(e,t),i.texelSize.value.set(1/e,1/t),i.aspect.value=e/t}static get Section(){return Tu}},Tf=`#include <common>
5575#if THREE_REVISION < 143
5576#define luminance(v) linearToRelativeLuminance(v)
5577#endif
5578#ifdef FRAMEBUFFER_PRECISION_HIGH
5579uniform mediump sampler2D inputBuffer;
5580#else
5581uniform lowp sampler2D inputBuffer;
5582#endif
5583#ifdef RANGE
5584uniform vec2 range;
5585#elif defined(THRESHOLD)
5586uniform float threshold;uniform float smoothing;
5587#endif
5588varying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);float l=luminance(texel.rgb);
5589#ifdef RANGE
5590float low=step(range.x,l);float high=step(l,range.y);l*=low*high;
5591#elif defined(THRESHOLD)
5592l=smoothstep(threshold,threshold+smoothing,l);
5593#endif
5594#ifdef COLOR
5595gl_FragColor=vec4(texel.rgb*l,l);
5596#else
5597gl_FragColor=vec4(l);
5598#endif
5599}`,Tm=class extends r9{constructor(e=!1,t=null){super({name:"LuminanceMaterial",defines:{THREE_REVISION:"149".replace(/\D+/g,"")},uniforms:{inputBuffer:new lR(null),threshold:new lR(0),smoothing:new lR(1),range:new lR(null)},blending:0,depthWrite:!1,depthTest:!1,fragmentShader:Tf,vertexShader:C9}),this.toneMapped=!1,this.colorOutput=e,this.luminanceRange=t}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get threshold(){return this.uniforms.threshold.value}set threshold(e){this.smoothing>0||e>0?this.defines.THRESHOLD="1":delete this.defines.THRESHOLD,this.uniforms.threshold.value=e}getThreshold(){return this.threshold}setThreshold(e){this.threshold=e}get smoothing(){return this.uniforms.smoothing.value}set smoothing(e){this.threshold>0||e>0?this.defines.THRESHOLD="1":delete this.defines.THRESHOLD,this.uniforms.smoothing.value=e}getSmoothingFactor(){return this.smoothing}setSmoothingFactor(e){this.smoothing=e}get useThreshold(){return this.threshold>0||this.smoothing>0}set useThreshold(e){}get colorOutput(){return void 0!==this.defines.COLOR}set colorOutput(e){e?this.defines.COLOR="1":delete this.defines.COLOR,this.needsUpdate=!0}isColorOutputEnabled(e){return this.colorOutput}setColorOutputEnabled(e){this.colorOutput=e}get useRange(){return null!==this.luminanceRange}set useRange(e){this.luminanceRange=null}get luminanceRange(){return this.uniforms.range.value}set luminanceRange(e){null!==e?this.defines.RANGE="1":delete this.defines.RANGE,this.uniforms.range.value=e,this.needsUpdate=!0}getLuminanceRange(){return this.luminanceRange}setLuminanceRange(e){this.luminanceRange=e}},Tg=`#ifdef FRAMEBUFFER_PRECISION_HIGH
5600uniform mediump sampler2D inputBuffer;
5601#else
5602uniform lowp sampler2D inputBuffer;
5603#endif
5604#ifdef MASK_PRECISION_HIGH
5605uniform mediump sampler2D maskTexture;
5606#else
5607uniform lowp sampler2D maskTexture;
5608#endif
5609#if MASK_FUNCTION != 0
5610uniform float strength;
5611#endif
5612varying vec2 vUv;void main(){
5613#if COLOR_CHANNEL == 0
5614float mask=texture2D(maskTexture,vUv).r;
5615#elif COLOR_CHANNEL == 1
5616float mask=texture2D(maskTexture,vUv).g;
5617#elif COLOR_CHANNEL == 2
5618float mask=texture2D(maskTexture,vUv).b;
5619#else
5620float mask=texture2D(maskTexture,vUv).a;
5621#endif
5622#if MASK_FUNCTION == 0
5623#ifdef INVERTED
5624mask=step(mask,0.0);
5625#else
5626mask=1.0-step(mask,0.0);
5627#endif
5628#else
5629mask=clamp(mask*strength,0.0,1.0);
5630#ifdef INVERTED
5631mask=1.0-mask;
5632#endif
5633#endif
5634#if MASK_FUNCTION == 2
5635gl_FragColor=vec4(mask*texture2D(inputBuffer,vUv).rgb,mask);
5636#else
5637gl_FragColor=mask*texture2D(inputBuffer,vUv);
5638#endif
5639}`,Tv=class extends r9{constructor(e=null){super({name:"MaskMaterial",uniforms:{maskTexture:new lR(e),inputBuffer:new lR(null),strength:new lR(1)},blending:0,depthWrite:!1,depthTest:!1,fragmentShader:Tg,vertexShader:C9}),this.toneMapped=!1,this.setColorChannel(0),this.setMaskFunction(0)}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}set maskTexture(e){this.uniforms.maskTexture.value=e,delete this.defines.MASK_PRECISION_HIGH,1009!==e.type&&(this.defines.MASK_PRECISION_HIGH="1"),this.needsUpdate=!0}setMaskTexture(e){this.maskTexture=e}set colorChannel(e){this.defines.COLOR_CHANNEL=e.toFixed(0),this.needsUpdate=!0}setColorChannel(e){this.colorChannel=e}set maskFunction(e){this.defines.MASK_FUNCTION=e.toFixed(0),this.needsUpdate=!0}setMaskFunction(e){this.maskFunction=e}get inverted(){return void 0!==this.defines.INVERTED}set inverted(e){this.inverted&&!e?delete this.defines.INVERTED:e&&(this.defines.INVERTED="1"),this.needsUpdate=!0}isInverted(){return this.inverted}setInverted(e){this.inverted=e}get strength(){return this.uniforms.strength.value}set strength(e){this.uniforms.strength.value=e}getStrength(){return this.strength}setStrength(e){this.strength=e}},Ty
vendor: 7,736 bytes, lines 5639-5664
5639=`#define sampleLevelZeroOffset(t, coord, offset) texture2D(t, coord + offset * texelSize)
5640#if __VERSION__ < 300
5641#define round(v) floor(v + 0.5)
5642#endif
5643#ifdef FRAMEBUFFER_PRECISION_HIGH
5644uniform mediump sampler2D inputBuffer;
5645#else
5646uniform lowp sampler2D inputBuffer;
5647#endif
5648uniform lowp sampler2D areaTexture;uniform lowp sampler2D searchTexture;uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}vec2 decodeDiagBilinearAccess(in vec2 e){e.r=e.r*abs(5.0*e.r-5.0*0.75);return round(e);}vec4 decodeDiagBilinearAccess(in vec4 e){e.rb=e.rb*abs(5.0*e.rb-5.0*0.75);return round(e);}vec2 searchDiag1(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);vec3 t=vec3(texelSize,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(coord.z<float(MAX_SEARCH_STEPS_DIAG_INT-1)&&coord.w>0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 searchDiag2(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);coord.x+=0.25*texelSize.x;vec3 t=vec3(texelSize,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(coord.z<float(MAX_SEARCH_STEPS_DIAG_INT-1)&&coord.w>0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;e=decodeDiagBilinearAccess(e);coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 areaDiag(const in vec2 dist,const in vec2 e,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE_DIAG,AREATEX_MAX_DISTANCE_DIAG)*e+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.x+=0.5;texCoord.y+=AREATEX_SUBTEX_SIZE*offset;return texture2D(areaTexture,texCoord).rg;}vec2 calculateDiagWeights(const in vec2 texCoord,const in vec2 e,const in vec4 subsampleIndices){vec2 weights=vec2(0.0);vec4 d;vec2 end;if(e.r>0.0){d.xz=searchDiag1(texCoord,vec2(-1.0,1.0),end);d.x+=float(end.y>0.9);}else{d.xz=vec2(0.0);}d.yw=searchDiag1(texCoord,vec2(1.0,-1.0),end);if(d.x+d.y>2.0){vec4 coords=vec4(-d.x+0.25,d.x,d.y,-d.y-0.25)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.xy=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).rg;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).rg;c.yxwz=decodeDiagBilinearAccess(c.xyzw);vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.z);}d.xz=searchDiag2(texCoord,vec2(-1.0,-1.0),end);if(sampleLevelZeroOffset(inputBuffer,texCoord,vec2(1,0)).r>0.0){d.yw=searchDiag2(texCoord,vec2(1.0),end);d.y+=float(end.y>0.9);}else{d.yw=vec2(0.0);}if(d.x+d.y>2.0){vec4 coords=vec4(-d.x,-d.x,d.y,d.y)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.x=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).g;c.y=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(0,-1)).r;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).gr;vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.w).gr;}return weights;}float searchLength(const in vec2 e,const in float offset){vec2 scale=SEARCHTEX_SIZE*vec2(0.5,-1.0);vec2 bias=SEARCHTEX_SIZE*vec2(offset,1.0);scale+=vec2(-1.0,1.0);bias+=vec2(0.5,-0.5);scale*=1.0/SEARCHTEX_PACKED_SIZE;bias*=1.0/SEARCHTEX_PACKED_SIZE;return texture2D(searchTexture,scale*e+bias).r;}float searchXLeft(in vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(texCoord.x>end&&e.g>0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(-2.0,0.0)*texelSize+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.0)+3.25;return texelSize.x*offset+texCoord.x;}float searchXRight(vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(texCoord.x<end&&e.g>0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(2.0,0.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.5)+3.25;return-texelSize.x*offset+texCoord.x;}float searchYUp(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(texCoord.y>end&&e.r>0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=-vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.0)+3.25;return texelSize.y*offset+texCoord.y;}float searchYDown(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;i++){if(!(texCoord.y<end&&e.r>0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.5)+3.25;return-texelSize.y*offset+texCoord.y;}vec2 area(const in vec2 dist,const in float e1,const in float e2,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE)*round(4.0*vec2(e1,e2))+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.y=AREATEX_SUBTEX_SIZE*offset+texCoord.y;return texture2D(areaTexture,texCoord).rg;}void detectHorizontalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){
5649#if !defined(DISABLE_CORNER_DETECTION)
5650vec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,1)).r;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).r;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,-2)).r;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,-2)).r;weights*=clamp(factor,0.0,1.0);
5651#endif
5652}void detectVerticalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){
5653#if !defined(DISABLE_CORNER_DETECTION)
5654vec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(1,0)).g;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).g;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(-2,0)).g;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(-2,1)).g;weights*=clamp(factor,0.0,1.0);
5655#endif
5656}void main(){vec4 weights=vec4(0.0);vec4 subsampleIndices=vec4(0.0);vec2 e=texture2D(inputBuffer,vUv).rg;if(e.g>0.0){
5657#if !defined(DISABLE_DIAG_DETECTION)
5658weights.rg=calculateDiagWeights(vUv,e,subsampleIndices);if(weights.r==-weights.g){
5659#endif
5660vec2 d;vec3 coords;coords.x=searchXLeft(vOffset[0].xy,vOffset[2].x);coords.y=vOffset[1].y;d.x=coords.x;float e1=texture2D(inputBuffer,coords.xy).r;coords.z=searchXRight(vOffset[0].zw,vOffset[2].y);d.y=coords.z;d=round(resolution.xx*d+-vPixCoord.xx);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.zy,vec2(1,0)).r;weights.rg=area(sqrtD,e1,e2,subsampleIndices.y);coords.y=vUv.y;detectHorizontalCornerPattern(weights.rg,coords.xyzy,d);
5661#if !defined(DISABLE_DIAG_DETECTION)
5662}else{e.r=0.0;}
5663#endif
5664}if(e.r>0.0){vec2 d;vec3 coords;coords.y=searchYUp(vOffset[1].xy,vOffset[2].z);coords.x=vOffset[0].x;d.x=coords.y;float e1=texture2D(inputBuffer,coords.xy).g;coords.z=searchYDown(vOffset[1].zw,vOffset[2].w);d.y=coords.z;d=round(resolution.yy*d-vPixCoord.yy);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.xz,vec2(0,1)).g;weights.ba=area(sqrtD,e1,e2,subsampleIndices.x);coords.x=vUv.x;detectVerticalCornerPattern(weights.ba,coords.xyxz,d);}gl_FragColor=weights;}`,
vendor: 3,777 bytes, line 5664
5664Tx=class extends r9{constructor(e=new tJ,t=new tJ){super({name:"SMAAWeightsMaterial",defines:{MAX_SEARCH_STEPS_INT:"16",MAX_SEARCH_STEPS_FLOAT:"16.0",MAX_SEARCH_STEPS_DIAG_INT:"8",MAX_SEARCH_STEPS_DIAG_FLOAT:"8.0",CORNER_ROUNDING:"25",CORNER_ROUNDING_NORM:"0.25",AREATEX_MAX_DISTANCE:"16.0",AREATEX_MAX_DISTANCE_DIAG:"20.0",AREATEX_PIXEL_SIZE:"(1.0 / vec2(160.0, 560.0))",AREATEX_SUBTEX_SIZE:"(1.0 / 7.0)",SEARCHTEX_SIZE:"vec2(66.0, 33.0)",SEARCHTEX_PACKED_SIZE:"vec2(64.0, 16.0)"},uniforms:{inputBuffer:new lR(null),searchTexture:new lR(null),areaTexture:new lR(null),resolution:new lR(t),texelSize:new lR(e)},blending:0,depthWrite:!1,depthTest:!1,fragmentShader:Ty,vertexShader:"uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void main(){vUv=position.xy*0.5+0.5;vPixCoord=vUv*resolution;vOffset[0]=vUv.xyxy+texelSize.xyxy*vec4(-0.25,-0.125,1.25,-0.125);vOffset[1]=vUv.xyxy+texelSize.xyxy*vec4(-0.125,-0.25,-0.125,1.25);vOffset[2]=vec4(vOffset[0].xz,vOffset[1].yw)+vec4(-2.0,2.0,-2.0,2.0)*texelSize.xxyy*MAX_SEARCH_STEPS_FLOAT;gl_Position=vec4(position.xy,1.0,1.0);}"}),this.toneMapped=!1}set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get searchTexture(){return this.uniforms.searchTexture.value}set searchTexture(e){this.uniforms.searchTexture.value=e}get areaTexture(){return this.uniforms.areaTexture.value}set areaTexture(e){this.uniforms.areaTexture.value=e}setLookupTextures(e,t){this.searchTexture=e,this.areaTexture=t}get orthogonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_INT)}set orthogonalSearchSteps(e){let t=Math.min(Math.max(e,0),112);this.defines.MAX_SEARCH_STEPS_INT=t.toFixed("0"),this.defines.MAX_SEARCH_STEPS_FLOAT=t.toFixed("1"),this.needsUpdate=!0}setOrthogonalSearchSteps(e){this.orthogonalSearchSteps=e}get diagonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_DIAG_INT)}set diagonalSearchSteps(e){let t=Math.min(Math.max(e,0),20);this.defines.MAX_SEARCH_STEPS_DIAG_INT=t.toFixed("0"),this.defines.MAX_SEARCH_STEPS_DIAG_FLOAT=t.toFixed("1"),this.needsUpdate=!0}setDiagonalSearchSteps(e){this.diagonalSearchSteps=e}get diagonalDetection(){return void 0===this.defines.DISABLE_DIAG_DETECTION}set diagonalDetection(e){e?delete this.defines.DISABLE_DIAG_DETECTION:this.defines.DISABLE_DIAG_DETECTION="1",this.needsUpdate=!0}isDiagonalDetectionEnabled(){return this.diagonalDetection}setDiagonalDetectionEnabled(e){this.diagonalDetection=e}get cornerRounding(){return Number(this.defines.CORNER_ROUNDING)}set cornerRounding(e){let t=Math.min(Math.max(e,0),100);this.defines.CORNER_ROUNDING=t.toFixed("4"),this.defines.CORNER_ROUNDING_NORM=(t/100).toFixed("4"),this.needsUpdate=!0}setCornerRounding(e){this.cornerRounding=e}get cornerDetection(){return void 0===this.defines.DISABLE_CORNER_DETECTION}set cornerDetection(e){e?delete this.defines.DISABLE_CORNER_DETECTION:this.defines.DISABLE_CORNER_DETECTION="1",this.needsUpdate=!0}isCornerRoundingEnabled(){return this.cornerDetection}setCornerRoundingEnabled(e){this.cornerDetection=e}setSize(e,t){let i=this.uniforms;i.texelSize.value.set(1/e,1/t),i.resolution.value.set(e,t)}},Tb=new r7,Tw=null,TS=class{constructor(e="Pass",t=new n_,i=Tb){this.name=e,this.renderer=null,this.scene=t,this.camera=i,this.screen=null,this.rtt=!0,this.needsSwap=!0,this.needsDepthTexture=!1,this.enabled=!0}get renderToScreen(){return!this.rtt}set renderToScreen(e){if(this.rtt===e){let t=this.getFullscreenMaterial();null!==t&&(t.needsUpdate=!0),this.rtt=!e}}setRenderer(e){this.renderer=e}isEnabled(){return this.enabled}setEnabled(e){this.enabled=e}get fullscreenMaterial(){return null!==this.screen?this.screen.material:null}set fullscreenMaterial(e){let t=this.screen;
5664null!==t?t.material=e:((t=new r$(function(){if(null===Tw){let e=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),t=new Float32Array([0,0,2,0,0,2]);void 0!==(Tw=new rU).setAttribute?(Tw.setAttribute("position",new rT(e,3)),Tw.setAttribute("uv",new rT(t,2))):(Tw.addAttribute("position",new rT(e,3)),Tw.addAttribute("uv",new rT(t,2)))}return Tw}(),e)).frustumCulled=!1,null===this.scene&&(this.scene=new n_),this.scene.add(t),this.screen=t)}getFullscreenMaterial(){return this.fullscreenMaterial}setFullscreenMaterial(e){this.fullscreenMaterial=e}getDepthTexture(){return null}setDepthTexture(e,t=3200){}render(e,t,i,r,a){throw Error("Render method not implemented!")}setSize(e,t){}initialize(e,t,i){}dispose(){for(let e of Object.keys(this)){let t=this[e];if(null!==t&&"object"==typeof t&&"function"==typeof t.dispose){if(t instanceof n_||t===this.renderer)continue;this[e].dispose()}}}},T_=class extends TS{constructor(e,t=!0){super("CopyPass"),this.fullscreenMaterial=new To,this.needsSwap=!1,this.renderTarget=e,void 0===e&&(this.renderTarget=new im(1,1,{minFilter:1006,magFilter:1006,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="CopyPass.Target"),this.autoResize=t}get resize(){return this.autoResize}set resize(e){this.autoResize=e}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}setAutoResizeEnabled(e){this.autoResize=e}render(e,t,i,r,a){this.fullscreenMaterial.inputBuffer=t.texture,e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){this.autoResize&&this.renderTarget.setSize(e,t)}initialize(e,t,i){void 0!==i&&(this.renderTarget.texture.type=i,1009!==i?this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1":3001===e.outputEncoding&&(this.renderTarget.texture.encoding=3001))}},TA=class extends TS{constructor(){super("ClearMaskPass",null,null),this.needsSwap=!1}render(e,t,i,r,a){let o=e.state.buffers.stencil;o.setLocked(!1),o.setTest(!1)}},TM=new ia,TE=class extends TS{constructor(e=!0,t=!0,i=!1){super("ClearPass",null,null),this.needsSwap=!1,this.color=e,this.depth=t,this.stencil=i,this.overrideClearColor=null,this.overrideClearAlpha=-1}setClearFlags(e,t,i){this.color=e,this.depth=t,this.stencil=i}getOverrideClearColor(){return this.overrideClearColor}setOverrideClearColor(e){this.overrideClearColor=e}getOverrideClearAlpha(){return this.overrideClearAlpha}setOverrideClearAlpha(e){this.overrideClearAlpha=e}render(e,t,i,r,a){let o=this.overrideClearColor,h=this.overrideClearAlpha,c=e.getClearAlpha(),d=null!==o,u=h>=0;d?(TM.copy(e.getClearColor(TM)),e.setClearColor(o,u?h:c)):u&&e.setClearAlpha(h),e.setRenderTarget(this.renderToScreen?null:t),e.clear(this.color,this.depth,this.stencil),d?e.setClearColor(TM,c):u&&e.setClearAlpha(c)}},TC=class extends tF{constructor(e,t=-1,i=-1,r=1){super(),this.resizable=e,this.base=new tJ(1,1),this.preferred=new tJ(t,i),this.target=this.preferred,this.s=r}get width(){let{base:e,preferred:t,scale:i}=this;return -1!==t.width?t.width:-1!==t.height?Math.round(t.height*(e.width/Math.max(e.height,1))):Math.round(e.width*i)}set width(e){this.preferredWidth=e}get height(){let{base:e,preferred:t,scale:i}=this;return -1!==t.height?t.height:-1!==t.width?Math.round(t.width/Math.max(e.width/Math.max(e.height,1),1)):Math.round(e.height*i)}set height(e){this.preferredHeight=e}getWidth(){return this.width}getHeight(){return this.height}get scale(){return this.s}set scale(e){this.s!==e&&(this.s=e,this.preferred.setScalar(-1),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}getScale(){return this.scale}setScale(e){this.scale=e}get baseWidth(){return this.base.width}set baseWidth(e){this.base.width!==e&&(this.base.width=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}getBaseWidth(){return this.base.width}setBaseWidth(e){this.base.width!==e&&(this.base.width=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}get baseHeight(){return this.base.height}set baseHeight(e){this.base.height!==e&&(this.base.height=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}getBaseHeight(){return this.baseHeight}setBaseHeight(e){this.baseHeight=e}setBaseSize(e,t){(this.base.width!==e||this.base.height!==t)&&(this.base.set(e,t),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}get preferredWidth(){return this.preferred.width}set preferredWidth(e){this.preferred.width!==e&&(this.preferred.width=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}getPreferredWidth(){return this.preferredWidth}setPreferredWidth(e){this.preferredWidth=e}get preferredHeight(){return this.preferred.height}set preferredHeight(e){this.preferred.height!==e&&(this.preferred.height=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}getPreferredHeight(){return this.preferredHeight}setPreferredHeight(e){this.preferredHeight=e}setPreferredSize(e,t){(this.preferred.width!==e||this.preferred.height!==t)&&(this.preferred.set(e,t),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height))}copy(e){this.base.set(e.getBaseWidth(),e.getBaseHeight()),this.preferred.set(e.getPreferredWidth(),e.getPreferredHeight()),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.base.width,this.base.height)}static get AUTO_SIZE(){return -1}},TT=!1,TP=class{constructor(e=null){this.originalMaterials=new Map,this.material=null,this.materials=null,this.materialsBackSide=null,this.materialsDoubleSide=null,this.materialsFlatShaded=null,this.materialsFlatShadedBackSide=null,this.materialsFlatShadedDoubleSide=null,this.setMaterial(e),this.meshCount=0,this.replaceMaterial=e=>{if(e.isMesh){let t;if(e.material.flatShading)switch(e.material.side){case 2:t=this.materialsFlatShadedDoubleSide;break;case 1:t=this.materialsFlatShadedBackSide;break;default:t=this.materialsFlatShaded}else switch(e.material.side){case 2:t=this.materialsDoubleSide;break;case 1:t=this.materialsBackSide;break;default:t=this.materials}this.originalMaterials.set(e,e.material),e.isSkinnedMesh?e.material=t[2]:e.isInstancedMesh?e.material=t[1]:e.material=t[0],++this.meshCount}}}setMaterial(e){if(this.disposeMaterials(),this.material=e,null!==e){let t=this.materials=[e.clone(),e.clone(),e.clone()];for(let i of t)i.uniforms=Object.assign({},e.uniforms),i.side=0;t[2].skinning=!0,this.materialsBackSide=t.map(t=>{let i=t.clone();return i.uniforms=Object.assign({},e.uniforms),i.side=1,i}),this.materialsDoubleSide=t.map(t=>{let i=t.clone();return i.uniforms=Object.assign({},e.uniforms),i.side=2,i}),this.materialsFlatShaded=t.map(t=>{let i=t.clone();return i.uniforms=Object.assign({},e.uniforms),i.flatShading=!0,i}),this.materialsFlatShadedBackSide=t.map(t=>{let i=t.clone();return i.uniforms=Object.assign({},e.uniforms),i.flatShading=!0,i.side=1,i}),this.materialsFlatShadedDoubleSide=t.map(t=>{let i=t.clone();return i.uniforms=Object.assign({},e.uniforms),i.flatShading=!0,i.side=2,i})}}render(e,t,i){let r=e.shadowMap.enabled;if(e.shadowMap.enabled=!1,TT){let r=this.originalMaterials;for(let a of(this.meshCount=0,t.traverse(this.replaceMaterial),e.render(t,i),r))a[0].material=a[1];this.meshCount!==r.size&&r.clear()}else{let r=t.overrideMaterial;t.overrideMaterial=this.material,e.render(t,i),t.overrideMaterial=r}e.shadowMap.enabled=r}disposeMaterials(){if(null!==this.material)for(let e of this.materials.concat(this.materialsBackSide).concat(this.materialsDoubleSide).concat(this.materialsFlatShaded).concat(this.materialsFlatShadedBackSide).concat(this.materialsFlatShadedDoubleSide))e.dispose()}dispose(){this.originalMaterials.clear(),this.disposeMaterials()}static get workaroundEnabled(){return TT}static set workaroundEnabled(e){TT=e}},TD=class extends TS{constructor(e,t,i=null){super("RenderPass",e,t),this.needsSwap=!1,this.clearPass=new TE,this.overrideMaterialManager=null===i?null:new TP(i),this.ignoreBackgroun
vendor: 5,068 bytes, line 5664
5664d=!1,this.skipShadowMapUpdate=!1,this.selection=null}get renderToScreen(){return super.renderToScreen}set renderToScreen(e){super.renderToScreen=e,this.clearPass.renderToScreen=e}get overrideMaterial(){let e=this.overrideMaterialManager;return null!==e?e.material:null}set overrideMaterial(e){let t=this.overrideMaterialManager;null!==e?null!==t?t.setMaterial(e):this.overrideMaterialManager=new TP(e):null!==t&&(t.dispose(),this.overrideMaterialManager=null)}getOverrideMaterial(){return this.overrideMaterial}setOverrideMaterial(e){this.overrideMaterial=e}get clear(){return this.clearPass.enabled}set clear(e){this.clearPass.enabled=e}getSelection(){return this.selection}setSelection(e){this.selection=e}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(e){this.ignoreBackground=e}isShadowMapDisabled(){return this.skipShadowMapUpdate}setShadowMapDisabled(e){this.skipShadowMapUpdate=e}getClearPass(){return this.clearPass}render(e,t,i,r,a){let o=this.scene,h=this.camera,c=this.selection,d=h.layers.mask,u=o.background,p=e.shadowMap.autoUpdate,f=this.renderToScreen?null:t;null!==c&&h.layers.set(c.getLayer()),this.skipShadowMapUpdate&&(e.shadowMap.autoUpdate=!1),(this.ignoreBackground||null!==this.clearPass.overrideClearColor)&&(o.background=null),this.clearPass.enabled&&this.clearPass.render(e,t),e.setRenderTarget(f),null!==this.overrideMaterialManager?this.overrideMaterialManager.render(e,o,h):e.render(o,h),h.layers.mask=d,o.background=u,e.shadowMap.autoUpdate=p}},TO=class extends TS{constructor(e,t,{resolutionScale:i=1,width:r=TC.AUTO_SIZE,height:a=TC.AUTO_SIZE,renderTarget:o}={}){super("DepthPass"),this.needsSwap=!1,this.renderPass=new TD(e,t,new na({depthPacking:3201}));let h=this.renderPass;h.skipShadowMapUpdate=!0,h.ignoreBackground=!0;let c=h.getClearPass();c.overrideClearColor=new ia(16777215),c.overrideClearAlpha=1,this.renderTarget=o,void 0===this.renderTarget&&(this.renderTarget=new im(1,1,{minFilter:1003,magFilter:1003,stencilBuffer:!1}),this.renderTarget.texture.name="DepthPass.Target");let d=this.resolution=new TC(this,r,a,i);d.addEventListener("change",e=>this.setSize(d.baseWidth,d.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,i,r,a){let o=this.renderToScreen?null:this.renderTarget;this.renderPass.render(e,o)}setSize(e,t){let i=this.resolution;i.setBaseSize(e,t),this.renderTarget.setSize(i.width,i.height)}};new Float32Array([255/256/16777216,255/256/65536,255/256/256,255/256]);var TI={SKIP:0,ADD:1,ALPHA:2,AVERAGE:3,COLOR_BURN:4,COLOR_DODGE:5,DARKEN:6,DIFFERENCE:7,EXCLUSION:8,LIGHTEN:9,MULTIPLY:10,DIVIDE:11,NEGATION:12,NORMAL:13,OVERLAY:14,REFLECT:15,SCREEN:16,SOFT_LIGHT:17,SUBTRACT:18},TR=new Map([[TI.SKIP,null],[TI.ADD,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return min(x+y,1.0)*opacity+x*(1.0-opacity);}"],[TI.ALPHA,"vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return y*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){float a=min(y.a,opacity);return vec4(blend(x.rgb,y.rgb,a),max(x.a,a));}"],[TI.AVERAGE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(x+y)*0.5*opacity+x*(1.0-opacity);}"],[TI.COLOR_BURN,"float blend(const in float x,const in float y){return(y==0.0)?y:max(1.0-(1.0-x)/y,0.0);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}"],[TI.COLOR_DODGE,"float blend(const in float x,const in float y){return(y==1.0)?y:min(x/(1.0-y),1.0);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}"],[TI.DARKEN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return min(x,y)*opacity+x*(1.0-opacity);}"],[TI.DIFFERENCE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return abs(x-y)*opacity+x*(1.0-opacity);}"],[TI.EXCLUSION,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(x+y-2.0*x*y)*opacity+x*(1.0-opacity);}"],[TI.LIGHTEN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return max(x,y)*opacity+x*(1.0-opacity);}"],[TI.MULTIPLY,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return x*y*opacity+x*(1.0-opacity);}"],[TI.DIVIDE,"float blend(const in float x,const in float y){return(y>0.0)?min(x/y,1.0):1.0;}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}"],[TI.NEGATION,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(1.0-abs(1.0-x-y))*opacity+x*(1.0-opacity);}"],[TI.NORMAL,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return y*
5664opacity+x*(1.0-opacity);}"],[TI.OVERLAY,"float blend(const in float x,const in float y){return(x<0.5)?(2.0*x*y):(1.0-2.0*(1.0-x)*(1.0-y));}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}"],[TI.REFLECT,"float blend(const in float x,const in float y){return(y==1.0)?y:min(x*x/(1.0-y),1.0);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}"],[TI.SCREEN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(1.0-(1.0-x)*(1.0-y))*opacity+x*(1.0-opacity);}"],[TI.SOFT_LIGHT,"float blend(const in float x,const in float y){return(y<0.5)?(2.0*x*y+x*x*(1.0-2.0*y)):(sqrt(x)*(2.0*y-1.0)+2.0*x*(1.0-y));}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}"],[TI.SUBTRACT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return max(x+y-1.0,0.0)*opacity+x*(1.0-opacity);}"]]),TL=class extends tF{constructor(e,t=1){super(),this.f=e,this.opacity=new lR(t)}getOpacity(){return this.opacity.value}setOpacity(e){this.opacity.value=e}get blendFunction(){return this.f}set blendFunction(e){this.f=e,this.dispatchEvent({type:"change"})}getBlendFunction(){return this.blendFunction}setBlendFunction(e){this.blendFunction=e}getShaderCode(){return TR.get(this.blendFunction)}},TB={NONE:0,DEPTH:1,CONVOLUTION:2},Tz=class extends tF{constructor(e,t,{attributes:i=TB.NONE,blendFunction:r=TI.SCREEN,defines:a=new Map,uniforms:o=new Map,extensions:h=null,vertexShader:c=null}={}){super(),this.name=e,this.renderer=null,this.attributes=i,this.fragmentShader=t,this.vertexShader=c,this.defines=a,this.uniforms=o,this.extensions=h,this.blendMode=new TL(r),this.blendMode.addEventListener("change",e=>this.setChanged())}getName(){return this.name}setRenderer(e){this.renderer=e}getDefines(){return this.defines}getUniforms(){return this.uniforms}getExtensions(){return this.extensions}getBlendMode(){return this.blendMode}getAttributes(){return this.attributes}setAttributes(e){this.attributes=e,this.setChanged()}getFragmentShader(){return this.fragmentShader}setFragmentShader(e){this.fragmentShader=e,this.setChanged()}getVertexShader(){return this.vertexShader}setVertexShader(e){this.vertexShader=e,this.setChanged()}setChanged(){this.dispatchEvent({type:"change"})}setDepthTexture(e,t=3200){}update(e,t,i){}setSize(e,t){}initialize(e,t,i){}dispose(){for(let e of Object.keys(this)){let t=this[e];if(null!==t&&"object"==typeof t&&"function"==typeof t.dispose){if(t instanceof n_||t===this.renderer)continue;this[e].dispose()}}}};function TF(e,t,i){for(let r of t){let t="$1"+e+r.charAt(0).toUpperCase()+r.slice(1),a=RegExp("([^\\.])(\\b"+r+"\\b)","g");for(let e of i.entries())null!==e[1]&&i.set(e[0],e[1].replace(a,t))}}var TN=class extends TS{constructor(e,...t){super("EffectPass"),this.fullscreenMaterial=new Tp(null,null,null,e),this.effects=t.sort((e,t)=>t.attributes-e.attributes),this.skipRendering=!1,this.uniformCount=0,this.varyingCount=0,this.minTime=1,this.maxTime=Number.POSITIVE_INFINITY}get encodeOutput(){return this.fullscreenMaterial.encodeOutput}set encodeOutput(e){this.fullscreenMaterial.encodeOutput=e}get dithering(){return this.fullscreenMaterial.dithering}set dithering(e){let t=this.fullscreenMaterial;t.dithering=e,t.needsUpdate=!0}verifyResources(){let e=this.renderer.capabilities,t=Math.min(e.maxFragmentUniforms,e.maxVertexUniforms);this.uniformCount>t&&console.warn("The current rendering context doesn't support more than "+t+" uniforms, but "+this.uniformCount+" were defined"),t=e.maxVaryings,this.varyingCount>t&&console.warn("The current rendering context doesn't support more than "+t+" varyings, but "+this.varyingCount+" were defined")}updateMaterial(){let e=Tp.Section,t=new Map([[e.FRAGMENT_HEAD,""],[e.FRAGMENT_MAIN_UV,""],[e.FRAGMENT_MAIN_IMAGE,""],[e.VERTEX_HEAD,""],[e.VERTEX_MAIN_SUPPORT,""]]),i=new Map,r=new Map,a=new Map,o=new Set,h=0,c=0,d=0,u=!1,p=!1;for(let e of this.effects)if(e.blendMode.blendFunction===TI.SKIP)d|=e.getAttributes()&TB.DEPTH;else if((d&e.getAttributes()&TB.CONVOLUTION)!=0)console.error("Convolution effects cannot be merged",e);else{d|=e.getAttributes();let f=function(e,t,i,r,a,o,h){let c=new Map([["fragment",t.getFragmentShader()],["vertex",t.getVertexShader()]]),d=void 0!==c.get("fragment")&&/mainImage/.test(c.get("fragment")),u=void 0!==c.get("fragment")&&/mainUv/.test(c.get("fragment")),p=[],f=[],m=!1,g=!1;if(void 0===c.get("fragment"))console.error("Missing fragment shader",t);else if(u&&(h&TB.CONVOLUTION)!=0)console.error("Effects that transform UV coordinates are incompatible with convolution effects",t);else if(d||u){let v=/(?:\w+\s+(\w+)\([\w\s,]*\)\s*{[^}]+}
5664)/g,y=Tp.Section;if(u){let t=`	${e}MainUv(UV);
5665`;i.set(y.FRAGMENT_MAIN_UV,i.get(y.FRAGMENT_MAIN_UV)+t),m=!0}if(null!==c.get("vertex")&&/mainSupport/.test(c.get("vertex"))){let t=`	${e}MainSupport(`;t+=/mainSupport *\([\w\s]*?uv\s*?\)/.test(c.get("vertex"))?`vUv);
5666`:`);
5667`,i.set(y.VERTEX_MAIN_SUPPORT,i.get(y.VERTEX_MAIN_SUPPORT)+t),p=p.concat([...c.get("vertex").matchAll(/(?:varying\s+\w+\s+(\w*))/g)].map(e=>e[1])),f=f.concat(p).concat([...c.get("vertex").matchAll(v)].map(e=>e[1]))}f=(f=(f=f.concat([...c.get("fragment").matchAll(v)].map(e=>e[1]))).concat([...t.defines.keys()].map(e=>e.replace(/\([\w\s,]*\)/g,"")))).concat([...t.uniforms.keys()]),t.uniforms.forEach((t,i)=>o.set(e+i.charAt(0).toUpperCase()+i.slice(1),t)),t.defines.forEach((t,i)=>a.set(e+i.charAt(0).toUpperCase()+i.slice(1),t)),TF(e,f,a),TF(e,f,c);let x=t.blendMode;if(r.set(x.blendFunction,x),d){let t=`${e}MainImage(color0, UV, `;(h&TB.DEPTH)!=0&&/MainImage *\([\w\s,]*?depth[\w\s,]*?\)/.test(c.get("fragment"))&&(t+="depth, ",g=!0),t+=`color1);
5668	`;let r=e+"BlendOpacity";o.set(r,x.opacity),t+=`color0 = blend${x.blendFunction}(color0, color1, ${r});
5669
5670	`,i.set(y.FRAGMENT_MAIN_IMAGE,i.get(y.FRAGMENT_MAIN_IMAGE)+t),t=`uniform float ${r};
5671
5672`,i.set(y.FRAGMENT_HEAD,i.get(y.FRAGMENT_HEAD)+t)}i.set(y.FRAGMENT_HEAD,i.get(y.FRAGMENT_HEAD)+c.get("fragment")+`
5673`),null!==c.get("vertex")&&i.set(y.VERTEX_HEAD,i.get(y.VERTEX_HEAD)+c.get("vertex")+`
5674`)}
5674else console.error("The fragment shader contains neither a mainImage nor a mainUv function",t);return{varyings:p,transformedUv:m,readDepth:g}}("e"+h++,e,t,i,r,a,d);if(c+=f.varyings.length,u=u||f.transformedUv,p=p||f.readDepth,null!==e.extensions)for(let t of e.extensions)o.add(t)}let f=/\bblend\b/g;for(let r of i.values()){let i=r.getShaderCode().replace(f,`blend${r.blendFunction}`);t.set(e.FRAGMENT_HEAD,t.get(e.FRAGMENT_HEAD)+i+`
5675`)}if((d&TB.DEPTH)!=0){if(p){let i=`float depth = readDepth(UV);
5676
5677	`;t.set(e.FRAGMENT_MAIN_IMAGE,i+t.get(e.FRAGMENT_MAIN_IMAGE))}this.needsDepthTexture=null===this.getDepthTexture()}else this.needsDepthTexture=!1;if(u){let i=`vec2 transformedUv = vUv;
5678`;t.set(e.FRAGMENT_MAIN_UV,i+t.get(e.FRAGMENT_MAIN_UV)),r.set("UV","transformedUv")}else r.set("UV","vUv");t.forEach((e,t,i)=>i.set(t,e.trim().replace(/^#/,`
5679#`))),this.uniformCount=a.size,this.varyingCount=c,this.skipRendering=0===h,this.needsSwap=!this.skipRendering,this.fullscreenMaterial.setShaderParts(t).setExtensions(o).setUniforms(a).setDefines(r)}recompile(){this.updateMaterial(),this.verifyResources()}getDepthTexture(){return this.fullscreenMaterial.depthBuffer}setDepthTexture(e,t=3200){for(let i of(this.fullscreenMaterial.depthBuffer=e,this.fullscreenMaterial.depthPacking=t,this.effects))i.setDepthTexture(e,t)}render(e,t,i,r,a){for(let i of this.effects)i.update(e,t,r);if(!this.skipRendering||this.renderToScreen){let a=this.fullscreenMaterial;a.inputBuffer=t.texture,a.time+=r,e.setRenderTarget(this.renderToScreen?null:i),e.render(this.scene,this.camera)}}setSize(e,t){for(let i of(this.fullscreenMaterial.setSize(e,t),this.effects))i.setSize(e,t)}initialize(e,t,i){for(let r of(this.renderer=e,this.effects))r.initialize(e,t,i),r.addEventListener("change",e=>this.handleEvent(e));this.updateMaterial(),this.verifyResources(),void 0!==i&&1009!==i&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}dispose(){for(let e of(super.dispose(),this.effects))e.dispose()}handleEvent(e){"change"===e.type&&this.recompile()}},TU=[new Float32Array([0,0]),new Float32Array([0,1,1]),new Float32Array([0,1,1,2]),new Float32Array([0,1,2,2,3]),new Float32Array([0,1,2,3,4,4,5]),new Float32Array([0,1,2,3,4,5,7,8,9,10])],Tk=class extends TS{constructor({resolutionScale:e=.5,width:t=TC.AUTO_SIZE,height:i=TC.AUTO_SIZE,kernelSize:r=TW.LARGE}={}){super("KawaseBlurPass"),this.renderTargetA=new im(1,1,{minFilter:1006,magFilter:1006,stencilBuffer:!1,depthBuffer:!1}),this.renderTargetA.texture.name="Blur.Target.A",this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name="Blur.Target.B";let a=this.resolution=new TC(this,t,i,e);a.addEventListener("change",e=>this.setSize(a.baseWidth,a.baseHeight)),this.blurMaterial=new Ta,this.ditheredBlurMaterial=new Ta,this.ditheredBlurMaterial.uniforms.scale=this.blurMaterial.uniforms.scale,this.ditheredBlurMaterial.dithering=!0,this.dithering=!1,this.kernelSize=r}getResolution(){return this.resolution}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get scale(){return this.blurMaterial.scale}set scale(e){this.blurMaterial.scale=e}getScale(){return this.blurMaterial.scale}setScale(e){this.blurMaterial.scale=e}getKernelSize(){return this.kernelSize}setKernelSize(e){this.kernelSize=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,i,r,a){let o=this.scene,h=this.camera,c=this.renderTargetA,d=this.renderTargetB,u=TU[this.kernelSize],p=this.blurMaterial,f=t,m,g;for(this.fullscreenMaterial=p,m=0,g=u.length-1;m<g;++m){let t=(1&m)==0?c:d;p.kernel=u[m],p.inputBuffer=f.texture,e.setRenderTarget(t),e.render(o,h),f=t}this.dithering&&(p=this.ditheredBlurMaterial,this.fullscreenMaterial=p),p.kernel=u[m],p.inputBuffer=f.texture,e.setRenderTarget(this.renderToScreen?null:i),e.render(o,h)}setSize(e,t){let i=this.resolution;i.setBaseSize(e,t);let r=i.width,a=i.height;this.renderTargetA.setSize(r,a),this.renderTargetB.setSize(r,a),this.blurMaterial.setSize(r,a),this.ditheredBlurMaterial.setSize(r,a)}initialize(e,t,i){void 0!==i&&(this.renderTargetA.texture.type=i,this.renderTargetB.texture.type=i,1009!==i?(this.blurMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1",this.ditheredBlurMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1"):3001===e.outputEncoding&&(this.renderTargetA.texture.encoding=3001,this.renderTargetB.texture.encoding=3001))}static get AUTO_SIZE(){return TC.AUTO_SIZE}},TV=class extends TS{constructor({width:e=TC.AUTO_SIZE,height:t=TC.AUTO_SIZE,renderTarget:i,luminanceRange:r,colorOutput:a}={}){super("LuminancePass"),this.fullscreenMaterial=new Tm(a,r),this.needsSwap=!1,this.renderTarget=i,void 0===this.renderTarget&&(this.renderTarget=new im(1,1,{minFilter:1006,magFilter:1006,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="LuminancePass.Target",this.renderTarget.texture.generateMipmaps=!1);let o=this.resolution=new TC(this,e,t);o.addEventListener("change",e=>this.setSize(o.baseWidth,o.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}render(e,t,i,r,a){this.fullscreenMaterial.inputBuffer=t.texture,e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){let i=this.resolution;i.setBaseSize(e,t),this.renderTarget.setSize(i.width,i.height)}initialize(e,t,i){void 0!==i&&1009!==i&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}},Tj=class extends TS{constructor(e,t){super("MaskPass",e,t),this.needsSwap=!1,this.clearPass=new TE(!1,!1,!0),this.inverse=!1}get inverted(){return this.inverse}set inverted(e){this.inverse=e}get clear(){return this.clearPass.enabled}set clear(e){this.clearPass.enabled=e}getClearPass(){return this.clearPass}isInverted(){return this.inverted}setInverted(e){this.inverted=e}render(e,t,i,r,a){let o=e.getContext(),h=e.state.buffers,c=this.scene,d=this.camera,u=this.clearPass,p=this.inverted?0:1;h.color.setMask(!1),h.depth.setMask(!1),h.color.setLocked(!0),h.depth.setLocked(!0),h.stencil.setTest(!0),h.stencil.setOp(o.REPLACE,o.REPLACE,o.REPLACE),h.stencil.setFunc(o.ALWAYS,p,4294967295),h.stencil.setClear(1-p),h.stencil.setLocked(!0),this.clearPass.enabled&&(this.renderToScreen?u.render(e,null):(u.render(e,t),u.render(e,i))),this.renderToScreen?e.setRenderTarget(null):(e.setRenderTarget(t),e.render(c,d),e.setRenderTarget(i)),e.render(c,d),h.color.setLocked(!1),h.depth.setLocked(!1),h.stencil.setLocked(!1),h.stencil.setFunc(o.EQUAL,1,4294967295),h.stencil.setOp(o.KEEP,o.KEEP,o.KEEP),h.stencil.setLocked(!0)}},TG=class extends TS{constructor(e,t="inputBuffer"){super("ShaderPass"),this.fullscreenMaterial=e,this.inputBufferUniform=null,this.setInput(t)}setInput(e){if(this.inputBufferUniform=null,null!==this.fullscreenMaterial){let t=this.fullscreenMaterial.uniforms;void 0!==t&&void 0!==t[e]&&(this.inputBufferUniform=t[e])}}render(e,t,i,r,a){null!==this.inputBufferUniform&&null!==t&&(this.inputBufferUniform.value=t.texture),e.setRenderTarget(this.renderToScreen?null:i),e.render(this.scene,this.camera)}initialize(e,t,i){void 0!==i&&1009!==i&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}},TH=class{constructor(){this.previousTime=0,this.currentTime=0,this.delta=0,this.fixedDelta=1e3/60,this.elapsed=0,this.timescale=1,this.fixedDeltaEnabled=!1,this.autoReset=!1}setFixedDeltaEnabled(e){return this.fixedDeltaEnabled=e,this}isAutoResetEnabled(e){return this.autoReset}setAutoResetEnabled(e){return"u">typeof document&&void 0!==document.hidden&&(e?document.addEventListener("visibilitychange",this):document.removeEventListener("visibilitychange",this),this.autoReset=e),this}getDelta(){return .001*this.delta}getFixedDelta(){return .001*this.fixedDelta}setFixedDelta(e){return this.fixedDelta=1e3*e,this}getElapsed(){return .001*this.elapsed}getTimescale(){return this.timescale}setTimescale(e){return this.timescale=e,this}update(e){return this.fixedDeltaEnabled?this.delta=this.fixedDelta:(this.previousTime=this.currentTime,this.currentTime=void 0!==e?e:performance.now(),this.delta=this.currentTime-this.previousTime),this.delta*=this.timescale,this.elapsed+=this.delta,this}reset(){return this.delta=0,this.elapsed=0,this.currentTime=performance.now(),this}handleEvent(e){document.hidden||(this.currentTime=performance.now())}dispose(){this.setAutoResetEnabled(!1)}},TW={MEDIUM:2,LARGE:3,HUGE:5},Tq=`#ifdef FRAMEBUFFER_PRECISION_HIGH
5680uniform mediump sampler2D map;
5681#else
5682uniform lowp sampler2D map;
5683#endif
5684uniform float intensity;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=clamp(texture2D(map,uv)*intensity,0.0,1.0);}`,TX=class extends Tz{constructor({blendFunction:e=TI.SCREEN,luminanceThreshold:t=.9,luminanceSmoothing:i=.025,resolutionScale:r=.5,intensity:a=1,width:o=TC.AUTO_SIZE,height:h=TC.AUTO_SIZE,kernelSize:c=TW.LARGE}={}){super("BloomEffect",Tq,{blendFunction:e,uniforms:new Map([["map",new lR(null)],["intensity",new lR(a)]])}),this.renderTarget=new im(1,1,{minFilter:1006,magFilter:1006,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="Bloom.Target",this.renderTarget.texture.generateMipmaps=!1,this.uniforms.get("map").value=this.renderTarget.texture,this.luminancePass=new TV({renderTarget:this.renderTarget,colorOutput:!0}),this.luminanceMaterial.threshold=t,this.luminanceMaterial.smoothingFactor=i,this.blurPass=new Tk({resolutionScale:r,width:o,height:h,kernelSize:c});let d=this.blurPass.getResolution();d.addEventListener("change",e=>this.setSize(d.baseWidth,d.baseHeight))}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}get resolution(){return this.blurPass.resolution}getResolution(){return this.blurPass.resolution}getBlurPass(){return this.blurPass}getLuminancePass(){return this.luminancePass}get luminanceMaterial(){return this.luminancePass.fullscreenMaterial}getLuminanceMaterial(){return this.luminancePass.fullscreenMaterial}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get dithering(){return this.blurPass.dithering}set dithering(e){this.blurPass.dithering=e}get kernelSize(){return this.blurPass.kernelSize}set kernelSize(e){this.blurPass.kernelSize=e}get distinction(){return console.warn(this.name,"distinction was removed"),1}set distinction(e){console.warn(this.name,"distinction was removed")}get intensity(){return this.uniforms.get("intensity").value}set intensity(e){this.uniforms.get("intensity").value=e}getIntensity(){return this.intensity}setIntensity(e){this.intensity=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}update(e,t,i){let r=this.renderTarget;this.luminancePass.enabled?(this.luminancePass.render(e,t,r),this.blurPass.render(e,r,r)):this.blurPass.render(e,t,r)}setSize(e,t){let i=this.resolution;i.setBaseSize(e,t),this.renderTarget.setSize(i.width,i.height),this.luminancePass.resolution.copy(i)}initialize(e,t,i){this.blurPass.initialize(e,t,i),void 0!==i&&(this.renderTarget.texture.type=i,3001===e.outputEncoding&&(this.renderTarget.texture.encoding=3001))}},TY=class extends Tz{constructor({blendFunction:e=TI.NORMAL,brightness:t=0,contrast:i=0}={}){super("BrightnessContrastEffect","uniform float brightness;uniform float contrast;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=inputColor.rgb+vec3(brightness-0.5);if(contrast>0.0){color/=vec3(1.0-contrast);}else{color*=vec3(1.0+contrast);}outputColor=vec4(min(color+vec3(0.5),1.0),inputColor.a);}",{blendFunction:e,uniforms:new Map([["brightness",new lR(t)],["contrast",new lR(i)]])})}get brightness(){return this.uniforms.get("brightness").value}set brightness(e){this.uniforms.get("brightness").value=e}getBrightness(e){return this.brightness}setBrightness(e){this.brightness=e}get contrast(){return this.uniforms.get("contrast").value}set contrast(e){this.uniforms.get("contrast").value=e}getContrast(e){return this.contrast}setContrast(e){this.contrast=e}},TQ=class extends Tz{constructor(e=TI.NORMAL){super("ColorAverageEffe
5684ct","void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(vec3(average(inputColor.rgb)),inputColor.a);}",{blendFunction:e})}},TZ=class extends Tz{constructor({blendFunction:e=TI.NORMAL,offset:t=new tJ(.001,5e-4)}={}){super("ChromaticAberrationEffect","varying vec2 vUvR;varying vec2 vUvB;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 ra=texture2D(inputBuffer,vUvR).ra;vec2 ba=texture2D(inputBuffer,vUvB).ba;outputColor=vec4(ra.x,inputColor.g,ba.x,max(max(ra.y,ba.y),inputColor.a));}",{vertexShader:"uniform vec2 offset;varying vec2 vUvR;varying vec2 vUvB;void mainSupport(const in vec2 uv){vec2 shift=offset*vec2(1.0,aspect);vUvR=uv+shift;vUvB=uv-shift;}",blendFunction:e,attributes:TB.CONVOLUTION,uniforms:new Map([["offset",new lR(t)]])})}get offset(){return this.uniforms.get("offset").value}set offset(e){this.uniforms.get("offset").value=e}getOffset(){return this.offset}setOffset(e){this.offset=e}},TK=`#ifdef FRAMEBUFFER_PRECISION_HIGH
5685uniform mediump sampler2D nearColorBuffer;uniform mediump sampler2D farColorBuffer;
5686#else
5687uniform lowp sampler2D nearColorBuffer;uniform lowp sampler2D farColorBuffer;
5688#endif
5689uniform lowp sampler2D nearCoCBuffer;uniform float scale;void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){vec4 colorNear=texture2D(nearColorBuffer,uv);vec4 colorFar=texture2D(farColorBuffer,uv);float CoCNear=texture2D(nearCoCBuffer,uv).r;CoCNear=min(CoCNear*scale,1.0);vec4 result=inputColor*(1.0-colorFar.a)+colorFar;result=mix(result,colorNear,CoCNear);outputColor=result;}`,TJ=class extends Tz{constructor(e,{blendFunction:t=TI.NORMAL,worldFocusDistance:i,worldFocusRange:r,focusDistance:a=0,focalLength:o=.1,focusRange:h=o,bokehScale:c=1,width:d=TC.AUTO_SIZE,height:u=TC.AUTO_SIZE}={}){super("DepthOfFieldEffect",TK,{blendFunction:t,attributes:TB.DEPTH,uniforms:new Map([["nearColorBuffer",new lR(null)],["farColorBuffer",new lR(null)],["nearCoCBuffer",new lR(null)],["scale",new lR(1)]])}),this.camera=e,this.renderTarget=new im(1,1,{minFilter:1006,magFilter:1006,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="DoF.Intermediate",this.renderTarget.texture.generateMipmaps=!1,this.renderTargetMasked=this.renderTarget.clone(),this.renderTargetMasked.texture.name="DoF.Masked.Far",this.renderTargetNear=this.renderTarget.clone(),this.renderTargetNear.texture.name="DoF.Bokeh.Near",this.uniforms.get("nearColorBuffer").value=this.renderTargetNear.texture,this.renderTargetFar=this.renderTarget.clone(),this.renderTargetFar.texture.name="DoF.Bokeh.Far",this.uniforms.get("farColorBuffer").value=this.renderTargetFar.texture,this.renderTargetCoC=this.renderTarget.clone(),this.renderTargetCoC.texture.name="DoF.CoC",this.renderTargetCoCBlurred=this.renderTargetCoC.clone(),this.renderTargetCoCBlurred.texture.name="DoF.CoC.Blurred",this.uniforms.get("nearCoCBuffer").value=this.renderTargetCoCBlurred.texture,this.cocPass=new TG(new Tr(e));let p=this.cocMaterial;p.focusDistance=a,p.focusRange=h,void 0!==i&&(p.worldFocusDistance=i),void 0!==r&&(p.worldFocusRange=r),this.blurPass=new Tk({kernelSize:TW.MEDIUM,width:d,height:u});let f=this.blurPass.getResolution();f.addEventListener("change",e=>this.setSize(f.getBaseWidth(),f.getBaseHeight())),this.maskPass=new TG(new Tv(this.renderTargetCoC.texture));let m=this.maskPass.fullscreenMaterial;m.maskFunction=1,m.colorChannel=1,this.bokehNearBasePass=new TG(new Te(!1,!0)),this.bokehNearBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehNearFillPass=new TG(new Te(!0,!0)),this.bokehNearFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehFarBasePass=new TG(new Te(!1,!1)),this.bokehFarBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.bokehFarFillPass=new TG(new Te(!0,!1)),this.bokehFarFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.target=null,this.bokehScale=c}get cocTexture(){return this.renderTargetCoC.texture}get cocMaterial(){return this.cocPass.fullscreenMaterial}get circleOfConfusionMaterial(){return this.cocMaterial}getCircleOfConfusionMaterial(){return this.circleOfConfusionMaterial}getBlurPass(){return this.blurPass}get resolution(){return this.blurPass.getResolution()}getResolution(){return this.blurPass.getResolution()}get bokehScale(){return this.uniforms.get("scale").value}set bokehScale(e){for(let t of[this.bokehNearBasePass,this.bokehNearFillPass,this.bokehFarBasePass,this.bokehFarFillPass])t.fullscreenMaterial.setScale(e);this.maskPass.fullscreenMaterial.setStrength(e),this.uniforms.get("scale").value=e}getBokehScale(){return this.bokehScale}setBokehScale(e){this.bokehScale=e}getTarget(){return this.target}setTarget(e){this.target=e}calculateFocusDistance(e){let t=this.camera;return Tt(-t.position.distanceTo(e),t.near,t.far)}
5689setDepthTexture(e,t=3200){this.circleOfConfusionMaterial.depthBuffer=e,this.circleOfConfusionMaterial.depthPacking=t}update(e,t,i){let r=this.renderTarget,a=this.renderTargetCoC,o=this.renderTargetCoCBlurred,h=this.renderTargetMasked;if(null!==this.target){let e=this.calculateFocusDistance(this.target);this.circleOfConfusionMaterial.focusDistance=e}this.cocPass.render(e,null,a),this.blurPass.render(e,a,o),this.maskPass.render(e,t,h),this.bokehFarBasePass.render(e,h,r),this.bokehFarFillPass.render(e,r,this.renderTargetFar),this.bokehNearBasePass.render(e,t,r),this.bokehNearFillPass.render(e,r,this.renderTargetNear)}setSize(e,t){let i=this.resolution;i.setBaseSize(e,t);let r=i.width,a=i.height,o=[this.cocPass,this.blurPass,this.maskPass,this.bokehNearBasePass,this.bokehNearFillPass,this.bokehFarBasePass,this.bokehFarFillPass];o.push(this.renderTargetCoC,this.renderTargetMasked),o.forEach(i=>i.setSize(e,t)),(o=[this.renderTarget,this.renderTargetNear,this.renderTargetFar,this.renderTargetCoCBlurred]).forEach(e=>e.setSize(r,a)),[this.bokehNearBasePass,this.bokehNearFillPass,this.bokehFarBasePass,this.bokehFarFillPass].forEach(e=>e.fullscreenMaterial.setSize(r,a))}initialize(e,t,i){[this.cocPass,this.maskPass,this.bokehNearBasePass,this.bokehNearFillPass,this.bokehFarBasePass,this.bokehFarFillPass].forEach(r=>r.initialize(e,t,i)),this.blurPass.initialize(e,t,1009),void 0!==i&&(this.renderTarget.texture.type=i,this.renderTargetNear.texture.type=i,this.renderTargetFar.texture.type=i,this.renderTargetMasked.texture.type=i,3001===e.outputEncoding&&(this.renderTarget.texture.encoding=3001,this.renderTargetNear.texture.encoding=3001,this.renderTargetFar.texture.encoding=3001,this.renderTargetMasked.texture.encoding=3001))}};new ib,new iZ;var T$=class extends Tz{constructor({blendFunction:e=TI.NORMAL,hue:t=0,saturation:i=0}={}){super("HueSaturationEffect","uniform vec3 hue;uniform float saturation;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(dot(inputColor.rgb,hue.xyz),dot(inputColor.rgb,hue.zxy),dot(inputColor.rgb,hue.yzx));float average=(color.r+color.g+color.b)/3.0;vec3 diff=average-color;if(saturation>0.0){color+=diff*(1.0-1.0/(1.001-saturation));}else{color+=diff*-saturation;}outputColor=vec4(min(color,1.0),inputColor.a);}",{blendFunction:e,uniforms:new Map([["hue",new lR(new ib)],["saturation",new lR(i)]])}),this.hue=t}get saturation(){return this.uniforms.get("saturation").value}set saturation(e){this.uniforms.get("saturation").value=e}getSaturation(){return this.saturation}setSaturation(e){this.saturation=e}get hue(){return Math.acos((3*this.uniforms.get("hue").value.x-1)/2)}set hue(e){let t=Math.sin(e),i=Math.cos(e);this.uniforms.get("hue").value.set((2*i+1)/3,(-Math.sqrt(3)*t-i+1)/3,(Math.sqrt(3)*t-i+1)/3)}getHue(){return this.hue}setHue(e){this.hue=e}};new ia;var T0=`void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 noise=vec3(rand(uv*time));
5690#ifdef PREMULTIPLY
5691outputColor=vec4(min(inputColor.rgb*noise,vec3(1.0)),inputColor.a);
5692#else
5693outputColor=vec4(noise,inputColor.a);
5694#endif
5695}`,T1=class extends Tz{constructor({blendFunction:e=TI.SCREEN,premultiply:t=!1}={}){super("NoiseEffect",T0,{blendFunction:e}),this.premultiply=t}get premultiply(){return this.defines.has("PREMULTIPLY")}set premultiply(e){this.premultiply!==e&&(e?this.defines.set("PREMULTIPLY","1"):this.defines.delete("PREMULTIPLY"),this.setChanged())}isPremultiplied(){return this.premultiply}setPremultiplied(e){this.premultiply=e}},T2=class extends Tz{constructor(e=30){super("PixelationEffect","uniform bool active;uniform vec2 d;void mainUv(inout vec2 uv){if(active){uv=vec2(d.x*(floor(uv.x/d.x)+0.5),d.y*(floor(uv.y/d.y)+0.5));}}",{uniforms:new Map([["active",new lR(!1)],["d",new lR(new tJ)]])}),this.resolution=new tJ,this.d=0,this.granularity=e}get granularity(){return this.d}set granularity(e){let t=Math.floor(e);t%2>0&&(t+=1),this.d=t,this.uniforms.get("active").value=t>0,this.setSize(this.resolution.width,this.resolution.height)}getGranularity(){return this.granularity}setGranularity(e){this.granularity=e}setSize(e,t){this.resolution.set(e,t),this.uniforms.get("d").value.setScalar(this.d).divide(this.resolution)}};new ib,new ib;var T3="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAAeElEQVRYR+2XSwqAMAxEJ168ePEqwRSKhIIiuHjJqiU0gWE+1CQdApcVAMUAuARaMGCX1MIL/Ow13++9lW2s3mW9MWvsnWc/2fvGygwPAN4E8QzAA4CXAB6AHjG4JTHYI1ey3pcx6FHnEfhLDOIBKAmUBK6/ANUDTlROXAHd9EC1AAAAAElFTkSuQmCC",T4
vendor: 6,469 bytes, line 5695
5695="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAIwCAYAAAABNmBHAAAgAElEQVR4Xuy9CbhlV1ktOvbpq09DkiIkUBI6kxASIH0DlAQiIK1wRfSJTx+i4JX7vKIigs8HXpXvqVcvrcC9agQ7IDTSSWgqCQQliDRBJKkkhDSkqVPNqVOnP+8b//rH3P+eZ+199tlznVTlvVrft7+1T7OaueZY42/m37QALKNk2wHg1pITlB17mC+Pp11W3X/LHyT32vhg48/5SOv+PnwpsHA70JoGlueB1iKApeqzvOzn44GatTB76Xzhd7suBR7+WWADgDEAwwCG/L54b/poDLrHuvvm70Z2Avhsc+PVcxscBU8F8C8ADg5+ipIjD/PlGwfgju8B924E5seARUfLsiNmqQW0IjL8+7L2NYD/7COBzfcCm+aB8SVgdAkYIRCXKyDax4EdAanL5PuNPllNvXDlAHwFgP8AcC2AhRIoDXbsYb48dl5WkVFTE3LGDcC9m4CZCWBuFFgeAZaGAYJQQCRqDHT+McJrVb8zwATUXH02MHYfMHEIGFsAxgjApQqACYQORjtd/B7Axt/z79sC0+cMPgjjlwPwVwHcA+DfAHzTxcVgWBroqMN8+cYBeM71wH0TwKExYHYUWCIAHYRLTlkCYgcIBcAgU/n3qy8GRu4HRgnAOWBkERhddPAJhGJDBxkvw7cqimr+zFM/ZLnZF64cgL8BYD+AWwB8x/dlWuWagHiYL984AJ/0RWBy1AE4AizyM1yxYAcTigW55xMbAkxEiwEdkJ/ZCQxPAiOHgBECcKEC4TBZcKkSv+mTieNcNPNC26mLNsj45QD8LQDTAO4GcJt/7iw2bfoG4WG+vAGwm9ExiEg69zpg/wgwPQLMjgALzn4E4aIzoJjQ9g4024uygkj+pyuAoX0VAIfngOH5NgCHMhAm8Sv2y3XDZeBhNIp8OzJE8OsBzAKYBHAXgDt8/4O+MVT0j4f58o0D8Pxrgf3DwMwIMEPQEYRkNwfgsuuDZLskip0No0gWMD/9HGDoADAkAC4Aw/wsAgZAgs2Z0ABI0GU6IVmKv+f28KDnHxkA/G0A8y6G73N9kOCjXnh/Ebb6OvgwX75xAF5wLTA1VIHPADgMLDj4yIA5AAm6aCUnv4oz46eeDwxNAUMzwJAz4BABSNDFTwSfg7DDKHE23MG5PqIY8A1u/dINs9dBdy8AgnGPM2NfUBrsnw7z5RsH4IXXAAcJviFgluAbygBINnSLWOAjGxJ4pgOKDV0v/OSLKp8iGXBovhLBBOCQM2ACoTOhnYrAdItYbCij5JFzRyIAqRccAnDAQUjg6UNQ7hsMXP0cRQAexss3DsCLCECCLwCQzMcPwUi2MwAScAKbfnY/YRLFQ8DHX+IAJAMSfDkAF13kLvleIjhjQQHxUVS3jjgGpKeeNzYVQEjgUS8k+PghONdhIwAP4+XXBYCHKIJbwJyDTgaIAdCBJx3Q2M8tYAHP9m4df/ylQOsQ0JqtRLCx30K1wtLBggScQOgsKBGcWHAJeOwRC0BSM1mQIKRbhh+Bj98JQP6t4U0APEyXXxcAEnxkQAFwoVUxID9kvQg+c1C7vidRbIDkc24B//hTQGumDcCWA5DgMxASdNIFBUI5pCML8v8API5zfEQx4BudgqiczviSnJhQwCP4BMCGl+wO8+U7AJi/W4O4YS6+pmK/2ciADsAOBhTIIiAJnPB7AvNjP+0AnANaYkAHX2JBAc+tYaJXOqBZv24Vc386XW5dtkHGW+4HFAJonpOe+YYQZAShgKjv3PNvPQaxVoI8zJdfFwASfPzMUwS3Kt1v0UFIlos6oDFdAGFcliMAP/ryAEAGNwQRnDOgLbdlIEwrIs6AZ/QgkMMHQF6ZAKQcJAsSYPwIeAIk9wJgoPK1gi7+PwF4GC/fOAAvIQPSs0URTPBJ/Pp3GSEGRHfBCIQ0xowBtUbcAj7ys5X4Jfu1HIAGQrIgQRXEsAFQIORDFhiDY/rMHmrU4QUgR08AkgUjCAW6CD6CkwBsAIQC4GG6fPMA3OXiNzCg2I9gNCMksmAAoemDzoimFwL48M85AKkiuQVMAAp8CYRRDAt8GQiJ67N6GJODAXAHlsGguscA2AJg1IPGYmxOpBxFWkRN9LsATgIwXnNs/v/5z/9XCf8BO3YAtxbc/46/KDt+5+ea1Yku2VUxHz/z0v24FwMGK1gWsK2OUUxHHdCBeRUB6OxHABr4ZICIBd0QWSF+XRdMTAjgCdTrG9cBNwE4F8CpDkICyYLGsuhFt6zs+gISwUen8zEAjgMw4cfx2H6O/90yAFo84Cbg4ID3/9TfLTt+5+ebnRABkODjx0SwPi5ec/FrYpmqSAxM8Dn60CsqAFI6GfhqAMiDE/gokmvEr0C4PgDkBQm40wE8zMFEUDKEVoxIMLl/KS73mE7H9d+vcKHQQcjwW0Yu9nP8m8sAmOIBuWY6wP2/4s0ezjjg8TuvaR6ABJ70vxUApGrm7EbGE+i472BAB+WHfqHS/eoAaEwY2E9+wLSXTqhI7CXgnB6LCoOJ4BiST+hTnG0HcCwAglCx3ARoZEVFXnBPp/O/A/hXACc7CPs9/i1lAOyIB+RDX+P9/+pbQjjjAMfv/PL6AFDs1wFAgs/9fgKfgdE/ZEpuiQlbwAde6QAMBgiRmsSwA9BY0JfjovGRDBMH4TlcXGhcBOc6HkF0gjPhZgchxTLZMAci/04W/B6Ab3t09EPXcPyflgFwRTwgJ2MN9/8bf5qFM67x+B/aW4XQz42FeL0YrRyikztUFw0704mf9kXgxhOAqc3AAsPyRxxQCs/PdXOFY0W1KHy3QIUGtx+6vdnx1vsB+dsTncm2AogglFgVEAlUWrOMB2RyEmMCGQ/Y7/HvKns6tfGAnJQ+r/9b76oJZ1zD8WdyQjYBh8aBhVEHjELouQ8ukQ7VRSCJAALwkr+sALhnGzDD3JAJYJHg9uhoi4bx8ytkWUtvHT/7+Zc4dw1uZ3612fH2dkQf7yxIEEockwkJQn4IQoq8unhAhmPRKKFx0uv4K8ueTs94wD7u//VX9ghn7OP4c+4G7h8HpseB+dF2AKlFLwuAIZ8jD6NPrOhAffmfA9/ZBuzZCkyRWSeqBCWyoYGQ5yQrBpDbum/ME1HoPo0XEkSD2zlfbna8q6+EUJcTCxKEtHL5EQjP6BEPyIgYAZBvYt3xHyx7OqvGA65y/7/9wVXCGVc5/sl7qxD66dEqiYgRzAqhN1A4CBNAAlDyAFI+iZ9/N3DLJuC+jcDUBmCWyUnOrmTYCMIOkNclLg0B8/RsNLg9+UvNjnd1APLmmQpFHyEBROuWACQT8nN+H/GAvY7/VNnT6SsesMf13/CpahGnZzhjj+PPmwX2MYdDIfQexWyBAwEUOQDrRDN/98p3A7dvAO6fAA5sqHJDBEAyoUVGkwEd6HR12XU4kwzfl6fCXTZzjy57vvnR513X7Hj7AyDvggAUi9EyFgiZqNxPQF6345nOWbD1HQ/Y5fpvuLa/2+82/vNHgAPDFQDnhoF5j2C2qBWCI8bw1eRw5CL5l94L3DEOTI4DB8Y9OWmsEu/zBJ3rgsaybqBob/7A4C7jtWcooRrczr+u2fH2D0AOQgAUCxKEP7aGgLy64+m6KdjWFA9Yc/03/Osa4glrjr+AupqHz1sEs0cxG0BC9HIePLoit9eNkVf9L+DuUWByDJgaq4ybGYLPAWgiXmLedUE7dwC7saL7CqfPKXi4NYdaykCD410bAHlDEsNiwZ9wAPYbkJcfz6T2gm3N8YDZ9d/wHxUA+739fPwXPrSKYGb+BuP3jAFDElFH9HIWwbzCIGkBr/or4J4RYO8oMOW6ZVcAuvi1Cgoha04BCwT5gfMKHm7NoRde2+x41w5A3hQZkADk5+cGiAeMx3+/7AENFA8Yrv/G71cAXFM4Yzj+otOAaQLQA0gZxaIIZtMDFTigKJV8H9Iq6aZ59ZXAvSPAvpEKgBTtBODcSCWCZeRYtpzrmLyeGNCAyFl1v+Hei8qeb370Rdc2O97BAMi7EgB/2QG41nhAHU9LuWAbOB7Qr//GPRUA13r7Gv9FZwIMoVcEswEwfDoimEP0shKKtIphaZQAXv1+YM+wA3DEdcvRKkGJADQQEsQuhi1Tjt95vBsh5nx2IO59SsHDrTmUOStNjndwAAqEry0IyCMICkOyiuIBNwBvPFQQT7gBuPjc9oRYAIHyOEL4vIFEYVNaOou5vCGE/tV/A0wOVcnpzI47NOri3QFIBpSeaSDUdYLOSWvYImSGgftpJDa4MWJbAGxivGUA5MAOc0Be6eVLj7/4Mk+hzCOYPYpZDBiNkLh+G/M3yFyv/ltgL3W3YQfgcFUhgRY2PwY+Z7/EhAR1SFyXCOb57r28QfQBsJQBMn5D4y0HYLPje9Cd7RIC0PM3EiMofF4gVCBp1P840ix/gyz56r+vAMjk9Gl375iB4+CzveuZdLkkEPJ8ZEfX/6R73vOjzT5Si9hucLxHAVg4PwJgRwh9CKOXK8YA4ZEqKZXSQWh5P+5AftXfA/uGKvYjCKn72cctbFrZNECka5L5CPwIPtMH3TVz17MLB5gdLgA2Nd6jACycHwLQxFEUSR5ASvARDB0h9AQb9bXIgCGk6lUfAPYTgEPAITKgg1BObk58srTJgG58WMkWMaAbQQT1nc8rHGANAJsc71EAFs4PAagQestgC1lsBJ4BMCSOK6dDUcwqqaFiQr/0QeAAAdjy+jBiQQeeMSBZT3nCPUDIa9z+/MIB1gCwyfEeBWDh/BCAeQSzgkjFfGLBBD5nxQ4DxN0wv3hVxX5TBGDwL5obxvVA5YqYL5BeMLd66YYxJpRB0gK+96LCAdYAsMnxHgVg4fwIgMrhUPKQ2C+Bz0PmBTqBMQehAbDlIjj4F80KJguSVZ0FuXpjoCOgXawLjALhbT9eOMAuAGxqvEcBWDg/l1IE05Ed0ygZnyHdz0VwCqEPIfNyx0QQvvLDFQCp+8nfZk5und8tXwIgWcHSNX0N2CJmnAl3v6RwgNnhl17T7HiPArBwfghAS7mV/hey2JS9FvM3BLpUUi1YwDRMXvkRYJoAlAh2l0dcZ04s6JUTDIjyBcrl4yDc/dLCAdYAsMnxHgVg4fxwKVwJgGEJNmWtxpQMpX9on2eRhVA+O56AjMfnP+e3Xvf3NwG4xIPTleiY55bpGh6UbafNU0l0z0p+5Jh5HqYJ6b51nP6XP8cx12XNHQVgIQB/bFPVg2OC7Q+WgVFWng/FvtWLI06uWh5oguKEcXVS/9sEAF//VGD7t4ETDgJbF4CNi8CGZWBs2fPL/H6Vwp2KEtVk4fJ+v/EIYPN9wKa5qu+IncfPwXHVZe/aOL3EbwS7xv8A1rQvnO0j8PArTgTGZ4BxFv9mIxhOCGsv+0OPYDRghcLfkWkEuq0+G00x4OtfDGz+d2DbHmDLjL8si8AYP/7CGIAiEEMTG92zXqSbH+d9R2aA0XnvO+JjthiIrOVDHHPOkBrzUQAWAPsZp3oPDpa/Xag6EVkLBK+5rAnJC3/nYk/APD704WiEAV8OTHwX2LQH2DgFbJgFNrBhjd8r79deGoEwsllgNBOzy8CdjweG9wBj08AIAci2D6HafmyAk4/Z7SJ72hGYRwFYAMDLTwOGp4FRFgD3HhzqRGQiyeurqOdG6r0Rm8IEZjzRlkiqCWoEgK8Axm4BJu4HJhyAbFhDxmbDGnZO4j0SgLGDkpibgEq66TJw/1nA0F5gdLpq+zDqFfd5LMeWqu5HNST0uJOIllg+qgMWgI+HPv0xwLA3gWHpW2sC441gCECbmKziaGrnUdMO4aHeh6MxAP4SMHI7ML4HGD8AjHvHJGNAgpDgY/ck3stipRemvVhc+uASMPUEYGh/9dIRgGx8Y+MNbR/00uVtH0wEx94j/v0oAxaA8Ed+GBieAYZZg5kADC0QWGOFzGJlcGPzl1BxNLXD8sk4xftwNAbA/wwM3wGMUmxOOQBnHXzetIYvibonmSiuYTNjriVg7glAiwBk0fNZH6+PmX9P6kfNmCXGpftJ7TgKwBIAnln14BAAYxMYm5C6RjCyCoOyr0qkD/c+HI0B8DXA8N3AyCQwesD1VQKH7EcASm1Q+y4CkN9pUKiVF5nLvy+fBbTUd8QBaH1HvNBROiZvfsNnrF4kcvPwpdsBLBeU18Nf7AB23Dp4ecHC8oBgUlJJecLS+7+WOpE3gbE+HKw+yoevCYkMGKqPJrdEKARutaFYRs1fiEZ0wP8CDN8LDO8FRqYq3W10pgKgfYLaYCzootgA6KXaTA90y374TKB1sBozy77xHFZ536utRgAmEaw6g5kUSFZwSXnA330qsOlfgHMPDlZesLA8IOjoLypPWHj/11EnCiVwkz7kAExtsGraYUWdSDX5TmsagL8KDBGA7Bd30JsW0oWivnEOQNP7yGTSB
vendor: 60,312 bytes, line 5695
5695R101AlZSUtGyfgZDkCWY1HnJdcBVe6325hTvelg2CQjZNDygG/2An0j1wKnL6y9vGBheUC8prQ8YeH9X39OVQSc7Mc6fCaKvAeHdCIVf4yMYCynTpX+nb97NJmlSQb8r8DQHm9YOFUZTKOzoXGhs6AxF0HIexcLBvWBuiHN8s2ne98R3qc6L4Vyb2oBVjfm9MIFHbjDCh6kPOBbQoG+oW8CO5bWVl6wsDwgfr20PGHh/X/1iaEIuDcCTIW/1Q4rFv8OnYiW3c+W2iKwUjKbyjQNwL1uuR6sAEgDgq1brXOmV81PxhNB6DUDBSYzQJwFtz623XcktX1Q1VWKaTF/zZhVazBVYA1tX5MazsGvobwe/jQr0Ne6BTh5uf/ygoXlAfG60vKEhff/rSe1i4DnTWDUACY1guFTDqLYdCBvf6DJYSMYATBfOx1kLfj1v1axH10nQ3Sd0GUkBnTfpemtBJgseIKQAHLQcVxa2TnuMW0Aqui5es8xBIegVdVVE8VhzHnLh65WMB9An+X18K6aAn2tO4ETl6vqbKuVFywsDwhevqg8YeH93/Rk70JE90nowxZbIJjvS3WYNSGUwGHJTpPxwwcbBuBrgRYBeKACn7VtpdUu/c0NJxO9BIxcKu4TTODzbkonPLoaL0vyUQRb2y8HsL1ckfWzMeuFi40Qezqi+yiPhyt7FOjr6/gCFwgP7Xb5vssTFt7/nQRg6MGRWmDRoeyTlpgw68GRTwgZgo1gGmXAX6/8dtaylSKY/koyID9BhzML3q1gAos2AcOrZYSoq/pJp1VtODRm9Z3LS/7WjVkvXOzEtOpKyGrlAT+4SoG+VY8vBGCvy/dVnrDw/vee65NBJiAjBIVcAJQjOm+DkCZEeiGAMw6sAwDZsJrAdhFM9rPGhd4904Co5oVuCZPV6kD40Ec6+9W8dBTBsfdc3nkpvnB82fp2RPcs79dHgb51LA9ofsDV6vut5/3PnxcAmLVBiDqgevDaJLkYrpuQxzcNwN8AWgIgRbB8loEBzXDwl4cGiDGft58SCOWGedgjvOJ+bPvgRkiuA+ZjzhnQQOiFNVbloa7l/fos0LdO5QENgEXlCfs8Qbf7HyMA3QVjYihYhLENgjX9y/qwxQmRU/asfd0ZcLU2CHVGyusJQLKfVi98CS12T5f7iECkHpsMkAhCF8+nshWH2I/jXsOYO144GV/9ApAIrS3vt4YCfetQHtAA2G+/4PW4/2PPbzMgmUMi2NoeSCRxIt2/FvuxWURIWCXg357gfTjEDNIHnTRXRCpH5ugKwGl3HpMBXQc0v6WLYVm/5limj04rG762K2uYY9jBkr9+rI03NL5ZbczS/dJ+LQyoga4o77fGAn0NlwdMAOy3vl/T938KAcj121z8Bn+Y9eWQJRz8Y6kNagDh2ey5EvxjxQD8TWdAuneCCO4An1vw5vdzQMmdktwq7pLZQR+dM34+ZumAxvY1Y04uqOAJ6FsExzeto7zfAAX6GiwPaLWR1lrfr8n7f/Rl3QGzmsis+/uO71V9OFgP2gpPhgr7TGRqRUT6dyvr4aIs/pm/2zVUNbBSv6G8e5pEv0Cvec7Po7+bTtjlBRlkvAMBkDeQyvsNWKCvofKACYBrre/X1P0/oWEAnnFD1YdjhtXxR73mX10FfCHHE9pVWcGAI/S0gKsfA2y+twrFZw6Hxf/F0Pk8Ri/kpGSnMuDx5T0iACgQHioo0NdAecBUHW6QdsV2/cL7v/Cyqr5gnc42CCOcfX1VIZ/V8We9IDmTzVXwPDJiXuKXPxtDBma8+lzP4WAgKkPxCUAPE4v5GzEuMX0PYJPLhB6FJsc7MAMmkVxaYC/K9gG+F1++8AQ7Gwbgk78I7GFpXgIwFiRXOwaJZPUbiR0yCUDRk+cHf+YpwMj9HgfI8ClGPyvsSiH0WSKRuYlitLb/zHM/JOSs5C/YIC9cMQDZr/dwxgOW9gtGYUBi0wA8l304vDQvAchilFbpIBQhZ7Ejq6ZQ0/Yhil8y4j89Axie9DAsD6FX9HOK3QtROTFkviN83kG4felIY8DCeLrSeMDSfsEovAECUFsTjHD+tcB+tkFgcXKvBRir7qtFl9owmO4Xy/1G3bAFfPrZHorFNWBFwHjQAFctIghj2kBarw06If/+MM9ZqTN6DgsDojCerjQesLRfMApvoGkAWh8Ob/tgAPSKWCp8ngNQtadjmTdltvNvn3peFYhgQQgh+iUmEaUAUoXM1yRLmWuFLaE9Z+XIAWBhPF1pPGBpv2AU3kDTALzwmqo6qtVh9kJErAudABia38TC5wJgS2xIhAwBn3yhByL4EhzXfRXxYsDTJ4IvrNN2JFMxZcBzVo4cABbG05XGA5b2C0bhDTQNQLZBYH1AVsQSAAU+imI1obHyblnjG/kJk3U8BHz8xVUQAhnQIl5CyNgKAGp5LKSSCoAySh5Jj79vTagcxUaIBeRNe79g9gq+DXig4wGzy+PONfT7RWFA4noAkGXZVAhcBckJQgNgrLiaNb3paIDo1vHHX+oA9LQBi4DxJcOUPJUnTgU2NJUyROs8irGARxQAC+PpCtsFd40H/AEf0gMQkLgeACT41PiGoLOKqyrJq3K/Ya9mNyr5FusN/uPLPIeDa8Bc+w3rtyl4VFHaMZc3i9RWBM9jjzgAFsbTFbYLRmm/YBTeQNMAtD4cBKDXBTQGdAB2MGBo8SCLmEuS1AFVAJ3A/NhPt0PoCcA8bSDG76XI7aySg6JYuGfKwJHFgH0E5B3ueMCe/Y4L+xVHAOZ+9EHcEgQgwbeiEYx6jwTdz4qfu7EhEJqxGqruf/RnHIAEnxgwBM0aC8aUAYWNBRCmoIll4HTqO122QcZbrgMWxtMVtgvuOx6wa7/jwhtoGoDWh4MBJ16WN4lfr8AqI0TVV1O1fa9BbQzovkAy4Ed+NgCQUSxZCFWvCOaOFREXyUwZOPIA2GdA3uGOB6wPaOz+QPv5S+MA3OXiN9aclghW+d3IgupBF2pPqxcxGenDPxfSRh2ASiKKiVP2PaZScvAKoA0VDc6cOlIB2GdA3uGOB1zR77iwX/F6AFB9ONSOQW0frA50sILVcckWJyIDSgwPAVcJgFbYuZ3FJvAlEHbJ3IsgJLGedeBIA+AAAXmHOx6wo99xYb/i9QKg2iAIfDJEJHqj4SExbEty0gkdhB/6P9oZbBZIGiKYVb9GKaN50lRHBLOvhDxh/5EKwDUG5B3ueMB2QGM/grb7/6wHAPNGMAY+GSGUjC52VX2f2CD4+HO0gqkZfegXKgBaHkcWtS0AWii9xG1ImrLlN5XR8L8fmQD05BVrmEENmpYSP9QX+KHiqj2/82+HqqDWwnbBRfGATdzAegGwru2DpRq7Mzq2fpAf0Nq0Rl2wBXzglZ4yUAPAmDSVWDBPHQjLcgTqOZ6zUvdKHh4ruDCerox/Dnu7YqwXAC1NI/QcEQuK6WK/kdgCTGC0PYAP/KIDMBgglq+hIkrOfsaCviLSofcJgJ5AdM7kkSaCj/HqQKVIGvD4swF8bcBjmzjsaQ2H5D/6acBd9wALB4DFWWB5AVherMp4GKIYEOp7+26UF0aSfT/xYuDG7wDjrIpAERytXf2vajj7ueryQXSFl10K/ON3gIWDwCLvjfGB8Z54O+Ee4ve6513uB2R1yzsqC+twbC8HcNVhfAeaBuDP/TvwtS3A/ePAIfYFVlPq2HHTuyulZCTlhbjhETF5yxTQGgPGhoHhIWC4VSXGD3n0tLkMHXHxu+YyB+MlPwDuZs5K6FlsbCzdVO9DuKfkHM8AEkP7B8fOkwDcD+B7np42+JkGOvKdAL4E4K8P0zvQdET0b14D3DgB3D0B7B8HZka9WzrD88N6sFm+YcUjrn7E1ZDvMtF9DBgeAYaHgSGB0PNHCD4BLwLRsByAyX/ij0/dDUxuqlIG5hix7eFhvLcOVUAtyPSydAFmOQNe6EYGV/9ZESiKgIEgtbaD/gHALQC4ovY5r5KwtjOU/XfTAHzzLuCmIeDuMWDvKHBwpMoN0WQzNtAaYSs0K4ZlOSAjGG9kPjCBRwZ0ABKEBJexYAZEAU3A7Oi1BeDym4EDnjQ1TwCGWMW8MXcKks0YOyZNlQOQjcgYIUHllEzYQ0ktm+r6oz8G4F4AXwXwRd8/kO9A0wB8y65KmPxgGJgcqYJTKYpTv2CCzyddQJRDOjKivn+Deh8BF8BnwBtaCUA+YYEyAU8h+c6Az9gNHHRmrgOgmDA3jHQ+iWupCeUAvNSrA9HNwqx+muk9nJVNg/CTfrmbAPwbgK8D+PcHkIibjob5o13A3XypWsAkG1cPA9PDFQDZM1id0i1KxsWfOrKnAFXlifCFFMMRcASigOcs2MGAIfE9iWXplS6On7UbmPaUUTXQrgsVMzcRj5Folg2V5ayUA5BWYKwOxKUafnosWjcJwk+7W5F2EKvlE3xcXaNYfiCYsGkA/smuqug6hcleAnAImPbO6YwRpMgjCAVAm/yQmKTv5hNsAf/i7SyNBSl2a8Qv/4/M1yF+BZSYlNQCnnVrpbC+mToAACAASURBVJcaI7sOSEY2NpaDXLqpR+vE/OVksDgImgGgghHoYJbTWc7oJtFWc65/cg2AYvh2ALsB3AzgVv95nS/f4QdsIkT9T3cBrGtITWZfC5hqtQHInsEGQn3UDDvEDEY/ICf7SxMOrAg8T+c00JGkvHGd2DABUYZIAONzCUDppCFhSukCBsLQrFtZe/IixYQpSyEoJoqnuPWrVRAubQh83HNlZB23z7j1ywmj6CIIqUPxw2Xeu9bx2jx10wz4Z7sqTYZaDD8EIDuoE3hMVEphWg66JIp90k0sBxBcy+iPIIaT1RtEsHS/yIAqw+VSNPWQfe5tlVEk8auXgVa5BUsEJuT5uoliAbE5AGotmIAjCPnR9xDG3TQernYAUupTdBGEFMf83OkApHG+XlvTAPwfuyrgSZOhas3u6cwTsUBVn2gTwyFMi8wjHZAA1M9fYGHDULJD1m8Cpa8fRxDad+l+Ykf/3XNvd11U+qiL39SxXevSsshdDFvgbI1O2AwAtRZMZzTBRuDFjxe1Xg8QEIB8yyj5yYIUxfQIkfkIRnmHCM712JoG4FsdgHHp3ACoMH2G6jM4lWzoQarSvwQ6MSB/vporVaFkh+mCLlpVR8Z+dqDZLoDOpHSiQeAFDkBjPrlgCHgCUaFifg67H/9uYjn4Ai1vpTERTAASBaoQJBAKeNqHlL6mwPDZYAOROag/EYRkPX34MwHIvzW9rQcA+TLpI22G7EcQKlJGsYIJhC6ClUMiXfBTbFUQAej6nPS/OuAl9pOOqIc2BLzg++3VmWgIEUz82cRuCAtLIHQQm0gO52uOAb22sC3JEWgRfPpZf2sQBQIgLydPEIFGwPEj8MlF2bSbsulghLftqsCXq9HGgHysznrGgi5qzTUTFH8FLhAUn3hIJwCN0HLncw37qaF2zoYvuKNivmQIuUNc7GvWt6sHNs26twA6vhyq8NEMAHlyntFrDCcQehyaPTl+FwAbXDcmAKMRThakEk8Q8kPg8SPL0qzLBl+A9QCgR6uZGs3vfHz8TtBZvkgGQrEPBVAUg2Sij50QAOjiVKI3saADJRm7dSLYWfSFDkCem/dhZeMy9pPY5QvSDYQyUJoDIK8qMezh3wY6fSL49PcGgCAA8pScJLIgAUYQEmz8RPA17StvGoBv39W24eREiBoNQSgWNI1HBkdgxJSw1AI+dFIbgOYmkjimQ1r6XXC3rAbCHycAgytohf8vsB/r2KRaRq7zpZ+D37HMX0s3DDcCUGLYaw53MJ4YUODzusqlGCQAOQCejuxA8UULUkxIwAmMAp8Wa3qkN/R9W+sBwOhIEPjk5SLr8HeKFbTQfb77csPIMHGl/4MPbReslPhNe4+MiTpi9AFGV4nI7MfvagNQLh/pfrYnDAS8aJQ42A2w4em2cAyWQUuJVQTGWLs1uL7DG9J1RjhA+jvYk4t3KXeMqijpzrud4At9z3XtP16yGfjKZmCGooYh1tZzvv8xXPFl4PoJYC97k9FlwZWD+Azi/deMZWeP13eQCGEyoERudChIjbb3mJYwH7V0QIKuCwj/gfMj0asn2I0FXRSHXfL/iRkNgLyeVj8ccMY//J1fyxzTAXT2+xoQViKYD/1hDqLxPiYxTgSvQrphphG97tz4Slqafnj7uk1kIQDZrvWTw8B3jwEW+RLxPgSiCERdPwPR7+wCPg/gulFgfruDkOMQkFc5x84e708JAMmCuRNBXi4TIg5CGRzGiBGE/D4E/C2r2vcAYJoify62i0aJSMhB+2IHoNwu0fkcjQ85pu3ack5nIBREqneYFyWLkAXIJHESe00Cyx5QyeL6F/tyEcDcrOW2n7fX8df0mME+/vQ/PQjhoy3gzo3AISYf80MQaQx1peH9wb7v2mrtmCBkIMMejp3jIJD1MsaxaMZ8v5N/67INAsB3BAYU4JL4DSo1J15AFPAEwuQHZJzkKfUAtOHLJSOQRWndBYQvCQA01cfnNopfsaCJaD2baBn79QjSTiOEP1EcawIpkq2kegBTNgHWEpOKF8Uwq2NRFPM4AqCf46/rA2U9/uVDvurB01zvAJpiiwOl3fEeciCGF+Ij11f+QkbSfMPfIzqw57mEFZ9Dl3Ps5HXWAYByHJAJKV7N+s0cCQQhwSlfm4lGZ0KB8C/rABgZUS6ZHITBSEhCowUYAAksF7cStWREyxRwtuPpOlgw+5s9sq6OaIJIIlUgEhA1edoTgHxa9HVw5jibZNF+j/9yGQA/7pbujZ4bwv2+cWB6tFo0NzYnkxFA+cvEAo43VBoEo2e+48EMXEOmD9F6xhCE8RwZEJ80VblKvDlmzwicfqy93/o+8K8TwB2jVSgW138FrJQTXBNlnJgmrjZwanow9CBP/rL9wF0jwAGWDtFyoN9PHutnIHT05mPXz93dMGQAPniJsjiBXiTbxDZFMF9NLUPQxKR5qezz1Y6/YZDH0D6GkdAkYJIvRalAdHAMmPZoYhb6NhDWvEyf/ma737CXN7R1ZC7hUbPgcFgqt/ZZjADnM1xqEVhYBpb4CUk5UsL7jQvj///5buDrLeCOEeD+YQchYwG9VIfyg1NaZszFiCH6DkRGLze5/dgk8IMWcMCjdCiCzR8od1B8OTwvJM8JEShFut1fzMhi+eRJr6LI7hYP2M/xVLwKNoZjUTwRMAQQmYyhWGQxsSADOflZ4kukj7PhZ75bETjBpkAGahMkcrGgwhsXeCyBHBj1wmOBQwvAwqKzoFeRV8ZaerjKYAuirmPY/o9X7q5Cyr7fAvYMAftCPGAEoYlBiVtFwLjtp2U4irj7yOANbi+crHyrfCbTquJV44O0F1FrwQGIMZFqdQDyP/gGSZ8TC0ZRRsOlVzzgasd/u+zpMByLehAfCgMQCDyGZJHFCCgLZ2f8mgI5qauEcVx9e5vACTgCTwEMWr5TdIpWKJb5MvrnoocDswvAPAG4VLGg6UKeqmi4iuDz4er30oX0FP7u5moMvIf7W8B+jwlUNAzFnlZCIhvGFRCeWzrgXSSIBreXTFZSgVLHAp4UHOFuociEEsn2PJwl/XEk0dzfSojeerFg1IOo5BKAveIBex1P67lgUzgWQaJwLAKRH04i14ItgDKEtGsRnWx49b2Vkk9wUefTGrKCF7R0JxZMqxN8cmPAxWcAcxGABKEAKPA5u9lEaAbCmKMI+sDN1X3z+ro24wEZFc0VEE64ABgT180PF9ZdBcDb6JpqcPtPk+1ACbmKjJnllwyuILunEAWjZHkBsrsRUnfD0qEiC5IJfyisgMhzWhcP2O14Ro4WbASgAMQJ48SJwchmBCDFa8qpyBbSP7OvU4PQ0p2W7+LSnSJUFOrI4V7w5IoBTQQTfJ6oTSYk2mQcpGRyH2syGjIF6EM3V/fM++C1CfwUExhCsmzCaQT43lZC3e1hBpEHh36XEqrB7Scmq5dV0XZxmV8WuDFzAF9iwhow9seAGoBcGtKjqAc+1l9rLb/1igesO55ysmCrC8ei6IxRMAKTWNBi6Xw98xNTFUi0jEcmpYgRAPhddpVi9OIEPP5cYD4CcLkCooHPwaW9kV+iwWrQHT8uA1fd3F7DFvgUHUP2k8jTiogAqLoxFpDgbMj9jXSuN7i9dLIdaxzBp5XVBMIMgFEnFAPKT9qPd6A9BIGI7MfPmf4U+40HzI8nWgq2PBxL4FEkjKJixGRRFyQQPzzd1iAUzCAQas1YOmAEoFjwkecDC/PAwhKw6CxIkCXwOdVJLxTobMjBdyIgfvimNvNJ7Evf4jWtdnRYD1YNGVuG93VWuWs4Jf+mlZCCZxwP/cnJ6mXVKk2+tK8lQQVHRTGc64SDAZB3Ey3JcxyACkToJx4wHl+YwqloGDICmYmTFgMQFBET8yyYzyAG/AfWX8mCGQg0BTRoHwt9KVaPE/HQ890AIfgWK+CRAaMRYnVdxHbhdY8Wslw1V93UDsmPIj9GxgiAioRRMIJNvoti+SW/Ikd0gwAU8+XxJcbGITJPDvI6XdCFREFSknTB83xka40H1PGF9dnycCxFwygkK0bASJQSVAbAYeD98xUAe5U3jKIwBosSgNsuABYogl3/IwgFPrOIg1Xc4ZrpAsSrvruykl2ucykapkMMh4CExD5DwJfWAYAxwk4MKPAJgOIjGSEGwuCakRhemw6Yv0UUwRf7L00L9pnsNx6Qx4feY4O8pDEcixOjsoTKKpMYjSFYYjOC8Eq3Wnnr0YYS+0Tmi2HysrPGLqwASNYzBnT2Mz2QD91laxLB0gs12GAh81cf/o/OcHyJ+qj0S/zxnhUZbSyYWaL8+Rq2S29wowiWkJPan4MvgrDDGAlRe7KIywDIgR3meEDWg9HbJgApNTkXo8o0i7oVgxnEgFr8F7jEdnU5GvqfJQKQKyEOPlsNIQvyvupAGHS/Okv4qv9oh+PHxMLk8ggBCRxvAmEN+AiEzz2iQfQBeNmkh4K52hJBKOaNe/FSLobLRXCz43rQnu2yi9oMSMDxs2jo8303ERz1wsCGZECF4kd3DwEYYwJjhoNlQrgIjlYodbBPrwMAZfEmyzcIv27gs6XDzC/IR1DOgA9a6DRz4wZAsZ+LYXvQYsHoD4ziOFklna6YD3+nnU6dZ7bGDAcBUImIAmEUw/zbJ1i/scGNDJiLXmle3RhQ+l/aq57gUQCWzwwBKPeLsZ/LFrGg/ShRXAe64Ajkv30kALAjF8R11Dy3K7KRwJcsUTaqWScARou3w/INVnCH+A36n8RvM3nB5XP4oD6DATBYwGb5ajlOLOh6X8JaBKRG77+7ygGYp1bn+V25/01AzBnwQ1ypanD7KWfA1QDYC3zJIj7KgOUzc9nFbetX/r+O5biwNhyX5uSEDr5o0xsJwLp8/m4A7GaJUv/j3/5+HQFYJ3oFPPkho/hNeqBcMkcB2BAA6XrxmMBkfFAci/m0JpwzXw0TXvXtzrz+PKc/Ml/ugzM9MDqCAbz/keVjjGcQA/YLvjoguo1mRslRI6RwfsiA5nqhL5D6nscF8gfTdfxpS+/hLzvWfzMQCoB1Fq/8b3VWaPIDZqsRV64DALsZHVHs1gEvsqFAeBSApQC8pHK90Oql4UEAyvCwNeGcBXNLOPMLftgZsI75ouUr9ousp2TEyIJ/sU4AzC1e+WIFshyAHPZREVwItrrD3wGAhibTYBhxVpe/xePyrNBuWaoNp3DgFwC81O+RAepK/a5Lfe51jxr7JwA83nPXYgq1asl0yX5N48+f4VEGLATlK1vAo5YB1gBSRmsM+NFE57lcfPD5pPFWCJImtyvGgGfOAacBYO59zFglgHgPefZsXV6/gPXBYeC0RVgyJNOGYuJjPka9eHWgjL9bWzhWk0/n/wPn+k8bgFNmgYcsVflZnBRmIShtJM/m7JGibGBoOIIez9wKPP4AcNpylfbNlGfdI+9NjBjz8JVzppckZuJ+dBw4aQ44drk6j1LIY9JkPD7P4s2lwVEGLHwJnncscNIh4Nh5YMsSsHm5ndOu1BGFThJ8/K6JrZtoslST2+XHA6ftB05ZAE5crgAups5TfaL6EF+UyIif3gAcOwtsXep82eIYY9JkXpMgMp/AeZQBC2b8OduBYw8C2+aALQvARgJwGZhY7swEzbNa88IRvAVO1qkF91J36DNOBE7eD2yfB45fqphLnevzdGeBKBfL8UX5/CZgyyyweRHYsFwxYHzRNK6oetSBMDLjUQAWTPqPngpsnQK2zgKbCMAlYMMSME4ALrcnR6JYQIwsoUnjpDRstOLy7cBJB4CHUGwuAtuW2nUDVH1EFUhycSwWjGD64mZg0xywcaECoI0z5P3X5P6nWlHdgHgUgAUAfOYOYMtBYNMssHEe2LgITBCADkIzSJZXpCOnIg25uPrhgnupO/TyhwLHHwSOmwW2LVSik2pCrDsQskzNIBGIpBdGI+VfNgMb5oENCxX4yPRjPj4xaJ0+WGeEHRXBDUz2Mx4FbDoIbJypADixUAFwzAFI8KUJChMV2SUaAGc1cE/xFJef3FYRti64nkqWDrqqEhbrsm5zvZCdPCd8nHzJOLZuABRz9hTHZwPL7LnLnoNMIY2VyaKcjtZLHOAbNgNPngKe4BacfGF1pnydD+hphQ/8XV5UiEueLGnDN1tWXj/3/4cTwAUzwGPcRcFJiDpPt3FLmf5vjwE2HAQ2zPrEzDv7OQg5OSM+ScYQy5Xbo8465u/ZfLTJ7fKHAdumKxVh8wKwealSE6inEoSy2MWCdbUHIghv3AqMzwHji9VLZuDzD8cXxxWZs5c7apmW0fMBnIHKn5X7d6I5npvRz94O7LgXuGIReJSb+Xl1tzqflybwRwqf9i97BQRWomWJQ7oZVFtJoqDX/b/oGODsvcBTATB9gsfGqmzdjtVz+G+PAyamgYmZCoDjFE2anCVg1CeJwOMnTRB/DmUINVkkgia3y08BtkwDW+YqAFJFMD1VAAw6XG61R31O9/fdrcDYPDDmY0zjc1UjivBuAMx1QdMB+WAYXU8dhEU16dOSkppbcHFSrng8MHwnsGMPcN5ypURHp2xMIa7zDz2z8Gn/kVe0YomO0wEwBYKujL7v/zHA6C3AxfOVh58g5AsZxx4fZM7sf3h6BcDxWWeGBZ+cMEFiwGEHHRnDzun7ONHs/djkRgBunql0VDOSHIDU3cxSD4aEajhFXS4H4S1bgVGN0V8we7E0Fh9jVDG6Obr1LJMRwn+kOCaTEYT0dsfqZHXl/p7PrLi9wIY7gO0H2yAgCAWCWCowKrYE8nMLn/a7PQn9X7zIJPPkCcK+758y7x7guNsB6l98gZjLLYet3Ay5n0sv4R+fCYxPA2MOwLEAQLIDPyP8uBg2cRYmzFweAYilKkn+OC8/Fdh0CNhEA4nGA40kd6FES13WLO8v1qHKAfh9B+DoYjU2Ak/js/8NAIwg7OUb7LCC+WAfB4CpBJoIiTRNRmS1l13kqWh3Adv2A8cdqqp1MB+aIOSxWv6pq5D2kkIAvt8rF7BLJksN/jMqfa7v+7/Ak4B3A6ceqpasKMq5akAmlLWY37t8ZW97PDB2qALg2BxgAFwANEGcnI5JcrDZRPlkaXL4u1KJUAfAjbTQ59x6dSvdLPXAgGYshZWR6JIRaXB/NwFI8C1WwLMXzMeSwLfcXuKrA2G+wrLCDcN/IIg4ERRn0qvyySAQX6mG1XuA4fuAbTOVwktRRr2MLCoQyvEZ/UY/WwjAj3jtFJZkU79g1ghkgEBf98+0Umb/3A2M3lkBl/fOcdMok2EjkZyv8773LAfgHDDKjwNwxEUw9yailpwdxBAEYhBbAuGzG3aKkQEJwAkCkOCjlb7Y6SYyf2UwlAS+vKYnAXjfNmDEX7DEfA5CjUcsnzvbu1nDtUMmCDkRZEEyGdlAk6G6lQTSa6m0MP6HuY73AxNTlcJLZ6WOJYC5/CNxLpHMgdKIKNl69Qvu6/75AjHOiTU87gKOOViJb748BKCWrnK/maTA+58AjM0Ao7PA6Lx/xBAupoYDC9okBRAmPdBZ47lNA/DhwMRsxX7mPgl+SrmK5EaRNRslXFQ9CKB9DkADn79cZtkHFkysJ103eBbqlh97DpmTQTYgk9VNxu+xYbXKU3lhFoJPOgdFGY+lPkgQxokkgF9Xgj4AvfoFs84eX4Ke9x9fIC+tRfDxvvniif358sSir2LCj5wNjBKAc8CIi2AxxLCzIAGY9L7AhGIKgpATw4l8wToB0JjPrfTkp+SLQbHrOqm5jNyajS6VCMIpApDAWwQ4LrGgXqzIfnq5cv0vN0ZXHTInME5GBNLb1DGdOYQsI7AfGKFjlgqve8wJwG4T+fuFAFytXzCLb+VgWnH/fIGYfc46Hs7iHC8ZkPcdXx4VfVXJw8+cA4wIgM6AHSLKWZCTESfLfg7WsIyRF3ckiRQ+HACXkwHptyP4KHrpJvKVGnOhRF9eBF9wE0mUEogz2wC+WGI/vVxiQQIxAs9+rmHA6E1YFYB8DJwQMZl0OrLZ++i7sfT8zroYHLS9df4RACWKxSZvLXzG/fQLZqk2gqn2/vUCUQ9UZaM9wDaPeSPrC4A5C1KV+NITKwCS/SiCR/jRBDlLmP7nHynsxno1IPwJSyRpbiMADXzuPDYfZfBTEoAmcuVQdiaW0zwXwQsCYDYmMaDA1wG8TBSvaoR0G77EcGSET6hjOvVApfRPAUN0zjr45JzVcSqiTxD+VeGzXku/4Nr7JwDJOkxFIwt6j6+RqUrlkO4bXzp1gCAAv04AzgLDDsBhKugLFUvQUhTwCEKbnKCw14HwJ9cDgGQ9WegRgDI8XEcVEDvAl7lVlglAgi+I4CR+Zf1mLGgMmDFhBGFfDCicRJFERviSABjLS7FC0MFKMU+07wOPE0kGvaoQgGvtF9z1/iODkwn3VWoEXxres5ib9xx1wZufBAwLgAQexbAD0JiQwJOuJBA68/H3Zhk6+3CifqqwWNMKN8wjKgbk6gWJgC+FMaBb5vJVmsUbV2vCqo3cRWZcCIACoax53+ulkqNd7iqOcU1WcC9cxEm5kQBUdZ+sTnSL/jEtTWngi21jhJNJBivZBukXvOL+yYBkcOqxKjJ4AGgxzMrBVwdAMmHrZOAYF2l6y/mwV6xD17zmWo6MbRyeWtOHwxJ91IIhr6rqZS70DPPLXDVUrfBwzHKr1EUp6/h0T/6L/GcCqslt4IhoTcwdAqDSs7I60WQH6R329pHuFyuXDJmEjuOSbdB+wSvuP5bGUjmsA5XoUvcvBXKKAQnApUdXwah0b8jXR2YzJTsC0ZHB33FL+2yiX3h/1YeD1fFZGT81g/H6yqkVa9YEpqMhTADle8erHA6t7Mh6j4ZBXdBGjFyO4CSIm9wGBiBvgqxwIAJQlXIyEJLyI/i0SkAG/FbhaEr6BXfcv+5dLKhCg4z1C1HEBJ8+BODQGZXfk/quAZC6ketAZEQCTWAU8PIJt0fgwHzZvVWNaKqi7JLOmtDWFy42g1FxH/XfqGkII0C+a0tnDkfsGxQjn3VPsk7tXmuy+Xp0JhtoJosAaFcUAJUYKiYJxcqHqKAH9rPlG2cMrmCUbMX9guMLpGTcCMKDlZGhMK8IPnPIn1X5PA2AwegwEEYmDGBMjOI5whGQP3NPBT7VJlRNaKvF4t2IWHbDErtDlSk1p4lJ7/zd246tglGZryIfrFhQ7pU8WCAX0ZENG+57U14Z4YrCeLrSxXdev6TfLwrbxT7znMrfKQXfHLQCnyvmRIv0Q3430ezMmL98P393G3wqz6am1NYzzoGn+svqRmTAU2citctqAX/2EI8F9ACEmLHXLZGoFxtSl2xyK2bAYwrj6Xr12+1noL/jUTCD9vvFrn6u0v1/nvGkaoVBAQi0eummMAuXQHMWJAA7gCixG8U0gFfcXdlBKk4Z6zELgAJfZEKrxpC1xOIl/+Sk7jkcdYlSco90y9+gK6vJrRiADD0piad7RuFo3udNCgft94vCdrGXn+tujgV3QAcHLcFnroelivHkchEL8ue0uQ74S3eubAITS3IQhKkMRjBMokgWG3L//2z3VSnP4VDgQWxUEEUxAZFHL0eR3HDfm3IRbDHkBfF0zy4EIKNhSvr9goGEBdvTz/MIYQLQdVsTwRTFDj5jQmdArRDYJQNDSs961R3tPhx5NXoVgoxleHnarjohgLec3D2HI492yQNvIwvqO9fJm9zKGbAwnu6FhaP5pFuMg/b7tTbpBdvTz68cz/zI8azVj8iAHTqgmFHXDUB89R2dtaC7tUGw4kDOgFb0R2wYRDGZ8g9O8aU4XwPOczhiwGlMjqqLWiFYGu570wADFsbTvaxg8nkow7E8nM/atfKzln6/1mS4YHv6BQ4+Z0BbqHcd0NwwYbVD3+1yWhXJxPBrbq8AqE/XApSqAxiBV2MZ/54DMOZwKE00rnDUWcR5KiV/brjtSAMALIyn+/mCyeehjIYp6fdrvVELth8RAClyHXxmhPi6r1m8FM0ucgk8+y4RHC1kAK/5XgW+2hZYofafWcPq1B5AqDqEYsQ3nepR2gqhV2yiol1COkD0C+aOaoGx4aL7DQCwMJ7uVwomn4fm7VrX2u/XAlELth+5sHPtN+l/Ap6sX2dCsZ/phZkIJgv9l++1wbcq+2WFv2NXIjNKAPzuw7MUAV8DTuynFIEsQy83RgTAhiv+NgBABaQOGE/3mwWTLwAqHnaQfr9GnwUbARgDNBUlkpzQboyYCyYDYdILdf0l4NduW9kGoa4geNdazLElKoA3Prx7DofiETtC6XvE7hGEzJlpcis3Qgrj6d5UOJoYDcMglrX2+y0NPtl5UZUjkfx/Hqbecoe0OZzdF1gHQrln9Bhee4s3f3Zxm4MvAk9VSFdUIw0i+Q2PaBtISiBSSFgCYMjMW00MP7pwvvLDmwFgQTzdHxcOSGvBg/b7ZRZByWYAlOERluKM3Ra9CKWc0q73dTBhMFT4ZwIw9l5Lrpes+HjeBiGCUOKXeuBvPcKTiEIOR0f+RhDBMYi0Lhea4GTaa5NbOQAVDzhgPB1La5RssV3rIP1+7yy5OAADoAchEHBkFbKfGRpiweAPtMs5IFNokyOGk/7rAYC9OhBFwNXVY1at5tftCBHaWVS2AJdEcEinrDNC+Lumiyc1B8AB4+muLARAXTDCWvr93lR4/Z0Xt6ODFQkj8WtumEwHTKDLQejAfN3uds/dfjoQdatGLxb8jQBAYz6/boxiFgAVudzNIc2/s3xLk1szAORoB4yn+2DhaATAGJCtbpkCYq9+v4V+aBgAQ4i66XtaC85YkDog/zdZvzUgfN1N7a633Xqv6fe9msDIHfNaB6Ay2JRE1AHAEDIfI5nzZCLeN4Nbm9yaA+CA8XSsul6yqV0rJ2WQfr+splCyCYBR/HJyKX4phs0PKBZ0lqOYTpvniAiUAmAd+HKjo1cvDjHgr+3wPJQsVCymUZrPMuRsRBDG4AQCsunyJtFGHwAAIABJREFUcc0BUJlxQoH62q8ST8cggpKNAFRGwCD9fkuvbwAkyGgJE3C+Nz1P1q9/T3F1EZBxvZh50s6AEYC5yyUHXt5/Q8zI5/KrAmAIkkipkyGPYwXz1aRT8v5ZO6jJrRyAvKOvNXlLazsXs9bo/ztc29Pohgotp5J49Rcj/pzfIwGS//3OM4CNd1dpntQpFUmjEH4LYIgnyn/OLjL8FeDGhwJbNgFjI8DIEDA8BAy1PFK7FSKf43cNKrvHx+8C/vmxwMgmYHgEaA35J0StpvvzL/nP8RbLAfhyT207TChgDRiu/ZL9DsfWNABvYzbhCDBKoBAk/pEobGWTqp819hzQ1/0k0PoaMDEJbJjxVZFgDad0SaUO5LksWVj+XScDmw5UEUDJ6U4d0nVbC91S3ovfVHp5al64cgC+k7mZAP768KCA0WD3A/ieLz090CDceVmlAuhBljLgrfcAw6PAyDAwPFwBkCAbItM4a/FiNtERjBl76W9ffD2AbwJDdwFj+6syImRXrd5Y2FjIYcnzWPLEqnsfC0zsr6qBMQmfIDR/pyJ6xMhKyMrSDiKD2xja6TADTt0/AGAs1KcAUCFrOLF6tbtiRVFavT/wuMCa7MfVTlH098YBeBcwNAIMEYAUlS4uBULOmK3LCnwOPANlEIOSoF9+C4DvVoWXhvdWZVOYqWgi3vOXDUQhgieB0EElViMYJ08HxqeqnG8D4IIDkAzo51DKQQJvBKUmKACzbM4+5hUivwrgiwC4LzvjmgCh6nBcgiMTcv9Abo0D8E6g5eCjfpUA6AxoQIzgi8ALmWwC4z//DxcPPwBak8DQFDB8yJPpPZHeGCyC0KN5DFCByfh9/+OAsekKgEzCTwD047X0SCPM1IYQjCv2E/MJoGVwUUQoPboq0MdqkWVn7RtDDMahB4g+P6qhXFpjVtkDtRGA2nKjos7IyOyHFUbIrXe0FXsTuzIYfNb4O2M3ATGIYQOmPn6hG6gi3eUkQQAeAIYOAUOzALMVh2pAlESqGFBAXAYOMQVjxll03iO/yYKRAT0FQXkwZkjp1pz51LO2XAT3KtD3AIAwj4Wg05kfiuUHYlsXAJLVnP0INLM0OYFx78AzcRySeTsw2AJueI+Dj2Fne4EWKz5MA0MzDkCCkAByUWqsJzarEanzj2zXwjEGFHuGY+pYsMojzZL1G9EBexXou339IRBrC3lJGmNDuSHX+w7WC4Cm6wWxm8DngLTImgC8pBcGBuTXf/1fXnyTugnFwxTQOgi0CECyIFlsvvJfEnh0mhsYI/s5uxFYi1xZof7oOqSAawwYjRGBzYGXbtWXaCIrlvHUagX6SP/ruMVYCEbEqECXAMjfree2HgA0ESur1/0vtnNwGSsG0RsZME20/+/XWH6Mugk/yngPAGy5GDYALjiIHIgRUIrsZjM7Ax+BSx1S4pfffQVIep8dL7dMDsTGjJB+CvQxTHmdtrw4l0CovFruC2NOe975egDQsCXRK/eK634JhBK90q2C7I1i+Gt0jxF40k1cPJAB7UP2m3MGJAAFQrGei9iUTH9yBUDTHfU3B5+BOIKQ43BWtNtPcWIOzEZE8FoK9K0DCGNxLi3FqaKA9gTgeoFwPQAoI0OulWT11oEwiFz7cwbErzNxWtEYBB+VY76Vh4DWrH8IOoGQ7Ocg1CqMRLPltmxvs1/SHaP4dcAJePYyyUCRIzrTB8tE8FoL9DUMwl61kQQ87Rmy2PS2rgB0a1ci18RudEJH57OsY02y/+83/sZdBKr4FXQTApBvprGgQCg9UEAM+h9F6ugJDkC3gJPBEvRGrYoYCBX9IxEcS5K4i6cZAHIw8oXQ4mLBb35YH5d7OekadtTV1UZSjaEIPH4nQzYNwgjAHNwDuWGYpZc7lzPfX1cQur5oBorfzDf+zi0yVTuSkuxBI2Q+PhQDIUEnMLo1TBCZLufGw/ixbQa0KB8CTODjPohdY78IQmfDjmW7Yo/doAX6GqIiAtDHaYswSmeMubV81kp11L6hy2PdAcgblfslOKC1IiKRmyRxZgV/8++DS8BFrxXi5Hd/U6MeSKdqEsEKhpBRsgRMbAtuG4KU/+9ry5brzP/lPVMv1EPOQegharrVcgZUhVHFxNPcp9VFtlOWkL437C0WABWypFRGsV0sb5Hn2zYBwvUGoKl10v1knDgo0y7XA8Pfv0UACnjaK33Co9gJQAOe64FkNvtZAHQdjz9v2Nz2GSa3jYej2W3KGuZ9ixGdIVSoKT13B2s5AHkGheST6qn0erHv5AIgAAU+LVfw/wq3CEAV7clBKDDGZG9/5oVXx/oyYARczcqH5GyH8eFplTawFvAtrtXLGpNrQDGbejupB3omlIHQGc/ErzOcGSRs8zrhAbbuL1Tco/JfbLlNwHOmi2kIcs3owbdwNpYtynDQhsFcgvuG9/YapGFvYX22zZcAU0/GwA2LJ/4AmGF9mwEbBu98Y3cMF+uAGQCj2HVp3BbPuo3IlqxAy5wHAq4OfARmEBXGfNIBa0BIsG0ecwC67merHgRpZLwocrWaovuTxew/V0txJQ2DWeae3WAGbdhb2DB4+wRw7w5g8Qpv88liyGtoWHzMi4C9fAEHbBi8kwUKu2xNAdBxaGBLbJdZux1LwAGECYAEm6wyfpelJrEgFnRDxESwgyUxIUsVMwjVy5AYO0bG89Auu1/5BF38KqjBHlUAYXsteNCGwTeWNuwtk4JMkrlzGNizA1hm69g1Nix+zDOBW0aBeRZZGqBh8M4emfWNADDT+zqMjQyESdQFHfDbZECCLRgdHeCTe8CBaKJY1rDnBRCIAuGW4TYAZeFG8ZuMkGiQ1IEwGCJtHZBmy1obBsvVMnDD3jIAerti3LEBOMjGcOpa3WfD4ic9t6oveDtLfw7QMHjnH6wPAybW6yaG4+8D4HIQfvtDIVtLejpBFsVvUI7NIBHw3DUjRzL3rDVtsYPOkAScuX3coNDynT2VYJCkn+PjqvUD8hVbS8NgjphGxcANe8sAGNoVY/824BCBtIaGxRe8pLKZdpMkTvXiJ2toGHzSNHDPScAyq3er4qPyGaNc7JCRXWLT2TjwGmCOeQashq6+qSpZmp8vojQpheF58ncdZVjLnjWPHr4VWKTKxrHGUqq97qXu3jp0wPy+eEC/DYNZsZAO6IEb9pY9lNCuGPcNV830ZmkM9dmw+OKfbdcXvJMPdY0Ng0/7GnDXKcDMccBS7MwdKz8KCAKQIgY0MWGCtr4TOHAasMwOkTqf6unyuLykfd254nkb7qsw/iVg7jhgmSX31Vpd9yRHeLx+zRhjEGRbB6wDYT8NdymyubzDzCCGfpMJWfSRYfr9HP/aMgBm7YoxNQHMbQHm+ID6aFh8yS93tAvGQb7da2gYfPoXgbtPAqaPA+a3AEubgGU1RM6B060fgkRoCzj+TcD+04CFE4BldZdRc4/YxlxgjJMewSiwN1zWfsOngdljq3EmY08vm5i/7j5yIMqpvupKyGoNg9lngYosl9wY/0dZdrMzYl8Ne8sAWNOu2MA3zw/F2CoNiy99XbvftrcLriz6PhsGn3U9cM9xMODObQYWCMANwPJ49UliuW6SaqqBn/gGYP8pwPyJwNIxwDK76ahDeN6uXYCuYyABkEza4LbpY5WEWdSLxjF26/dQB0SJ6r4ByAN6NQxmkWcqrnQ00x1DEDJFjR8CcNWGvWVPp6ZdMQ6OVOCb3wAscPJ6NCy+7PerkP5Q3tBY1PrT9tEw+JwbgPu2AlNbgVkCcCOwtAFYcgAuiwWlM/XqDjMEbP9t4MB2YO54YJFMo/5gHIcALV1TRZ17FXOhPtvgtvkqf9H4kvHDlyKK4l6VzvVSBF22uwjOb7pbw+CfcwBSkyeFEHAUx/yw9JTyEbo27C17Ol3aFWNuAlgIn9QxO2tYfNlbK6MvaxeMRYquvL9rTcPgJ30TuH8LcHAzMOugX3QALo21WXBZLEHwRF1OgHS2eOgbgIPHA7PHAezNu7QFWFZ7JnXJ5rnqxHEulvlzwyVNN3+wern5Yovl7SXLGwvn4riLWO4fgMRJXcPd/+pmOymELEhRzBxJAo9gVL4kwVnbsLccgHEpWi3epocCAMeBRU5eTcPiy/6qtl0wpvhA+2gYfO7NwOQm4OBGYGaDs+5ExYDGgqP+ccAkINaVpB8GTv4d4OBxwNw2YGFrxYCmV0YxLNYheCXau7EhV3ga3Lb8g4+R45uoGLADgHWqhsBXA8K1AZADyRvuvtkBSArh+i9DsQhCOtf0UUgW/7aiYW/Z0+nRrhizoxXwFhyAi5y4rGHxU66qAFhT3rDSIVdpGHzencDejcDBDcDsBDBP1uX1CMJRwFiQIBzxieL3KIY1YW5MPOxNwLRb8gs0aghAss1GZ1O+SFHsdRPt0i/PLHu++dFb/x4mXfhcbWxhfCtYMFr/uWvKxfDaAcg7ipPCvFOVpuo3HrCjYW/ZA+rRrti6TS6MVQ+L4NPH2nx698GnXF0BsKa8Iab4dFZpGHz+JLBvApieqAA4J8CPOQuOBBAOV0CUYbIskRkAecrvAdNbXc/aDCxSpyT4CEIyTgRgneiLIp3nP6fs+a4A4N8B8/48CUC+ZGJA29fpuLmxJW+5h5kNFg2jiWHSi0r0Uv4pCoZsxw8DUfnhd4Vk0XGdGvaWPaBV2hVjdjgA0BlpkQ/K9bmn/HOVqtClvKEBqlfD4AtmgP3jDsBxB6DA7tdbcvYzJvQJkii2n4NOeMpbgJktbYPGACiF3wFoEx1ZMNe/4jnPLXu+KwD4t/5SO/iMBcXuesHylyACMBPDgzGg7opM8mEHIGdwrfGA1rC37AH10a64Yr4APvvOSdwEPOVbKxu+K2pdKRTmdI3dqkPPVgbSTBGAY8AsATjWniBdx0QxJylOFCcr6HBiw1P/CDgU3EgEIMW52M8YkLolQRddIN1AyKWiBretf9MJQN6HsaCPxe4rvgDdHOcOxDIAcmDFDXvLnk4f7Yqt63gEIB/Yoj+4p9xaAbBHeUPM8qF2aRh84QQwNQYcGgdmx4C50WqCFngNsgSvQ+Dxu4MuiawhwIAXVk1O+e/A7CZgThY1dcno1nHL2oDIyZULpBsAFTBZ9pjT0QQgn2V6ufRicS8QRgbs5ZYpEsENDejBfpoLrwAOjgIzZMBRZ0AHoUC+SOA56xJwNlEyTFw5FxBPeWvlzpnbANCdQ1eSGTRybMuydgMggVBsKmtYoC6Mt8znZxsZMLzAxoAOvsh+ydDqtXx4FIDl8L/omQ7A0QqA82S/ERdTI22mNfaTuBIIxR4BhKe+y61punQC+MytI/Zz/c9EuvyBeetLAfGZ5WOMZ9j2/gqABB1fMLsHAVBqhfTcyH5d9MByEdzs+B50Z7voGZX+NzNSsd8cwUcG5ASRKYbdHRNYwhhDIHRgGmO0gFP+HJh15jOXjnyKblVT5Cbfoq+yJOszF8P8+VnNPlICkMAzds/YLxlYznrJwIpO6egTPMqA5ZNDAB6iCCYAyYBcBqTRQ0e4630SxZyQJQIvMJ8mSeLrYe+p/GzGfnTpEIBy6US/out+K1wg+brs88rHmDOgAVCMnrEfxxMte1Mt6j7u9zzKgIXzczEBOJIB0BnCJoqgIfDEhM58SWzJEPGJe9hfVH42un/Mfxl9bgSiBySIBWnAJBDGEDAB8QWFA8wO3/a+wH4+rg4RLPYLul8tCI8CsJmJMQAOuwFC9qMI9g9Z0CxhZz65K0wfFBPqu7PEyVdWAOTHVlTcpxhXHZLz1w0ZA6EDLhkCskRf0sw4dRYC0PQ/vVSRAYPo7QCdj7GqVOSMeBSAzUzMxZcDMwLgcKX/zbv45SQlHXDIgagJc+bjZBqAWhUoH/Y+B2D0J7rFa6LYDRmzomsAaOeKqxEvbWacHQB08JkRIteSXiSBLYJOLB+X4xrzAzY7vgfd2S4RAKkDDgPzNEAIxMASSWF38WsgkuXLyXTRSRCe/DduSZMBMwe6ObTd8JBj24Aot07uDObPP9XsIzUGFPs5+JJ/M6oT4buxHv9X7BeY8KgOWDg/Z58GTC9Xq5FxTXOw9c3Cm6k5fPcjgbHbgAlvVG2tH1T3Oavoq6BlniZ+12n5u/2sDbOvasqoFg8x2Lnbcd1GdhSAhXN+7qMrAC4sA8sORJ6yHwD28z+Ft4fdv8UyqUDrDmCEBcpZ39kLS6aq9l4D2rLb/KYsFTPWdfbvh86vQu2s1K/K+zIjTsXIVQ9a59Egs4Y6sZfIA/EcSp/jEXv8BWcAhxaA+SVgSQAkGAMICcwVlNLlqTc9Gbv/HAA7MrL4+f1VlXwrUq7SvCoyGcrrWpGhuur2fNGYwM8YT67hT3s1LaZvqn5MLM0bzmHMmIFSgdFNj/mIBct63NhFZwEzDsBFgpDPeanNgATfCtGsX9TIKwNrg9tuVkhlng7TI/YArX1VkXKrEe1l2SynN1RCsFJsqnQv3UIMxhwIRjU5AGN9QUteVz3BUAvahuNgjC3HxLAND7nBp/cgONXF5wCz8xUDGgCjKPbvevlzcKUHH2ag6cnYzepYBB9Zi2FxDJdjoXJv1WDFiLJ6MKqKZUzoQFTfj2HmwTKcTpVWvcxHKm6kKgoORAEvVclPD6NdzLXpMT8IYNPcLV7yJGB2AVhYrAC4SNA5AxKM9ryDPE5fs6eeVKWGZ2M3S3MQfEyJUKV8L1ZpJXpVJ9pLilmlAxWkVJHKwIhjjD9TtVXVm1HdOy/pJiaMFRWM+bo0rWl4yM1N7oPhTJecC8wRgAttBjQWdBBGESwgSiV0Pb9DRgu0TY19N+M1mRKh8niqFx3rRDsLqjgl9yaGXT80vcL1wnE252PAZCzAHQCoiqoW3yYWFIt664fUpKaREr1NPakH6XkuOQ+YDwy4FMSwgU8GSRSz0UJx3Vx/5vFNbrs/EiLRY+v4ACITww6iJEodQKwBIyBRv9vwhKzUW6z66TUGEwhDS3ezqusAyNxnJn8xa1KRPSFts9YfFB/QDZcAm78CnDBT5U8rCqjfc3yh8Gn/hGd/MsKf1+QzYJ4891Jye13iy1cAE9cDJ+6FpYrEkidxDN3OtXR+FwBGMezoMmxJLOumAuD4J4rxJrfdH/XCoLGFVKiUbw+LAPQqWWaMMLrd6/+JycSIm85w9lOpt1j1MwAwFTiqAWEUxeYH5ENn/jInUVHeMXQ/f/jRePvCa4DhTwLHfBc4frGqqaNJzLPw6iZxV+HTplFGvZrXZT45N39+HW3TujlZv8D6fp8HRq8Dts9XIOR5YtakgBgdrrrt5Qsq8Ssd0BhQ4HMwmVitAWHAY/LbLDQNQDaTVJ8Q6W4qVB51OOqDZDPVB3TLOBepW5jmqaLbec3jGgBGMSxvvemDYkQ9GoKF1ShUCSKCqBeQrvmfVZPC1keBjXcCmw911tTJ8q5XgOLaQgA+x/OdWA2EGZ98gbjleTHdQHQN+2iwls3nK3/Zhj3VeQhovYzdxmArSwQgDRA3QiSCJUrTnjfl4KozRCSCCeYmt90EoJJbVCk/1+FiCwFZxLk4dRfLFia6x8LbYkD9v9cXtLG6+O4AYQRfrgPygVIcqyhTXcWFOJH8fh3rz7EKwnUArq8mcGwK2MCC1i7WY7Zenh56feHT/jE3yliE4TZncd636gPFCKWavGhcRx2J+cvs9MlSw0Ty3cCm+c7n0G0MExdW4BMIbTXE9UCynvyCCX+Ovm4gbByA/xisVgJPpXrzLj4EoRJjJIZrWHArS9iprK+KcefgiyB0XVKGjOmCmW9xhRVMUSyRFnNeFGEdI2q+/HFXclkp9WsAbgTG9wGj08CI64WxRk/OTDcUAvBHXSLQxcVCDMQSWbzv+1e7WVbz+k5w2tJtsbcCYV6WJY7hmAsDA7r1Sz3OgOgoM+KTOJbcjSI5yGIaNE1uuwlAAU/MF+tF5/0sIghVLdVdM2S0bSzHx2Mi+FTxXf8X925NC4BycK8QwfmgVX1LlcFiykEMcL2BndJJ7aQfijKfxLGDwAhByM7aC5U4qwPzNwufNnNuOH4VZaCPlPo2AahqFqoPVFc14ga2m+WEEL0cAz9kdPrOmMu8r1o/rTsXz7f9oswFs+jO6LAqkvC3Ggg5Fg6mwW03CUI6X12h8lyfcz3QHqr3DIl64DbqaQKc9mI87QXACD6vpJqY0EVxz2CEyCI5eMSGX2e7VtI5J4yTRyZhscrvt1nQuivOAaNLlYESwcySgiVbr37Bfd0/u31yEgg2FVaiPCeVOguqAfGov0iR0R9JABJ0bnwk9nMxw+fOh55EbgRhzozrBUA1polN9CLwok5HEEUQBjFMQB7D+j656PW+IrJ8O/bBCo4sGFdGejqiyYCx3mKe9/JtTiBvmI5OFiTisg9LtJFF7gZGDrUbHKs79+hyu5hSaUvh1foFr3r/6vZJCiXgCDwVVFJ7MVmRLsrGltuFCc68yFdACMDAflwR4QM3HPoKgIExt4gz42SuaQb8hBOE2oZmlu+KFlKR3QSssMJxDPWbbjpfLoJrxG8CYT8MKGZSVTCxYFTIb84nkCxCIPLDiby30gXFghaF4c2ReR466Uu2fvoFr3r/fKAEFxvpqMcd9yonIrkuK5LLV7MVCM+/uDJCyIC2J8a0z1iwqyESgMl15Sa33QKgmtPEBnp11mwuXgO70Ud4DHWzfgDYC3zBEOk7HlA6XKyHQzb8HgGoCSQLqsxorIy1Bxie7Wx0rFaf+wr9Xv32C+56/7HbJ5VHtRYT+GJrsehHcya57PyKAQk6+vBkBZPpjPEExlwU59awg3C24W6KBsC6tqHR+MidyVG3i3rdAnAsH2T093XT+zLr197MTA80h3SfsZP2UqpCrPQ46oF317VrpeiKXTJ9MhMLkgGdCacKG/mupV9w1/vnwyGgCDCKWzJe3lqsyzLWZWe6/kc/oKzgKH4jC7oolhdC4jiuzM0WPo+cPQ2AsX1obFCTO5Jzn566PwbReiwnfTWjI4KvDoh1juh+aT+WKSYD3i8Aql2rJk+VsVQly5kkddv2FvHT61icqO7Fr71/IkLNXOi0FQjV0046oBy6wZ922Q95ICqDEaL4XWw3COcf9Mw73DFB9AqE6wZAAS8XuzGQIDKf+oVkqxt00ttAc+YT0PJ9qRFSB8xoye5Xu1ZVeCSgCLbYLVNswoncHxoeLwCzBGjBNki/4BX3z9lXgUCyIIGmhova83cRgO5Te9yLgP3MfmsBS8xs8/U67ePQOqy9umBUruDchqo8sHSd3PMfT5ifo+ack8eFHI6QEcnT5GvdOnVdXof+ptJ+BVPWceiaRHA8Us/nkACo8mzqlqmWrbFDppT5A5UIZm7CPA2Vgm3QfsEd909kKIqB1qJAKCBG8ZstZz3xHOAAiwmpDIdng1maZQAkZzsHZ537YfQrwNyxoQ+HakrnS0h1mUA1C96TdJTmORyhC3oeqdwROi+GDhkFI6bYNrcNDEDeAkXwQizPRpmnIs3OdqZPSaRFUcbchHlgie6agq2kX7Dd/+d8lUJVXuUzk8ERmS+2vfd4uvN2VOV5rSwb0y3JhgIh9wJeN3YMQCIgR78Q+nDEVYBYZUrUpbXFnM7COSdf7N4IPvtDnT2BY/h8Chh10MXQeYGS+7GGjaQiABpuNIFiECnzdWJMIUHcazLptC7YivsF8/7FgLFMqpiQL5TuNbKfA/DC46rqqAbAwIKWK+timRUBEiNGsOQsyQm+Gpjd4n046hbT84KPuYjOmHHyp92gcgDS2OoIuVIeh/xyUkaVwyEWdLrewHE3uBUDcKIwnq40HpDXL+n3CzbaKdguel5VnFJl2awaghLQBTzteZ0cjLq2A2n0M6EPh2pC57Wg41poLzZsAZNso0Hw6eVR/J8bF9YjWGmVCpGKwQLBRCcrbiSxNLgVAxCF8XSl8YDHHFPW7xeFBRwv/rGqOKUBkODzqgdWPYAM53vTASMQu4Bx9J+69OHIF+N71F1O1gUB+AsBfFqKC+4Wi4BWX+CYgOTAU36wdMVNVKka3MoBWBhPxyiuko3xkSX9fvGMkqsDlzzHC1N6SQ4DoINOe7KelWWTheziObeKCdARApD1AdVnRH048gKUAmAEYi6Oh4DJV4VoGDWqjq4XLbO5o1jBoimEPhPJmwu9FvnTLgdgYTwd2wyXbMyRKen3i2eXXB245FlVYUpVxUpGiLtmGBlrTEhVUwV8dEkVKAq3MHJ1uzRbRx+OOgDWFX6MsXJU/36lJoEoA2AKvw8+uwTEDIBbStdOs8ddDsDCeDom7ZdszBIs6fcL9ror2C75US9IxJJsEsHdGFBil4yYuUwknofJgF4XcEUfjrz+X7fKo4EJJ//PkMORO6FrVjQMeL5kJhZMMXzLwNZCt1nzDFgYT8cQwpLt4hDON0i/X7ys5OrAJVe0S/ISgFY7j9ZvnQ7I3+lyqpYaL98CWp/N+nDkZdhi6bW8An1kP3fRTLKVWlwF6RZCH2L4zDDR0k1IqeTNb2OQSYNbOQMWxtMxeqtkY6I+ny9VEz6btfb7xc+XXB249AoXv85+tIBVgJJ6n4lf6oV+mfjdDJNMH0wAVFX90GMk1f5TxlS3Fggh92DyN0IORy5665KIfCktsl+K3VsGtpVOWOMiuDCerlSnjQ2rB+n3C+pIBdulz8wqonrNPLKgwKaC5B3s53qhXVq6oDNg6sOhqvqhEr3V2VNLBjmnSSNdrOLJ1zkAu6VPRjFcFz4fXDJ8i45hG94Gt3IGjOFYA8TTlQZ/qGH1oP1+8ZtlT1MAtHK8mQg25zOZUSCLIliWcbw8wfW5Ln04ssqnHX04euiCk6/3de66MPpuAQVZAEFkw2MKFw6a1wEL4+lSBvmAOMhD8vkOkFX77feLNw14YT/ssmc4A6oOdHBEkwXlgjH2k4Nal6wB4fIuX9LzZjAmorNeHMo5Tc0OewHwDTUh9HXxfGJsYkAbAAAgAElEQVS/uvCpoAcew6zBBrdyBlQwwoDxdLZWXLDFkHyF8xGE/fb7xR8XXByAAVC1oB18HQYIT+8uGfP75SCUs1o64he8v4j6cIQ+IqkPhxrBCHjdjBH6AblQkAeY1ondukSiELmsUPpjbyp7XuvDgAXxdNZVvWCLIfmKg6Bbhrjup98v3lVwcQLw8gqA5v9zC9jErutltg8gMxDWWMBaMVkmANWFyEV6R0uH2I1IzW7ypbkQOTP5f2ch9KsFkwp0kQlDAOmxzHpscGuGAQvi6VD4RgmAg/b7xZVlT5MATNXwqQc6KGwf2U2uGV2uzg3D4ua7fDnPwZcKgIdq9GaIBPZb0YdD7hgyIFWMXiH0eQ5vXS5HcMkc++9lz2t9GLAgns7KxxZsCkgdtN8vWD+vYDMAUpcja7lOR9eLVcIP4tcuob/3AOHCdW02VTX62ApB4Mv1v24gnPy9HiH03fJ366KYHYTHsgBBg1s5AxbG0+HLZaOp65i+ln6/YM5EwdYBwGj1cmUkE7+8THLNdAHhwrUOXtcrO/pwhF4cct2oN68BMDCfmsJM/n6PEPoYPp8bH3kCkbtjji2tJJA962YAWBBPZ0WBCrbYsFoOf9pDAiENk179fkuvf9nTXewKcBSjsn7ldonWbgQpx+26otaLIwAlfi2QQSJY3Yjy5i9dmsFM/oEDMM/Z7Uf0RiYUA7J+ToNbOQC3e0WBBm9qLad6HICG1ZK1XB5PoxnuOOIcxSXe/Of8xHV/P+FpwN47gKUpYHmuSve0pKZgCKSq5wqniWE1WZz/xouBm74KTMwBI17lVBXwtWSs+8/vL45Ff3vhpcAnvwos8d48DZX3M2hx9XIAnu0IIO0chu35AOgLL0yuG/jOmwbg028G/mNz1YWdETbm4I5BrFlov+EtD2wIo7l+Atg8D2xY7iw3V5diEqO54mnj6XdMAYcU+6gon7A3NSO2qFjlyZYDkAX6uD5Iam44YaUfVNDNxaJcLIPXcGGpfi6PnZdVD1wPspQBX/wl4OaNwN6Jqg+xwrxslcVFuYJblehkcYYZGPS3L20BxueBcS8nwg5H5kZkx6TQSbXFZcCQKadx5Cz5mPurAFxrRaa17pAR2PFC+ElSHKQ/0QjQcgCyGyM9v3SnsDBRJgL6msWCf6IfWeUJac8UFlpY8500DcCfvgb43hiwZwyYVhd2D/VSrKGAmIDnBkiafEcN9cprHgKMzgNjS1V7rRjRlceyrqif6KAkMgXIM+6tAnDl+zSL36O9+U8p9jGHQo285/2XA/AnXeNnKAorDXH/AILwbSvLEz6Ql2+cAf/3XcCdw8DkKHBwpOpFbE2wadzIdyh3jjNQirYWEwYq+/zJwMh8pf+xKNSwM6DZMmzNRRbM2K+2Ii6TlFrAWfd5V3i/F7IgT2LBF5LbIdkqxLPWvtzlAGQ3RpU3Y7AiixMxLOUB2t7pKQ8M0qCTnp8HkojJgNqaMEJesQv4AR3Iw8DB4QqAs+6SWRiqgJgY0HVDAdBA4Ba4xN7ndlSFAAjAYX4IPO5dBDMAdS2i+Jx7XTf1eEdTDfgAQnR34p/wQkRmjNAoByDT/ugFphXAmjAEn8qaPQAgZCs0lSckCNmVigEbFMsPBBE3DcBX7gLuawH7hoAD7EM8DMw48AhATrjtQwiXoqkTEwWd7LOneXNCbz6Tiq/TInb2M8ZzIFrTQbGiy92oGz7pXl/7jvdAJnb2470IbB3T77Sai+hyAP5voTqW6sKwFAc/TAdc5+3dvcsTrvPVYSK4SQb8xV3+6IaAqSHg0FDVh3iOIFTIFxtit9orL5Z/LD1Q4s+B8OnHVuXwhhdd5DoLGsgCCJ04q66X/Ju/vSaeAxDPvbdtmdtKDV90gVEPIl/xySkviOhmAEjrlzSkwj40SlQZYZ39I+8JBMx8mZryhOsKwqYB+KpdVSDFvhYwPVR9BD7uyX4SwRS59nNI+bRck/DzJ05v12M0nY8fAk8iWL5BB5qASPGRCi8EVjzv3mqpkC9ACrrwhKukB67GhpqRRowQMqCiYbj8oOoHeUWpdYIBAUj8c8WjrjyhNIJ1unzjDPjqXdUjJAAP8TMEzLYq9uOHICQALe/EwWe+QgddAqCzzD8+vgIgg0qp+5nYjaDzCgjmnCYone0klqP4JSgvvK+6LoFPoFMlkPGh+0rPWta4RHTNJJQz4M8EAGoNTPVU8opS64CC9zoAWTFChcq7lCdch6s3L4J/2QFIEBKA1P9mHIBmhPh3Ai354RyAAmWsR/PRs6vOR8Z8FMPS97yxtIlYgVB/I7jC0rIKSfLXF1EEB+BFFjQ3jCLA49OWsRTTEPzvzQEwry7VrZ5KwzAQAPssT9jw1dcHgCrORQCS/bgn+1HsCYQSveaHkzvGv1scgU/6R55Y1YIxhvOm1EZekQWl8wVDxJgwc88QiJc6AKX/meHDawX9z16M/Em7bO8Q08GBP/jEkAEVjMBoAFWXUjRA3KtNwOBXW3EkAZhrALktpC6lKtTV4OU7RHB+3kHWgv/zrnYZl2kCkF4uF8MGQGc+MqEYUCA0n1tkwxbw4ScHAHr71Q7W4++c8czwcBAmHVB/c7Bcek9b3FuwbdD/kjGWgzJjQ3thGmVA3jhfOyU+RxB6FamOFp8NrhsTgLy8Cpzm5QlVptAU+6CiNgXCaIQ0BcDYV8b0P4pi30vfIxD5+w72C9aliegW8MHzqrmh/meuFhYi0pKbs6D9fsh/n1XFMrYMbPgUByCZz6J+uEknDA9AornWFRb01WZEsACoHhOqyC7wdetT0QAK2KqOb5MCUvPyhLE0oQxzqaYNXL5xBvyVXe12vByLADjXAvgxBvSPGFGMIjCmJbEW8HfntxtQmxT0cmxp9UPAdKAZ1upA6EB7qgDo6oCUxXRtPVSpAwJpnUhuxAqWCCYK1MBExZljY5S8SYr+pxAFAuBayhNG26jw8usCQLX0SAAkwwcAEngyQizaXoziIli+Oe7/9kJvNk1LmBMe9ECO3XRB7aPeF0EYHNVPdT8gj016YBcWtBfBVYJuz7mF7VgGY/pO8f5WdQ1/7U67nIKNS7j0wIbDPFZsyNHHY7od/xdlEHj8CcC3TgCWHgGAPSxiSdt4312u/8SPAl8/Dlh4pDeZW2PD4J1c9+uyDaIDkgEJQKnTfG/N8nUAmu5HUnMW5ARbPfEuIHy/ACjRK7FL5pOR4RaxgTHofKl8r/S1ZWBnAGDKefbn3AFIPRPXB7sFiVQimKVgGdl5ooNwLQ1/1U+DQGSXQ9r5Evy1q9rZbP1lGQDZsPpzI8APHgXgod7qUx11YtBbFzC+/C+BL7SAWwhgdoLkONSLqy5oLogYft3ZI1F7EAC+phsAnekokhP4HIzml/PvthQWmPB9LJ7jxkcSr14jWj4/0wFlgJD5eoDw6fe4DzAYPHokWhHJZ3TFSkn4h7YOSOBwEtiMTv1aY0uktFYTmI2/43EMQmCuAJmUE0gmVD8EFdPpdnxhVhqzDr8F4NMtYM9Jfg98EVTeNu9Q2OFZBX7vr9vtgm/lcezczZ61ZNN8DCvilYCdPXqNDQpAlfGTKm0M6AA0PTAyoMSx64cRfPQHXsniOTI+fEWDFGp+Qb9BeySRBV2kpl0QxxGAlHDmkI56X6z+EP7UDYSdRgh/IouwIZ36lHabBE0GJ0r10Rgb/xA/tt/j/6aMAf+7R4CxzuBXWRGULwBfIrY6UNfpvLae7n0I+LO/reoLMqiVMbW38oUhkNkQIzZO7tIweGePcmWlAFTjAYHPVGwXxWoLYblEDkLuTT8MDPhXLJ4jALpaJB+ggU6xfgJknT7IKXIQXh4Y0FZCog+wxiUTwSkXUbSMV1rB/A31OXWuFpPUda/mRHKi1e6U+hA7Zq7l+A+UAfDtHg/LrptkQpZ727cRWOL9542Pa3rOvuOqagUltgtmJM08j4/PILbIDKz6w5PAHsbraTnMGdZWIwIzxIfeK0rn578J3LAVuH8CODRahV/FFQ/1IumIvXP1QudNfyNT8oVqcHviPcBd48A0g2RDuoDqHdb2SalZAdG9dnfDkAE0gXnH5ijWCDbKCq5/MRiV0QD8HgHQ63jG0hdsLGxA3x9Bw1Asli7hO3BwApgng/Gjvq01IHrXJ7q3Cz7E++YziF2rs1ZLZ+8H9jJsSoECWXj6igmR87aLgfbGq4GvbgLu2gjsHwdmCEIPSI1h+SkCRjpfUC3iNWcpoRrcnrYbuGsUOMBo7QBCxSTG/igxVcBIVGPWM1h1JYQPnyKNExGZMDIJ9b66eEBGxPDY1Y5nv+GCjfGAxD+DDpiawphABWZPjwNzNLAEIH4XCH0M7/5c93bBfI8Yk2cgVAdvdT10ifDkBWC/r9lGH51NhIsnsWHOfPmEUKT94WeAG8eAO8aAfWPAwVEHISNQlKQUglJjJExqC+H6Nq93kOpUg9szbwLuHa66QzFWkaFieXxi6hgVHOMCYGRuJ+5V4jYJIDKI9KlsAvFDq8QDrnb8NWVPh9EwdFkQ79TlSMIsN0Mi5s9MoOGno4U6f3YAvefL7Y7rvdoFLxOANSA8f7xSgWmd0kCQbmZ6mTLEnJ0UqWLhUkxlrBn6n3wWuGkYuGukCsufGq2iojnRFpafsU7MDxErJuZhYCsJosHtWTcBe1oeq+hxigJgXBrMmTBPnJKLrr+VED54ibHYvZos8sO+DNcrHrDX8YVVyglAKud0LtMjFPtNMz6QLDY7VomLJd671AEH4Xu+3g7nWq28ISvX58/hguOBg8vtFQvV/hEzxfqOevuTfpjri8vAWz8L3NYCfjBc6ZYHmBcitnFd06pxyb8W4gPlgonBqffTtdTg9pybqiVNBssyUsdUD7eGO9amnf3sXtxQipl7Wg/sD4A8AwHIyZMYky50Tp/xgN2OL8y051qw2hXzwRCEdT2nmck1RxHG+w5jeO9NFQBpR6ldMIMXlFWgVndqF2dVFsJzuOgRwMElB6DcI6rznemD0RnbwQiSRS3g7Z+tVIl7PC9kahiYZm6IizuLigliT/VoUog+p8P9l3wJ7qGEanB77k3VczroUToWLCsABud4ypaLCUoxf9i/9w9ADiICULrQRWuIB6w7nuZrwaZwLBGwClSqSyz3AhHbaRGEFGOmC44D72UVgjW2C2Z4lIF4ArjodODQcqUGqAxfcpG4mJVuVqcL5tbs2z/veV0tYK/nhTAqesYNHdO5PCJZos+WuzxHJIViuXFyJxupNLg976ZK2lizUKodilGUgzyGhokF8yw5Mf+qRkjdjfuDtwkkm7DTkNaBaQ2ox1q3eMD8+B6O3H6em8Kx1Ccx9ptWl9iYIUAAWrI3I3nHgPdOtsO5eOuxXXBdj0V1vOL/so3Cxef60tlSpYwveKf0pAu6ohfdJ8k4CUqgvr5jV6VGTBKALeCAh+VbZLTnh5gu6D44A6H8cVlkNK95O1WkBrfn31R5HSy+JCwPplAxRegE/2T+AloGncNmbQyogUQx/KwB4gHj8YWNTwRAOW0FIIIndoqNkTAxz/bd09XDGLBdMM6/pLKi5whAX60gCK2ujxzEAqGL2pQ1Jis5AJEAFHvTujYAKjRf+SEugm1d2COQLU/DAwQ44caEw8AtZzSIPgAvuKkdrWMM6M7xCMBoiBn4YpCE2NCfxWAA5MEuwvCCEICwlnhAHV+YORfDsWJGgPpMKwg1b9QpFnzHbD2BK2JGul9s8KkYW17vLALQRTCBpzXZpS4gtCXXMAkduuAy8E7PijPWprXJ5CR38ygw1fJDohh2BlRAgq2OeN7uTWc1D0AFNtmL54ESBsCaJcLkDajxj5ZXRiCIGA0waDwgjy8sk5+HY+X9ppUbJSCp6TnFCMXwny1WAFQ8rUAc2wUrRL6mXTAefWnFfnz3FpbagQKLAqAzoZjAKkkpXkNO5GCEvOMLFXOnnC4xIKOjnQGNdWSM+GqHQGd7JSsxUf+JzQLwhTdV4je1nQvr1MkPGtlf9yP2Dy+gAqZ6rQytfvdHSDxgLwBF8AmAYjHWluEDiKGMiqOVvtejXTBOuRSYJwDJAARgZAGWL9Nk+IM3SzgTydE4eec1nZHbtDaNAf1Dpd/SMx2END6kD0oXtFhBXmcY+OY6AFChnKnzl7NfdMR3qCAae2B+VVMYXASvDs3/X/zHJZcB84vuiqABEo0QPnhnwqQLyRURmZBPytnwHde0M1vN2lR6picoKULaxHDIEdHkW2iWg4/7b5zb7DSQAVd0/griV2JYojfpwRGEYsGBrOBmx/OgP5sAKANkcbFzNWTRnX/GSGImMYH/LYlk+gGvdT+bW+SWH+Ig1GqL5QeTtR2EYj5LVHfjw/ZDwL8yJ6TB7UU3VVoTjTYxYDK+Ivv7dzNAZIxpZSiU8jjKgIWTcykZkBawDBBnQdMr5QeTKI5iWCB09AmEb7+ucnOQ/aTPWn6wuzyS4u+R0Ob6CUGqJpIDA97AdqINbgRgBJ69CG4Jp6q/ckjXqB/RKla4WpkO2ODgHoynigA0JiLwaNiEt95YQKJ4FRC+7brKzRH9jZbN6iJYuSHm9I5iOAOhHNJfZkh+gxsBKPbLu3+JgaWDdojhMO5kkDWSlNTg4B6MpyIAjf3IggJgMD4MCARjFMU9QCgAykhSKnUCYHB9JB0wy5aTRUxmup4h+Q1uAmDs+hpXgFLnB6ULONOn5xACNJqxghsc3IPxVBGAiQG9aLeilWUJW1FvVXEN0TKp1C6At19TMSCBpz1dHtT/JH7N9yaxp6QkF73KBxYIr10nAMproB44qQGTj6sjUrtOFPtLeFQHLES9AdDFrq1E6M13MaxVCTNAXNFThIylLcor40zxtgDAPKuVwDMrOKw+SBTbtR2MND7sZwC7Qvm4wqHa4T/uIrhb+7n0EgbQdTijoyg+agWXT8llDsAFWr/B8qP1K7bT0pvtVwHhW6+t2C/m8svvZlawi2CKe37nhFtapkDnILRqBQA+v04AjMyn79EIkXO/DnzyCBwVweX4wxs9B4rRZgyPVFqykgDd+5JSpBU5r0vHyHz+jsc3ub0KABsZMCyQgeExKyFPVIz3lmcM6OfPAGCADYPE67Jfs6h7G0o+xvi7oyK4cLZfOgpsXwC2Lq9MwuuVERonKn4nSJrcXnQKcM7dwMMXgYcsVxkSebJgzOWPqdB1ad2f3gpsnwK2LXWeR9m3danUIV1lBSCPArBwtp+7DThuBti6UDWDmWA/DvXk8LRptfPtNUlihYZTOPCi04GH3wFsnwGOW6iAs5n3GeJJ+KLoE+9VDClQ8R6vOQHYegDYwuY3S6H/iJ8jb11ck0q9Qhoc9QMWgPBZJwFbpoFN88DGRWBiqQIgWyJY3lPozaGJ1KTEPh36zpTkJrcXPRE44S7g+Cng2DlgyyKwaclfFoIwvCwx9Zn3Q1DmIPx/2/sSaMuusszvjfXq1ZRUElJkKsBEGQyYhJCBSkUqAW1tsBdpuxEVaBzowXZqe1g90G2LotjQdmMjKqtBxQERdAWUAkUlZNBGkQRNyIAEMAkxpFKpqjfUG3t9//m/c/+737njPq9uVeqcte66b7jnnn32/s6///3v//++Tz0dmD0KzC4DM6vAFpd/0L3Gh6yTDgnvLwKzAWDGiH/ThcC2OWDrErB1pRgQisIQhAa+AED+HEEY6uNLyrRnZLSl6tSbrgLOeBQ44yiw8ziwfaV4UGbdegmA5QMTLFlqsfn7XecDW+eAmePAltXiXnkuZSBkRcm4UGXtU2uo3xsAZgz6y54JzMwDWzkgBOAqMMVBCSAUObh8QuN/CiTgcWAuyWhL1amvvBbY+VgxbW477paa7gIBqCnUrbUBiQuhAKDUot13IbBlDtiyBEyvtO5VDxvvVfxW/JkWNFrCeK8NAGsY7BsvKQC4hQCkJNaKy2LRIsg6SJ3IQSe1onKKC2CsOYMeN+0Dtj0ObDsGbFsEZmWp5S74g2Ir2uA22BScAJGA+dJFwPQ8ML0ETAUAkgDTPq9zdK/+sMWpPF19NxYwA4g3PtsHxAE4SQC6FdSgmGWRRIJLZJll8EGKjHiX1jwaN10HzD4BbD0GzC4WrsKMW2pNobZoCu6CLCDfCTqzgg6sr+wFphaAKQfgZHKvpRSYg7HN5XCL2AbAZwPrZGaj6ippXhgn0kqmU1woxnHedg5AATuWHig2FE1uVRwoxoX+Wcbg89S3AqCKPONcCi8oPtVP+9++G3j+oSK2xRBFDElUxbTS+3nvc4FpDsjxllXQoJg8FgdCQoGJJTTicLcQ6vPL6wbg9cDM4cJv27oAzFA5ky9/UOSvmg8oP86n0dICBn25JwjARWDSAUgBHN6vfdbv10AbARh8X91vDM2ss+NvAECKPVLCsHoyUgRqrlbnRwB933OBc+4DXrIC0IEmiLnE75di8HsyAcjzWUVGUi6uICMpVwwJVMXdeOk3XAxc+Hng+vV2esAYw+sWoP31r3eLcLwQBeQUrEHh4Jo2h4vDmJPuAyMLGAeEn7uqbgB+I7DlSWBGCwe31Gb9aL20kGDb/EGRxY6WTz8f2wtM8l4pgL1SgM8esHCvsuylME4nn9cfQLtldg6TZ0kUKorAfij23vAPCmqp3fcCl60XFINid1PlZrf41/dnApB6wSQjutUfIDJR8CGIQOwWEH7DywpKrWc8CFzqRLHkVYrB2jS2FQH5vkuBycXCAlIUUAAkCM2iRBA6+ARCe7DjYmQduLYTleiQ/XTTS4DpI+6nLhZW2nzVCEBaMLd+soIGqjD1ampdugiYWCpeBKA9bBJC9ActAk8LES26SqsftInLZ44dQif4Igdhym5WLrPDyuYH/7HTCNwDnPko8LXrBccjQaioe6BiKad3+QY/MGTH6rS3OBvCnQDuAIyqhiDkQ9RX+29yE3on8IwjxQPI8zkTiApGU3oVkD/4fGDieAuAdMw5MFQjEgg1DYsUku+a3uI0TGBfV7PotwHwaOEmbHEATvuDIutni6UAQoFRIFRYhfe/dhEw7tbe9Of0Si1g8HkrwRcevDajz07gIJ7n05rYyWIpb4ya/7vv8PRdFpj/LXDmkQLAnA4jCCOlTBRN/rFMAJKgkkVHpGUjySSBSFeg7/azqk8EgbSEq8UDRACLKDXSyaQ7Br//DcA4LSCtwnKhTEkQcmAIQhtM+Uaajl0uS9NatITXWzpzfcdNB4DpY+6nBgDaCtanYLN6fCj4u1ay0QIqtML/EYC61wSA9tAJeP6eWsAoDysFpg1eB0HIQRCIIkVeCqQf/05P3WCB+UPA+CPAzvmCaFWDKEuYcl1yMN+Y2dckqGTeHPEvvWDSNhOAfbefX0A6rS8CUw8X9066bFIfdqMHJID++DJgLACQumyc3gyAEYRRKFCLD1eu5ODLF6QvXedx0w3A1BwwxdAJLTXjd8seQnGrZ9bPFxLyA7WIKON63tYtCQBN/sv9QPm6BkLp0vl9t/m6ietR6fbyBA4gnXtORwRRpNnTtPpW6gWLH83lKqcOFTEnDiKtoHwy8RNFhrefyeztbnrBfbWfgttsP+kIyO32ELD1cHHvInrlvWs6TsnB7qAUlg/suFtAWkE55zYQ0QpqcALoNCXTEt7A3KoaDwGQfqoAOEUBa7fUbKctltwCajVbxvSiyvoasM0BaBKwwdKb9fN7NfcqBWGiSWykWXER0umeacUEonQgCKRfIgDFjya5yq8Wfsfs8dYgiuMxgpAg/vnMzu6mF0z6Zj5APdvPQec0TEosnvQosGOhaLuIYvnwEYSithE52F1XFAA0p5yigD4otCqygFKnpHUpLYP0OcKURYv6Mj4MNR433QhM0gL6QongawOg+6rl9CswKoSkEIxPyTsuAPigCYBmAXVfYcVf+n0SRYw6dP1YwNgHsgSajiJP429RrpWOM6cxDiJB6NINM4w7LbUGMQUwB/M9mZ3dSy+YVG0EoBiDBST5ddZ+PkCsAiIlQZDa3LVatJ0WXG2PbL98AB+4omB3oP/HgTUhmGgBfRqWf2TTrUSjExDSP/qWzQDgfAFAWyzR8rkFtDAKX75jo6nUguZxZ8NByHbvvqBQ36T1swcsBaBAGGRg40Ir+rt9WUDhQ5ZAU7Es2e9LLzglqHRxNkbeuW+oQRRls5jaMjnK0a9ecNf2R4LAwO829kQB3LTtEYQPUwzQAWgW0AGo8AQH0ljp/V17pm0KRcEifGuNOnocO1rACQbKPXhs8TtNwVr5uh+n6Zf3wDgu29g2FdMtOc8B6PdpFj08ZFrplw+ZA5FTvAQQ0/BT36FPDkRqBT9Jag7xYlQItY0f88j78sZzCcKPZlrAQfSCK9uvB4h577SCotUiEJ8opq8IQFl/PUBPEoBLxbRE62LSqG4dFB8r5bHcOtiOQSqT5T7RKzYDgJx+BUCCTxZQCwhaQc9oKcEnEBKknj5FsJ1LAPo9xoWWPWDy+6IIoqbeaO0VA+zHB0zxIQDKkn1GgtXiRxMIAx0Vn0Db+lkuFjLRCt5WEwD71Qvu2H5OfekD5FaciQay/GIbFgBXriwAyGmJADR1ck3DwTE3TQ4B0LetzBJErTYAr2BBSI3HTS8tLKBZPo/fWQDZp197Z3scjGb5BDp/L3+njMweB6B83Gj9wj3atOsPWin9WgXCFlVO/3ctf4iD8XkBkH5USlAZlNPZAQqARr5vxu1yjmH0givbX0UQKI63o0Wun/xHuR8E4VnPK5JQLd4VNttTBvK2uoiKOUf/f+GjwMNBh0NMV6J0c0NpcRv7mrYv3kh8/uHxYp+bVpwLp3R7sts2YzouSq3KGa+q7+x7Co4nazAerRKsVlV1QitF59dyyFZaYY0HMu9mWL3gtvZXMbymBIFMZ1ov2h0B+LTLisxgW+Eq5uU92iZ72ud9vvR+4JFp4NjkRh2ONi0OB1/UBCkvEYRhfuNs4OmhhiPKnFQlx6aAjMnSXJUAACAASURBVPjmz1w41nnwO4cCIBvBwZgTAOUHRq3gyDExD4zRGVYEnpm5LqmQc0M5esFt7acFl0SlHiBxuTkYxxdaihUC4QVXFu5FCUD5QtJl85sjGA0ziQxqeu/fem+hw0F2fLLQGxFlYMRvo7v1WmIVtpt1DFkXvOR7LwJ2HSkyoZmEypoVVe8p7b6qEMnidGG/Vl/L2aPOIwuA1pAIQE3DAmFa4j9f7CPaFpCHKujr5xzZesGdHqAqKz5X+FLRAl58le+jui+kTBALMcgZ73CDBkpN2/7+bfcWOhwUyCEAjQTcAVhKdjkPc2RajewKyu/n1//qJcA2uhBMRGXQOcn9U6JIOjXHQqSYOsVoQp1HNgAvz8yny80H5PVz9H6RqVd849WtXQ/zA0Ow2ayGLJ474L0G79vvbulwkJi8BGCg4S01SKqofoNvSIC+5zkhFUupV8rUTpJN06KpaBkFQm5M1HlkA3AyM5/u9Zl38zrk6f0iU6/4hmscgK5ISUtCTowyDqb7UxwsqFJW3fo/vbuIBJEZ1YRgyHwQKNi0KEl1OKTCZJdxtPDn//v8ooaDaVgqFyiTD2IKfcjZS4Fo+7g+HXOPv84jG4DIzKfLzQf8KVfI/FNKrQ6h94tfz+vOA9cGAAbrpylY2SDlVTTt+uCnV3/V3a7DQQAysJAwobZJgUXi78Qayhd812WeiOAZzEyUiAkHMeu5BF5FwZQAWLPwknkLQy9CrPMy8+lIHZFzvN3T+YbV+8X7c64OHHix74V6zIxB+RJ0wQ+UU992tYoFy3fcXcTDxQkoPsCUhFIczKVCegSg5B8A/PILN9ZwxBSxtiKiUAOi7JW0dLTustF8AGbm0/1o3vjjnSGdj+lYlGwdRO8XN+c1wABIoHk6k61yuSCJITq3jDY9Vx0BqK++uwAfX6JkI/hME0SC1EGguiQ+isqcQRLrF6/0jO2w+6FMnZhyZYsQ1W50qOHgPX1NXndtODsfgMwHzMin+0+ZN0S9YOllMzWfLwKQSS396P3iY3kNOLDPM1y065H4gOW3p4uTDkB8zWdb7FgbdDhEgJkCUDRvogTmd/vPv3BVAUBuvylNzAAYi4hisVQnEHoIqWblrxqm4Mx8ujfljT+YjsWBYgIOc0oJPsq1slCpH71fKybJOEoAuuVTRSCnYlmU6P/Z4iSJEcbLv+Yu9/1EAh7JKEXDKxq4ChUiKymRbwjgHdcUWTARgLYXHSr2LOU+BV7MVwzxwOfkOWybYAGZD5iRT0edjpxD6VhcOQ6j94tP51wdOHBdMeXa9OqWRcmWXA1XLUIUH6zyCwlAs3z+YBkfs1u+VIejJEF3ckrjI9T0y/aMA2+/tgAg08VURKT8vbKMUgAMIGzzAcOi5HknHQAz8+l+MW/829KxhtH7tTz+jIMAJPCYMULAWd6fvi+EY9ouoZBM/Kx/4LUBgFLgNC5o16FrE8JJVJgkiFhaQQBv3+dVbMrWVsC8UxFRkjjaVsW2DtRdOJ/vAyohVYK7A+bTvTdj8HlqTMcaRu/XxHkzjgNkIOWuDr8jnYYDKDutgpUhra0uAlAyCCUAK8BXcjBXgLCk/h0D/hcByDxFAdAzoFUqUBYRJTUcMWdPP7ONL6i5bLQeALJRQ+bT/W7G4AuAOXq/lsGdcRgAY+glLkYclJVTsa6ptCX3uQjAKINQstFrAZKIwWxQIhIJuovB/Nx+r2LzFCwlj8Y0evl/MYk0kieVtcvrwGUnHQCVjjVkPl3mItQsIPuElx9G79dOzDgMgGkAWlNyBJn8xKprBRC+zgEo4LWRgcdVcOCjjlNvmx84DrzNAahaFZWLygKWxUNibIhTcPD9BMLLa65bzreAMSGVoXvJ/Cgh1WUfO+XTZS5CDYDs9GH1fnOrIDcAkABTTDCCLYK0Cwi/586WcKJUiEpC8CCBYDsiiSplqUIUmOjf+o2tIiKVUJbgU5uSWl4DWwX4+PcXnrQATBNS+8yny1yEopdcay+930y5YhgAg+9n2OoUeI5TdQer+32fdhmGoOBZanBo+g1yEKU4dYgFSvqB//vZBIBt9RshkTbW8ZZZ2hUgvDL3iU3uux4LSBM0ZD7dPRnTH08VAIfV+2XAOucQAMuVcKfFSD/+IAABsEoGwYAoHZIKEEYxRIHwLS8pUuhjFVs6/ZZhIVWyxVKBBIRXnbQATBNS+8ynI4tBzkEACv+chlUVIKE/5cRGsWmlKfIzudc3APLQSlg3E2OCyVRc1kpU3DgBmKoQsWtlBcswjPu+nfTYtBL+GQdgOf16GCZW6pXlBCqWSgqJypoOAFfXXDifbwFJLvi5HAjlnUsiIe6AjOp4iQNQHRlT2PlgJCUbbc2s+v/hFwFb/q7gm6HlYpBbmTV2sscQyy/qFBj2v0/cAdz/HGD7NDA1AUyOOU+1CwWOewNjKj6/O03F1/WuugW4/XJgfBoYmwDGdH7IxB5kLPIB+I8AfNwZgga5ck2fJbEm8V9zNWPfrasbgMuPAcuseJ8Exsb9FdBhA+7gaQNKB6TfcgCYug+YJT+g89aoBDMmIMScP12uTKj13uDv8zsKig/uJ1uQOsnojm3qB5P5ACRBH3OhPuzzRN9DV88HqQLEWPJnvTy5nm/t/1s4BcuSpRZtGAu4fi+wtBVYEyccrYwn6hF8/FkJp9bKxAKVFsn/d8urgbHPA9NPOEOWl4+2cfoFHhfVrJTZPKHSj5daOtup6JyCpPx8rHWRVQ7WOlrYCMx8AHIzlxkALPD9c0VB+x/A3E/+E2fUYHXdF7KTGwdvTd0AHP9r4PgWYG0KWBdfsBdsMPfPrKKsoL9XAVLAvO2fFylCE4cKliyrDVZNcGS1CqEYhWFiAZV+XntaURdTLmpCEbpchTYLqi6NrkMCzLzt5Xc4HwyJmmkJ+Z73jQOh4NWeDUZiK1K08f0EXt7CMHVawIk7gaVpYJUA9LI1Ao8bzKX1cytoFtFfpdCIWz7rgzHgth8u0oPGDwETc8CEMySUzFaikgtlpW1Ta8JqNba7lVljSRgW+Q6ZP/57WQvj6fydBjXfAjKbgEvMLwWCvhNoipgNpnQshlS4IGFWzIk6ylWwAz93ETLxGWB5ClidLABoIOS7pmGfG+33YAG5mND0G8F4678vkiPJczNOAC4UyQm2N8w94kirFlfIAl7i402d6dbPWWAtrsjOFiuCvAJZOQE0pHTFsckHYDeCvhNgipQNxoAz8/8IPr5nbvH2jd+6AThJAE4AqwTdZKEBLDoDgU4+YVkPHIBoPwareOt/BkDexsMFAFnbzNJYm0IDnVwbt4uyur1kwL7Tp+iZM/08WT9Rc7DHUmuYTr/x+6o4ovvu9fjBbgR9JyA+omwwxvZI5ULg6ZW7y9FPf9QNwKm/CgCcKABovh8ByVy/UCtJq2f+X1yYJPGU27lIZLbuEWDsWBHesZeDz4iURLUWa1TE47LqK12fZmd3OXidFctqm92KatVs1jAEsNv6sdymaa2g8+xUL4I+Pn2beCgbLGWHI/h8G3oTr45iK86POlbBU9yKI/AcfLR+ouQwH9BfmmbLlTHboOnZ/T9+5vaf8FUaAThXsFOQ45mUcgZCWTAxe0UQ+urYMO1/37GtxQmoLCBtRSp30LrDp2SFdzYMgk/R+VNwvwR9mwQDsaspGSfJgYDYNTbp8psCQFJxEIBkQjDrxt8dXCUIY+COH5MVFPi8SOn2n/QYLZ9Gp0cxANIP5IvAkzVzxivRydnKNzBa8fddM84b6AFyAriMF2pajk9kYIeoClXmA3AQgr5NQEHMBqMVFMNaIOayNRL/vhlH3RZwmhbQQUcAasrVVGz4EtjCu/3dfb/ID3PbT7uKAZ/MhcIC0vqRTo4W0IBIEAmEtFwCYqjW03bcmdwBYeoWgetUbrR8snrloiR2drpACf+rD4D9EvTVjIJu7HBV+781X752Czj9lwUZkTEgcPoNPp5Nv4oBRhCG6dd+1DkMz1JIhR1BAHJ7zwqO3fIRRM5tmDK5CoQKsSgOeBYBKFZULTqcB9r6Ni5KYmd3WKDUA0BlhNLM8EbT1QBXBU72aI5ZjUcVOxz7WLkQ8d37vsart/uA6RcPsxNSAtAXHDYNC1AEpf9s01kKwuBwGU7HgVt/1jtD1e60fgQigSe/j5bQp+KYpGB+H62jT7P8/ZypBIC8Dhcx8eY9wF015abhmnoAyJ5WSrKeNgKO9SHxnT/LSasJBim5lRjWBEIVeROInKL1qunybRawLgASdEy74qjaNNzJCgqEEYzBGvK0297mAFSHEIB6ebKDgc8J1ksmV8t29f1en6L5v6cxIK5iK6Xne/5jCTiFcTqVn/r/tWDPWwXnEPTVgIKUHU7ljASawKefIwDpMdRxRB+wFgD+RREDJABpwSzz2c0LfxczVjkVKwaYgtBBezu3SvX08d39P5uO3QKahXMQciourZRAGKZWar/YZ1xXRPe8wQr2AUK7TvbOVTZBXx4MBECRnConUBSFEXT6mf/TK+/qmzAF/0UBOPqBZYF52HrTFCw2LH5G8UCzJEko5nZqmRnPh/uCXmpnVpDTsIPPwKApOaSA2QLDLSHf97iPx0tpISLfz7bl4iFfsUsnj+HZWEeOYDCDnDmCvZkEgedcCjxGseIhBYt3vx049HwMLRh8gA9gh2MoH9ABqKJzxf0McO7XlSAU4HzhYYFq+5D7hwBu/98OQLlIBCKnW39SlXNY+nqeiq2dkQg+gnGPb9/ZpT0lq6MV5D96gLCwgDmCwbdnCvZmCgY/dxy47xxg5SWuUjigYPHFbwA+fyGwfr2rXrMvPB+vp3L3GHCgi9JOHQCkRVPppeUBigXLFymyejYTB4YsgfA20ofRAlYB0FfAlvQqP0/TsX5PLOB5DNu471cmIwiBaRww/F01J+mz2pqChxUMZvpJlmBv3iTocsW4dzewfhkGFix+2febXDAeJO/YEILBB7pU1g8LQFo98QASVGYNQ6DZfEG3fnEqrgLhbf/HV15anbkFNCvohWSl9XPQ2XTM/2s3I4DwPIZwBEDfgitH0Ek6N6x+u/iD7T4g/YdBBYPpWHEaHlqwNw+AQa4Yj54JrJO+aQDB4pt+oCAyYvOPEIQDCgYfeF/9U3AbAMX7ItAlVtAspKZdz5SOlvA2pstxjES3wJ+92NgAGK2gwi78QoVfEhBeQACqNNP1RdoA18kKdgDhxkUI/zKIYDCnqyzB3jwAJnLFOEIW7QEEi1/1Y21ywVglCAcQDD5/Efj7M4CVrZ5AKlkhxeQUaxBI4nvFzxf8IfCVC4HV7cC6ZEX5nen3VX1vAGLZq8ysrvHY+QBwbGfI2E6JpLvdX+ksthpUvQrmX/sVDGZVUJZgb17vJHLFeGQcmCdVb5+Cxd/5xjZ6QzzMLOQBBIOfTV2Ps4HFHQ7CLQUQmUrV0rgKJMsCjsxGAqTn/hzw0EXA4tnAyg5gbTYBorKkUyLnkB9YVhTxu+kT13iccwtwdBewPAus+b2ar9xJAafqfgMQO4dh+J9+BHe5gqZZZzYok1JJUcpaR6bp93P+W/N6p0KuGIemgEWKgPQhWPxdP7NBLhiHKYHUp2DwpZ8rLOD8tmJQVplOLxAqmbRKC6EDYC7/CeCRPcCx3cDSrsISrs04CPm9ArZk55UvKAspYLqPaPdR4/H0g8DRHcDyVr/X6VabLHk2PhjpPVZY7d5xwF6CwS9y/4LbbVyQsEKIufGiKe0p2JvXOx3kinF0GjhOQY+oNRtljji9TQPf/fOV9IZY4Gq4D8Hgy/4W+Oo2YG5bUUy04vUcLCqSJVRWszJbNgxSmMau+q/Ao2cBR88EjtOqbgNWWaTkIFz3YiWrF4nAjtN0nBZrJnU+/8PA3CxwfMYB6LUra3oglL0tps6wlVha5rLiqd9AdDfB4Je6U0s/0BXTDYh80Sr2FOzNA2AXuWIszABL1JaKWq1R+nwGeM17OsoFY5XTVw/B4Cv+Djg0C8xvLYqJCECzgsxmZlq9T8e0XGUyaUizavPtxoFr/zvw2BnA0Z3A8e2FVV3x6c4sqwObckeyhiXAowUSADhD1XhceDMwx37lvU4XxVN2n3rJIocygkr/Vbs7fe+EdBLcfaXXQ3IPWIrpBB6XlnwpR76jYG9e7/SQKzarxM7qJFj8mg8UarMV9IZ4gvNDD8HgKx8HDs8A8zMFAFnPYQPDl0Co2g4fpDZLqKCxT0/7fhJ4fCdwbFvhRiwRgJruCOwUgCpeCvUjZmEFxhfk9W969kW/B8xvKQqnVgg+B6CB0MsI7P70AHgmd2n1NQ0rv7FvALIlVYK73MnQCDLThSGZoDpuP7uCeuX5n8zroB5yxThGnQ0CgyBMxY63Aq/5aBHG6EBviDlOLV0Eg1+0AByZLgbl+HRxnZXJoqqttA4ODovlJZVuSjTQFtq+NwNPbHMAzramdVpVs6wEoPtdNg37wJfvsYiJP9NFqvHY+7vAwjSwxAeNxVO8T6aNVRRRlT6hHrJ0Ovaw0WDJCKng7g86APvNB9wg2JvXO33IFWOBgn8EIf2nRLD4tbe1+AU7yAWbZeskGHwVdd2mgAUCcNKnJgLQrZ/V9/Jnn5JUYmnAE3hCmv3+t8AWQfSzyPK/POOgJgDdsgqA5nfJAvLdLV+bz0kK4RqPZ3wQWJxyAPqDVhZQyQr7gyaXI9axWCFVAGLvRUhV46PgLnUWBs0HbBPszeudPuWKsTRZAJDTo8l8ui/42juL5veQC7ZpsEow+OrZQlqVVuH4FLA8WVyDAOTAmHUQCAWQkOlsQAwDt/9/AE8SgPQpNa07+AhAA6HLXbb5Xr4IaAMfv/eGvP5NzyYA7UGjBWTWjh40v9fSyscHLtaxhJWxFVsNNAXH1khw983+DYPmA5aCvXkdNIBccemfceooAfhAAcA+6A2xLuAGucxrzgKOMexDfV9OwbS2BB/BEoqLSrBoYGgJ3E8qLcIEsP/ngCPuUy7S13L3wb6PU56/m/Xj4Ps0TKCXQA6AXuNeZY3HMz5QANAeND1kwcKXlj6wOZQ+b7R+Pi0PD0DeFAfk590CKg8qncfoFzIRVWVqfFfBhgn25vXOAHLFWCDbvPstBsJZ4LUPt+jdesgFg+qVptWq11bg2gtgfuLiRAAgQeg+oEmsOujsXb5SsAoCIN/3vx04OlNM6Yv0tdx1MKvK7/TFjVmeCD4HQQQhf159eV7/pmc/kwCcKABoeYvR0oept7SEoZQ0Tr1lPuPQFlAtO0nyAcWhpzw/FSjFzGjLx+RGvxzoSeC1hwsA9klvaFN5FAy+9mJgnhaQ0qqagglADo4c9AhCDpJPl5ZommQ8738HcGw6AJBW1VecZv0cePwOY0/wl1lAD/WUCx0mMlDLr8bjmb+Dwp3x4nkDYbD0thIO5aNtfmDi/xGEeRawxhs7Vb/q2huABQJwAlhyy2cC0xoggjAAUCWWAkksOiIY978TmOOqeqqwqAx3WGhHK06n7TDwOcAV/iipPAKjwgrZm2o8nkUA0gKmAHTrp+o9MTrEYvq44o9pZIOtgmu8mafCV72YAKT/RwAy5OPOuVlAAk9Oule6xQRTWUKlWtkU/IvAHAHti5oIwDK841ZPFtCmdr0U8PaC9hVultd4CIC8P2Ztt/m5/qC11TJXlJDGGpfGAmYODgFoCxACkLpuWh3KCgqE8gNVZK4KtxgjJAB/2X1Krao1rfN7CWZf3LSBT4uAEIyWBVpipL7GgwA0AW25GbGENBTRx3rm1M2w39mmrFVwjTd1Kn+VAZALEE5LtIDyMWUBvbLNLGHgd5H/V07BDp7r3uU+Jadgn3ptxekA5MBri0/Wp4wzBjDbCnkMWMqVpE8GJwLQqvfc0pqbkVj5aNk7gbCxgJno30cAjntowtXNaZ1suvSKNhsYTcVKmw9F5xGE+94dfEoP+JYhD/8OC8eIPUsUHokVVKB78XszbzAF4Pvd//PCKVGIpOAr78mn4DZOm8YC1jco+w6EFTDDPJqeCEBZBa5GffVbhmQ8DtZW5TYOvPhXip0GTuu22lTMLSw+aAVl9QhEWjurI/aQiLJkTMLsX9R3r/ymZ73fp1+37OU9hunXSkdl7T3QrhKCtlCM59k2i5CMMSIAGdqxEIwrmptzTsCEut5yilKoJLAcxCq3fe8tLCDBFwO+tKjyuxSCMdYEXoeDrHcHvu0tTwLzmwHA4N/Gh6zNCqqeOSxC2lb8tQSiMwbuqXIqAcjFh2JjBKGJyShQG6ygVbfJegULWBYcMR3rvb6oCRaQwFPgl1M5rR7/JtBZOIZWx/0+s4QeY5z/1/X2tFnAxPpFELaVkdLN8MWGVr4pCBsfMHN8bmTKfCjZ0Ncp456/x58zLzfw6Qf3ABd8pUgEYmqk5bGyek06IQl1bkXScnlN/u8L24Gdx1qVq91KQvrpgwaAAw9p+wnXPw1YjyWMGtDo2ASOFGMU7SIEUzdYD34vMPmXwLbHgdkFYAtlGiim6DpxJtvq9LtlVr/aWKEB8pUXAOOPAFPzwBTZ9r04vdQ9Ts4pAZ3cd+yHxgfMAOH+vcA69/9Uxijmz/AerYpdar1lNSMYzV+vWY/34I8DY58Gph8Bpo8A04vAFEFIknIHohGVR62QhFRSYjQE6qFri2z3iaPAhHNNlxKwArI0Q1IAxwfReacbC5gBPp66/5ICgLKCtqnsrKKlrFZUFPKOr7osMTtdsxzqQRZ93Q1MPARMPllohUxRqkEK6gShOP0S+dY2hlRv99y+ovRi7IiTnTvLqmg6xDPYpqAUgRgsoR7MxgJmgHD/c4E1FXu7FRRbvEgd7evXWlbPpp9EgUjiJpwe6zwOMlvpAWCMVusJYPIYMOlSDZRpoGiNxKzbdIQlXONMWJbGtw4svdgz3El47nzTRvPrrKptAJT6ZrzfintvAJgx4vsvdQvIXK5VYF3sUZxmJUvgA1FOvwF8spKyBtM1y6EepI4LqVMedbEaTp0EIKdPKh5FqYYqSxgo2jgFr13j6XXHnOiSZOeBVSvyC8qC2r05FVvVw9cAMAOA178AWPMp2LJaaekiCPXExwHw660n1oB/niGQazwOkkSepbJ/72I1x4CJ+cJ6lYI1riccrVicUuVSmIW82pkwnHHVOKbFsOozQGkFkwewnBES37ABYMaAX39ZAUCCb82nIlo+40p2gNnvsoKunxH1xGwA/LOzdQOQJPIuHzV2GBg7Cow7AI0l33XfjOsv6oVodes6ISbBsAZMX+kJxU56KY7pkmFVhOciuvTzSt05v0+ryuT/9gDrZNe4wPMsI7VJP3GcP7gUOOdvgL1rRYJ0ZI5IV3hV4/wrGYPPU3/AiRhYusy2K7mU999P+z90ObD7LuBZK0Xdkeq9NSX2+o4HLwfWlopFCC0fgciBMtAFC8CGrYXVoVjnU2G7rTXrzh4kfRzLY1kyGwBoeiGcPiXb5eAzdXWnazPCSScb4j3xfmav8Cx2p50lAMW0VXINitCogl2r9H2dcctWwQxQsn6ZTBbMNtcgdKIbiZj51VcBk38CXPxoQcfCUg8pjcYgZScw/momACnXyr4leBhs5QaBTHpf7X8dMPYJYO8XgAv9e8QJlAZZq8D4xSuANYKPJQn0AR2AHKy1MACKe9nfFI6IEqduEWoHIJ9wlsVKLekoMCa9EAegSTYQeM4TXco2SEMkAHEbBZoj4bbYtdyCVrFqGXgTSxgXYTZeHLi9AMjEQRCVUXP/n4KUaaT8vVTi+Rtg7GPAuYcAWlMCgUVkQfJ2Q12yBvPXMwHImhDWwf81imsTiLSEvHZkr+jY/p9CQRD4p8DOBwteItai05qn31FFdfLlFxYWgCDUIkRkj/TxbCEi/89jfPZ3X2VqYSJQbmUNQY3HQT7hbv2sLoerVwKQHNEEoCsm8R4MhPRjXUGzVEIKIoY7yaEYuY4dgGb5RXruoSgtSCLLarkICQ9f6QNykGjFdjsIBaI4kGlt8W+Rg5g0HJ8qAp47nihAzFpuWtPIMBZJlASILvR6fQ0DCVbJCkJOJCqnk4pGpb99tZ8MopyiKDX7WWDiwYKXiEQOehCrgKh+eJQ+EQHo1Lby/zRlyf8TIbf9XS5ftIb8I92YugH4ay2pLusorl7dAoonWtMwQSTdOFuQSLTGHyIC8kxSIQuA4hwU2WUAoO4/grBcDbsfWElSzg+JCoYDoEGM1ixSkHzgF/wG7y8sIa3J7JPAGWuFJSQIaU01iJHUiYP4e33BrPOHmG/JMaOfTZVYRhwGav87vWKPJ9/rSH4IOGO5sITqg/ggxXs4TOaBAECbeoOsgfl+DrQShFqcEIhyyt0MbMusEkx76iAZXKM8BvXiZAGlF+KaIbaadYpem4aDgpJZQz6YJABV5VcHAJZ0v4FxX6KG5UpYs0KnqjhRuagEVgPglYAl9ciHf8mdUrJh0Qx9vkDBzBywfbkYQIGwahA/kglATsHsDzKA0BATiPyZ4NEDwIeoa/uFYKKXL2f24nQoIgd9R3yQCMTFqwIAfdBWI7+yB5ZLECYLETd85YJl+2YAUNosLIel/xYlu4Jsl6bhNhD6it4WJCvA2Zc4Gxo73RcgJeOqFmGR6rcChLYACyGojmEYdj59KnZ+tIQRhH9IvWA2hiREjDeRI9Cly7fMF3EtWRFawhQIf5IJwE56wdTIYdt7tp9ys1K8JnoJvod9Wn682PNkP4hUy1ndWgstAtBDMLYN5/6PAc5DGNoF4SrZfN+4+IhT8jqwg2Cp8ThIJ5vfSWBXAVCrWN9SMxDK+skaOvhoAc8me654pmUB3f0wyt+E8FyRAGmPlOEoiSD2qgvmAKoOm52fAuiTDHSyIRxx+lI0QxxADubfF5vffMmSajrWlP7nmZ3dSy+4r/ZzAUEHnQ8R70HsXlK+PgJsW68G4XYGZj0EY2EYATCAT6tAhmE0DXcC4faapcwMgAIfLb0kuzT9Qmw5uwAAIABJREFUSi+EfeALkSrpBovbrQDnkm8wAo8/E3i+CCsZ98NCpAp8cUekZyBavI4ET/TnaAk/RQCyAXy6uNSPA0i+wMeB6ePA5HFgZq2wpNGK3FUDAHmv3fSCe7afX8CB4UNEEOolVi/3obastNwJ9cO5BOBKEQMsAcifHWzRAigWWAlCn5K2bQYAOe1KMjTIR2kRUhKVS7IrLia0v+3xwHMZMCbYNP0KfG79zAqK5DxOvyEuWu6VD5KSHy2YAEQAfpaRdl5UkuUctIpBnCIIl4psD03FtIIP1ADAlBuJM47EqqUX3LX9kSBQcuuyftK78xUkHyQ+RLqHZ3Fv1KcgLj5kAQ1s0Qo6IA1nHhNLQzA8ZxvBXuNx8DcS5UYpNnoYxsCnUIqvZo0F3wPTMa7Hv53HOJVbS/l+5bumX7d+5WLE44hxIRJB2NMCqj9ixwuE90svWCaIA6bAp959EKeWChAyA0PTOV2unGMQveCO7bfqHbcS4rJR7Ewqnw5AWhLuImg2uFQAXAVs8RGmntW4+g2hB3P79L/EJ9zGvqrxOPibiVihAOgrWQOf/EBfBcsPNBBqW9Hv6zzGqFzmoXz3B9AePgXiq6bgiv4YOB9QHS8AfpkAFMMjrWAcQA0iO9XJiQyAnos2vV7ESHOOQfWCO7Zf7F40mZFQScRKAYBaSU6vAVcTgN7xXHiUFpDTMK2dFh56912BTiDcvpkATIXzCL4g3WXTZ4jpGfjoF/oihL+fx+0yWUABLwIwtYKKIabgCzHQvi2ggBKn0McEQDaKT5cGkIOo6SuyYzEfjQB0EM5nZgAPoxe8of3sgSqCQM3jkdFLvpRvR13+7UVRuhUFSavNO6otwp88ZZ3+t4M6HLtch6OT9AG/q9cmtf//gV1JDYcnQ2zY6/YakfSrU+Pg1M45NqPt3IEtoM7WFHokyrWKkooglCMWLYjiUXMtK3g8Uzd1WL3gDe3vRRCoUEYCwGtYFxxqgA2E/jI20F5hhmQod98BHNnlxOTig1aGiDanO21yV4DygWuB8YeB6fnC9WEtiKVVKeE0ZGiXWczeJoWMIig5a9V5DA1ANoKDeDylZ9NSXxyAsiKawrQqmCv2HVf5e8aRoxfc1n7xs+khItAUvojvyWryxVcWJZksVSyZoQRA3dcAoHzax4Gj2wtu6FVKM7gMgti02jbV476oUJJs1j/AbA1mQ3Pm8eTRsoZDtR+xZKCiEKmMXTIeXHPGdhYArX8FwG4DGMEnAHIK4yvT58nWC2b73cexaZgWWaEKgU1gjNbPP7PvOYGsUSBkv3hBtmRWNzxjTk9RWktvxp6POj0vARjY9sWkFel8RWxegjIF4RjwAOnZWMPBTGjqvHmszxJOBUD3xyznL2bqROvoP3N3q84jG4C7M/PpcvMBef0cvV9k6hXv+2Yno5QfGArRbaCC0mWv2YtF3ecerNDhkNZIIsXQRv5dlTtGADJSz2gEE1EJQM//026HdIEZLC8B6A0tk0g1Ja8DuzJdphS82QBEZj5dbj7gxZN5er/IZI+67pscgE7QaDOUMyC0Wb8+gXjuR4F5J6YsaXnFhBoAGEVvUhb60jISgCQnoh/OLBgvIrL8v7DdFkEYM5dtNg97tvz5zJqzdfIBmJlPl5sP+DJP5xtW7xffnzeh7H+Z+3+RpkyWT1YxuURJYVtx6T0fCTocouQV85VkHRIGegEuEv/YKpkA/JceVmL8kv6t5/9pu62tfiPWcFQVEa0DZ9WcLJEPwMx8uvfnjT9IgZyj94t/ldeA/S9tMaGa9SNdmsIxbvVscVJ1GScoMt4UPwhAsmMZ0aXzQBsvdGRBjQz0FUpEJRAJQOq4KAnBdz+sfiPJ3bOYn8fsykyVWMfiN3BOzckS+QDMzKe7OW/88aqQzsfE5kH1fvGjeQ0wADodmVGwOeiMsUqHrGOnS4UFy9P/wAEojkEnI+IqOIJQNLgpCXhcmLAtD/D+kgQE235L93tj+YBqgTX9BiCeW/NedT4AmQ+YkU/3sbzxBymQuZhm8g1T+QbV+wWFdjKO/Te2mEFNlCb6gPF708VJ1TXHgKd91GnZpDfi1k/gM2vqU3DUnCuBmNQe3P9vw6pe229KOvB0K1k+ZS+rnrfM2AlA3JMZtah/EZKZT3drxuDz1O/yxAwu9JgJxr3lQfR+8aa8Buy/wdWQZAVl+ZzCrG3q9c/YrkmHy3IRYryAAqAkEBIlopJxNNUbER+fA/H+/+AAdP9PmS9dazicJybm7mlB8nR2dI1HvgVkOlZGPt2nM29GCamcGZjAwlQ+vvrV+8X/zGsAAUiLVPp/wd+zaTMFWw+/kAA0GQQnpCw5mDsAMIrcRB5mC/+MAffTwgfwKY2KfmCZ6ZIkUShrxXxBX4yYaV8Hzmcn13jUA8CMfDqWYeQcSkhVOl8U6uxH7xekrsg49h8oiCENgC5TUG5vKxxT8f2aRtOtcAKQ1s8soPuOVUIwpchNlEEIOyNSIrrvv3hwnckWIZPZsnbcDyzTpvg3lU8mpZQqozyfK74aj3wAKh1LgrsD5tMxiz/nkGD1sHq/YNFOxkEAcuW7oqmXlisuQOT7VV2jwi/kTgj1RkoZhBje8Z83SCAEEJZW0C3gff8tADCt4VASaWIBK0HI9q8BF5yUAMzIp8tNx5Jg9bB6v/jdDPSRns0BWIZeUitIo9IhHmhXTvzCPQddccnZ76U1V/IvC4SBCFyg26DFNg7c++Mhhb6qiCikT7WVUmr6lYn2nRKyrdZ51GMBlZIc07GUBdMjny6XCiUmpA6j94vMZbgBMFo552pu27PXAqXTyAUQcitOQjAm9xX0N9pIwIPmSCmH5QuPqER0L4kDYgp9zOUL6fYxkbZcFceyAreAF3GlV+NRDwAz8uksnT3jiILVSmpWNlhMze+k94vMZfgGAPJeHDjpCrgM01Tdry9OzvmYAzAqLVWIwEShwzbRwwSEn+MqP6bQK5tZlWyhjCCCsC19Xv7gOnBRbgp7cu/5AOyVjqVMmA75dJZ9nHF0yohWNlhMxKnS+0XmMtwAmFq4imnYbrEqNJPc+9kfd62RKh0On8qV9hXZ9askEPgAfI56ziocUgVbzGT28lEtRMoKtg7lBHtznfZNA+CQ+XQWM8k4uglWK/NLYKzS+8U9GReXD0g/Tyvh4Ne17Yb4Zbr6g6y7/aNWcoPpjKRTsJIags5IJwkEAv6en05S6GUBfRWsUExZyVZVQCQwrgN7Wfdd41GPBczIp8ODeXfTSbBa6YYxlY8/p3q/udc3C+jTbtvqt2oadnB2m4oNgMn0W0p+hYWHWbwg9yU/0Kb9EIy+5y2hiCit4UgKyTeAkN8Valk4Le/ldlONRz4AWWBRM6fdIPfHstw/G+SE5rMnVQ/kA5AkLHS0ak7V7reXfhgACaBqDtD3e/nmc5k9kA/A80JReq+U38zGVp3ObJo/BvAOD3dtwiWar9zEHsgHIGlFubqSx7+Jja36anLLcDvvgwA+NDpDfILv+qlzuXwAXuSjrkKemlO2e3U1uWUYnL8dwB/5e2apca9LNv+vsQfyAUheX4VguB+mzIsaG9ntqxhF4Xbe3QD+n7/uHLAW9wQ1tblMRQ/UA0CaHC7plXEh+q4T0OWcfhleYTSHBK0EH/mi+fcRuKQn4I6fWpeoB4AevCz3HOOm9yb3F5mBlZBNclYCj1aRfyfrbgPCTR6AzK+vD4CyglX7jpmN7HY66d1E0ctdIrEEE4wEIMlam+Pk7YF6AMj7EwAVbU82vTerCwhAXopJN9zVI+AYrOeULLZgErY2x8nZA/kAJGWr0naUWdFpy2cT+oCWjpdjLFxE5UzYIBBpEUX5nLnlvAktb76SPVAfAOUHpiAMm96bsVtCAMaKALICMyxDq6cXfycA+b/mOLl6oF4AiqBRIEzBp7/X2Af0+fi1XIioMIlAI+AIPIGPmeROWV3j1Zuvyu2B+gHoFfZiDS2lC0LiY52WUADkQoTTMH1BFSYRdHoRfKSu5v9qrizMHYPT+vx6ARhSuDcAzzmDo5ZGHT1PAKYMwQxME2jiSo/gEwBrrq+u41ZOy++oD4BaCcsXTPiSI3ey8s4KGoG8QwCMFM+0ggQhLR0BF19SXuD/ayakz7uR0/TsMcxg3SjfqWNA0hsrga/ojaq/8WPcC+YIk4Ke4CMSuB2XVht1Oj8zIfXlU8BtU8DhmYRXWdfrdF1fgr3+S8At48CD04DVjXQSDO70PTUnaJ5uOCwsIIFHSSFy1pKPWCDsZxCpw8UVgKSPxLXM937OzxxAljzcPAbcswU4Qh4V3UN8mKoeKm/bu78IfKJQa8VD48CylHQiL3O3/qg5Rf30BKACMtJXjXKQcfBSK8Dfqc3KVCwuN2VFGRnm/yKZtq4Re5ifyQQgM2A+BeB3GHaZBo5MAIue0l7Kt3cC4xhw+5eL7TuCkJk1jBtyerbUfYG5ExjZ/pqrxE5fAOrOq5SmowVIrRp1IyT2R6+fg0bgVYG4CsyZe2UsaiOGKXr4Sfp9k8CxCYAFSKyvXeY1o1BxQux91yMtfsHPutgnnyUuUvhc0ZsgUXib+nVkq6+ZKaABIHsgVZnuwD9sVo66rrR4ImdhLGSQ8zPL/JgBQxeU1ouWkO9PTgDzbgmXxrzMkatl3keivfG5x4r4IRcz5BfkO5vEZ0kgpIfBZ8yKjlL17syy0tMNcOn9dl4Fy6dLFabj1Mpvow9Ify+I4Nlo9Xt+ZqU9VdJpqZh4QDDyxUyYOYJwHDg+DhgI/WUVZl7aSEt93+GO9Ia2iuZKOfA7lhp9JpvAVy61w2mOwO5hmCgMHC1H9O24gu6UD9jP+ZmbtLRaSsei9SL4XDPbAEh/kGQ/pSUcc0lbApFWb67lQUhpVnLBsoKqqZclFMmUtrxPcwxl3X7vOCAtYLSCcugFQmqhdssH7HU+RznjiOlYXA8wqkOfkItTAom+oKygca4ES8jY+N3z7fSG4hfUtp3ihUHruVSsFy1iRvNP+1N7A5BdJACmVpAgZPhGOyCigEjlPLudn7kvFtOxuB4g6OjD8UWLRkCZFRwrLCEXJQQhp2K+37lQeBCRX1A7KPQto1prFEmSYn2mB9EAsO+kYfk8KQhZF8yjVz5gp/MztyOUjiW9bCUhEBhKRCCgSis45uQ/PhX/xfFWMgOnWu2gxB0TF/o0kEZ/kCDM1Ts+3RHYnwVUL6XhDFrAswfIB6w6P1MrTulY0sum1VICglKwCEACqvQFCUK3gHcsFQCM/ILayqP1k9JshVqrncMalOYYvgcGAyCvIwuod8YBJQmZpmGJeyRwkGw4n8jJOJQNw3idLFhMRNB0SgASTJyKoy/4ieXCeFfJBUeV2SoAclFyR0bbm1OHTUiN0/DTAwD7zQeM52dqj8VsGEkVE2jKetG7AEhQ0frJAv6RC0trC1skl+IWlNinGLbSaZg7Mc0xfA8MbgF1LQV1z08A2G8+oM7PVF9Ms2GUE0gQyp+Lwu2yagLgR9ZaYpkSypQ6a6Q2DCqzpkvietXIFdoZfuieGmcOD0DeP0HEbBhNwYPmA/L8zJQsATAKnguEqS+XTqkE4YfWWwCUFZTksYAYwZfIBeN9Tw0cjOwu8gDIZqsoSSvhEeQDiiGYFoyWiSDRypWgi69UP5sc5fIcquSCNeXqe2X9ZAHfM7Khe2pcOB+AT41+aO5iRD3QAHBEHd9ctuiBBoANEkbaAw0AR9r9zcUbADYYGGkPNAAcafc3F28A2GBgpD3QAHCk3d9cvAFgg4GR9kADwJF2f3PxBoANBkbaAw0AR9r9zcUbADYYGGkPNAAcafc3F28A2GBgpD3QAHCk3d9cfOxqYJ2au9RdPtdp/khoEOlglDYT39V1PzQFXLsMXAlgt9PCxJKPbufyf8/KHIPfBPAZABf79Xc5XQ0ZQ1Q7360NbxoHrlsDvs5ZRsgo0une06by6X1mZvtP99PNAp4F4LsBXA5gjw8EGTeqaGF4QhzQF80CX7cAvGIdeDYAfhdZ2sTKUcVrpE7nd31N5gj8e2dIo2osk7NZpMdK0Z19tv+bJ4F9K8D1ACj8yfNSikHeg+5Z969m57Y/8/ZP+dPLKZhP/rcA+AYAF7g1oRUhEMUzFMt6eSJfX78b2DkPfM0i8GIAX+uWlAMppreUUErn8p2gzTl+2flg/sDbTkvIOik+CP20//mzwAXzwDcCuNTPJeFXpEpM6QEjIHm/zTF8D7T5gATYNQCe69aAloRTGulfBESBSYNyxR5g/Bhw7hKwZwl4vk9LnM5JmsBzUyDGAX3B8G23Mz/g9BuUa/0IiutfMkj7zwKmngAuXSvOpUvAWYBtF4BTnspIj/O8zPaf7qdvWITw6eZA0JLQEhKEGgxZhUj/dz3NzSKwbR44exnYvVKcy+mM5Km0JhxInUtrGkmzCPicg3W5LMGkQiZZTm9xS9Z3+4m2o8C5c4X15pTKW2Lb+fCx7WLtjYxzqiql29Icw/dA5SqYf6RTTilg+lYCIXmICKQ4IK9wxfSJY8AZK8CuFWDnanEua9ZTAMsaCog3Dt92O/MvnRGBtGwkqKRmMEkqCaa+2k+0LQDTh4rP88UHj74kF1WaATo9QHQ7mmP4HugYhtEKj4PB6ZQ+FS0hQahpldPya1kXTOqNY8DscgG+HavAttUCvBxInitrkgL4lcO33c7spBdM3kAuSnq2nx9gQfAh4JyVwvrxwel2z3p4aMlzH6DM2z/lT+8aB+Q/OT4EEqckWQSBkGD6EQKQnDCLwBSnYgcf32fXioGUFawC4esyu7CXXnDP9tOCsyD4KLB1rmgvX7zfbu2WG/Jtme0/3U/vKxBNAMoi0KcjkATCN3HOEr3UAjDrwOP71rXixYEkeKMFlSX8ocwR6KUXTJ7AaNE2tF8WfA4Ye7Kw1mwvX/yZn+eKnvcrfzC6IK/ObP/pfnpfAGQnySoISBqUXyAASS1AK0JfagWYcRDOrAF66TxZQU7jBOEbM0egH71gcgXSFZAV54NQtj9YcNIpbONCyh8Ygi8CVospApDuB63g92W2/3Q/vW8AsqM4gLIKBBIH8bcJwMCNMX68BTqBb8s6sGWtsIA6jwDk662ZI9CvXjA5A6NVa2t/IAicnC/aGV+8T74IQPm/AmGuBc+8/VP+9IEAyLslAKMV/LgAyIUInfnjwPQqMOOgI/DstQ5Mr7UAqMF8V2YXDqoXXNl+EQQ6N9v29aKdesUpWJZbAPyPme0/3U8fGIDssDid/pUASCvCaXgJmFguAEfgEXT27gDkuwaUg/nbmSMwjF7whvbLhSDL5TwwvdRqo9oqHzACkCB8U2b7T/fThwIgO01T1IMCoAZxGRhbKoAXQUcQTjkI+a4B5e5FzjGsXvCG9gdqrLGFYrpVG/UuHzBOw2/LaXxzbh43DKeoJwlAHqLndSs4udoCoIBHQE45EPk3DuitmYOQoxdctp8+rFwIWsGFYiFFoLGNchcEQC6e+OJC5J2Z7T/dTx/aApYdJ37AyJK/DIwvFxYvWr0IwEn/H1Opco5sveDUhSAAF4HJpQJkWixp6k2n4IYfMGf0amDHev2I8+l4/UbvNw8Eozw72wJePOJ8und7EkKj9ztKGA1/7WwATo44n45pWI3e7/AAGPWZ2QBkYHCU+XTMfGGQmYIxjd7vqOE0+PXzATjifDrKtTZ6v4MP/MlyRj4AR5xPF+VaqZLJF1UzKdPV6P2eLDDr3I58AI44n07ZMARbo/d78gMubWE+AEecT8e9YOn2Uheu0fs9tUCYD8AR59MpG6bR+z21gKfW1gNAz4geRT5dTEZo9H5PPRDmAzBmRM8BJzqfLiYjSKKr0fs9dYBYDwBHmE9XtRfMsIz04aQZ1+j9npygrA+Akqs8wfl0BCCTWRq935MTYL1aVQ8Ao1zlAnAi8+kEQGZTNXq/vYb75Pt/fQAcUT5dBGCj93vyAaxXi+oDoFLyT3A+3Rcavd9eY3xS/z8fgCQX/LPR3SOzkon55jg1eyAfgD8M4NcAPD6aDmBtB1e4NMDNcer1QD4AbwbwxwDe4UvRE9wHZG1gNSXDLlwLNcep1QP5APxzzwj9IIAPnXhT5ORc5EYCA9HNcWr1QD4AmRH6FQBMTSZZH98ZmD5Bh5g1FopiNns1x6nTA/kAvAfAEwDudnI+EvQxPfkEzYfaCXRSBluQMB7YHKdGD+QDsBNBH/9+AkAobqTADGK7Inw1x8nfA/kA7EXQt8kgrGAGMfBxZ5Cv5ji5eyAfgL0I+r68uR0QmUFoBQU8vfNvzXHy9kA9AORoMw7CdGQCjoUZDwL4kv/+8OZ1gJhBIjGDgMh3vTavBc035/RAPgD7JegjODfhiMwgoqeJwNPPTaB6Ezq/hq+sB4AcXeXEP+ZhGVo9vRimIQD5v5oPAZCupgDI9wg8/qz/1Xz55usyeyAfgMMQ9GU2Op4eAchpOIJQQEz/VuPlm6/K7IH6AMjgGzdl6QtyX5jWjpQFevF3lq3xf6yhrOlIAUgQCojR8gmE+l9Nl2++JrMH6gEgR5UA5KYsc+AZmCbQCDi+IvgEQMob1XBEAHIajgBMLV+0kCdws6aGu3zqfkV9AGTwjftg3JRVVRAtHQEXX/wbAcoXP5d5CID8GoJKvqDAloKOoIz/y7x8c3pmD4zhaqwjRzCYyQg5gr2ZgsFTLweWr8XQgsXjbwLWrnNtMlKgNoLBmZAa7PTCAuYIBlMvlWQswwr2UlUw45jdDSx8HbD+Ctd+HVCwePKbgJV9aASDM8Yg59TWFDysYPBtmYK91IbNOHaPA/M7gUXKXA4hWDz79cA8+W0aweCMURj+1HYfcBjBYO54MMY3tGDv8I3nmWSHOzYOLJ0LLPGXAQWLz3oB8MQUsEa16kYwOG8whjh74yJkUMFgbsNlCfYO0epwissVY34bsHw2sEIRkAEEi/dcU0SP5qhF1ggG5w3GEGdXr4L5134Fg4kAjuDQgr1DtDqcUmZETwArZwAru4BVqsv0KVh8/o3F4v0QXZBGMDhvMIY4u3MYhv95Zh+Cu1xBcxuOU/HfeDIq5cv7FuwdotXhlCBXjOXZAnyrO4BV6in0IVh8wStLuWCsUAyvEQzOG5ABz+4eB+R/ewnu/kOP/3G/l4kJTERlljQtIot2e53/IwO2OPl4FLtcnCqAp9cahT56CBZf+LpSLhhz1N5qBIPzBmTAs/sLRHcTDKbiNHdBGGymOC/3hglEvgjAnoK9A7Y4+XgiV4zVWYDAs/etxaubYPFFP1QkLtCIP8neaASD8wZkwLP7AyC/tJNg8L/xLNBu+YBdBXsHbHEFAINcMVamgdWZAoRrfPdXm8KitLdmgYveWAq+2y7iMqfuRjA4b1AGOLt/APJLqwSD3+y5T1yI0AoSbAxMMzGV1o8/My2ro2DvAK2t+GgiV4zj4+3AIwDXtwBrVJeuECze+9aW4Dut4PxkIhYsdetGMDhvoDqcPRgA+SWp4O4veQ5Uv/mAGwR78+6rQq4Yq9PAOi2fA4/vBkKudKVU7VZw77uKvWFuZbtcMNb5v0YwOG9g+jx7cADyi6Pg7gccgIxlcA5TKhaD01yYKBmVFpBZMfx/m2Bvny3t8LGqoqTliZbVI+gMgHwnMAnCIFi897cLAAZ6QyzFzzSCwXkD1OPs4QDIL5XgLmk5JHk/SD5gKdibd38VcsVYGmuBTaAzEHLHgyCcaokB7/1IkUET5IKxwF5pBIPzBqbPs4cHIC/AaeqvPL9pmHxAE+zts6VdLCD/lcgVY3UyWD0Bj1ZwqgCggXA7sPfWAoAJvaEtZBrB4Lyx6efsPADyCtmCvf00s/NnOsgVY3m8BTRZPZuGBUACdArY+5lWDqGmYbIrLHEx0ggG5w1OH2fnA7CPizQfaXqgUw80AGywMdIeaAA40u5vLt4AsMHASHugAeBIu7+5eAPABgMj7YEGgCPt/ubiDQAbDIy0BxoAjrT7m4s3AGwwMNIeaAA40u5vLt4AsMHASHugAeBIu7+5eAPABgMj7YEGgCPt/ubiDQAbDIy0B8ZYNMbkX+ZekpuIiOQrPar+xs889HJg6jZg5jAwvVZ8B+ll9PlO5/Fc/o+ECjnHfi8zYfkvM5ulmp4qJXVqx5deD4zfAkw/CGxdAZgoHfuh131QkaI5hu8Bs4Ds8B0AWLnIRGCBsFfn87JffDMwdjOw5R5g8giwZa34jnQQUwDo99wBfJ4TM7COiNdlaj2rA/jeV/vfDeATAP4UGH8I2Lrc6gc+SHqY4oMZ74VSKM0xfA+UUzB/oBUUCKMl6zSQ/PsXqZD5KQC/A0w/DEwcAcYXgYnVwppwADuBkefnCim90FmBWXwnK87Uen53BI8sbuwqaz9p5UgnQhBS+ZN1zE8Ak0utviCwq8DI8/nx5hi+Bzb4gJzKZE1SEFZZgS9/2pWR/gTAJ4HJQ8DEMWB8ARhfBsaWCwDquwQKvvNgHXvOcYVbPFJPkw+dDxC/W1Y4tWDpw/Rlgo4lo1T4/KxTihDNpJwj3/UiMLXemprjffC7eWpzDN8DlYsQDiKtVxzEqoHkyX9HRizW+nIgaQnvAiaeBCbmC0s4tgSMu2rMePAR9X252jXklaTFU108K0MHav/nvJ6ZxVVk9OI7GR2IZoGQNc/HgbHgIwqILIVujuF7oOMqWFawCoRxkfEIB5CWgkREBCNf9wMTc8A4QciBWyoGz16rwNgaML5eWKpctYZL3N+TWLX0gvtuP0HHk2n16JDyxXmVhfU0qywbJbr5GSuXKxA/sV5Y9UYWdnjwyS3qKKgarWA69Wg6fjQOIK0HadnIjPVFB+AiME4AuiUkCFnESyCSkmAuU7Cjm15wX+2X2ifBRn9A8mKcW2UFjULVQcgVDl80u40SYh763FfvquhLCxitoBYUsoJfjXKttByMq9CKcHn4sPuCbgXNJwyWkECcz5Q376UX3LNncZyQAAADEklEQVT9fFgIJs6lBBwtn3Tt6FpIz4RWnuQxPh2XIGzm4CwQ9hWIFgBTK0gQHiIAJddKq0ELQh+KL1qUR4MvSEsoENIKrgALHNiMox+94K7tl9qnnMio8MSf6SNwGpYVjCDk/Ju7isq496fCqX0BkDeqlWwKwic1gAQSpzGREnFgREz01eALLvvq2Kfi45m6cf3qBXdsfxRbJMho8dimqOhEK8cXQRr9QVpvPoDNMXQP9A3ACELFxPh+jACkP0fLIKFCCRRqKuPUdqjlC9o07JZwKVNHeBC94DQcZO0XAAkmgotAk9QYrR9f/BvByYfMSATDVMzwTXMM3QMDAVAgVHCZ7/MaQK4QZUHiNCbBQlqUw74YCb7gcmYkelC9YFlwvVv7RRAorTuBkECU9asCID9/x9B935zYzyKkqpfiNHxcA0gLQgvBAaPVkCqm3h2AtC5m/RyEqzw/4xhGL3hD++MmslgqCbgUfLKAcRrmTlBzDN0DA1tAXUlWcDm1IOIIJAjlT/Fd05lbFQFwjdtgGcewesFt7Rc/Gx8iWjUCjGCT1YvWT1MwgUqrf3NG45tTbcu0aximWx9xENcEQHGbcYAEwtSXSqY0gnCdgeuMI0cvuGx/FUGgFhwEYrR80QckWN+X0fjm1DwAWv8RgJFilJZBznz0pQg+AZAAlVWh1GvGka0XzB0cCQi30aSGVa9AF62fLOB7MhrfnJoPwPER59Px+o3e76mL5Kwp2G57xPl0kxc3er+nLvyKtLmhfUC78RHn081ONnq/pzcAR5xPR9mRRu/31IVgvgUccT4dNaobvd/TGYAjzqejumqj93s6A3DE+XRUg2VSCjdaGr3fUw+I+VPwiPPpqJjO8J1Nw43e7ymHwHoAKMFd7QErAeEE5NNJMb3R+z3lsGcNzgfgiPPpomJ6o/d76oGwPgCOKJ8uKqY3er+nKwBHmE+noqRG7/fUA199U/AI8+kEwEbv93QHoEhZTnA+nYqSGr3fBoAtaiqBUImdm5hPJwA2er+nKwBHnE+X1gUzSbnR+z11wPj/AeCpPDD3t7rvAAAAAElFTkSuQmCC"
vendor: 3,122 bytes, line 5695
5695,T5={LOW:0,MEDIUM:1,HIGH:2,ULTRA:3},T6=class extends Tz{constructor({preset:e=T5.MEDIUM,edgeDetectionMode:t=2,predicationMode:i=0}={}){let r,a;super("SMAAEffect","uniform sampler2D weightMap;varying vec2 vOffset0;varying vec2 vOffset1;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 a;a.x=texture2D(weightMap,vOffset0).a;a.y=texture2D(weightMap,vOffset1).g;a.wz=texture2D(weightMap,uv).rb;vec4 color=inputColor;if(dot(a,vec4(1.0))>=1e-5){bool h=max(a.x,a.z)>max(a.y,a.w);vec4 blendingOffset=vec4(0.0,a.y,0.0,a.w);vec2 blendingWeight=a.yw;movec(bvec4(h),blendingOffset,vec4(a.x,0.0,a.z,0.0));movec(bvec2(h),blendingWeight,a.xz);blendingWeight/=dot(blendingWeight,vec2(1.0));vec4 blendingCoord=blendingOffset*vec4(texelSize,-texelSize)+uv.xyxy;color=blendingWeight.x*texture2D(inputBuffer,blendingCoord.xy);color+=blendingWeight.y*texture2D(inputBuffer,blendingCoord.zw);}outputColor=color;}",{vertexShader:"varying vec2 vOffset0;varying vec2 vOffset1;void mainSupport(const in vec2 uv){vOffset0=uv+texelSize*vec2(1.0,0.0);vOffset1=uv+texelSize*vec2(0.0,1.0);}",blendFunction:TI.NORMAL,attributes:TB.CONVOLUTION|TB.DEPTH,uniforms:new Map([["weightMap",new lR(null)]])}),arguments.length>1&&(r=arguments[0],a=arguments[1],arguments.length>2&&(e=arguments[2]),arguments.length>3&&(t=arguments[3])),this.renderTargetEdges=new im(1,1,{minFilter:1006,stencilBuffer:!1,depthBuffer:!1}),this.renderTargetEdges.texture.name="SMAA.Edges",this.renderTargetWeights=this.renderTargetEdges.clone(),this.renderTargetWeights.texture.name="SMAA.Weights",this.uniforms.get("weightMap").value=this.renderTargetWeights.texture,this.clearPass=new TE(!0,!1,!1),this.clearPass.overrideClearColor=new ia(0),this.clearPass.overrideClearAlpha=1,this.edgeDetectionPass=new TG(new Tc),this.edgeDetectionMaterial.edgeDetectionMode=t,this.edgeDetectionMaterial.predicationMode=i,this.weightsPass=new TG(new Tx);let o=new o4;o.onLoad=()=>{let e=new iu(r);e.name="SMAA.Search",e.magFilter=1003,e.minFilter=1003,e.generateMipmaps=!1,e.needsUpdate=!0,e.flipY=!0,this.weightsMaterial.searchTexture=e;let t=new iu(a);t.name="SMAA.Area",t.magFilter=1006,t.minFilter=1006,t.generateMipmaps=!1,t.needsUpdate=!0,t.flipY=!1,this.weightsMaterial.areaTexture=t,this.dispatchEvent({type:"load"})},o.itemStart("search"),o.itemStart("area"),void 0!==r&&void 0!==a?(o.itemEnd("search"),o.itemEnd("area")):"u">typeof Image&&(r=new Image,a=new Image,r.addEventListener("load",()=>o.itemEnd("search")),a.addEventListener("load",()=>o.itemEnd("area")),r.src=T3,a.src=T4),this.applyPreset(e)}get edgesTexture(){return this.renderTargetEdges.texture}getEdgesTexture(){return this.edgesTexture}get weightsTexture(){return this.renderTargetWeights.texture}getWeightsTexture(){return this.weightsTexture}get edgeDetectionMaterial(){return this.edgeDetectionPass.fullscreenMaterial}
5695get colorEdgesMaterial(){return this.edgeDetectionMaterial}getEdgeDetectionMaterial(){return this.edgeDetectionMaterial}get weightsMaterial(){return this.weightsPass.fullscreenMaterial}getWeightsMaterial(){return this.weightsMaterial}setEdgeDetectionThreshold(e){this.edgeDetectionMaterial.edgeDetectionThreshold=e}setOrthogonalSearchSteps(e){this.weightsMaterial.orthogonalSearchSteps=e}applyPreset(e){let t=this.edgeDetectionMaterial,i=this.weightsMaterial;switch(e){case T5.LOW:t.edgeDetectionThreshold=.15,i.orthogonalSearchSteps=4,i.diagonalDetection=!1,i.cornerDetection=!1;break;case T5.MEDIUM:t.edgeDetectionThreshold=.1,i.orthogonalSearchSteps=8,i.diagonalDetection=!1,i.cornerDetection=!1;break;case T5.HIGH:t.edgeDetectionThreshold=.1,i.orthogonalSearchSteps=16,i.diagonalSearchSteps=8,i.cornerRounding=25,i.diagonalDetection=!0,i.cornerDetection=!0;break;case T5.ULTRA:t.edgeDetectionThreshold=.05,i.orthogonalSearchSteps=32,i.diagonalSearchSteps=16,i.cornerRounding=25,i.diagonalDetection=!0,i.cornerDetection=!0}}setDepthTexture(e,t=3200){this.edgeDetectionMaterial.depthBuffer=e,this.edgeDetectionMaterial.depthPacking=t}update(e,t,i){this.clearPass.render(e,this.renderTargetEdges),this.edgeDetectionPass.render(e,t,this.renderTargetEdges),this.weightsPass.render(e,this.renderTargetEdges,this.renderTargetWeights)}setSize(e,t){this.edgeDetectionMaterial.setSize(e,t),this.weightsMaterial.setSize(e,t),this.renderTargetEdges.setSize(e,t),this.renderTargetWeights.setSize(e,t)}dispose(){let{searchTexture:e,areaTexture:t}=this.weightsMaterial;null!==e&&null!==t&&(e.dispose(),t.dispose()),super.dispose()}static get searchImageDataURL(){return T3}static get areaImageDataURL(){return T4}},T8=`uniform float offset;uniform float darkness;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){const vec2 center=vec2(0.5);vec3 color=inputColor.rgb;
5696#if VIGNETTE_TECHNIQUE == 0
5697float d=distance(uv,center);color*=smoothstep(0.8,offset*0.799,d*(darkness+offset));
5698#else
5699vec2 coord=(uv-center)*vec2(offset);color=mix(color,vec3(1.0-darkness),dot(coord,coord));
5700#endif
5701outputColor=vec4(color,inputColor.a);}`,T9={DEFAULT:0,ESKIL:1},T7=class extends Tz{constructor({blendFunction:e=TI.NORMAL,technique:t=T9.DEFAULT,eskil:i=!1,offset:r=.5,darkness:a=.5}={}){super("VignetteEffect",T8,{blendFunction:e,defines:new Map([["VIGNETTE_TECHNIQUE",t.toFixed(0)]]),uniforms:new Map([["offset",new lR(r)],["darkness",new lR(a)]])})}get technique(){return Number(this.defines.get("VIGNETTE_TECHNIQUE"))}set technique(e){this.technique!==e&&(this.defines.set("VIGNETTE_TECHNIQUE",e.toFixed(0)),this.setChanged())}get eskil(){return this.technique===T9.ESKIL}set eskil(e){this.technique=e?T9.ESKIL:T9.DEFAULT}getTechnique(){return this.technique}setTechnique(e){this.technique=e}get offset(){return this.uniforms.get("offset").value}set offset(e){this.uniforms.get("offset").value=e}getOffset(){return this.offset}setOffset(e){this.offset=e}get darkness(){return this.uniforms.get("darkness").value}set darkness(e){this.uniforms.get("darkness").value=e}getDarkness(){return this.darkness}setDarkness(e){this.darkness=e}};function Pe(e,t,i,r){var a;return(a=e+(t-e)*.75)+(i+(r-i)*.75-a)*.875}new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1]),new Float32Array(2),new Float32Array(2),new Float32Array([0,-.25,.25,-.125,.125,-.375,.375]),new Float32Array([0,0]),new Float32Array([.25,-.25]),new Float32Array([-.25,.25]),new Float32Array([.125,-.125]),new Float32Array([-.125,.125]),new Uint8Array([0,0]),new Uint8Array([3,0]),new Uint8Array([0,3]),new Uint8Array([3,3]),new Uint8Array([1,0]),new Uint8Array([4,0]),new Uint8Array([1,3]),new Uint8Array([4,3]),new Uint8Array([0,1]),new Uint8Array([3,1]),new Uint8Array([0,4]),new Uint8Array([3,4]),new Uint8Array([1,1]),new Uint8Array([4,1]),new Uint8Array([1,4]),new Uint8Array([4,4]),new Uint8Array([0,0]),new Uint8Array([1,0]),new Uint8Array([0,2]),new Uint8Array([1,2]),new Uint8Array([2,0]),new Uint8Array([3,0]),new Uint8Array([2,2]),new Uint8Array([3,2]),new Uint8Array([0,1]),new Uint8Array([1,1]),new Uint8Array([0,3]),new Uint8Array([1,3]),new Uint8Array([2,1]),new Uint8Array([3,1]),new Uint8Array([2,3]),new Uint8Array([3,3]),Pe(0,0,0,0),new Float32Array([0,0,0,0]),Pe(0,0,0,1),new Float32Array([0,0,0,1]),Pe(0,0,1,0),new Float32Array([0,0,1,0]),Pe(0,0,1,1),new Float32Array([0,0,1,1]),Pe(0,1,0,0),new Float32Array([0,1,0,0]),Pe(0,1,0,1),new Float32Array([0,1,0,1]),Pe(0,1,1,0),new Float32Array([0,1,1,0]),Pe(0,1,1,1),new Float32Array([0,1,1,1]),Pe(1,0,0,0),new Float32Array([1,0,0,0]),Pe(1,0,0,1),new Float32Array([1,0,0,1]),Pe(1,0,1,0),new Float32Array([1,0,1,0]),Pe(1,0,1,1),new Float32Array([1,0,1,1]),Pe(1,1,0,0),new Float32Array([1,1,0,0]),Pe(1,1,0,1),new Float32Array([1,1,0,1]),Pe(1,1,1,0),new Float32Array([1,1,1,0]),Pe(1,1,1,1),new Float32Array([1,1,1,1]);var Pt=class{constructor(e,t){this.enabled=!1,this.effect=new e(t),Object.defineProperty(this,"opacity",{enumerable:!0,set(e){this.effect.blendMode.opacity.value=e},get(){return this.effect.blendMode.opacity.value}}),Object.defineProperty(this,"blendFunction",{enumerable:!0,set(e){this.effect.blendMode.setBlendFunction(Number(e))},get(){return this.effect.blendMode.blendFunction}}),this.blendFunction=TI.NORMAL}},Pi=class extends Pt{constructor(){super(TX),this.blendFunction=TI.SCREEN}set intensity(e){this.effect.intensity=e}get intensity(){return this.effect.intensity}set luminanceThreshold(e){this.effect.luminanceMaterial.threshold=e}get luminanceThreshold(){return this.effect.luminanceMaterial.threshold}set luminanceSmoothing(e){this.effect.luminanceMaterial.smoothing=e}get luminanceSmoothing(){return this.effect.luminanceMaterial.smoothing}set blurScale(e){this.effect.blurPass.scale=e}get blurScale(){return this.effect.blurPass.scale}set kernelSize(e){this.effect.blurPass.kernelSize=e}get kernelSize(){return this.effect.blurPass.kernelSize}},Pr=class extends Pt{constructor(){super(TY)}set contrast(e){this.effect.uniforms.get("contrast").value=e}get contrast(){return this.effect.uniforms.get("contrast").value}set brightness(e){this.effect.uniforms.get("brightness").value=e}get brightness(){return this.effect.uniforms.get("brightness").value}},Ps=class extends Pt{constructor(){super(TZ),this.effect.offset=new tJ(.01,.01)}set offset(e){this.effect.offset.set(e[0]/1e3,e[1]/1e3)}get offset(){return[1e3*this.effect.offset.x,1e3*this.effect.offset.y]}},Pa=class extends Pt{constructor(){super(TQ)}},Pn=class extends Pt{constructor(){super(T$),this._hue=0}set hue(e){this._hue=e,this.effect.setHue(e)}get hue(){return this._hue}set saturation(e){this.effect.uniforms.get("saturation").value=e}get saturation(){return this.effect.uniforms.get("saturation").value}},Po=class extends Pt{constructor(){super(T1),this.blendFunction=TI.OVERLAY}},Pl=class extends Pt{constructor(){super(T7)}get eskil(){return this.effect.eskil}
vendor: 5,773 bytes, lines 5701-5728
5701set eskil(e){this.effect.eskil=e}get darkness(){return this.effect.uniforms.get("darkness").value}set darkness(e){this.effect.uniforms.get("darkness").value=e}get offset(){return this.effect.uniforms.get("offset").value}set offset(e){this.effect.uniforms.get("offset").value=e}},Ph=class extends Pt{constructor(e){super(TJ)}set focalLength(e){this.effect.circleOfConfusionMaterial.uniforms.focalLength.value=e/2e3}get focalLength(){return this.effect.circleOfConfusionMaterial.uniforms.focalLength.value}set focusDistance(e){this.effect.circleOfConfusionMaterial.uniforms.focusDistance.value=this.isPerspectiveCamera?e/2e3:(e+992)/2e3}get focusDistance(){return this.effect.circleOfConfusionMaterial.uniforms.focusDistance.value}get bokehScale(){return this.effect.bokehScale}set bokehScale(e){this.effect.bokehScale=e}setCamera(e){let t=!1;(e.isPerspectiveCamera&&!1===this.isPerspectiveCamera||!e.isPerspectiveCamera&&!0===this.isPerspectiveCamera)&&(t=!0),e.isPerspectiveCamera?(this.effect.circleOfConfusionMaterial.adoptCameraSettings(e.perspCamera),this.isPerspectiveCamera=!0):(this.effect.circleOfConfusionMaterial.adoptCameraSettings(e),this.isPerspectiveCamera=!1),t&&this.effect.setChanged()}},Pc=class extends Pt{constructor(){super(T2)}get granularity(){return this.effect.getGranularity()}set granularity(e){this.effect.setGranularity(e)}},Pd=`#define GLSLIFY 1
5702varying vec2 vUv;varying vec2 vTexCoords[9];uniform vec2 resolution;void main(){vUv=position.xy*0.5+0.5;vec2 texelSize=vec2(1.0)/resolution;vTexCoords[0]=vUv+vec2(-texelSize.x,-texelSize.y);vTexCoords[1]=vUv+vec2(0.0,-texelSize.y);vTexCoords[2]=vUv+vec2(texelSize.x,-texelSize.y);vTexCoords[3]=vUv+vec2(-texelSize.x,0.0);vTexCoords[4]=vUv+vec2(0.0,0.0);vTexCoords[5]=vUv+vec2(texelSize.x,0.0);vTexCoords[6]=vUv+vec2(-texelSize.x,texelSize.y);vTexCoords[7]=vUv+vec2(0.0,texelSize.y);vTexCoords[8]=vUv+vec2(texelSize.x,texelSize.y);gl_Position=vec4(position.xy,1.0,1.0);}`,Pu=`#define GLSLIFY 1
5703#include <common>
5704varying vec2 vUv;varying vec2 vTexCoords[9];uniform sampler2D inputBuffer;uniform sampler2D historyBuffer;uniform sampler2D velocityBuffer;uniform sampler2D depthBuffer;uniform vec2 resolution;
5705#define USE_YCOCG
5706#define USE_CATMULL_ROM
5707const float feedback_min=0.5;const float feedback_max=0.95;vec3 RGB_YCoCg(vec3 c){return vec3(c.x/4.0+c.y/2.0+c.z/4.0,c.x/2.0-c.z/2.0,-c.x/4.0+c.y/2.0-c.z/4.0);}vec3 YCoCg_RGB(vec3 c){return clamp(vec3(c.x+c.y-c.z,c.x+c.z,c.x-c.y-c.z),vec3(0.0),vec3(1.0));}vec4 sample_color(sampler2D tex,vec2 uv){
5708#ifdef USE_YCOCG
5709vec4 c=texture(tex,uv);return vec4(RGB_YCoCg(c.rgb),c.a);
5710#else
5711return texture(tex,uv);
5712#endif
5713}vec4 sample_catmull_rom(sampler2D tex,vec2 uv,vec2 texSize){vec2 samplePos=uv*texSize;vec2 texPos1=floor(samplePos-0.5)+0.5;vec2 f=samplePos-texPos1;vec2 w0=f*(-0.5+f*(1.0-0.5*f));vec2 w1=1.0+f*f*(-2.5+1.5*f);vec2 w2=f*(0.5+f*(2.0-1.5*f));vec2 w3=f*f*(-0.5+0.5*f);vec2 w12=w1+w2;vec2 offset12=w2/(w1+w2);vec2 texPos0=texPos1-1.0;vec2 texPos3=texPos1+2.0;vec2 texPos12=texPos1+offset12;texPos0/=texSize;texPos3/=texSize;texPos12/=texSize;vec4 result=vec4(0.0);result+=texture2D(tex,vec2(texPos12.x,texPos0.y))*w12.x*w0.y;result+=texture2D(tex,vec2(texPos0.x,texPos12.y))*w0.x*w12.y;result+=texture2D(tex,vec2(texPos12.x,texPos12.y))*w12.x*w12.y;result+=texture2D(tex,vec2(texPos3.x,texPos12.y))*w3.x*w12.y;result+=texture2D(tex,vec2(texPos12.x,texPos3.y))*w12.x*w3.y;return result;}vec3 choose_motion_vector(){
5714#ifdef CHOOSE_LONGEST_MOTION_VECTOR
5715float longest=-1.0;vec3 v_choose=vec3(-1.0);for(int i=0;i<9;i++){vec3 v=texture2D(velocityBuffer,vTexCoords[i]).rgb;float l=length(v.xy);if(l>longest){longest=l;v_choose=v;}}return v_choose;
5716#else
5717float closest_depth=1000.0;vec2 closest_uv_offset=vec2(0.0);for(int i=0;i<9;i++){float neighbor_depth=texture2D(depthBuffer,vTexCoords[i]).r;if(neighbor_depth<closest_depth){closest_uv_offset=vTexCoords[i];closest_depth=neighbor_depth;}}return texture2D(velocityBuffer,closest_uv_offset).rgb;
5718#endif
5719}vec4 clipAabb(vec3 aabb_min,vec3 aabb_max,vec4 avg,vec4 input_texel){const float FLT_EPS=0.00000001;vec3 p_clip=0.5*(aabb_max+aabb_min);vec3 e_clip=0.5*(aabb_max-aabb_min)+FLT_EPS;vec4 v_clip=input_texel-vec4(p_clip,avg.w);vec3 v_unit=v_clip.xyz/e_clip;vec3 a_unit=abs(v_unit);float ma_unit=max(a_unit.x,max(a_unit.y,a_unit.z));if(ma_unit>1.0){return vec4(p_clip,avg.w)+v_clip/ma_unit;}else{return input_texel;}}vec3 clip_aabb_variance(in vec3 cOld,in vec3 cNew,in vec3 centre,in vec3 halfSize){if(all(lessThanEqual(abs(cOld-centre),halfSize))){return cOld;}vec3 dir=(cNew-cOld);vec3 near=centre-sign(dir)*halfSize;vec3 tAll=(near-cOld)/dir;float t=0.0001;for(int i=0;i<3;i++){if(tAll[i]>=0.0&&tAll[i]<t){t=tAll[i];}}if(t>=0.0001){return cOld;}return cOld+dir*t;}void main(){vec3 v=choose_motion_vector();vec2 velocity=v.rg;vec2 previousPixelPos=vUv-velocity;vec4 currentColor=sample_color(inputBuffer,vUv);
5720#ifdef USE_CATMULL_ROM
5721vec4 previousColor=sample_catmull_rom(historyBuffer,previousPixelPos,resolution);
5722#else
5723vec4 previousColor=sample_color(historyBuffer,previousPixelPos);
5724#endif
5725#ifdef USE_YCOCG
5726previousColor=vec4(RGB_YCoCg(previousColor.rgb),previousColor.a);
5727#endif
5728vec4 ctl=sample_color(inputBuffer,vTexCoords[0]);vec4 ctc=sample_color(inputBuffer,vTexCoords[1]);vec4 ctr=sample_color(inputBuffer,vTexCoords[2]);vec4 cml=sample_color(inputBuffer,vTexCoords[3]);vec4 cmc=sample_color(inputBuffer,vTexCoords[4]);vec4 cmr=sample_color(inputBuffer,vTexCoords[5]);vec4 cbl=sample_color(inputBuffer,vTexCoords[6]);vec4 cbc=sample_color(inputBuffer,vTexCoords[7]);vec4 cbr=sample_color(inputBuffer,vTexCoords[8]);vec4 cmin=min(ctl,min(ctc,min(ctr,min(cml,min(cmc,min(cmr,min(cbl,min(cbc,cbr))))))));vec4 cmax=max(ctl,max(ctc,max(ctr,max(cml,max(cmc,max(cmr,max(cbl,max(cbc,cbr))))))));
5728vec4 cavg=(ctl+ctc+ctr+cml+cmc+cmr+cbl+cbc+cbr)/9.0;vec4 cmin5=min(ctc,min(cml,min(cmc,min(cmr,cbc))));vec4 cmax5=max(ctc,max(cml,max(cmc,max(cmr,cbc))));vec4 cavg5=(ctc+cml+cmc+cmr+cbc)/5.0;cmin=0.5*(cmin+cmin5);cmax=0.5*(cmax+cmax5);cavg=0.5*(cavg+cavg5);
5729#ifdef USE_YCOCG
5730vec2 chroma_extent=vec2(0.25*0.5*(cmax.r-cmin.r));vec2 chroma_center=currentColor.gb;cmin.yz=chroma_center-chroma_extent;cmax.yz=chroma_center+chroma_extent;cavg.yz=chroma_center;
5731#endif
5732vec4 previousColorClipped=clamp(previousColor,cmin,cmax);
5733#ifdef LUMINANCE_DIFFERENCES
5734#ifdef USE_YCOCG
5735float lum0=currentColor.r;float lum1=previousColorClipped.r;
5736#else
5737float lum0=luminance(currentColor.rgb);float lum1=luminance(previousColorClipped.rgb);
5738#endif
5739float unbiased_diff=abs(lum0-lum1)/max(lum0,max(lum1,0.2));float unbiased_weight=1.0-unbiased_diff;float unbiased_weight_sqr=unbiased_weight*unbiased_weight;float k_feedback=mix(feedback_min,feedback_max,unbiased_weight_sqr);vec4 result=mix(currentColor,previousColorClipped,vec4(k_feedback));
5740#else
5741const float alpha=0.1;vec4 result=mix(currentColor,previousColorClipped,1.0-alpha);
5742#endif
5743#ifdef USE_YCOCG
5744gl_FragColor=vec4(YCoCg_RGB(result.rgb).rgb,result.a);
5745#else
5746gl_FragColor=result;
5747#endif
5748}`,Pp=`#define GLSLIFY 1
5749varying vec2 vUv;void main(){gl_Position=vec4(position.xy,1.0,1.0);vUv=position.xy*0.5+0.5;}`,Pf=`#define GLSLIFY 1
5750layout(location=1)out vec4 gVelocity;varying vec2 vUv;uniform sampler2D inputBuffer;void main(){gl_FragColor=texture2D(inputBuffer,vUv);gVelocity=vec4(0.0);}`,Pm=class extends r9{constructor(){super({name:"PassthroughMaterial",uniforms:{inputBuffer:new lR(null)},blending:0,depthWrite:!1,depthTest:!1,vertexShader:Pp,fragmentShader:Pf})}set inputBuffer(e){this.uniforms.inputBuffer.value=e}},Pg=class extends TS{constructor(){super("TAAResolvePass"),this.MRTCompatible=!0,this.needsSwap=!1,this.passThroughMaterial=new Pm,this.resolutionVector=new tJ,this.resolveMaterial=new r9({name:"TAAResolveMaterial",uniforms:{inputBuffer:new lR(null),historyBuffer:new lR(null),velocityBuffer:new lR(null),depthBuffer:new lR(null),resolution:new lR(new tJ)},blending:0,depthWrite:!1,depthTest:!1,vertexShader:Pd,fragmentShader:Pu}),this.historyRenderTarget=new im(1024,1024,{minFilter:1006,stencilBuffer:!1,depthBuffer:!1}),this.historyRenderTarget.texture.name="TAA.History",this.resultRenderTarget=new im(1024,1024,{minFilter:1006,stencilBuffer:!1,depthBuffer:!1}),this.resultRenderTarget.texture.name="TAA.Output"}setSize(e,t){this.historyRenderTarget.setSize(e,t),this.resultRenderTarget.setSize(e,t)}render(e,t){this.fullscreenMaterial=this.resolveMaterial,this.resolveMaterial.uniforms.inputBuffer.value=t.texture[0],this.resolveMaterial.uniforms.velocityBuffer.value=t.texture[1],this.resolveMaterial.uniforms.depthBuffer.value=t.depthTexture,this.resolveMaterial.uniforms.historyBuffer.value=this.historyRenderTarget.texture,this.resolveMaterial.uniforms.resolution.value.set(t.width,t.height),e.setRenderTarget(this.resultRenderTarget),e.render(this.scene,this.camera),this.fullscreenMaterial=this.passThroughMaterial,this.passThroughMaterial.inputBuffer=this.resultRenderTarget.texture,e.setRenderTarget(this.historyRenderTarget),e.render(this.scene,this.camera);let i=this.renderToScreen?null:t;this.fullscreenMaterial=this.passThroughMaterial,this.passThroughMaterial.inputBuffer=this.resultRenderTarget.texture,e.setRenderTarget(i),e.render(this.scene,this.camera)}dispose(){this.resultRenderTarget.dispose(),this.historyRenderTarget.dispose(),this.resolveMaterial.dispose(),this.passThroughMaterial.dispose()}},Pv=class extends TS{constructor(e,t,i){super("TransmissionPass",void 0,t),this.MRTCompatible=!0,this.depthPass=new TO(e,t,{renderTarget:i.transmissionDepthTarget}),this.passThroughMaterial=new Pm,this.splineScene=e,this.needsSwap=!1}updatePasses(e){this.passThroughMaterial=new Pm,this.depthPass=new TO(this.splineScene,this.camera,{renderTarget:e.transmissionDepthTarget})}setCamera(e){this.camera=e}setScene(e){this.splineScene=e}render(e,t,i){let r=this.camera.layers.mask;e.setRenderTarget(e.transmissionRenderTarget),this.fullscreenMaterial=this.passThroughMaterial,this.passThroughMaterial.inputBuffer=t.texture[0],e.clear(),e.render(this.scene,this.camera),this.camera.layers.disable(3),this.depthPass.render(e,t,i),e.shadowMap.needsUpdate=!1,e.shadowMap.autoUpdate=!1;let a=this.renderToScreen?null:t;this.camera.layers.set(3),e.setRenderTarget(a),e.render(this.splineScene,this.camera),this.camera.layers.mask=r}},Py=new n_,Px=new r9({transparent:!0,vertexShader:`
5751        void main() {
5752            gl_Position = vec4(0.0);
5753        }
5754    `,fragmentShader:`
5755        layout(location = 1) out vec4 gVelocity;
5756
5757        void main() {
5758            gl_FragColor = vec4(0.0);
5759			gVelocity = vec4(0.0);
5760        }
5761    `}),Pb=class extends TS{constructor(e,t,i){super("OpaquePass",t??Py,i),this.MRTCompatible=!0,this.originalMaterials=[],this.hasTransmissionPass=!1,this.clear=!0,this.clearColorOnly=!1,this.clearDepth=!1,this.needsSwap=!1,this.MRTCompatible=e}setCamera(e){this.camera=e}setScene(e){this.scene=e??Py}getScene(){return this.scene}render(e,t){this.camera.layers.enable(3),this.hasTransmissionPass&&(this.originalMaterials.length=0,this.scene.traverse(e=>{e.layers.isEnabled(3)&&e instanceof Ai&&(this.originalMaterials.push([e,e.material]),e.material=Px)}),e.shadowMap.needsUpdate=!0,e.shadowMap.autoUpdate=!0),this.camera.layers.enable(8);let i=this.renderToScreen?null:t;e.setRenderTarget(i),this.clearColorOnly&&e.clear(!0,!1,!0),this.clear&&e.clear(),e.render(this.scene,this.camera),this.clearDepth&&e.clear(!1,!0,!1),this.hasTransmissionPass&&this.originalMaterials.forEac
5761h(e=>{e[0].material=e[1]})}},Pw=class{constructor(e,{depthBuffer:t=!0,stencilBuffer:i=!1,multisampling:r=0,frameBufferType:a=0}={}){this.renderer=e,this.helperStartIndex=0,this.copyPass=new T_,this.depthTexture=null,this.timer=new TH,this._width=1,this._height=1,this.passes=[],this.helperPasses=[],this.autoRenderToScreen=!0,this.inputBuffer=this.createBuffer(t,i,a,r,!0,"input buffer mrt"),this.inputBufferSingle=this.createBuffer(t,i,a,r,!1," input buffer single"),this.inputBufferSingle.texture.dispose(),this.inputBufferSingle.depthTexture.dispose(),this.inputBufferSingle.texture=this.inputBuffer.texture[0],this.inputBufferSingle.depthTexture=this.inputBuffer.depthTexture,this.outputBuffer=this.inputBuffer.clone(),this.outputBuffer.name="output buffer mrt",this.outputBufferSingle=this.createBuffer(t,i,a,r,!1,"output buffer single"),this.outputBufferSingle.texture.dispose(),this.outputBufferSingle.depthTexture.dispose(),this.outputBufferSingle.texture=this.outputBuffer.texture[0],this.outputBufferSingle.depthTexture=this.outputBuffer.depthTexture,this.setRenderer(e)}get multisampling(){return this.inputBuffer.samples||0}set multisampling(e){let t=this.inputBuffer,i=this.multisampling;i>0&&e>0?(this.inputBuffer.samples=e,this.outputBuffer.samples=e,this.inputBuffer.dispose(),this.outputBuffer.dispose()):i!==e&&(this.inputBuffer.dispose(),this.outputBuffer.dispose(),console.log("creating new input buffer"),this.inputBuffer=this.createBuffer(t.depthBuffer,t.stencilBuffer,t.texture.type,e,!0,"new input buffer"),this.inputBuffer.depthTexture=this.depthTexture,this.outputBuffer=this.inputBuffer.clone())}getTimer(){return this.timer}getRenderer(){return this.renderer}setRenderer(e){if(this.renderer=e,null!==e){let t=e.getSize(new tJ),i=e.getContext().getContextAttributes()?.alpha??!1,r=this.inputBuffer.texture[0].type;for(let a of(1009===r&&3001===e.outputEncoding&&(this.inputBuffer.texture[0].encoding=3001,this.outputBuffer.texture[0].encoding=3001,this.inputBuffer.dispose(),this.outputBuffer.dispose(),console.log("doing some kinda dispose??")),e.autoClear=!1,this.setSize(t.width,t.height,!1),this.passes))a.initialize(e,i,r)}}replaceRenderer(e,t=!0){let i=this.renderer,r=i.domElement.parentNode;return this.setRenderer(e),t&&null!==r&&(r.removeChild(i.domElement),r.appendChild(e.domElement)),i}createDepthTexture(){let e=this.depthTexture=new nv(this._width,this._height);return this.inputBuffer.depthTexture=e,this.inputBuffer.stencilBuffer?(e.format=1027,e.type=1020):e.type=1014,e}deleteDepthTexture(){if(null!==this.depthTexture)for(let e of(this.depthTexture.dispose(),this.depthTexture=null,this.inputBuffer.depthTexture=null,this.inputBuffer.dispose(),this.passes))e.setDepthTexture(null)}createBuffer(e,t,i,r,a,o){let h=this.renderer,c=null===h?new tJ:h.getDrawingBufferSize(new tJ),d={minFilter:1006,magFilter:1006,wrapS:1001,wrapT:1001,stencilBuffer:t,depthBuffer:e},u;return r>0?(u=new im(c.width,c.height,d)).samples=r:(a?(u=new iy(c.width,c.height,2,d)).texture[1].type=1016:u=new im(c.width,c.height,d),u.depthTexture=new nv(2048,2048),u.depthTexture.type=1015),1009===i&&null!==h&&3001===h.outputEncoding&&(Array.isArray(u.texture)?u.texture.forEach(e=>e.encoding=3001):u.texture.encoding=3001),Array.isArray(u.texture)?u.texture.forEach((e,t)=>{e.name=`EffectComposer.Buffer ${a} ${t}`,e.generateMipmaps=!1}):(u.texture.name=`EffectComposer.Buffer ${a}`,u.texture.generateMipmaps=!1),u.name=o,u}addPass(e,t){let i=this.passes,r=this.renderer,a=r.getDrawingBufferSize(new tJ),o=r.getContext().getContextAttributes()?.alpha??!1,h;if(e.MRTCompatible&&(h=this.inputBuffer.texture[0].type),e.MRTCompatible||(h=this.inputBuffer.texture.type),e.setRenderer(r),e.setSize(a.width,a.height),e.initialize(r,o,h),this.autoRenderToScreen&&(i.length>0&&(i[i.length-1].renderToScreen=!1),e.renderToScreen&&(this.autoRenderToScreen=!1)),void 0!==t?i.splice(t,0,e):i.push(e),this.autoRenderToScreen&&(i[i.length-1].renderToScreen=!0),e.needsDepthTexture||null!==this.depthTexture){if(null===this.depthTexture){let t=this.createDepthTexture();for(e of i)e.setDepthTexture(t)}else e.setDepthTexture(this.depthTexture)}}setHelperStartIndex(e){this.helperStartIndex=e}removePass(e){let t=this.passes,i=t.indexOf(e);-1!==i&&t.splice(i,1).length>0&&(null!==this.depthTexture&&(t.reduce((e,t)=>
5761e||t.needsDepthTexture,!1)||e.getDepthTexture()===this.depthTexture&&e.setDepthTexture(null)),this.autoRenderToScreen&&i===t.length&&(e.renderToScreen=!1,t.length>0&&(t[t.length-1].renderToScreen=!0)))}removeAllPasses(){let e=this.passes;e.length>0&&(this.autoRenderToScreen&&(e[e.length-1].renderToScreen=!1),this.passes=[])}render(e){let t=this.renderer,i=this.copyPass,r=this.inputBuffer,a=this.outputBuffer,o=this.inputBufferSingle,h=this.outputBufferSingle,c=!1,d,u,p,f;for(let m of(void 0===e&&(e=this.timer.update().getDelta()),this.passes))m.enabled&&(m.MRTCompatible?m.render(t,r,a,e,c):m.render(t,o,h,e,c),m.needsSwap&&(c&&(i.renderToScreen=m.renderToScreen,d=t.getContext(),(u=t.state.buffers.stencil).setFunc(d.NOTEQUAL,1,4294967295),i.render(t,r,a,e,c),u.setFunc(d.EQUAL,1,4294967295)),p=r,f=o,r=a,o=h,a=p,h=f),m instanceof Tj?c=!0:m instanceof TA&&(c=!1))}setSize(e,t,i){let r=this.renderer;if(this._width=e,this._height=t,void 0===e||void 0===t){let i=r.getSize(new tJ);e=i.width,t=i.height}r.setSize(e,t,i);let a=r.getDrawingBufferSize(new tJ);for(let e of(this.inputBuffer.setSize(a.width,a.height),this.outputBuffer.setSize(a.width,a.height),this.inputBufferSingle.setSize(a.width,a.height),this.outputBufferSingle.setSize(a.width,a.height),this.passes))e.setSize(a.width,a.height)}reset(){let e=this.timer.isAutoResetEnabled();this.dispose(),this.autoRenderToScreen=!0,this.timer.setAutoResetEnabled(e)}dispose(){for(let e of this.passes)e.dispose();this.passes=[],null!==this.inputBuffer&&this.inputBuffer.dispose(),null!==this.outputBuffer&&this.outputBuffer.dispose(),null!==this.inputBufferSingle&&this.inputBufferSingle.dispose(),null!==this.outputBufferSingle&&this.outputBufferSingle.dispose(),this.deleteDepthTexture(),this.copyPass.dispose(),this.timer.dispose()}},PS=new r9({name:"CombineMaterial",uniforms:{inputBufferA:new lR(null),inputBufferB:new lR(null)},blending:0,depthWrite:!1,depthTest:!1,vertexShader:`
5762varying vec2 vUv;
5763void main() {
5764    gl_Position = vec4(position.xy, 1.0, 1.0);
5765    vUv = position.xy * 0.5 + 0.5;
5766}
5767`,fragmentShader:`
5768    varying vec2 vUv;
5769    uniform sampler2D inputBufferA;
5770    uniform sampler2D inputBufferB;
5771
5772    // TODO: Why do we need these when postpro of framemode is enabled???
5773    layout(location = 1) out vec4 gVelocity;
5774
5775    void main() {
5776	vec4 resA = texture2D(inputBufferA, vUv);
5777	vec4 resB = texture2D(inputBufferB, vUv);
5778    float a = resA.a + resB.a * ( 1.0 - resA.a );
5779
5780	vec4 res;
5781	res.rgb =  resA.rgb + (resB.rgb * (1.0 - resA.a));
5782	res.a = resA.a + resB.a * (1.0 - resA.a);
5783	gl_FragColor = res;
5784    gVelocity = vec4(0.0);
5785    }
5786`}),P_=class extends TS{constructor(e){super("HelperPass",void 0,e),this.MRTCompatible=!1,this.fullscreenMaterial=PS,this.helperPass=new Pb(!1,void 0,this.camera),this.helperPass.hasTransmissionPass=!1,this.helperPass.clear=!1,this.helperPass.renderToScreen=!1,this.helperPassOnTop=new Pb(!1,void 0,this.camera),this.helperPassOnTop.hasTransmissionPass=!1,this.helperPassOnTop.clear=!1,this.helperPassOnTop.renderToScreen=!1;let t=new T6({preset:T5.LOW,edgeDetectionMode:2});this.effectPass=new TN(this.camera,t),this.rt=new im(10,10,{minFilter:1006,magFilter:1006,wrapS:1001,wrapT:1001,depthBuffer:!0})}setSize(e,t){this.rt.setSize(e,t),this.effectPass.setSize(e,t)}set sceneHelpers(e){this.helperPass.setScene(e)}get sceneHelpers(){return this.helperPass.getScene()}set sceneHelpersOnTop(e){this.helperPassOnTop.setScene(e)}get sceneHelpersOnTop(){return this.helperPassOnTop.getScene()}setCamera(e){this.helperPass.setCamera(e),this.helperPassOnTop.setCamera(e)}initialize(e,t,i){super.initialize(e,t,i),this.effectPass.initialize(e,t,i)}dispose(){super.dispose(),this.rt.dispose(),this.effectPass.dispose()}render(e,t,i){this.rt.depthTexture=t.depthTexture;let r=e.getClearAlpha();e.setClearAlpha(0),this.helperPass.clearDepth=!0,this.helperPass.clearColorOnly=!0,this.helperPass.render(e,this.rt),this.helperPassOnTop.render(e,this.rt),this.effectPass.renderToScreen=!1,this.effectPass.render(e,this.rt,i),this.fullscreenMaterial.uniforms.inputBufferA.value=i.texture,this.fullscreenMaterial.uniforms.inputBufferB.value=t.texture,e.setClearAlpha(r),e.setRenderTarget(null),e.clear(),e.render(this.scene,this.camera)}},PA=`#define GLSLIFY 1
5787out vec2 v_uv;void main(){v_uv=uv;gl_Position=vec4(position.xy,1.0,1.0);}`,PM=`#define GLSLIFY 1
5788in vec2 v_uv;const float pi=3.14159265;const float num_steps=4.0;const float num_directions=4.0;uniform float near;uniform float far;uniform float fov;uniform vec4 proj_info;uniform bool is_ortho;uniform vec2 resolution;uniform float radius_of_influence;uniform float radius_in_screen_space;uniform float exponent;uniform vec3 ao_color;uniform float bias;uniform sampler2D texture_depth;uniform sampler2D texture_normals;uniform sampler2D texture_blue_noise;uniform sampler2D texture_blue_noise_in_disk;uniform sampler2D texture_color_pass;uniform int frame_index;uniform bool fog_enabled;uniform float fog_near;uniform float fog_far;vec3 uv_to_view_space(vec2 uv,float eye_z){return vec3((uv*proj_info.xy+proj_info.zw)*(is_ortho ? 1.0 : eye_z),eye_z);}float linearize_depth(float depth_sampled){float z=is_ortho ? depth_sampled : depth_sampled*2.0-1.0;return mix((2.0*near*far)/(far+near-z*(far-near)),near+z*(far-near),float(is_ortho));}vec3 get_view_position(vec2 uv_coords){float linear_depth=linearize_depth(texture(texture_depth,uv_coords).x);return uv_to_view_space(uv_coords,linear_depth);}vec3 min_difference(vec3 p,vec3 right,vec3 left){vec3 v1=right-p;vec3 v2=p-left;return(dot(v1,v1)<dot(v2,v2))? v1 : v2;}vec3 rebuild_normal(in vec2 uv,in vec3 p){vec2 one_over_resolution=1.0/resolution;vec3 r=get_view_position(uv+vec2(one_over_resolution.x,0));vec3 l=get_view_position(uv+vec2(-one_over_resolution.x,0));vec3 t=get_view_position(uv+vec2(0,one_over_resolution.y));vec3 b=get_view_position(uv+vec2(0,-one_over_resolution.y));return normalize(cross(min_difference(p,r,l),min_difference(p,t,b)));}float falloff(float distance_squared){float neg_inv_r2=-1.0/(radius_of_influence*radius_of_influence);return distance_squared*neg_inv_r2+1.0;}float ao_contribution(vec3 P,vec3 N,vec3 S){vec3 to_sample=S-P;float norm_squared=dot(to_sample,to_sample);float norm=sqrt(norm_squared);float cos_theta=dot(N,to_sample)/norm;return clamp(cos_theta-bias,0.0,1.0)*clamp(falloff(norm_squared),0.0,1.0);}float compute_ambient_occlusion(vec2 uv,float radius_in_screen_space,vec3 pc,vec3 view_space_n){vec2 one_over_resolution=1.0/resolution;ivec2 noise_uv=ivec2(int(mod(gl_FragCoord.x,128.0)),int(mod(gl_FragCoord.y,128.0)));float noise=texelFetch(texture_blue_noise,noise_uv,0).r;noise=fract(noise+0.61803398875*float(frame_index));float theta=noise*2.0*3.1415;float ct=cos(theta);float st=sin(theta);float step_size=radius_in_screen_space/(num_steps+1.0);const float angle_step=2.0*pi/num_directions;float contribution=0.0;for(int i=0;i<int(num_directions);++i){float current_pixel=step_size+1.0;for(int j=0;j<int(num_steps);++j){int index=i*int(num_steps)+j;vec2 blue_noise_sample=texelFetch(texture_blue_noise_in_disk,ivec2(index,0),0).rg;vec2 disk_point;disk_point.x=blue_noise_sample.x*ct-blue_noise_sample.y*st;disk_point.y=blue_noise_sample.x*st+blue_noise_sample.y*ct;vec2 sample_direction=disk_point;vec2 snapped_uv=round(current_pixel*sample_direction)*one_over_resolution+uv;vec3 ps=get_view_position(snapped_uv);current_pixel+=step_size;contribution+=ao_contribution(pc,view_space_n,ps);}}float mult=1.0/(1.0-bias);contribution*=mult/(num_directions*num_steps);return clamp(1.0-contribution*2.0,0.0,1.0);}
5789#define USE_GBUFFER_NORMALS
5790void main(){vec3 view_space_p=get_view_position(v_uv);
5791#ifdef USE_GBUFFER_NORMALS
5792vec3 view_space_n=texture(texture_normals,v_uv).rgb;view_space_n.z*=-1.0;
5793#else
5794vec3 view_space_n=-rebuild_normal(v_uv,view_space_p);
5795#endif
5796float radius_ss=radius_in_screen_space/(is_ortho ? 1.0 : view_space_p.z);float ao=compute_ambient_occlusion(v_uv,radius_ss,view_space_p,view_space_n);float final=pow(ao,exponent);if(view_space_p.z>
5796=far){final=1.0;}vec3 color=mix(ao_color,vec3(1.0),final);if(fog_enabled){float fog_factor=smoothstep(fog_near,fog_far,view_space_p.z);color=mix(color,vec3(1.0),fog_factor);}gl_FragColor=vec4(color,1.0);}`,PE=`#define GLSLIFY 1
5797out vec2 v_uv;void main(){gl_Position=vec4(position.xy,1.0,1.0);v_uv=uv;}`,PC=`#define GLSLIFY 1
5798in vec2 v_uv;uniform sampler2D texture_ao_lrez;uniform sampler2D texture_depth_lrez;uniform sampler2D texture_depth_hrez;uniform float near;uniform float far;float linearize_depth(float depth_sampled){float z=depth_sampled*2.0-1.0;return(2.0*near*far)/(far+near-z*(far-near));}vec2 nearest_depth_filter(in vec2 uv){vec2 resolution=vec2(textureSize(texture_depth_lrez,0));vec2 texel_size=1.0/resolution;vec2 offset=uv-0.5*texel_size;float d_hrez=texture(texture_depth_hrez,uv).r;float a=abs(d_hrez-texture(texture_depth_lrez,offset).r);float b=abs(d_hrez-texture(texture_depth_lrez,offset+vec2(texel_size.x,0.0)).r);float c=abs(d_hrez-texture(texture_depth_lrez,offset+vec2(0.0,texel_size.y)).r);float d=abs(d_hrez-texture(texture_depth_lrez,offset+vec2(texel_size.x,texel_size.y)).r);float min_diff=min(a,min(b,min(c,d)));if(min_diff==a)return offset;if(min_diff==b)return offset+vec2(texel_size.x,0.0);if(min_diff==c)return offset+vec2(0.0,texel_size.y);if(min_diff==d)return offset+vec2(texel_size.x,texel_size.y);}void main(){
5799#ifdef DEBUG
5800float d_lrez=texture(texture_depth_lrez,v_uv).r;float d_hrez=texture(texture_depth_hrez,v_uv).r;float output_d=mix(linearize_depth(d_lrez)/far,linearize_depth(d_hrez)/far,step(0.5,v_uv.x));gl_FragColor=vec4(vec3(output_d),1.0);
5801#else
5802vec2 filtered_uv=nearest_depth_filter(v_uv);vec4 ao=texture(texture_ao_lrez,filtered_uv);gl_FragColor=vec4(ao.rgb,1.0);gl_FragColor=ao;
5803#endif
5804}`,PT=[[.478712,.875764],[-.337956,-.793959],[-.955259,-.028164],[.864527,.325689],[.209342,-.395657],[-.106779,.672585],[.156213,.235113],[-.413644,-.082856],[-.415667,.323909],[.141896,-.93998],[.954932,-.182516],[-.766184,.410799],[-.434912,-.458845],[.415242,-.078724],[.728335,-.491777],[-.058086,-.066401],[.20299,.686837],[-.808362,-.556402],[.507386,-.640839],[-.723494,-.22924],[.48974,.317826],[-.622663,.765301],[-.01064,.929347],[.663146,.647618],[-.096674,-.413835],[.525945,-.321063],[-.122533,.366019],[.195235,-.687983],[-.563203,.098748],[.418563,.561335],[-.378595,.800367],[.826922,.001024],[-.085372,-.766651],[-.92192,.183673],[-.590008,-.721799],[.167751,-.164393],[.032961,-.56253],[.6329,-.107059],[-.46408,.569669],[-.173676,-.958758],[-.242648,-.234303],[-.275362,.157163],[.382295,-.795131],[.562955,.115562],[.190586,.470121],[.770764,-.297576],[.237281,.93105],[-.666642,-.455871],[-.905649,-.298379],[.33952,.157829],[.701438,-.7041],[-.062758,.160346],[-.220674,.957141],[.642692,.432706],[-.77339,-.015272],[-.671467,.24688],[.158051,.062859],[.806009,.527232],[-.05762,-.247071],[.333436,-.51671],[-.550658,-.315773],[-.652078,.589846],[.008818,.530556],[-.210004,.519896]],PP=new r9({vertexShader:`#define GLSLIFY 1
5805#include <skinning_pars_vertex>
5806#include <morphtarget_pars_vertex>
5807out vec3 n;void main(){
5808#include <beginnormal_vertex>
5809#include <morphnormal_vertex>
5810#include <skinbase_vertex>
5811#include <skinnormal_vertex>
5812#include <defaultnormal_vertex>
5813#include <begin_vertex>
5814#include <morphtarget_vertex>
5815#include <skinning_vertex>
5816vec4 view_space=viewMatrix*modelMatrix*vec4(transformed,1.0);gl_Position=projectionMatrix*view_space;n=normalize(transformedNormal);}`,fragmentShader:`#define GLSLIFY 1
5817in vec3 n;void main(){gl_FragColor=vec4(n,1.0);}`}),PD=new r9({vertexShader:PE,fragmentShader:PC,uniforms:{texture_ao_lrez:new lR(null),texture_depth_lrez:new lR(null),texture_depth_hrez:new lR(null),near:new lR(null),far:new lR(null)}}),PO=class extends TS{constructor(e,t){super("AmbientOcclusionPass",void 0,t),this.fogEnabled=!1,this.fogNear=1,this.fogFar=1e3,this.frameIndex=0,this._runHalfRes=!0,this._width=1,this._height=1,this.gBuffer=new im(1024,1024,{type:pa?1016:1015,depthTexture:new nv(1024,1024),minFilter:1006,magFilter:1006}),this.depthBufferHighRes=new im(1024,1024,{depthTexture:new nv(1024,1024)}),this.aoBuffer=new im(1024,1024,{minFilter:1006,magFilter:1006}
5817),this.splineScene=e,this.splineCamera=t;let i=new Float32Array(2*PT.length);for(let e=0;e<PT.length;e++){let t=2*e;i[t+0]=PT[e][0],i[t+1]=PT[e][1]}this.blueNoiseInDiskTexture=new nT(i,PT.length,1,1030,1015),this.blueNoiseInDiskTexture.wrapS=1e3,this.blueNoiseInDiskTexture.wrapT=1e3,this.blueNoiseInDiskTexture.needsUpdate=!0,this.hbaoMaterial=new r9({vertexShader:PA,fragmentShader:PM,uniforms:{near:new lR(null),far:new lR(null),fov:new lR(null),proj_info:new lR(new ip),is_ortho:new lR(!1),resolution:new lR(new tJ),radius_of_influence:new lR(8),radius_in_screen_space:new lR(1),exponent:new lR(1),ao_color:new lR(new ib),bias:new lR(.5),texture_depth:new lR(null),texture_normals:new lR(null),texture_blue_noise:new lR(null),texture_blue_noise_in_disk:new lR(this.blueNoiseInDiskTexture),frame_index:new lR(0),fog_enabled:new lR(!1),fog_near:new lR(1),fog_far:new lR(1e3)}}),this.radius=128,this.aoColor={r:0,g:0,b:0},this.bias=.5,this.hbaoMaterial.uniforms.texture_depth.value=this.gBuffer.depthTexture,this.hbaoMaterial.uniforms.texture_normals.value=this.gBuffer.texture,this.needsSwap=!0,this.aaBuffer=new im(1024,1024,{minFilter:1006,magFilter:1006,wrapS:1001,wrapT:1001,depthBuffer:!1,type:1015});let r=new T6({preset:T5.ULTRA,edgeDetectionMode:2});this.effectPass=new TN(this.camera,r)}initialize(e,t,i){super.initialize(e,t,i),this.effectPass.initialize(e,t,i)}setBlueNoiseTexture(e){this.hbaoMaterial.uniforms.texture_blue_noise.value=e}setSize(e,t){this._width=e,this._height=t,this.depthBufferHighRes.setSize(e,t);let i=this._runHalfRes?.5:1,r=e*i,a=t*i;this.gBuffer.setSize(r,a),this.aoBuffer.setSize(r,a),this.hbaoMaterial.uniforms.resolution.value.set(r,a),this.aaBuffer.setSize(r,a),this.effectPass.setSize(r,a)}get runHalfRes(){return this._runHalfRes}set runHalfRes(e){this._runHalfRes=e,this.setSize(this._width,this._height)}setCamera(e){this.splineCamera=e}setScene(e){this.splineScene=e}setDepthTexture(e){this.depthBufferHighRes.depthTexture=e,PD.uniforms.texture_depth_hrez.value=e,PD.needsUpdate=!0}render(e,t,i){this.splineScene.overrideMaterial=PP;let r=this.splineCamera.layers.mask;if(this.splineCamera.layers.set(5),e.setRenderTarget(this.gBuffer),e.clear(),e.render(this.splineScene,this.splineCamera),e.setRenderTarget(this.depthBufferHighRes),e.clear(),e.render(this.splineScene,this.splineCamera),this.splineScene.overrideMaterial=null,this.splineCamera.layers.mask=r,this.hbaoMaterial.uniforms.radius_of_influence.value=this.radius,this.hbaoMaterial.uniforms.ao_color.value.set(this.aoColor.r,this.aoColor.g,this.aoColor.b),this.hbaoMaterial.uniforms.bias.value=this.bias,this.hbaoMaterial.uniforms.fog_enabled.value=this.fogEnabled,this.hbaoMaterial.uniforms.fog_near.value=this.fogNear,this.hbaoMaterial.uniforms.fog_far.value=this.fogFar,this.hbaoMaterial.uniforms.frame_index.value=this.frameIndex,this.frameIndex++,this.splineCamera.isPerspectiveCamera){this.hbaoMaterial.uniforms.near.value=this.splineCamera.perspCamera.near,this.hbaoMaterial.uniforms.far.value=this.splineCamera.perspCamera.far;let e=this.splineCamera.perspCamera.projectionMatrix.elements,t=2/e[0],i=2/e[5],r=-(1-e[8])/e[0],a=-(1+e[9])/e[5];this.hbaoMaterial.uniforms.proj_info.value.set(t,i,r,a);let o=this.splineCamera.perspCamera.fov*(Math.PI/180),h=this.hbaoMaterial.uniforms.resolution.value.y/(2*Math.tan(.5*o)),c=.5*this.hbaoMaterial.uniforms.radius_of_influence.value*h;this.hbaoMaterial.uniforms.radius_in_screen_space.value=c,this.hbaoMaterial.uniforms.is_ortho.value=!1}else{this.hbaoMaterial.uniforms.near.value=this.splineCamera.orthoCamera.near,this.hbaoMaterial.uniforms.far.value=this.splineCamera.orthoCamera.far;let e=this.splineCamera.orthoCamera.projectionMatrix.elements,t=2/e[0],i=2/e[5],r=-(1+e[12])/e[0],a=-(1-e[13])/e[5];this.hbaoMaterial.uniforms.proj_info.value.set(t,i,r,a);let o=this.hbaoMaterial.uniforms.resolution.value.y/i*.5,h=this.hbaoMaterial.uniforms.radius_of_influence.value*o;this.hbaoMaterial.uniforms.radius_in_screen_space.value=h,this.hbaoMaterial.uniforms.is_ortho.value=!0}this.runHalfRes?(this.fullscreenMaterial=this.hbaoMaterial,e.setRenderTarget(this.aoBuffer),e.clear(),e.render(this.scene,this.camera),this.fullscreenMaterial=PD,PD.uniforms.texture_ao_lrez.value=this.aoBuffer.texture,PD.uniforms.texture_depth_lrez.value=this.gBuffer.depthTexture,PD.uniforms.texture_depth_hrez.value=this.depthBufferHighRes.depthTexture,e.setRenderTarget(e.aoRenderTarget),e.clear(),e.render(this.scene,this.camera)):(this.fullscreenMaterial=this.hbaoMaterial,e.setRenderTarget(this.aaBuffer),e.clear(),e.render(this.scene,this.camera),this.effectPass.renderToScreen=!1,this.effectPass.render(e,this.aaBuffer,e.aoRenderTarget))}dispose(){this.gBuffer.dispose(),this.depthBufferHighRes.dispose(),this.aoBuffer.dispose()}},PI=`
5818varying vec2 vUv;
5819void main() {
5820    vUv = uv;
5821    gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
5822}`,PR=`
5823uniform sampler2D tInput;
5824uniform sampler2D tMap;
5825uniform vec2 resolution;
5826varying vec2 vUv;
5827
5828uniform vec2 uResolution;
5829uniform vec2 uCoords;
5830
5831// Draws a rectangle at center <st> with size <size>
5832float rectangle(vec2 st, vec2 size) {
5833    size = vec2(0.5) - size * 0.5;
5834    vec2 uv = vec2(step(size.x, st.x), step(size.y, st.y));
5835    uv *= vec2(step(size.x, 1.0 - st.x), step(size.y, 1.0 - st.y));
5836
5837    return uv.x * uv.y;
5838}
5839
5840uniform vec2 uSize;
5841uniform float uScale;
5842uniform float uDPR;
5843uniform float uCurrent;
5844uniform vec3 uSceneColor;
5845
5846void main() {
5847    vec2 screenUv = gl_FragCoord.xy / uResolution.xy;
5848    screenUv *= 1.0 / uDPR;
5849
5850    vec2 center = vec2(0.5, -0.5);
5851    vec2 outsideUv = screenUv;
5852    outsideUv += center;
5853    outsideUv -= uCoords.xy / uResolution.xy;
5854    outsideUv = (outsideUv - 0.5) + 0.5;
5855    outsideUv -= center;
5856    vec2 s = (uSize / uResolution) * uScale;
5857    float isOutside = 1.0 - rectangle(outsideUv, s);
5858    
5859    vec2 mid = vec2(0.5);
5860    vec2 insideUv = (screenUv - mid + s * mid) / s;
5861    vec4 background = texture2D(tInput, screenUv);
5862    vec4 image = texture2D(tMap, insideUv);
5863    gl_FragColor = mix(image, background, isOutside);
5864}
5865`,PL=class extends TG{constructor(){super(new r9({vertexShader:PI,fragmentShader:PR,uniforms:{tInput:new lR(null),tMap:new lR(null),uResolution:new lR(new tJ),uSize:new lR(new tJ),uCoords:new lR(new tJ),uScale:new lR(1),uSceneColor:new lR(new ia(16711680)),uDPR:new lR(1),uCurrent:ne
5865w lR(0)}}),"tInput"),this.needsSwap=!0}get uniforms(){return this.fullscreenMaterial.uniforms}get texture(){return this.uniforms.tMap.value}set texture(e){this.uniforms.tMap.value=e}},PB=`
5866void main() {
5867    gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
5868}`,Pz=`
5869uniform sampler2D toScene;
5870uniform sampler2D fromScene;
5871uniform vec2 resolution;
5872
5873uniform vec2 uResolution;
5874uniform float uDPR;
5875
5876uniform float mixRatio;
5877uniform sampler2D tMixTexture;
5878uniform int useTexture;
5879uniform float threshold;
5880
5881void main() {
5882	vec2 screenUv = gl_FragCoord.xy / uResolution.xy;
5883	screenUv *= 1.0 / uDPR;
5884
5885	vec4 texel1 = texture2D( fromScene, screenUv );
5886	vec4 texel2 = texture2D( toScene, screenUv );
5887
5888	if (useTexture==1) {
5889		
5890		vec4 transitionTexel = texture2D( tMixTexture, screenUv );
5891		float r = mixRatio * (1.0 + threshold * 2.0) - threshold;
5892		float mixf=clamp((transitionTexel.r - r)*(1.0/threshold), 0.0, 1.0);
5893		
5894		gl_FragColor = mix( texel1, texel2, mixf );
5895	} else {
5896		
5897		gl_FragColor = mix( texel1, texel2, mixRatio );
5898		
5899	}
5900}
5901`,PF=class extends TG{constructor(){super(new r9({vertexShader:PB,fragmentShader:Pz,uniforms:{toScene:new lR(null),fromScene:new lR(null),uResolution:new lR(new tJ),uDPR:new lR(1),mixRatio:new lR(0),threshold:new lR(.1),useTexture:new lR(0),tMixTexture:{value:[][0]}}}),"toScene"),this.needsSwap=!0}get uniforms(){return this.fullscreenMaterial.uniforms}get texture(){return this.uniforms.fromScene.value}set texture(e){this.uniforms.fromScene.value=e}},PN=`
5902void main() {
5903    gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
5904}`,PU=`
5905uniform sampler2D inputBuffer;
5906uniform sampler2D blurredInputBuffer;
5907uniform sampler2D overlay;
5908uniform float blurIntensity;
5909
5910uniform vec2 uResolution;
5911uniform float uDPR;
5912
5913void main() {
5914	vec2 screenUv = gl_FragCoord.xy / uResolution.xy;
5915	screenUv *= 1.0 / uDPR;
5916
5917	vec4 texel1 = texture2D( overlay, screenUv );
5918	vec4 texel2 = texture2D( inputBuffer, screenUv );
5919	vec4 texel3 = texture2D( blurredInputBuffer, screenUv );
5920
5921	float blurMask2 = max(sign(texel1.a), 0.0) * blurIntensity;
5922    gl_FragColor = mix( mix(texel2, texel3, blurMask2), texel1, texel1.a );
5923}
5924`,Pk=class extends TG{constructor(){super(new r9({vertexShader:PN,fragmentShader:PU,uniforms:{inputBuffer:new lR(null),blurredInputBuffer:new lR(null),overlay:new lR(null),uResolution:new lR(new tJ),uDPR:new lR(1),blurIntensity:new lR(0)}})),this._blurEnabled=!1,this.blurTarget=new im(1,1,{minFilter:1006,magFilter:1006,wrapS:1001,wrapT:1001}),this.blurPass=new Tk({width:window.innerWidth,height:window.innerHeight,kernelSize:TW.HUGE,resolutionScale:.25}),this.blurPass.renderToScreen=!1,this.uniforms.blurredInputBuffer.value=this.blurTarget.texture}get uniforms(){return this.fullscreenMaterial.uniforms}get texture(){return this.uniforms.overlay.value}set texture(e){this.uniforms.overlay.value=e}setResolution(e,t,i=1){this.uniforms.uResolution.value.set(e,t),this.uniforms.uDPR.value=i,this.blurPass.setSize(e,t),this.blurTarget.setSize(e,t),this.blurPass.setSize(e,t)}get uiCanvas(){return this._uiCanvas}set uiCanvas(e){this._uiCanvas=e,e.texture&&(this.uniforms.overlay.value=e.texture);let t=e.frame;if(t){let e=t.data.backgroundBlur,i=e.radius;this._blurEnabled=e.enabled,this.uniforms.blurIntensity.value=this._blurEnabled?1:0,this.blurPass.scale=i/3}}render(e,t,i,r,a){this._blurEnabled&&(this.blurPass.setDepthTexture(this.getDepthTexture()),this.blurPass.render(e,t,this.blurTarget,r,a)),super.render(e,t,i,r,a)}},PV=`
5925varying vec2 vUv;
5926void main() {
5927    vUv = uv;
5928    gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
5929}`,Pj=`
5930uniform sampler2D tInput;
5931uniform sampler2D tOverlayImage;
5932varying vec2 vUv;
5933uniform vec2 uResolution;
5934uniform vec2 uRightBottom;
5935uniform vec2 uImageSize;
5936uniform float uScale;
5937uniform float uDPR;
5938
5939vec3 blendNormal(vec3 base, vec3 blend) {
5940	return blend;
5941}
5942
5943vec3 blendNormal(vec3 base, vec3 blend, float opacity) {
5944	return (blendNormal(base, blend) * opacity + base * (1.0 - opacity));
5945}
5946
5947vec4 drawFixedSizeImage(sampler2D image, vec2 screenUV, vec2 imageSize, vec2 imageCoords, vec2 screenSize, float dpr) {
5948	vec2 uv = (screenUV * screenSize * dpr - imageCoords) / (imageSize * dpr);
5949	if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) {
5950		return vec4(0.0);
5951	}
5952	return texture2D(image, uv);
5953}
5954
5955void main() {
5956    vec2 screenUV = gl_FragCoord.xy / (uResolution.xy * uDPR);
5957	vec2 imageCoords = vec2(uResolution.x * uDPR - uImageSize.x * uScale * uDPR - uRightBottom.x * uDPR, uRightBottom.y * uDPR);
5958    vec4 background = texture2D(tInput, screenUV);
5959    vec4 image = drawFixedSizeImage(tOverlayImage, screenUV, uImageSize * uScale, imageCoords, uResolution, uDPR);
5960    gl_FragColor = vec4(blendNormal(background.rgb, image.rgb, image.a), max(background.a, image.a));
5961}
5962`,PG=class extends TG{constructor(){super(new r9({vertexShader:PV,fragmentShader:Pj,uniforms:{tInput:new lR(null),tOverlayImage:new lR(null),uResolution:new lR(new tJ),uImageSize:new lR(new tJ),uRightBottom:new lR(new tJ(20,20)),uScale:new lR(.25),uDPR:new lR(1)}}),"tInput")}get uniforms(){return this.fullscreenMaterial.uniforms}get texture(){return this.uniforms.tOverlayImage.value}set texture(e){this.uniforms.tOverlayImage.value=e,this.uniforms.uImageSize.value.set(e.image.width,e.image.height)}};function PH(e,t){return t&&t.enabled&&e.push(t.effect),e}var PW=e=>Object.values(TI).includes(e)?e:TI.NORMAL,Pq=class extends tF{constructor(e,t){super(),this._needsDOFResize=t,this.postprocessingState=vs.defaultData,this._scene=new n_,this._camera=new Cq,this.effects=new Map,this.blueNoiseTexture=new nT,this._renderToScreen=!0,this._isUIOverlayEnabled=!1,this.clock=new lx,this.renderer=e,this.debug=!1,this.effects.set("bloom",new Pi),this.effects.set("chromaticAberration",new Ps),this.effects.set("vignette",new Pl),this.effects.set("noise",new Po),this.effects.set("colorAverage",new Pa),this.effects.set("hueSaturation",new Pn),this.effects.set("brightnessContrast",new Pr),this.effects.set("depthOfField",new Ph),this.effects.set("pixelation",new Pc),this.effectComposer=new Pw(this.renderer),this.effectComposer.autoRenderToScreen=!1,this.opaquePass=new Pb(!0,this.scene,this.camera),this.opaquePass.clear=!0,this.transmissionPass=new Pv(this.scene,this.camera,this.renderer),this.aoPass=new PO(this.scene,this.camera),this.taaPass=new Pg,this.taaPass.renderToScreen=!1,this.helperPass=new P_(this.camera),this.helperPass.renderToScreen=!1,this.stylesOverlayPass=new PL,this.stylesOverlayPass.enabled=!1,this.uiOverlayPass=new Pk,this.uiOverlayPass.enabled=!1,this.logoOverlayPass=new PG,this.logoOverlayPass.enabled=!1,this.sceneTransitionPass=new PF,this.sceneTransitionPass.enabled=!1,this._initCopyPass(),this._initPasses()}set overlayTexture(e){void 0!==e?(this.stylesOverlayPass.texture=e,this.stylesOverlayPass.enabled=!0):this.stylesOverlayPass.enabled=!1}get overlayTexture(){return this.stylesOverlayPass.texture}set sceneHelpers(e){this.helperPass.sceneHelpers=e}get sceneHelpers(){return this.helperPass.sceneHelpers}set sceneHelpersOnTop(e){this.helperPass.sceneHelpersOnTop=e}get sceneHelpersOnTop(){return this.helperPass.sceneHelpersOnTop}get scene(){return this._scene}set scene(e){this._scene=e,this.opaquePass.setScene(e),this.transmissionPass.setScene(e),this.aoPass.setScene(e)}get camera(){return this._camera}set camera(e){let t=this._camera!==e;this._camera=e,this.opaquePass.setCamera(e),this.transmissionPass.setCamera(e),t&&this.transmissionPass.updatePasses(this.renderer),this.aoPass.setCamera(e),this.helperPass.setCamera(e),this.effects.get("depthOfField").setCamera(e)}updateRenderToScreen(){let e=!1;for(let t=this.effectComposer.passes.length-1;t>=0;t--){let i=this.effectComposer.passes[t];if(!0===i.enabled&&!e&&this._renderToScreen){i.renderToScreen=!0,e=!0;continue}i.renderToScreen=!1}}get isUIOverlayEnabled(){return this._isUIOverlayEnabled}disableUIOverlay(){this._isUIOverlayEnabled=!1}enableUIOverlay(){this._isUIOverlayEnabled=!0}disableHelpers(){this.helperPass.enabled=!1,this.updateRenderToScreen()}enableHelpers(){this.helperPass.enabled=!0,this.updateRenderToScreen()}updateBlueNoiseTexture(e){this.blueNoiseTexture=new nT(e,128,128),this.blueNoiseTexture.wrapS=1e3,this.blueNoiseTexture.wrapT=1e3,this.blueNoiseTexture.minFilter=1003,this.blueNoiseTexture.magFilter=1003,this.blueNoiseTexture.needsUpdate=!0}setAmbientOcclusionParams(e,t,i,r,a,o,h,c){this.aoPass.enabled=e,this.aoPass.radius=t,this.aoPass.bias=i,this.aoPass.aoColor=r,this.aoPass.fogEnabled=a,this.aoPass.fogNear=o,this.aoPass.fogFar=h,!c!==this.aoPass.runHalfRes&&(this.aoPass.runHalfRes=!c)}setTransmissionPassEnabled(e){this.transmissionPass.enabled=e,this.opaquePass.hasTransmissionPass=e}
5962_initPasses(){if(this.uvEffectPass?.dispose(),this.effectPass?.dispose(),this.effectComposer.removeAllPasses(),this.transmissionPass.updatePasses(this.renderer),this.effectComposer.addPass(this.aoPass),this.effectComposer.addPass(this.opaquePass),this.effectComposer.addPass(this.transmissionPass),this.effectComposer.addPass(this.taaPass),this.postprocessingState.enabled){let e=[this.effects.get("pixelation")].reduce(PH,[]);e.length>0&&(this.uvEffectPass=new TN(this.camera,...e),this.uvEffectPass.renderToScreen=!1,this.effectComposer.addPass(this.uvEffectPass));let t=[this.effects.get("chromaticAberration"),this.effects.get("bloom"),this.effects.get("depthOfField"),this.effects.get("colorAverage"),this.effects.get("hueSaturation"),this.effects.get("brightnessContrast"),this.effects.get("vignette"),this.effects.get("noise")].reduce(PH,[]);if(t.length>0&&(this.effectPass=new TN(this.camera,...t),this.effectPass.renderToScreen=!1,this.effectComposer.addPass(this.effectPass),this._needsDOFResize&&this.effects.get("depthOfField")?.enabled&&void 0!==window)){let e=this.renderer.viewportWidth,t=this.renderer.viewportHeight;this.renderer.setSize(e-1,t-1),this.renderer.setSize(e,t)}}this.effectComposer.addPass(this.stylesOverlayPass),this.effectComposer.addPass(this.uiOverlayPass),this.effectComposer.addPass(this.sceneTransitionPass),this.effectComposer.addPass(this.helperPass),this.effectComposer.addPass(this.logoOverlayPass)}_initCopyPass(){if(this._savePass)return;let e=new tJ;this.renderer.getDrawingBufferSize(e),this._rt=new im(e.x,e.y,{depthBuffer:!1,stencilBuffer:!1,wrapS:1e3,wrapT:1e3}),this._rt.samples=0,this._savePass=new T_(this._rt,!1),this._savePass.renderToScreen=!1}setCopyPass(e){this._rt=e,this._savePass=new T_(this._rt,!1),this.renderToScreen=!1}get renderToScreen(){return this._renderToScreen}set renderToScreen(e){if(this._renderToScreen===e)return;let t=this.effectComposer;t&&(!0===e?t.removePass(this._savePass):t.addPass(this._savePass),this._renderToScreen=e,this.updateRenderToScreen())}set sceneTransitionFromTexture(e){e!==this.sceneTransitionPass.texture&&(null!==e?this.sceneTransitionPass.enabled=!0:(this.sceneTransitionPass.enabled=!1,this.updateRenderToScreen()),this.sceneTransitionPass.texture=e)}setWatermark(e){this.logoOverlayPass.enabled=null!==e,e&&(this.logoOverlayPass.texture=e)}get texture(){return this._rt&&this._rt.texture}get renderTarget(){return this._rt}updatePostprocessing(e){let{enabled:t,...i}=e,r=!1;for(let e of(t!==this.postprocessingState.enabled&&(r=!0),Object.entries(i))){let t=e[1],i=this.effects.get(e[0]);if(i)for(let[e,a]of(i.enabled!==t.enabled&&(r=!0),i.enabled=t.enabled,Object.entries(t)))"blendFunction"===e?i.blendFunction=PW(a):i[e]=a}this.postprocessingState=e,r&&this._initPasses()}render(){this.effectComposer.render(this.clock.getDelta())}setScissor(e,t,i,r){e instanceof ip?(this.effectComposer.inputBuffer.scissor.set(e.x,e.y,e.z,e.w),this.effectComposer.outputBuffer.scissor.set(e.x,e.y,e.z,e.w)):(this.effectComposer.inputBuffer.scissor.set(e,t,i,r),this.effectComposer.outputBuffer.scissor.set(e,t,i,r));let a=this.renderer.getPixelRatio();this.effectComposer.inputBuffer.scissor.multiplyScalar(a),this.effectComposer.outputBuffer.scissor.multiplyScalar(a),this.renderer.setScissor(e,t,i,r)}setScissorTest(e){this.effectComposer.inputBuffer.scissorTest=e,this.effectComposer.outputBuffer.scissorTest=e,this.renderer.setScissorTest(e)}setViewport(e,t,i,r){e instanceof ip?(this.effectComposer.inputBuffer.viewport.copy(e),this.effectComposer.outputBuffer.viewport.copy(e)):(this.effectComposer.inputBuffer.viewport.set(e,t,i,r),this.effectComposer.outputBuffer.viewport.set(e,t,i,r))}resize(e,t,i){if(this.effectComposer.setSize(e,t,i),this._rt){let i=this.renderer.getPixelRatio();this._rt.setSize(e*i,t*i)}}dispose(){this.uvEffectPass?.dispose(),this.effectPass?.dispose(),this.effectComposer.dispose()}},PX=e=>`
5963
5964// PCSS implementation based on:
5965// https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
5966// NOTE: This number affects how big the shadow blur can
5967// possibly get. Bigger number == bigger blur, but less precise results
5968
5969const float  gPenumbraFilterSize = 80.0;
5970const int   gPenumbraSamples = ${e};
5971const int gShadowSamples = ${e};
5972const float gShadowSamplesRpc = 1.0f / float(gShadowSamples);
5973
5974#ifdef USE_SHADOWMAP
5975    #if NUM_DIR_LIGHT_SHADOWS > 0
5976
5977        uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];
5978        varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
5979
5980        struct DirectionalLightShadow {
5981            float shadowBias;
5982            float shadowNormalBias;
5983            float shadowRadius;
5984            vec2 shadowMapSize;
5985        };
5986
5987        uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];
5988
5989    #endif
5990
5991    #if NUM_SPOT_LIGHT_SHADOWS > 0
5992
5993        uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];
5994        varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_SHADOWS ];
5995
5996        struct SpotLightShadow {
5997            float shadowBias;
5998            float shadowNormalBias;
5999            float shadowRadius;
6000            vec2 shadowMapSize;
6001        };
6002
6003        uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];
6004
6005    #endif
6006
6007    #if NUM_POINT_LIGHT_SHADOWS > 0
6008
6009        uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];
6010        varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
6011
6012        struct PointLightShadow {
6013            float shadowBias;
6014            float shadowNormalBias;
6015            float shadowRadius;
6016            vec2 shadowMapSize;
6017            float shadowCameraNear;
6018            float shadowCameraFar;
6019        };
6020
6021        uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
6022
6023    #endif
6024
6025    /*
6026    #if NUM_RECT_AREA_LIGHTS > 0
6027
6028        // TODO (abelnation): create uniforms for area light shadows
6029
6030    #endif
6031    */
6032
6033float computePenumbra(int index, sampler2D shadowMap, float temporalAngle, float texelSize, vec2 uv, float compare, float texelScalar, float shadowRadius)
6034{
6035    float penumbra = 1.0;
6036    float blockerDepthAvg = 0.0;
6037    float blockerCount = 0.0;
6038
6039    #pragma unroll_loop_start
6040    for(int i = 0; i < gPenumbraSamples; i ++)
6041    {
6042        vec2 offset = (vogelDiskSample(i, gShadowSamples, temporalAngle) * texelSize) * texelScalar;
6043        float depth = unpackRGBAToDepth( texture2D( shadowMap, uv + offset ) );
6044
6045        if(depth < compare + 0.0001)
6046        {
6047            blockerDepthAvg += depth;
6048            blockerCount++;
6049        }
6050    }
6051    #pragma unroll_loop_end
6052
6053    if (blockerCount > 0.0)
6054    {
6055        blockerDepthAvg /= blockerCount;
6056
6057        // Compute penumbra
6058        penumbra = (compare - blockerDepthAvg) / (blockerDepthAvg);
6059        penumbra *= penumbra;
6060        penumbra *= 200.0 * penumbraSize[min(index, 5 - 1)]; // Magic number that affects how quickly the penumbra grows
6061
6062        return clamp(penumbra, 0.00, 1.0);
6063    }
6064    return 0.0;
6065}
6066
6067float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, float compare, float shadowRadius)
6068{
6069    float shadow         = 0.0f;
6070
6071    // NOTE: When using TAA, we should use screen space interleaved gradient noise
6072    vec2 halton = haltonSequence[frameIndex];
6073    float temporalOffset = getNoiseInterleavedGradient(gl_FragCoord.xy + halton);
6074    float temporalAngle  = temporalOffset * PI2;
6075
6076    float texelScalar = (gPenumbraFilterSize) / (texelSize * 1024.);
6077    float penumbra = computePenumbra(index, shadowMap, temporalAngle, texelSize, uv, compare, texelScalar, shadowRadius);
6078    if (penumbra == -1.0) {
6079        return 1.0;
6080    }
6081
6082    #pragma unroll_loop_start
6083    for (int i = 0; i < gShadowSamples; i++)
6084    {
6085        vec2 vogelSample =  vogelDiskSample(i, gShadowSamples, temporalAngle) * texelSize;
6086        // Overall blurring offset
6087        vec2 offset = vogelSample * (shadowRadius * 2.);
6088
6089        // Penumbra offset
6090        offset += vogelSample * (penumbra * texelScalar);
6091
6092        shadow += step( compare, unpackRGBAToDepth( texture2D( shadowMap, uv + offset ) ) );
6093    }
6094    #pragma unroll_loop_end
6095
6096    return shadow * gShadowSamplesRpc;
6097}
6098
6099
6100    float texture2DCompare( sampler2D depths, vec2 uv, float compare ) {
6101
6102        return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );
6103
6104    }
6105
6106    vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {
6107
6108        return unpackRGBATo2Half( texture2D( shadow, uv ) );
6109
6110    }
6111
6112    float VSMShadow (sampler2D shadow, vec2 uv, float compare ){
6113
6114        float occlusion = 1.0;
6115
6116        vec2 distribution = texture2DDistribution( shadow, uv );
6117
6118        float hard_shadow = step( compare , distribution.x ); // Hard Shadow
6119
6120        if (hard_shadow != 1.0 ) {
6121
6122            float distance = compare - distribution.x ;
6123            float variance = max( 0.00000, distribution.y * distribution.y );
6124            float softness_probability = variance / (variance + distance * distance ); // Chebeyshevs inequality
6125            softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); // 0.3 reduces light bleed
6126            occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );
6127
6128        }
6129        return occlusion;
6130
6131    }
6132
6133    float getShadow( int i, sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {
6134
6135        float shadow = 1.0;
6136
6137        shadowCoord.xyz /= shadowCoord.w;
6138        shadowCoord.z += shadowBias;
6139
6140        // if ( something && something ) breaks ATI OpenGL shader compiler
6141        // if ( all( something, something ) ) using this instead
6142
6143        bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );
6144        bool inFrustum = all( inFrustumVec );
6145
6146        bvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );
6147
6148        bool frustumTest = all( frustumTestVec );
6149
6150        if ( frustumTest ) {
6151
6152        #if defined( SHADOWMAP_TYPE_PCF )
6153
6154            vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
6155            return vogelShadow(i, shadowMap, shadowCoord.xy, texelSize.x, shadowCoord.z, shadowRadius );
6156
6157        #elif defined( SHADOWMAP_TYPE_PCF_SOFT )
6158
6159            vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
6160            float dx = texelSize.x;
6161            float dy = texelSize.y;
6162
6163            vec2 uv = shadowCoord.xy;
6164            vec2 f = fract( uv * shadowMapSize + 0.5 );
6165            uv -= f * texelSize;
6166
6167            shadow = (
6168                texture2DCompare( shadowMap, uv, shadowCoord.z ) +
6169                texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +
6170                texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +
6171                texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +
6172                mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),
6173                     texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),
6174                     f.x ) +
6175                mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),
6176                     texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),
6177                     f.x ) +
6178                mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),
6179                     texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),
6180                     f.y ) +
6181                mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),
6182                     texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),
6183                     f.y ) +
6184                mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),
6185                          texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),
6186                          f.x ),
6187                     mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),
6188                          texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),
6189                          f.x ),
6190                     f.y )
6191            ) * ( 1.0 / 9.0 );
6192
6193        #elif defined( SHADOWMAP_TYPE_VSM )
6194
6195            shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );
6196
6197        #else // no percentage-closer filtering:
6198
6199            shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );
6200
6201        #endif
6202
6203        }
6204
6205        return shadow;
6206
6207    }
6208
6209    // cubeToUV() maps a 3D direction vector suitable for cube texture mapping to a 2D
6210    // vector suitable for 2D texture mapping. This code uses the following layout for the
6211    // 2D texture:
6212    //
6213    // xzXZ
6214    //  y Y
6215    //
6216    // Y - Positive y direction
6217    // y - Negative y direction
6218    // X - Positive x direction
6219    // x - Negative x direction
6220    // Z - Positive z direction
6221    // z - Negative z direction
6222    //
6223    // Source and test bed:
6224    // https://gist.github.com/tschw/da10c43c467ce8afd0c4
6225
6226    vec2 cubeToUV( vec3 v, float texelSizeY ) {
6227
6228        // Number of texels to avoid at the edge of each square
6229
6230        vec3 absV = abs( v );
6231
6232        // Intersect unit cube
6233
6234        float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );
6235        absV *= scaleToCube;
6236
6237        // Apply scale to avoid seams
6238
6239        // two texels less per square (one texel will do for NEAREST)
6240        v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );
6241
6242        // Unwrap
6243
6244        // space: -1 ... 1 range for each square
6245        //
6246        // #X##         dim    := ( 4 , 2 )
6247        //  # #         center := ( 1 , 1 )
6248
6249        vec2 planar = v.xy;
6250
6251        float almostATexel = 1.5 * texelSizeY;
6252        float almostOne = 1.0 - almostATexel;
6253
6254        if ( absV.z >= almostOne ) {
6255
6256            if ( v.z > 0.0 )
6257                planar.x = 4.0 - v.x;
6258
6259        } else if ( absV.x >= almostOne ) {
6260
6261            float signX = sign( v.x );
6262            planar.x = v.z * signX + 2.0 * signX;
6263
6264        } else if ( absV.y >= almostOne ) {
6265
6266            float signY = sign( v.y );
6267            planar.x = v.x + 2.0 * signY + 2.0;
6268            planar.y = v.z * signY - 2.0;
6269
6270        }
6271
6272        // Transform to UV space
6273
6274        // scale := 0.5 / dim
6275        // translate := ( center + 0.5 ) / dim
6276        return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );
6277
6278    }
6279
6280    float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {
6281
6282        float shadow = 1.0;
6283        vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );
6284
6285        // for point lights, the uniform @vShadowCoord is re-purposed to hold
6286        // the vector from the light to the world-space position of the fragment.
6287        vec3 lightToPosition = shadowCoord.xyz;
6288
6289        // dp = normalized distance from light to fragment position
6290        float compare = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); // need to clamp?
6291        compare += shadowBias;
6292
6293        // bd3D = base direction 3D
6294        vec3 bd3D = normalize( lightToPosition );
6295
6296        vec2 halton = haltonSequence[frameIndex];
6297        float temporalOffset = getNoiseInterleavedGradient(gl_FragCoord.xy + halton);
6298        float temporalAngle  = temporalOffset * PI2;
6299
6300        #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_VSM )
6301            for (int i = 0; i < gShadowSamples; i++) {
6302                vec2 vogelSample = vogelDiskSample(i, gShadowSamples, temporalAngle) * texelSize;
6303
6304                // Overall blurring offset
6305                vec3 offset = vec3(vogelSample.x, vogelSample.y, -vogelSample.x) * (shadowRadius + 5.);
6306
6307                // NOTE: Removed for now
6308                // Penumbra offset
6309                //offset += vec3(vogelSample.x, vogelSample.y, vogelSample.y)  * (penumbra * gPenumbraFilterSize);
6310
6311                shadow += texture2DCompare( shadowMap, cubeToUV( bd3D + offset, texelSize.y ), compare );
6312
6313            }
6314            return shadow * gShadowSamplesRpc;
6315
6316        #elif defined( SHADOWMAP_TYPE_PCF_SOFT )
6317            for (int i = 0; i < 16; i++) {
6318                vec2 vogelSample = vogelDiskSample(i, gShadowSamples, temporalAngle) * texelSize;
6319
6320                // Overall blurring offset
6321                vec3 offset = vec3(vogelSample.x, vogelSample.y, -vogelSample.x) * (shadowRadius + 5.);
6322
6323                shadow += texture2DCompare( shadowMap, cubeToUV( bd3D + offset, texelSize.y ), compare );
6324
6325            }
6326            return shadow * (1.0 / 16.0);
6327        #else // no percentage-closer filtering
6328
6329            return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), compare );
6330
6331        #endif
6332
6333    }
6334
6335#endif
6336`,PY=sf.lights_fragment_begin,PQ=sf.shadowmask_pars_fragment,PZ=null,PK=e=>{switch(e){case"low":return 8;case"medium":default:return 16;case"high":return 32}},PJ=(e="medium")=>{if(PZ===e)return!1;PZ=e;let t=PK(e);sf.shadowmap_pars_fragment=PX(t);let i=PY.slice();i=(i=i.replace("getShadow( spotShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX + 3, spotShadowMap[ i ]")).replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),sf.lights_fragment_begin=i;let r=PQ.slice();return r=r.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),sf.shadowmask_pars_fragment=r,!0},P$=new r9({vertexShader:`
6337attribute vec3 randomColor;
6338varying vec3 vNormal;
6339flat out vec3 vColor;
6340#include <skinning_pars_vertex>
6341#include <morphtarget_pars_vertex>
6342	
6343void main()
6344{
6345#include <beginnormal_vertex>
6346#include <morphnormal_vertex>
6347#include <skinbase_vertex>
6348#include <skinnormal_vertex>
6349vec3 transformed = vec3(position);
6350#include <morphtarget_vertex>
6351#include <skinning_vertex>
6352
6353vNormal = normal;
6354vColor = randomColor;
6355gl_Position = projectionMatrix * (modelViewMatrix * vec4(transformed, 1.0));
6356}
6357`,fragmentShader:`
6358uniform float depthContrast;
6359varying vec3 vNormal;
6360flat in vec3 vColor;
6361void main()
6362{
6363vec3 normal = (normalize(vNormal)).rgb;
6364
6365float contrastDepth = (gl_FragCoord.z - 0.5) * depthContrast + 0.5;
6366
6367vec3 resultColor = mix(mix(vColor, normal, 0.2), vec3(contrastDepth), 0.4);
6368gl_FragColor = vec4(resultColor, vColor.r);
6369gl_FragColor = vec4(resultColor, vColor.r);
6370}
6371`,uniforms:{depthContrast:{value:1}}}),P0=new iu,P1=new tJ,P2=class extends nw{constructor(e){super(e),this._pixelRatio=this.getPixelRatio(),this.viewportWidth=1,this.viewportHe
6371ight=1,this.resolution=new tJ,this.dummyCamera=new Cq,this.sceneTransitionDuration=0,this.sceneTransitionTimeRemaining=-1,this.isXRCopyPassSet=!1,this.clear=(e=!0,t=!0,i=!0)=>{let r=this.getContext(),a=0;e&&(a|=r.COLOR_BUFFER_BIT),t&&(a|=r.DEPTH_BUFFER_BIT),i&&(a|=r.STENCIL_BUFFER_BIT),r.clear(a),r.clearBufferfv(r.COLOR,1,[0,0,0,1])},this.pipeline=new Pq(this,e?.needsDOFResize??!1),this.autoClear=!1;let t=this.setPixelRatio.bind(this),i=this.setSize.bind(this);this.shadowMap.enabled=!0,this.shadowMap.type=1,this.dummyCamera.matrixAutoUpdate=!1,this.domElement.removeAttribute("data-engine");let r=this.getContext();if(r&&"drawingBufferColorSpace"in r)try{r.drawingBufferColorSpace="display-p3"}catch(e){console.warn(e)}this.setPixelRatio=e=>{this._pixelRatio!==e&&(this._pixelRatio=e,t(e))},this.setSize=(e,t,r=!0)=>{(this.viewportWidth!==e||this.viewportHeight!==t)&&(this.viewportWidth=e,this.viewportHeight=t,i(e,t,r),this.normalRenderTarget?.setSize(e*this._pixelRatio,t*this._pixelRatio),this._resizeTransmission(e,t),this.transmissionDepthTarget?.setSize(e*this._pixelRatio/2,t*this._pixelRatio/2),this.pipeline.resize(e,t,r))},this._superDispose=this.dispose,this.dispose=this._currentDispose}createAORenderTarget(){void 0===this.aoRenderTarget&&(this.aoRenderTarget=new im(this.viewportWidth*this._pixelRatio,this.viewportHeight*this._pixelRatio,{generateMipmaps:!1,minFilter:1006,magFilter:1006,wrapS:1001,wrapT:1001,depthBuffer:!1}))}_resizeTransmission(e,t){this.transmissionRenderTarget?.setSize(e*this._pixelRatio/(this.hdTransmission?1:2),t*this._pixelRatio/(this.hdTransmission?1:2)),this.aoRenderTarget?.setSize(e*this._pixelRatio/1,t*this._pixelRatio/1)}get hdTransmission(){return 1===Md.transmissionLod.value}set hdTransmission(e){Md.transmissionLod.value=!0===e?1:2,this._resizeTransmission(this.viewportWidth,this.viewportHeight)}createTransmissionRenderTarget(){void 0===this.transmissionRenderTarget&&(this.transmissionRenderTarget=new im(this.viewportWidth*this._pixelRatio/(this.hdTransmission?1:2),this.viewportHeight*this._pixelRatio/(this.hdTransmission?1:2),{generateMipmaps:!0,minFilter:1008,magFilter:1006,wrapS:1001,wrapT:1001,depthBuffer:!1}),this.transmissionDepthTarget=new im(this.viewportWidth*this._pixelRatio/2,this.viewportHeight*this._pixelRatio/2,{minFilter:1003,magFilter:1003,depthBuffer:!1}))}createNormalRenderTarget(){void 0===this.normalRenderTarget&&(this.normalRenderTarget=new im(this.viewportWidth*this._pixelRatio,this.viewportHeight*this._pixelRatio,{generateMipmaps:!1,minFilter:1003,magFilter:1003,type:1015,depthTexture:new nv(this.viewportWidth*this._pixelRatio,this.viewportHeight*this._pixelRatio)}))}renderNormal(e,t,i){this.normalRenderTarget&&(this.setClearColor(0),i.layers.enable(8),i.layers.disable(0),i.layers.disable(3),t.traverseEntity(e=>{e.layers.isEnabled(8)&&(e.copyPreviousMatrix=!1)}),this.setRenderTarget(this.normalRenderTarget),this.clear(),i instanceof Cq?P$.uniforms.depthContrast.value=(i.far-i.near)/1e4:P$.uniforms.depthContrast.value=1,t.overrideMaterial=P$,this.render(t,i),this.setClearColor(t.bgColor,t.bgColor.a),this.setRenderTarget(null),t.overrideMaterial=e.wireframeState?Ir:null,i.layers.enable(0),i.layers.enable(3),t.traverseEntity(e=>{e.layers.isEnabled(8)&&(e.copyPreviousMatrix=!0)}))}renderSplineSceneWithDummyCamera(e,t,i=1){this.dummyCamera.updateCameraState(t.dataPatched),this.dummyCamera.matrix.copy(t.matrixWorld);let r=t.height,a=t.width,o=this.viewportWidth/this.viewportHeight;a<r?a=r*o:r=a/o,this.dummyCamera.setViewplaneSize(a,r);for(let t=0;t<i;t++)this.renderSplineScene(e,this.dummyCamera)}renderSplineScene(e,t,{sceneHelpers:i=this.sceneHelpers,sceneHelpersOnTop:r=this.sceneHelpersOnTop,overrideTransmission:a,overrideNormal:o}={}){let h=e instanceof Ia?e.activePage:e,c=h.visible;h.visible=!0;let d=h.scene;this.xr.enabled&&(!1===this.isXRCopyPassSet&&null!==this.getRenderTarget()&&(this.pipeline.setCopyPass(this.getRenderTarget()),this.isXRCopyPassSet=!0),this.xr.updateCamera(t)),this.setClearColor(h.bgColor,h.bgColor.a),h.penumbraSizeArray.forEach((e,t)=>{Md.penumbraSize.value[t]=e}),Md.pixelRatioNode.value=this.getPixelRatio(),0!==this.resolution.x&&0!==this.resolution.y?Md.resolution.value.set(this.resolution.x,this.resolution.y):Md.resolution.value.set(this.viewportWidth*this._pixelRatio,this.viewportHe
6371ight*this._pixelRatio),void 0!==o?(Md.normalRenderTarget.value=o,Md.normalRenderTargetDepth.value=P0):d.needsNormal()&&(this.createNormalRenderTarget(),Md.normalRenderTarget.value=this.normalRenderTarget.texture,Md.normalRenderTargetDepth.value=this.normalRenderTarget.depthTexture,this.renderNormal(d,h,t));let u=h.data.ao,p=u.occlusion;if(p&&(this.createAORenderTarget(),Md.aoRenderTarget.value=this.aoRenderTarget.texture),Md.aoEnabled.value=p,this.pipeline.setAmbientOcclusionParams(u.occlusion,u.radius,u.bias,h.aoColor,null!==h.fog,h.backupFog.near,h.backupFog.far,u.aoFullRes&&!pa),this.pipeline.aoPass.setBlueNoiseTexture(this.pipeline.blueNoiseTexture),this.pipeline.isUIOverlayEnabled&&h.uiCanvas?.enabled&&h.uiCanvas.texture&&h.uiCanvas.texture.image.width>0){let e=this.getSize(P1),t=this.getPixelRatio();(h.uiCanvas.width!==this.viewportWidth||h.uiCanvas.height!==this.viewportHeight||h.uiCanvas.dpr!==t)&&h.uiCanvas.applySize({width:this.viewportWidth,height:this.viewportHeight},t),h.uiCanvas.render(this),this.pipeline.uiOverlayPass.uiCanvas=h.uiCanvas,this.pipeline.uiOverlayPass.enabled=!0,this.pipeline.uiOverlayPass.setResolution(e.x,e.y,t),this.pipeline.updateRenderToScreen()}else this.pipeline.uiOverlayPass.enabled=!1,this.pipeline.updateRenderToScreen();if(this.pipeline.logoOverlayPass.enabled){let e=this.getSize(P1),t=this.getPixelRatio();this.pipeline.logoOverlayPass.uniforms.uResolution.value.set(e.x,e.y),this.pipeline.logoOverlayPass.uniforms.uDPR.value=t}let f=!1;if(void 0!==a)Md.transmissionRenderTarget.value=a,Md.transmissionRenderTargetDepth.value=P0,this.pipeline.setTransmissionPassEnabled(!1);else{var m,g;let e=d.needsTransmission();e&&(void 0===this.transmissionRenderTarget&&(f=!0),this.createTransmissionRenderTarget(),Md.transmissionRenderTarget.value=this.transmissionRenderTarget.texture,Md.aspectRatio.value=(m=this.viewportWidth)>=(g=this.viewportHeight)?new tJ(g/m,1):new tJ(1,m/g),Md.transmissionRenderTargetDepth.value=this.transmissionDepthTarget.texture),this.pipeline.setTransmissionPassEnabled(e)}t.layers.enable(3),t.layers.enable(8),this.pipeline.sceneHelpers=i,this.pipeline.sceneHelpersOnTop=r,this.pipeline.taaPass.enabled=Md.taaEnabled.value,this.pipeline.scene=h,this.pipeline.camera=t,f&&this.pipeline.transmissionPass.updatePasses(this),this.pipeline.postprocessingState===h.postprocessing||(this.pipeline.updatePostprocessing(h.postprocessing),i||r||this.pipeline.disableHelpers()),void 0!==this.clearAlphaOverride&&this.setClearAlpha(this.clearAlphaOverride),d.shapeBlendIntances.forEach(e=>{e.onBeforeShadowPass(this)}),h.overrideMaterial=d.wireframeState?Ir:null,this.pipeline.render(),Md.taaEnabled.value&&(Md.frameIndex.value=(Md.frameIndex.value+1)%16),t instanceof Cq&&t.copyHistory(),h.visible=c}renderFromSceneForSceneTransitionPass(e,t,i){this.pipeline.renderToScreen=!1,this.pipeline.renderTarget,this.renderSplineScene(e,t),this.pipeline.sceneTransitionFromTexture=this.pipeline.renderTarget.texture,this.sceneTransitionDuration=i,this.sceneTransitionTimeRemaining=i,this.pipeline.renderToScreen=!0;let r=this.pipeline.sceneTransitionPass.uniforms;r.uDPR.value=window.devicePixelRatio,r.uResolution.value.set(this.domElement.width,this.domElement.height).divideScalar(window.devicePixelRatio)}_currentDispose(){this._superDispose(),this.pipeline.dispose(),this.aoRenderTarget?.dispose(),this.transmissionRenderTarget?.dispose(),this.transmissionDepthTarget?.dispose(),this.normalRenderTarget?.dispose(),this.normalRenderTarget?.depthTexture?.dispose()}},P3=class extends CP(lQ){constructor(e,t=15,i=10066329){super(e,t,i),this.object=e,this.added=!1,this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){CR(this.object,P3.geometryHelper,e,t)}},P4=class extends CP(lW){constructor(e,t=15,i=6710886){super(e,t,i),this.object=e,this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){CR(this.object,P4.geometryHelper,e,t)}},P5=class extends CP(lH){constructor(e,t=6710886){super(e,t),this.object=e,this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){CR(this.object,P5.geometryHelper,e,t)}update(){if(void 0!==this.object){let e=P5._vector,t=this.object.distance?this.object.distance:1e3,i=t*Math.tan(this.object.angle);this.cone.scale.set(i,i,t),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let r=void 0!==this.color?this.color:this.light.color;if(this.cone.material instanceof Array)for(let e=0,t=this.cone.material.length;e<t;e++)this.cone.material[e].color.set(r);else this.cone.material.color.set(r)}}},P6=P5;P6._vector=new ib;var P8=class extends nf{constructor(){super(),this.caretIndex=0,this._caretVisibleAlpha=1,this._selectionVisibleAlpha=.3,this.current={start:0,end:void 0},this.matrixAutoUpdate=!1,this.caretMesh=new r$(new sp(1,1),new rM({transparent:!0,opacity:0,side:2})),this.add(this.caretMesh),this.selectionMesh=new r$(new sp(1,1),new rM({color:2857471,transparent:!0,depthTest:!1,depthWrite:!1,opacity:0,side:2})),this.add(this.selectionMesh),this.hide()}get caretHeight(){return this.object?.AD??0}show(e){this.visible=!0,this.object=e,this.caretMesh.scale.set(1,this.caretHeight,1),this.caretMesh.position.y=-(.5*this.caretHeight),this.setCaretPosition(this.caretIndex),this.update()}hide(){this.visible=!1}update(){if(void 0===this.object)return;this.updateHelperMatrix();let{depth:e}=this.object.geometry.userData.parameters;this.caretMesh.position.z=e,this.selectionMesh.position.z=e}updateHelperMatrix(){if(void 0===this.object)return;let e=this.object,t=e.parent;for(let i of(null!==t&&t.updateWorldMatrix(!0,!1),e.matrixAutoUpdate&&e.updateMatrix(),null!==t?(this.matrixWorld.multiplyMatrices(t.matrixWorld,e.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,e.matrix)):this.matrixWorld.multiplyMatrices(e.hiddenMatrix,e.matrix),this.matrix.copy(this.matrixWorld),this.children))i.matrixWorld.copy(this.matrixWorld);e.updateWorldMatrix(!0,!0)}setCaretColor(e){let t=this.caretMesh.material;t.color.setRGB(e.r,e.g,e.b);let i=this._caretVisibleAlpha===t.opacity;this._caretVisibleAlpha=e.a,i&&(t.opacity=this._caretVisibleAlpha)}setSelectionColor(e){this.selectionMesh.material.color.setRGB(e.r,e.g,e.b)}setCaretPosition(e,t={}){if(void 0===this.object)return;this.caretIndex=e;let i=this.object.wrappedText,[r,a]=P7(i,e),[o,h]=e>0?P7(i,e-1):[null,null];(e>0&&i.length?i[o].charAt(h):null)===`
6372`&&(r++,a=0),this.current.start=e,this.current.end=void 0;let[c,d]=P9(this.object,r,a),{AD:u,descender:p}=this.object,{width:f,height:m,depth:g}=this.object.geometry.userData.parameters;this.caretMesh.scale.set(1,this.caretHeight,1),this.caretMesh.position.set(c-.5*("string"==typeof f?0:f),d+(p+.5*u)+.5*("string"==typeof m?0:m),g),this.hideSelectionMesh(),this.showCaretMesh()}setSelection(e,t){if(void 0===this.object)return;let i=this.object.wrappedText;this.current.start=e,this.current.end=t;let r=[],a=[],o=function(e,t,i){let[r,a]=P7(e,t),[o,h]=P7(e,i),c=[];a>=e[r].length&&(r++,a=0);for(let t=r;t<=o;t++){let i=e[t],d=t===r?a:0,u=t===o?h:i.length;c.push([t,d,u])}return c}(i,e,t),{lineHeight:h,AD:c,descender:d}=this.object,u=d+.5*c-.5*h;for(let[e,t,i]of o)if(t!==i){let[o,c]=P9(this.object,e,t),[d,p]=P9(this.object,e,i);c+=u,p+=u+h;let f=r.length/3;r.push(o,c,0),r.push(d,c,0),r.push(d,p,0),r.push(o,p,0),a.push(f+0,f+1,f+2),a.push(f+2,f+3,f+0)}let p=new rU;p.setIndex(a),p.setAttribute("position",new rO(r,3));let{width:f,height:m,depth:g}=this.object.geometry.userData.parameters;this.selectionMesh.geometry.dispose(),this.selectionMesh.geometry=p,this.selectionMesh.position.x=-(.5*("string"==typeof f?0:f)),this.selectionMesh.position.y=.5*("string"==typeof m?0:m),this.selectionMesh.position.z=g,this.showSelectionMesh(),this.hideCaretMesh()}getSelectionFromPosition(e,t,i="previous"){if(void 0===this.object||void 0===this.object.font)return;let r=this.object.wrappedText,a=r.length,o=this.object.lineHeight,h=a*o,{height:c,verticalAlign:d}=this.object.geometry.userData.parameters,u="string"==typeof c?0:c,p=0;
63723===d?p=u-h:2===d&&(p=.5*u-.5*h);let f=Math.min(Math.floor(Math.max(Math.min(-t-p,h),0)/o),a-1),m=this.object.charCoords[f],g=this.object.charWidths[f],v=0,y=!1;if("previous"===i){for(let t=0;t<m.length;t++)if(m[t][0]+.5*g[t]-e>0){v=t,y=!0;break}}else if("closest"===i){let t=1/0;for(let i=0;i<m.length;i++){let r=Math.abs(m[i][0]+.5*g[i]-e);r<t&&(t=r,v=i,y=!0)}}else for(let t=0;t<m.length;t++){let i=m[t][0],r=m[t][0]+g[t];if(e>=i&&e<r){v=t,y=!0;break}}return y||(v=m.length),{index:this.getGlobalIndexFromLineAndCharIndexes(r,f,v),lineIndex:f,characterIndex:v}}getGlobalIndexFromLineAndCharIndexes(e,t,i){return e.slice(0,t).reduce((e,t)=>e+=t.length,0)+i}showSelectionMesh(){this.selectionMesh.material.opacity=this._selectionVisibleAlpha}hideSelectionMesh(){this.selectionMesh.material.opacity=0}showCaretMesh(){this.caretMesh.material.opacity=this._caretVisibleAlpha}hideCaretMesh(){this.caretMesh.material.opacity=0}};function P9(e,t,i){let{charCoords:r,charWidths:a,initialOffsetY:o,lineHeight:h}=e;if(r[t]&&0===r[t].length||0===r.length){let i=0,{horizontalAlign:r}=e.data.geometry,a=e.wrappedText,{width:c}=e.geometry.userData.parameters;return 1===a.length&&0===a[0].length&&(3===r?i=.5*c:2===r&&(i=c)),[i,o-h*t]}let c=r[t];if(void 0===c||0===c.length)return[0,0];let[d,u]=c[Math.min(i,c.length-1)];return i>=c.length&&(d+=a[t][i-1]),[d,u]}function P7(e,t){let i=0;for(let r=0;r<e.length;r++){let a=e[r],o=t-i;if(o<=a.length)return[r,o];i+=a.length}return[Math.max(0,e.length-1),e[e.length-1]?.length??0]}var De=class extends CK(lg,P3){constructor(e,t,i){super(),this.super_Entity(e,t),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let r=this.shadow.camera;r.top=1250,r.bottom=-1250,r.right=1250,r.left=-1250,r.near=-1e4,r.far=2500;let a=new lJ(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){for(let e in this.shadow.camera.updateProjectionMatrix(),this.gizmos){let t=this.gizmos[e];t instanceof lJ&&t.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}updateState(e,t){var i;this.updateState_Light(e,t);let r=void 0!==e.depth&&e.depth!==this.shadow.camera.far||void 0!==e.size&&e.size/2!==this.shadow.camera.right;void 0!==e.size&&(i=e.size,this.shadow.camera.right=i/2,this.shadow.camera.left=-i/2,this.shadow.camera.top=i/2,this.shadow.camera.bottom=-i/2,this.shadow.needsUpdate=!0),void 0!==e.shadowRadius&&(this.shadow.radius=e.shadowRadius),void 0!==e.shadowResolution&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),void 0!==e.penumbraSize&&t.scene.markPenumbraSizeDirty(),r&&this.update()}},Dt=new ib,Di=new ib,Dr=new ix,Ds=class extends CK(lh,P6){constructor(e,t,i){super(),this.super_Entity(e,t),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let r=this.shadow.camera;r.fov=2*tK.RAD2DEG*this.angle,r.aspect=1,r.near=100,r.far=2500;let a=new lJ(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){for(let e in this.shadow.camera.updateProjectionMatrix(),this.gizmos){let t=this.gizmos[e];t instanceof lJ&&t.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Di.setFromMatrixPosition(this.matrixWorld),Dr.setFromRotationMatrix(this.matrixWorld),Dt.copy(this.up).applyQuaternion(Dr).negate().multiplyScalar(this.distance),this.target.position.copy(Di).add(Dt),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(e,t){this.updateState_Light(e,t),void 0!==e.distance&&(this.distance=e.distance),void 0!==e.decay&&(this.decay=e.decay),void 0!==e.angle&&(this.angle=e.angle),void 0!==e.penumbra&&(this.penumbra=e.penumbra),void 0!==e.shadowRadius&&(this.shadow.radius=e.shadowRadius),void 0!==e.penumbraSize&&t.scene.markPenumbraSizeDirty(),void 0!==e.shadowResolution&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};function Da(e,t){return[[e[0][0]*t[0][0]+e[0][1]*t[1][0],e[0][0]
6372*t[0][1]+e[0][1]*t[1][1]],[e[1][0]*t[0][0]+e[1][1]*t[1][0],e[1][0]*t[0][1]+e[1][1]*t[1][1]]]}function Dn(e){return[[e[0][0],e[1][0]],[e[0][1],e[1][1]]]}(e=>{function t(e){return[e[0],e[3],e[1],e[4],e[2],e[5]]}e.identity=function(){return[1,0,0,0,1,0,0,0,1]},e.copy=function(t,i=e.identity()){for(let e=0,r=t.length;e<r;e++)i[e]=t[e];return i},e.create=function(t,i,r,a,o,h){return e.setAbcdef(e.identity(),t,i,r,a,o,h)},e.setAbcdef=function(e,t,i,r,a,o,h){return e[0]=t,e[1]=r,e[2]=o,e[3]=i,e[4]=a,e[5]=h,e},e.append=function(i,r){let[a,o,h,c,d,u]=t(i),[p,f,m,g,v,y]=t(r);return e.create(p*a+f*h,p*o+f*c,m*a+g*h,m*o+g*c,v*a+y*h+d,v*o+y*c+u)},e.prepend=function(i,r){let[a,o,h,c,d,u]=t(i),[p,f,m,g,v,y]=t(r),x=a,b=o,w=h,S=c;return(1!==p||0!==f||0!==m||1!==g)&&(x=a*p+o*m,b=a*f+o*g,w=h*p+c*m,S=h*f+c*g),e.create(x,b,w,S,d*p+u*m+v,d*f+u*g+y)},e.getAbcdef=t,e.invert=function(t){let[i,r,a,o,h,c]=e.getAbcdef(t),d=i*o-r*a;return e.create(o/d,-r/d,-a/d,i/d,(a*c-o*h)/d,-(i*c-r*h)/d)},e.apply=function([t,i],r){let[a,o,h,c,d,u]=e.getAbcdef(r);return[a*t+h*i+d,o*t+c*i+u]},e.applyInverse=function(t,i){let[r,a,o,h,c,d]=e.getAbcdef(i),u=1/(r*h+-(o*a)),[p,f]=t;return[h*u*p+-o*u*f+(d*o-c*h)*u,r*u*f+-a*u*p+(-d*r+c*a)*u]},e.scale=function(t,i,r=i){let[a,o,h,c,d,u]=e.getAbcdef(t);return e.setAbcdef(t,a*i,o*r,h*i,c*r,d*i,u*r),t},e.rotate=function(t,i){let r=Math.cos(i),a=Math.sin(i),[o,h,c,d,u,p]=e.getAbcdef(t);return e.setAbcdef(t,o*r-h*a,o*a+h*r,c*r-d*a,c*a+d*r,u*r-p*a,u*a+p*r),t},e.rotateAround=function(t,i,r){let[a,o]=r,h=e.translate(t,-a,-o);return h=e.rotate(h,i),h=e.translate(h,a,o)},e.translate=function(t,i,r){let[a,o,h,c,d,u]=e.getAbcdef(t);return e.setAbcdef(t,a,o,h,c,d+i,u+r),t},e.setTranslate=function(t,i,r){let[a,o,h,c]=e.getAbcdef(t);return e.setAbcdef(t,a,o,h,c,i,r),t},e.setPosition=function(t,i,r){let[a,o,h,c]=e.getAbcdef(t);return e.setAbcdef(t,a,o,h,c,i,r),t},e.getScale=function(t){let[i,r,a,o]=e.getAbcdef(t);return[Math.sqrt(i*i+r*r),Math.sqrt(a*a+o*o)]},e.getPosition=function(t){let[,,,,i,r]=e.getAbcdef(t);return[i,r]},e.getRotation=function(t,i){return e.decompose(t,i).rotation},e.decompose=function(t,i){let[r,a,o,h,c,d]=e.getAbcdef(t),{rotation:u,scale:p,shear:f}=function(e){let t,i,r,a,o,h,c,d,u,p,f,m;let[g,v,y]=(t=(e[0][0]+e[1][1])/2,i=(e[0][0]-e[1][1])/2,r=(e[1][0]+e[0][1])/2,o=Math.sqrt(t*t+(a=(e[1][0]-e[0][1])/2)*a),h=Math.sqrt(i*i+r*r),c=Math.atan2(r,i),u=((d=Math.atan2(a,t))-c)/2,f=[[Math.cos(p=(d+c)/2),Math.sin(p)],[-Math.sin(p),Math.cos(p)]],m=[[Math.cos(u),Math.sin(u)],[-Math.sin(u),Math.cos(u)]],f[0][0]*=-1,f[0][1]*=-1,m[0][0]*=-1,m[1][0]*=-1,[f,[[o+h,0],[0,o-h]],m]),x=Da(g,Dn(y)),b=Da(Da(y,v),Dn(y));return{rotation:Math.atan2(x[1][0],x[0][0]),scale:[b[0][0],b[1][1]],shear:[b[0][1]/b[1][1],b[1][0]/b[0][0]]}}([[r,o],[a,h]]);return{position:[c+(i[0]*r+i[1]*o)-i[0],d+(i[0]*a+i[1]*h)-i[1]],scale:p,rotation:u,shear:f,pivot:i}},e.compose=function(t,i,r,a,o=[0,0]){let[h,c]=t,[d,u]=a,[p,f,m,g]=function({rotation:e,scale:t,shear:i}){let r=Math.cos(e),a=Math.sin(e),o=Da([[r,-a],[a,r]],[[t[0],i[0]*t[1]],[i[1]*t[0],t[1]]]);return[o[0][0],o[1][0],o[0][1],o[1][1]]}({rotation:r,scale:i,shear:o});return e.create(p,f,m,g,h-(d*p+u*m)+d,c-(d*f+u*g)+u)}})(Dh||(Dh={}));var Do,Dl,Dh,Dc,Dd=Math.PI/180,Du=class{constructor(e,t,i){this.uuid=e,this.data=t,this.localMatrix=Dh.identity(),this.worldMatrix=Dh.identity(),this.ignoreCameraZoom=!1,this.visible=!0,this._singleBBox=new Dv,this._recursiveBBox=new Dv,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.shear=[0,0],this.emitter=_n(),this.dpr=i.dpr??1,this.dataPatched=t}project(e,t){let i=this.worldMatrix;return t&&(i=Dh.append(t.worldMatrix,i)),Dh.applyInverse(e,i)}intersects(e,t,i,r=!1){return this.visible&&!this.data.raycastLock&&this.intersectsInLocalSpace(...this.project([e,t],i),r)}intersectsInLocalSpace(e,t,i=!1){let{min:r,max:a}=i?this.recursiveBBox:this.singleBBox;return e>=r[0]&&e<=a[0]&&t>=r[1]&&t<=a[1]}applyTransforms(e){e.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=Dh.compose(this.position,this.scale,this.rotation*D
vendor: 5,022 bytes, line 6372
6372d,xc.getPivot(this.dataPatched),this.shear)}updateWorldMatrix(e,t,i){let r=this.parent;t&&null!=r&&r.updateWorldMatrix(e,!0,!1),e&&this.updateLocalMatrix(),this.parent?this.worldMatrix=Dh.append(this.parent.worldMatrix,this.localMatrix):this.worldMatrix=Dh.copy(this.localMatrix),this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}get pivot(){return xc.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(e=>{e.resetBBoxNeedsUpdateSelf()})}updateTransformState(e){let t=!1;void 0!==e.position&&(t=!0,this.position=e.position),void 0!==e.rotation&&(t=!0,this.rotation=e.rotation),void 0!==e.scale&&(t=!0,this.scale=e.scale),void 0!==e.shear&&(t=!0,this.shear=e.shear),t&&(this.updateWorldMatrix(!0,!1,!0),this.resetBBoxNeedsUpdate())}updateByOp(e,t,i){0===e.type&&void 0!==e.props.visible&&(this.visible=e.props.visible),this.data=t,this.data=t;let r=e,a=fa(e.path,["states","*"]);if(null!==a){if(0===e.type){let[t]=a;if(this?.stateSelection===t){let t={...e.props};if(delete t.name,Object.values(e.props).some(e=>void 0===e)){let i=this.data;if(void 0!==i){let r=fp.zoom(i,e.path.slice(2));if(r)for(let i in e.props)void 0===e.props[i]&&i in r&&(t[i]=r[i])}}r={...e,props:t,path:e.path.slice(2)}}}}else if(0===e.type){let t=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(void 0!==t){if(void 0!==e.props.name&&t.name){let{name:e,...i}=t;t=i}let i=fp.removeOverridden(e.path,e.props,t);r={...e,props:i}}}this.updateByPatchedOpBase(r,y7.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i)}changeSelectedState(e,t,i=!1){if(!(0===this.data.states.length&&!i)){for(let e of this.data.states)y7.toOps(this.data,e.data).forEach(e=>{let i=fc.replaceProps(e,this.data);this.dataPatched=this.data,this.updateByPatchedOp(i,this.data,t)});if(null!==e){let i=this.data.states.data(e);i&&(this.dataPatched=y7.patch(this.data,i),y7.toOps(this.data,i).forEach(e=>{this.updateByPatchedOp(e,this.dataPatched,t)}))}i&&this.updateTransformState(this.dataPatched),this.stateSelection=e}}updateState(e,t){void 0!==e.name&&(this.name=e.name),void 0!==e.visible&&(this.visible=e.visible),this.updateTransformState(e)}updateByPatchedOpBase(e,t,i){this.dataPatched=t,this.updateByPatchedOp(e,t,i)}updateByPatchedOp(e,t,i){0===e.path.length&&0===e.type&&this.updateState(e.props,i),this.requestRender()}traverseFrameAncestors(e){this.traverseAncestors(t=>{"frame2d"===t.data.type&&e(t)})}traverseAncestors(e){let t=this.parent;for(;t;)e(t),t=t.parent}requestRender(){this.traverseFrameAncestors(e=>{e.requestRender()})}clone(e){let t=new Du(this.uuid,this.data,e);return t.parent=void 0,t}addEventListener(e,t){this.emitter.on(e,t)}removeEventListener(e,t){this.emitter.off(e,t)}dispatchEvent(e){this.emitter.emit(e.type,{...e,target:e.target??this})}traverseSortNextHelper(){let e=this.parent;if(e){let t=e.children;if(t){let i=t.indexOf(this)+1;return t[i]?t[i]:e.traverseSortNextHelper()}}}sortNext(){let e=this.children;return e&&e.length>0&&e[0]?e[0]:this.traverseSortNextHelper()}isDescendantOf(e){e instanceof Du&&(e=e.uuid);let t=this;for(;t.parent;){if(t.parent.uuid===e)return!0;t=t.parent}return!1}},Dp=class extends Du{constructor(e,t,i){super(e,t,i),this.uuid=e,this.data=t,this.context=i,this.children=[]}add(e){e.parent&&e.parent instanceof Dp&&e.parent.remove(e),this.children.push(e),e.parent=this}remove(e){let t=this.children.indexOf(e);t>=0&&(this.children.splice(t,1),e.parent=void 0)}traverse(e){let t=e(this);if(!0!==t)for(let i of this.children)i instanceof Dp?i.traverse(e):t=e(i)}intersectsChildrenHelper(e,t,i,r,a){for(let o of this.children)if(o.intersects(e,t,i,!1)&&(a.push(o),r)||o instanceof Dp&&o.intersectsChildrenHelper(e,t,i,r,a))return!0;return!1}intersectsChildren(e,t,i,r=!1,a=[],o=!1){return this.intersectsChildrenHelper(e,t,i,r,a),a}intersectsChildrenHelperReverse(e,t,i,r,a){for(let o of this.children)if(o instanceof Dp&&o.intersectsChildrenHelperReverse(e,t,i,r,a)||o.intersects(e,t,i,!1)&&(a.push(o),r))return!0;return!1}intersectsChildrenReverse(e,t,i,r=!1,a=[],o=!1){return this.intersectsChildrenHelperReverse(e,t,i,r,a),a}updateWorldMatrix(e,t,i){if(super.updateWorldMatrix(e,t,i),i&&this.children)for(let t of this.children)t.updateWorldMatrix(e,!1,!0)}find(e){let t;return this.traverse(i=>{i.uuid===e&&(t=i)}),t}innerDrawChildren(e){for(let t=this.children.length-1;t>=0;t--)this.children[t].draw(e)}resetBBoxNeedsUpdate(){super.resetBBoxNeedsUpdate(),this.traverse(e=>{e.resetBBoxNeedsUpdateSelf()})}clone(e){let t=new Dp(this.uuid,this.data,e);for(let i of(t.parent=void 0,this.children))t.add(i.clone(e));return t}},Df=class extends Dp{constructor(e,t,i){super(e,t,i),this.uuid=e,this.data=t,this.updateState(t,i)}draw(e){this.visible&&(e.save(),this.applyTransforms(e),this.innerDrawChildren(e),e.restore(
6372))}clone(e){let t=new Df(this.uuid,this.data,e);for(let i of(t.parent=void 0,this.children))t.add(i.clone(e));return t}},Dm=[[-1,1],[-1,-1],[1,-1],[1,1]],Dg=(e,t,i)=>{let r=e.getCenter(),a=e.getHalfSize(),o=Dh.append(t,e.worldMatrix);0===a[0]&&0===a[1]?i.push(Dh.apply(r,o)):Dm.forEach(e=>{let t=[e[0]*a[0]+r[0],e[1]*a[1]+r[1]];i.push(Dh.apply(t,o))})},Dv=class{constructor(){this.matrix=Dh.identity(),this.min=[1/0,1/0],this.max=[-1/0,-1/0],this.vertices=[],this.edges=[]}setFromObjectSize(e,t=!1){e.updateWorldMatrix(),this.makeEmpty(),Dh.copy(e.worldMatrix,this.matrix);let i=Dh.invert(e.worldMatrix);this.expandByObjectSize(e,i,t)}expandByObjectSize(e,t,i=!1){let r=[];!0===i&&e instanceof Dp?e.traverse(e=>{e.visible&&Dg(e,t,r)}):Dg(e,t,r),this.setFromPoints(r)}setFromSize(e,t,i){this.makeEmpty(),Dh.copy(i,this.matrix),this.expandBySize(e,t,i)}expandBySize(e,t,i){[Dh.apply([0,0],i),Dh.apply([0,t],i),Dh.apply([e,t],i),Dh.apply([e,0],i)].forEach(e=>this.expandByPoint(e))}getCenter(){let[e,t]=this.min,[i,r]=this.getHalfSize();return Dh.apply([e+i,t+r],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(e){for(let t of(this.makeEmpty(),e))this.expandByPoint(t)}expandByPoint(e){this.min=[Math.min(this.min[0],e[0]),Math.min(this.min[1],e[1])],this.max=[Math.max(this.max[0],e[0]),Math.max(this.max[1],e[1])]}computeVertices(){let[e,t]=this.getHalfSize(),i=this.getCenter(),[r,a,o,h]=Dh.getAbcdef(this.matrix),c=Dh.create(r,a,o,h,i[0],i[1]);this.vertices=Dm.map(([i,r])=>Dh.apply([i*e,r*t],c))}computeEdges(){this.edges=[];for(let e=0,t=this.vertices.length;e<t;++e)this.edges.push([this.vertices[e],this.vertices[(e+1)%t]])}project(e,t){let i=this.matrix;return t&&(i=Dh.append(t.worldMatrix,i)),Dh.applyInverse(e,i)}intersects(e,t,i){return this.intersectsInLocalSpace(...this.project([e,t],i))}intersectsInLocalSpace(e,t){let{min:i,max:r}=this;return e>=i[0]&&e<=r[0]&&t>=i[1]&&t<=r[1]}containsPoint(e){let[t,i]=e,[r,a]=this.min,[o,h]=this.max;return t>=r&&t<=o&&i>=a&&i<=h}intersectsBBox2D(e){for(let t=0,i=this.edges.length;t<i;t++){let i=this.edges[t];for(let t=0,r=e.edges.length;t<r;t++)if(function(e,t){let[[i,r],[a,o]]=e,[[h,c],[d,u]]=t,p=(i-a)*(c-u)-(r-o)*(h-d);if(0===p)return!1;let f=((i-h)*(c-u)-(r-c)*(h-d))/p,m=-((i-a)*(r-c)-(r-o)*(i-h))/p;return f>=0&&f<=1&&m>=0&&m<=1}(i,e.edges[t]))return!0}for(let t=0,i=e.vertices.length;t<i;t++){let i=e.vertices[t];if(this.containsPoint(i))return!0}return!1}ensureMinMax(){let e=this.min,t=this.max;this.min=[Math.min(e[0],t[0]),Math.min(e[1],t[1])],this.max=[Math.max(e[0],t[0]),Math.max(e[1],t[1])]}copy(e){this.min=[...e.min],this.max=[...e.max],Dh.copy(e.matrix,this.matrix),this.computeVertices(),this.computeEdges()}clone(){let e=new Dv;return e.copy(this),e}},Dy=new Promise(e=>{Dc=e}),Dx=!1;function Db(e){let t=!1;return e.scene.objects.traverse((e,i)=>{("Mesh"===i.type&&"UIGeometry"===i.geometry.type||"Page"===i.type&&void 0!==i.uiFrame)&&(t=!0)}),t}async function Dw(e){let t=await Dy;DC||(DT||(DT=t({locateFile:()=>e})),DC=await DT)}var DS=Dh.identity(),D_=class{constructor(e,t=1){this.canvas=e,this._dpr=t,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=gp.transparent,this._innerShadowBlur=0,this._innerShadowOffsetX=0,this._innerShadowOffsetY=0,this._innerShadowSpread=0,this._innerShadowColor=gp.transparent,this._fonts=new Map,this._isSizeDirty=!1;try{let i=e.getBoundingClientRect();e.width=i.width*t,e.height=i.height*t}catch{console.log(e.width,t)}this._currentM3Transform=DS,this._currentTransform=new Float32Array(DS)}get dpr(){return this._dpr}set dpr(e){this._dpr=e,this._isSizeDirty=!0}
6372async init(){if(!this.wasmURL)throw Error("Your must set the wasm binary url with renderer.wasmURL = ... before you can call renderer.init");await Dw(this.wasmURL),this._surface=DC.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas(),this._paint=new DC.Paint,this._paint.setAntiAlias(!0),this._paintFill=this._paint.copy(),this._paintFill.setStyle(DC.PaintStyle.Fill),this._paintStroke=this._paint.copy(),this._paintStroke.setStyle(DC.PaintStyle.Stroke),this.ctx?.scale(this.dpr,this.dpr)}get currentTransform(){return this._currentM3Transform}get currentTransformBuffer(){return this._currentTransform}set currentTransform(e){this._currentM3Transform=e,this._currentTransform.set(e)}async loadFont(e,t){let i=await (await fetch(e)).arrayBuffer();this.registerFont(i,t)}registerFont(e,t){if(this._fonts.has(t))return;let i=DC.FontMgr.FromData(e);if(i)this._fonts.set(t,i);else throw Error("Invalid font data for "+t)}get width(){return this._width}get height(){return this._height}set strokeColor(e){this._paintStroke&&this._paintStroke.setColor(DM(e),DC.ColorSpace.DISPLAY_P3)}set fillColor(e){this._paintFill&&this._paintFill.setColor(DM(e),DC.ColorSpace.DISPLAY_P3)}set lineWidth(e){this._paintStroke&&this._paintStroke.setStrokeWidth("center"===this._strokeMode?e:2*e)}set strokeMode(e){this._strokeMode=e}set dropShadowBlur(e){this._dropShadowBlur=e}set dropShadowColor(e){this._dropShadowColor=e}set dropShadowOffsetX(e){this._dropShadowOffsetX=e}set dropShadowOffsetY(e){this._dropShadowOffsetY=e}set innerShadowBlur(e){this._innerShadowBlur=e}set innerShadowColor(e){this._innerShadowColor=e}set innerShadowOffsetX(e){this._innerShadowOffsetX=e}set innerShadowOffsetY(e){this._innerShadowOffsetY=e}set innerShadowSpread(e){this._innerShadowSpread=e}set layerBlur(e){this._layerBlur=e}set backgroundBlur(e){this._backgroundBlur=e}clear(){this.ctx?.clear(DC.TRANSPARENT)}save(){this.ctx?.save()}restore(){this.ctx?.restore()}beginPath(){this._currentPath?.delete(),this._currentPath=new DC.Path}closePath(){let e=this._currentPath;if(e){if(e.isEmpty())return;let t=e.getBounds();(t[3]-t[1]||t[2]-t[0])&&e.close()}}fill(){this._paintInner(this._paintFill,!0)}stroke(){this._paintInner(this._paintStroke,!1)}clipRect(e,t,i,r,a=0,o=0,h=0,c=0){let d=DC.XYWHRect(e,t,i,r);if(0===a&&0===o&&0===c&&0===h)this.ctx?.clipRect(d,DC.ClipOp.Intersect,!0);else{let e=DC.RRectXY(d,a,a);e[4]=e[5]=a,e[6]=e[7]=o,e[8]=e[9]=h,e[10]=e[11]=c,this.ctx?.clipRRect(e,DC.ClipOp.Intersect,!0)}}_applyShadowOffsetMatrix(){if(this.ctx){let e=Dh.invert(this.currentTransform);this.ctx.concat(e);let t=Dh.translate(Dh.identity(),this._dropShadowOffsetX,this._dropShadowOffsetY);this.ctx.concat(t),this.ctx.concat(this._currentTransform)}}_applyEffectsToPaint(e,t,i=!0){if(this.ctx&&this._currentPath){let r,a=!1;if(i&&this._hasDropShadow()){let i,r=e.copy();r.setColor(DM(this._dropShadowColor)),this._dropShadowBlur>0&&(i=DC.MaskFilter.MakeBlur(DC.BlurStyle.Normal,this._dropShadowBlur*this.dpr*(this.camera?.scale??1),!1),r.setMaskFilter(i)),this.ctx.save(),this.ctx.clipPath(this._currentPath,DC.ClipOp.Difference,!0),this._applyShadowOffsetMatrix(),t(r),this.ctx.restore(),r.delete(),i?.delete()}if(this._backgroundBlur>0&&i){this.ctx.save(),this.ctx.clipPath(this._currentPath,DC.ClipOp.Intersect,!0);let t=DC.ImageFilter.MakeBlur(this._backgroundBlur,this._backgroundBlur,DC.TileMode.Clamp,null),i=e.copy();i.setImageFilter(t),i.setAlphaf(1);let r=this._currentPath.computeTightBounds();this.ctx.saveLayer(i,r,null,DC.SaveLayerInitWithPrevious),this.ctx.drawColor(e.getColor()),this.ctx.restore(),this.ctx.restore(),i.delete(),t.delete(),a=!0}if(this._layerBlur>0){let i=e.copy();r=DC.MaskFilter.MakeBlur(DC.BlurStyle.Normal,this._layerBlur*this.dpr*(this.camera?.scale??1),!1),i.setMaskFilter(r),t(i),i.delete(),r.delete(),a=!0}if(a||t(e),i&&this._hasInnerShadow()){let e,t=new DC.Paint;t.setAntiAlias(!0),t.setStyle(DC.PaintStyle.Fill),t.setColor(DM(this._innerShadowColor)),this._innerShadowBlur>0&&(e=DC.MaskFilter.MakeBlur(DC.BlurStyle.Normal,this._innerShadowBlur*this.dpr*(this.camera?.scale??1),!1),t.setMaskFilter(e));let i=this._currentPath.computeTightBounds(),[r,a,o,h]=i;this.ctx.save(),this.ctx.clipPath(this._currentPath,DC.ClipOp.Intersect,!0),this.ctx.saveLayer(t,i,null,DC.SaveLayerInitWithPrevious),this.ctx?.translate(this._innerShadowOffsetX,this._innerShadowOffsetY),this.ctx.drawRect(DC.XYWHRect(-1e3-this._innerShadowOffsetX,-1e3-this._innerShadowOffsetY,2e3+(o-r)+Math.abs(2*this._innerShadowOffsetX),2e3+(h-a)+Math.abs(2*this._innerShadowOffsetY)),t),t.setBlendMode(DC.BlendMode.Clear),this.ctx.drawPath(this._currentPath,t),this.ctx.restore(
6372),this.ctx.restore(),t.delete(),e?.delete()}}}_paintInner(e,t=!0){if(this.ctx&&this._currentPath&&e){let i=this.ctx,r=this._currentPath;this._applyEffectsToPaint(e,e=>{let a=!1;t||"center"===this._strokeMode||(i.save(),i.clipPath(r,"outside"===this._strokeMode?DC.ClipOp.Difference:DC.ClipOp.Intersect,!0),a=!0),i.drawPath(r,e),a&&i.restore()},t)}}_hasDropShadow(){return this._dropShadowColor?.a>0}_hasInnerShadow(){return this._innerShadowColor?.a>0}path(e){this._currentPath?.addPath(DC.Path.MakeFromSVGString(e))}ellipse(e,t,i,r,a,o,h,c){if(!DA([e,t,i,r])||!this._currentPath)return;if(i<0||r<0)throw Error("radii cannot be negative");let d=DC.XYWHRect(e-i,t-r,2*i,2*r);this._currentPath?.addOval(d)}rect(e,t,i,r,a=0,o=0,h=0,c=0){let d=DC.XYWHRect(e,t,i,r);if(DA(d)){if(0===a&&0===o&&0===c&&0===h)this._currentPath?.addRect(d);else{let e=DC.RRectXY(d,a,a);e[4]=e[5]=a,e[6]=e[7]=o,e[8]=e[9]=h,e[10]=e[11]=c,this._currentPath?.addRRect(e)}}}getHorizontalAlign(e){switch(e){case 2:return DC.TextAlign.Right;case 3:return DC.TextAlign.Center;case 4:return DC.TextAlign.Justify;default:return DC.TextAlign.Left}}drawTextInner(e,t,i,[r,a,o,h],c,d,u=!0){let p=0,{ctx:f}=this;if(!f)return p;let m=d.copy(),g=d.copy();return g.setAlphaf(0),this._applyEffectsToPaint(m,d=>{t.pushPaintStyle(i,d,g),t.addText(e);let u=t.build();u.layout(o);let m=a;2===c?m+=(h-u.getHeight())/2:3===c&&(m+=h-u.getHeight()),f.drawParagraph(u,r,m),p=u.getHeight(),t.reset(),u.delete()},u),m.delete(),g.delete(),p}drawText(e,t){let i=0,r=this._fonts.get(t.font),{ctx:a,_paintFill:o,_paintStroke:h}=this;if(r&&a){let a=new DC.TextStyle({fontFamilies:[t.font],fontSize:t.fontSize,heightMultiplier:t.lineHeight,letterSpacing:t.letterSpacing}),c=new DC.ParagraphStyle({textStyle:a,textAlign:this.getHorizontalAlign(t.horizontalAlign)}),d=DC.XYWHRect(t.x,t.y,t.width,t.height),u=DC.ParagraphBuilder.Make(c,r);o&&(i=this.drawTextInner(e,u,a,d,t.verticalAlign,o,!0)),h&&(i=this.drawTextInner(e,u,a,d,t.verticalAlign,h,!1)),u.delete()}return{height:i}}render(){this._surface?.flush()}moveTo(e,t){this._currentPath?.moveTo(e,t)}lineTo(e,t){this._currentPath?.lineTo(e,t)}bezierCurveTo(e,t,i,r,a,o){this._currentPath?.cubicTo(e,t,i,r,a,o)}quadraticCurveTo(e,t,i,r){this._currentPath?.quadTo(e,t,i,r)}setTransform(e,t=!1){if(!this.ctx)return;let i=this.ctx.getTotalMatrix(),r=Dh.invert(i);if(r&&this.ctx.concat(r),this.ctx?.scale(this.dpr,this.dpr),this.camera?.enabled&&(this.ctx?.concat(this.camera.worldMatrix),t)){let e=Dh.getScale(this.camera.worldMatrix);this.ctx?.scale(1/e[0],1/e[1])}this.ctx?.concat(e),this.currentTransform=e}transform(e){this.ctx?.concat(e)}setSize(e,t){!this._isSizeDirty&&e===this._width&&t===this._height||(this._isSizeDirty=!1,this._width=e,this._height=t,this.canvas.style.width=e+"px",this.canvas.style.height=t+"px",this.canvas.width=e*this.dpr,this.canvas.height=t*this.dpr,this._surface&&(this._surface=DC.MakeWebGLCanvasSurface(this.canvas),this.ctx=this._surface?.getCanvas()))}};function DA(e){for(let t=0;t<e.length;t++)if(void 0!==e[t]&&!Number.isFinite(e[t]))return!1;return!0}function DM({r:e,g:t,b:i,a:r}){return DC.Color4f(e,t,i,r)}var DE,DC,DT,DP,DD=class{constructor(e,t,i){this.uuid=e,this.data=t,this.enabled=!1,this.color=gp.transparent,this.blurRadius=0,this.offset=[0,0],this.spread=0,this.update(t)}update(e){void 0!==e.color&&(this.color=e.color),void 0!==e.enabled&&(this.enabled=e.enabled),void 0!==e.blurRadius&&(this.blurRadius=e.blurRadius),void 0!==e.offset&&(this.offset=e.offset),void 0!==e.spread&&(this.spread=e.spread)}},DO=class{constructor(e,t,i){this.uuid=e,this.data=t,this.enabled=!1,this.radius=0,this.update(t)}update(e){void 0!==e.enabled&&(this.enabled=e.enabled),void 0!==e.radius&&(this.radius=e.radius)}},DI=class{constructor(e,t,i){this.uuid=e,this.data=t,this.enabled=!1,this.color=gp.transparent,this.update(t)}update(e){void 0!==e.enabled&&(this.enabled=e.enabled),void 0!==e.color&&(this.color=e.color)}},DR=class{constructor(e,t,i){this.uuid=e,this.data=t,this.enabled=!1,this.color=gp.transparent,this.thickness=0,this.mode="inside",this.update(t)}update(e){void 0!==e.enabled&&(this.enabled=e.enabled),void 0!==e.color&&(this.color=e.color),void 0!==e.thickness&&(this.thickness=e.thickness),void 0!==e.mode&&(this.mode=e.mode)}},DL=class extends Du{constructor(e,t,i){super(e,t,i),this.uuid=e,this.data=t,this.autoClose=!0,this.fill=new DI(e+"-fill",t.fill,i),this.stroke=new DR(e+"-stroke",t.stroke,i),this.dropShadow=new DD(e+"-dropShadow",t.dropShadow,i),this.innerShadow=new DD(e+"-innerShadow",t.innerShadow,i),this.backgroundBlur=new DO(e+"-backgroundBlur",t.backgroundBlur,i),this.layerBlur=new DO(e+"-layerBlur",t.layerBlur,i)}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:gp.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:gp.transparent,e.strokeMode=this.stroke.mode,e.lineWidth=this.stroke.thickness}applyFilters(e){this.layerBlur.enabled?e.layerBlur=5*this.layerBlur.radius:e.layerBlur=0,this.backgroundBlur.enabled?e.backgroundBlur=5*this.backgroundBlur.radius:e.backgroundBlur=0,this.dropShadow.enabled?(e.dropShadowBlur=5*this.dropShadow.blurRadius,e.dropShadowColor=this.dropShadow.color,e.dropShadowOffsetX=this.dropShadow.offset[0],e.dropShadowOffsetY=this.dropShadow.offset[1]):e.dropShadowColor=gp.transparent,this.innerShadow.enabled?(e.innerShadowSpread=this.innerShadow.spread,e.innerShadowBlur=5*this.innerShadow.blurRadius,e.innerShadowColor=this.innerShadow.color,e.innerShadowOffsetX=this.innerShadow.offset[0],e.innerShadowOffsetY=this.innerShadow.offset[1]):e.innerShadowColor=gp.transparent}innerDraw(e){}draw(e){this.visible&&(e.save(),this.applyTransforms(e),this.applyFilters(e),this.applyFillStroke(e),e.beginPath(),this.innerDraw(e),this.autoClose&&e.closePath(),this.fill.enabled&&e.fill(),this.stroke.enabled&&e.stroke(),e.restore(
vendor: 12,272 bytes, line 6372
6372))}updateByPatchedOp(e,t,i){super.updateByPatchedOp(e,t,i),0===e.type&&(fa(e.path,["fill"])?this.fill.update(e.props):fa(e.path,["stroke"])?this.stroke.update(e.props):fa(e.path,["dropShadow"])?this.dropShadow.update(e.props):fa(e.path,["innerShadow"])?this.innerShadow.update(e.props):fa(e.path,["layerBlur"])?this.layerBlur.update(e.props):fa(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}updateState(e,t){super.updateState(e,t),void 0!==e.fill&&this.fill.update(e.fill),void 0!==e.stroke&&this.stroke.update(e.stroke),void 0!==e.dropShadow&&this.dropShadow.update(e.dropShadow),void 0!==e.innerShadow&&this.innerShadow.update(e.innerShadow),void 0!==e.layerBlur&&this.layerBlur.update(e.layerBlur),void 0!==e.backgroundBlur&&this.backgroundBlur.update(e.backgroundBlur)}clone(e){let t=new DL(this.uuid,this.data,e);return t.parent=void 0,t}},DB=class extends DL{constructor(e,t,i){super(e,t,i),this.uuid=e,this.data=t,this.width=0,this.height=0,this.updateState(t,i)}innerDraw(e){e.ellipse(.5*this.width,.5*this.height,.5*this.width,.5*this.height,0,0,2*Math.PI)}intersectsInLocalSpace(e,t){var i,r,a,o;let h,c;return i=.5*this.width,r=.5*this.height,a=.5*this.width,o=.5*this.height,(h=e-i)*h/(a*a)+(c=t-r)*c/(o*o)<=1}getCenter(){return[.5*this.width,.5*this.height]}getHalfSize(){return[.5*this.width,.5*this.height]}updateSizeState(e){let t=!1;void 0!==e.width&&(this.width="number"==typeof e.width?e.width:this.width,t=!0),void 0!==e.height&&(this.height="number"==typeof e.height?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e)}clone(e){let t=new DB(this.uuid,this.data,e);return t.parent=void 0,t}},Dz=class extends DL{constructor(e,t,i){super(e,t,i),this.uuid=e,this.data=t,this.width=0,this.height=0,this.cornerRadius=[0,0,0,0],this.updateState(t,i)}innerDraw(e){e.rect(0,0,this.width,this.height,...this.cornerRadius)}getCenter(){return[.5*this.width,.5*this.height]}getHalfSize(){return[.5*this.width,.5*this.height]}updateCornerState(e){void 0!==e.cornerRadius&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let t=!1;void 0!==e.width&&(this.width="number"==typeof e.width?e.width:this.width,t=!0),void 0!==e.height&&(this.height="number"==typeof e.height?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateCornerState(e)}clone(e){let t=new Dz(this.uuid,this.data,e);return t.parent=void 0,t}},DF=class extends DL{constructor(e,t,i){super(e,t,i),this.uuid=e,this.data=t,this._textHeight=0,this._textHeightDirty=!0,this.width=0,this.height=0,this.updateState(t,i)}get textHeight(){return this._textHeight}applyFillStroke(e){e.fillColor=this.fill.enabled?this.fill.color:gp.transparent,e.strokeColor=this.stroke.enabled&&this.stroke.thickness>0?this.stroke.color:gp.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 t=this.data.textTransform,i=this.data.text.textValue.toString(),r=2===t?i.toUpperCase():3===t?i.toLowerCase():i,{height:a}=e.drawText(r,{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[.5*this.width,.5*this.height]}getHalfSize(){return[.5*this.width,.5*this.height]}updateSizeState(e){let t=!1;void 0!==e.width&&(this.width="number"==typeof e.width?e.width:this.width,t=!0),void 0!==e.height&&(this.height="number"==typeof e.height?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateFontState(e,{shared:t}){void 0!==e.font&&(this._fontHolder=t.getFont(e.font),this._fontHolder&&!this._fontHolder.isLoaded&&this._fontHolder.loadingPromise.then(()=>{this.requestRender()}))}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateFontState(e,t)}clone(e){let t=new DF(this.uuid,this.data,e);return t.parent=void 0,t}},DN=class extends DL{constructor(e,t,i){super(e,t,i),this.uuid=e,this.data=t,this.curves=[],this.extremasBBox={min:[0,0],max:[0,0]},this.updateState(t,i)}computeExtremas(){0===this.curves.length&&this.computeCurves();let e=this.curves.map(e=>DP.extremas(e)),t=[1/0,1/0],i=[-1/0,-1/0];for(let r=0,a=e.length;r<a;r++){let a=e[r];a[0][0]<t[0]&&(t[0]=a[0][0]),a[0][1]<t[1]&&(t[1]=a[0][1]),a[1][0]>i[0]&&(i[0]=a[1][0]),a[1][1]>i[1]&&(i[1]=a[1][1])}return this.extremasBBox.min=[t[0],t[1]],this.extremasBBox.max=[i[0],i[1]],this.extremasBBox}computeCurves(){this.curves=[];for(let e=1,t=this.data.points.length;e<t;e++){let t=this.data.points[e].data,i=this.data.points[e-1].data,r={start:i.position,cp1:i.controlNext.position,cp2:t.controlPrevious.position,end:t.position};this.curves.push(r)}let e=this.data.points[0].data,t=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let i={start:t.position,cp1:t.controlNext.position,cp2:e.controlPrevious.position,end:e.position};this.curves.push(i)}}getCenter(){let[e,t]=this.extremasBBox.min,[i,r]=this.getHalfSize();return[e+i,t+r]}getHalfSize(){let{min:e,max:t}=this.extremasBBox;return[(t[0]-e[0])*.5,(t[1]-e[1])*.5]}innerDraw(e){for(let t=0,i=this.data.points.length;t<i;t++){let i=this.data.points[t].data;if(0===t){let[t,r]=i.position;e.moveTo(t,r)}else{let r=this.data.points[t-1].data,[a,o]=r.controlNext.position,[h,c]=i.controlPrevious.position,[d,u]=i.position,p={start:r.position,cp1:r.controlNext.position,cp2:i.controlPrevious.position,end:i.position};DP.derive(p),e.bezierCurveTo(a,o,h,c,d,u)}}let t=this.data.points[0].data,i=this.data.points[this.data.points.length-1].data;if(this.data.isClosed){let[r,a]=i.controlNext.position,[o,h]=t.controlPrevious.position,[c,d]=t.position;e.bezierCurveTo(r,a,o,h,c,d)}}updateState(e,t){super.updateState(e,t),this.computeExtremas()}clone(e){let t=new DN(this.uuid,this.data,e);return t.parent=void 0,t}};(e=>{function t(e,t,i,r=!1){let a=e-2*t+i;if(0!==a){let r=-Math.sqrt(Math.abs(t*t-e*i)),o=-e+t;return[-(r+o)/a,-(-r+o)/a]}return t!==i&&0===a?[(2*t-i)/(2*(t-i))]:[]}e.derive=function(e){let t=e.start,i=e.cp1,r=e.cp2,a=e.end,o={start:[3*(i[0]-t[0]),3*(i[1]-t[1])],cp:[3*(r[0]-i[0]),3*(r[1]-i[1])],end:[3*(a[0]-r[0]),3*(a[1]-r[1])]};return e.derivative=o,o.derivative=O6.derive(o),o},e.droot=function(i){let r=i.derivative??e.derive(i),a=r.start,o=r.cp,h=r.end;return[t(a[0],o[0],h[0]),t(a[1],o[1],h[1])]},e.extremas=function(t){let[i,r]=e.droot(t),a=[t.start[0],t.end[0]],o=[t.start[1],t.end[1]];for(let r of i)a.push(e.compute(t,Math.min(1,Math.max(0,r)))[0]);for(let i of r)o.push(e.compute(t,Math.min(1,Math.max(0,i)))[1]);return a.sort((e,t)=>e-t),o.sort((e,t)=>e-t),[[a[0],o[0]],[a[a.length-1],o[o.length-1]]]},e.compute=function(e,t){if(0===t)return[...e.start];if(1===t)return[...e.end];let i=1-t,r=i*i,a=t*t,o=r*i,h=r*t*3,c=i*a*3,d=t*a;return[o*e.start[0]+h*e.cp1[0]+c*e.cp2[0]+d*e.end[0],o*e.start[1]+h*e.cp1[1]+c*e.cp2[1]+d*e.end[1]]}})(DP||(DP={})),(O4=O6||(O6={})).derive=function(e){let t=e.start,i=e.cp,r=e.end,a={start:[2*(i[0]-t[0]),2*(i[1]-t[1])],end:[2*(r[0]-i[0]),2*(r[1]-i[1])]};return a.derivative=O8.derive(a),e.derivative=a,a},O4.droot=function(e){let t=e.derivative??O4.derive(e),i=t.start,r=t.end;return[i[0]!==r[0]?i[0]/(i[0]-r[0]):0,i[1]!==r[1]?i[1]/(i[1]-r[1]):0]},O4.compute=function(e,t){if(0===t)return[...e.start];if(1===t)return[...e.end];let i=1-t,r=i*i,a=i*t*2,o=t*t;return[r*e.start[0]+a*e.cp[0]+o*e.end[0],r*e.start[1]+a*e.cp[1]+o*e.end[1]]},(O5=O8||(O8={})).derive=function(e){let t=e.start,i=e.end,r=[i[0]-t[0],i[1]-t[1]];return e.derivative=r,e.derivative},O5.compute=function(e,t){if(0===t)return[...e.start];if(1===t)return[...e.end];let i=e.start,r=e.end;return[i[0]+(r[0]-i[0])*t,i[1]+(r[1]-i[1])*t]};var DU=class extends Dp{constructor(e,t,i){super(e,t,i),this.uuid=e,this.width=0,this.height=0,this.clipped=!0,this.background=new Dz(e+"-background",xs.defaultData,i),this.background.parent=this,this.updateState(t,i)}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,t,i){super.updateWorldMatrix(e,t,i),this.background?.updateWorldMatrix(e,t,i)}draw(e){if(!this.visible)return;e.save();let t=this.width,i=this.height;this.applyTransforms(e),this.background.width=t,this.background.height=i,this.background.draw(e),this.clipped&&e.clipRect(0,0,t,i,...this.cornerRadius),this.innerDrawChildren(e),e.restore()}getCenter(){return[.5*this.width,.5*this.height]}getHalfSize(){return[.5*this.width,.5*this.height]}updateCornerState(e){void 0!==e.cornerRadius&&(this.cornerRadius=e.cornerRadius)}updateSizeState(e){let t=!1;void 0!==e.width&&(this.width="number"==typeof e.width?e.width:this.width,t=!0),void 0!==e.height&&(this.height="number"==typeof e.height?e.height:this.height,t=!0),t&&this.updateWorldMatrix(!0,!1,!0)}updateState(e,t){super.updateState(e,t),this.updateSizeState(e),this.updateCornerState(e),void 0!==e.fill&&this.fill.update(e.fill),void 0!==e.stroke&&this.stroke.update(e.stroke),void 0!==e.dropShadow&&this.dropShadow.update(e.dropShadow),void 0!==e.innerShadow&&this.innerShadow.update(e.innerShadow),void 0!==e.layerBlur&&this.layerBlur.update(e.layerBlur),void 0!==e.backgroundBlur&&this.backgroundBlur.update(e.backgroundBlur),void 0!==e.clipped&&(this.clipped=e.clipped)}requestRender(){super.requestRender(),this.dispatchEvent({type:"render"})}dispose(){this.removeEventListener("render")}updateByPatchedOp(e,t,i){super.updateByPatchedOp(e,t,i),0===e.type&&(fa(e.path,["fill"])?this.fill.update(e.props):fa(e.path,["stroke"])?this.stroke.update(e.props):fa(e.path,["dropShadow"])?this.dropShadow.update(e.props):fa(e.path,["innerShadow"])?this.innerShadow.update(e.props):fa(e.path,["layerBlur"])?this.layerBlur.update(e.props):fa(e.path,["backgroundBlur"])?this.backgroundBlur.update(e.props):this.resetBBoxNeedsUpdate())}clone(e){let t=new DU(this.uuid,this.data,e);for(let i of(t.parent=void 0,this.children))t.add(i.clone(e));return t}},Dk=tA(tO(),1),DV=class extends DL{constructor(e,t,i){super(e,t,i),this.uuid=e,this.data=t,this._pathBBox=new DOMRect,this.path="",this.updateState(t,i),this.autoClose=!1,this.computeSVGBBox()}computeSVGBBox(){var e;let t=this.path;e=this.path,/NaN/.test(e)&&(console.warn("Invalid SVG path",this.uuid),t="");let i=document.createElementNS("http://www.w3.org/2000/svg","svg"),r=document.createElementNS("http://www.w3.org/2000/svg","path");document.body.appendChild(i),r.setAttribute("d",t),i.appendChild(r),this._pathBBox=r.getBBox(),i.remove()}innerDraw(e){e.path(this.path)}intersectsInLocalSpace(e,t){return e>=this._pathBBox.x&&e<=this._pathBBox.x+this._pathBBox.width&&t>=this._pathBBox.y&&t<=this._pathBBox.y+this._pathBBox.height}getCenter(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}getHalfSize(){return[(this._pathBBox.x+this._pathBBox.width)/2,(this._pathBBox.y+this._pathBBox.height)/2]}updateState(e,t){super.updateState(e,t),void 0!==e.path&&(this.path=e.path,this.computeSVGBBox())}clone(e){let t=new DV(this.uuid,this.data,e);return t.parent=void 0,t}};function Dj(e){let t=["rx","ry","xAxisRotation","largeArc","sweep","x1","y1","x2","y2","x","y"],i;return e.map(e=>{let r=[];t.forEach(t=>{if(t in e){let i=1*e[t];r.length&&i>=0&&r.push(","),r.push(i)}});let a=(i===e.code?r[0]<0?"":",":e.code)+r.join("");return i=e.code,a}).join("")}var DG=class{constructor(e,t,i){this.uuid=e,this.data=t,this.group=new Df(DG.GROUP_ID,{...xl.defaultData},i),this.createChildrenObjects(t.objects,this.group,i)}createObject(e,t,i,r,a,o){let h=function(e,t,i){switch(t.type){case"ellipse2d":return new DB(e,t,i);
6372case"rectangle2d":return new Dz(e,t,i);case"text2d":return new DF(e,t,i);case"vector2d":return new DN(e,t,i);case"path2d":return new DV(e,t,i);case"frame2d":return new DU(e,t,i);default:return new Df(e,t,i)}}(e,t,o);h&&(r.add(h),r.children.splice(a,0,r.children.pop()),h.updateWorldMatrix(),i.length>0&&(h instanceof Df||h instanceof DU)&&this.createChildrenObjects(i,h,o))}createChildrenObjects(e,t,i){let r=0;for(let a of e)this.createObject(a.id,a.data,a.children,t,r,i),r+=1}draw(e){this.group.draw(e)}updateEntityByOp(e,t,i,r){let a=this.find(e);if(a)try{a.updateByOp(t,i,{shared:r})}catch(e){console.error(e)}}updateTreeByOp(e,t){if(0===e.path.length&&7===e.type){let i=null===e.parent?this.group:this.find(e.parent);void 0!==i&&i instanceof Dp&&(this.createObject(e.id,e.data,e.children,i,e.localIndex,t),i.requestRender())}else if(0===e.path.length&&8===e.type){let t=this.find(e.id);if(void 0!==t&&void 0!==t.parent&&t.parent instanceof Dp){let e=t.parent;t.resetBBoxNeedsUpdate(),e?.remove(t),e?.requestRender()}}else if(0===e.path.length&&9===e.type){let t=this.find(e.id);if(void 0!==t){let i=t.parent,r=null===e.parent?this:this.find(e.parent);if(r instanceof Dp||r===this){r.add(t);let a=e.localIndex;r.children.splice(a,0,r.children.pop()),t.updateWorldMatrix(!0,!1,!0),i?.requestRender(),t.requestRender()}t.resetBBoxNeedsUpdate()}}}add(e){this.group.add(e)}remove(e){this.group.remove(e)}traverse(e){this.group.traverse(t=>{t!==this.group&&e(t)})}intersectsChildren(e,t,i,r=!1,a=[]){return this.group.intersectsChildren(e,t,i,r,a,!0)}intersectsChildrenReverse(e,t,i,r=!1,a=[]){return this.group.intersectsChildrenReverse(e,t,i,r,a,!0)}find(e){return this.group.find(e)}get children(){return this.group.children}project(e,t){return this.group.project(e,t)}getWithSortKey(e){let t=this.find(e);if(void 0===t)return;let i=[],r=t;for(;r!==this.group;){let e=r,t=(r=r.parent).children.indexOf(e);i.splice(0,0,t)}return{entity:t,sortKey:i}}getAllSorted(e){let t=[];for(let i of e){let e=this.getWithSortKey(i.id);void 0!==e&&t.push(e)}return t.sort((e,t)=>pd(e.sortKey,t.sortKey)),t.map(e=>e.entity)}};function DH({constraints:e,newParentWidth:t,newParentHeight:i,initialParentWidth:r,initialParentHeight:a,objectInitialWidth:o,objectInitialHeight:h,objectInitialPosition:c}){let{horizontalConstraint:d,verticalConstraint:u}=e,p=t-r,f=i-a,m=o,g=h,v=c[0],y=c[1];if(0!==d){if(1===d)v+=p;else if(3===d)v+=p/2;else if(2===d)m=Math.max(1,m+p);else if(4===d){let e=t/r;m*=e,v*=e}}if(0!==u){if(1===u)y+=f;else if(3===u)y+=f/2;else if(2===u)g=Math.max(1,g+f);else if(4===u){let e=i/a;g*=e,y*=e}}return{width:m,height:g,position:[v,y]}}DG.GROUP_ID="scene2d",tA(tO(),1);var DW=`
6373	varying vec2 vUv;
6374	void main() {
6375		vUv = uv;
6376		gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
6377	}`,Dq=`
6378	uniform sampler2D tDiffuse;
6379	varying vec2 vUv;
6380	void main() {
6381		vec4 texel = texture2D( tDiffuse, vUv );
6382		gl_FragColor = texel;
6383	}`,DX=new sA(-1,1,1,-1,0,1),DY=new class extends rU{constructor(){super(),this.setAttribute("position",new rO([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new rO([0,2,0,0,2,0],2))}},DQ=class{constructor(e){this._mesh=new r$(DY,e)}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,DX)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}},DZ=new r9({defines:{},uniforms:{tDiffuse:new lR(null)},vertexShader:DW,fragmentShader:Dq}),DK=new DQ(DZ),DJ=null,D$=null,D0=()=>(null===DJ&&(DJ=document.createElement("canvas")),DJ),D1=e=>(null===D$&&(D$=new D_(e)),D$),D2=Dh.identity(),D3=class{constructor(e,t,i,r){this.uuid=e,this.width=t,this.height=i,this.context=r,this.enabled=!0,this.isScreenSpace=!1,this.dpr=window.devicePixelRatio,this.isFrameDirty=!1,this.onRenderRequestedDownstream=()=>{this.isFrameDirty=!0,this.context.shared.requestRender()},this._innerApplySize=()=>{let e=this.width,t=this.height,i=this.dpr;this.renderer.dpr=this.isScreenSpace?i:Math.floor(2048/Math.max(e,t)),this.renderer.setSize(e,t)},this.onFrameOverrideObjectEvent=e=>{if(e.target?.uuid!==void 0){let t=this.frameRoot?.find(e.target.uuid);t&&t.dispatchEvent({...e,target:t})}},this.scene2d=new DG(tK.generateUUID(),xd.defaultData,{dpr:window.devicePixelRatio,shared:r.shared}),this.canvas=D0(),this.renderer=D1(this.canvas),this.promise=this.init(),this.renderTarget=new im(1,1,{type:1016,stencilBuffer:!1,depthBuffer:!1}),r.shared.addUIBuffer(this.uuid,this.renderTarget),this.textureHolder=r.shared.uiBuffer(this.uuid)}get canvasTexture(){return this._canvasTexture||(this._canvasTexture=new nZ(this.canvas)),this._canvasTexture}
6383async init(){this.renderer instanceof D_&&(this.renderer.wasmURL=Mv.skiaWasmUrl),await this.renderer.init()}render(e){if(this.isFrameDirty){this.isFrameDirty=!1,this._innerApplySize(),this.renderer.clear(),this.frameOverride?.draw(this.renderer),this.renderer.render(),DZ.uniforms.tDiffuse.value=this.canvasTexture,this.canvasTexture.needsUpdate=!0;let t=e.getRenderTarget();e.setRenderTarget(this.renderTarget),e.clear(),DK.render(e),e.setRenderTarget(t),this.textureHolder?.setNeedsUpdate(!0)}}updateEntity2DByOp(e,t,i,r){this.scene2d.updateEntityByOp(e,t,i,r),this.applySize()}updateTreeByOp(e,t){this.scene2d.updateTreeByOp(e,t),this.applySize()}applyOverrides(e){if(this.frameOverride&&this.frameRoot){this.frameOverride.position=[0,0],this.frameOverride.rotation=0;let t=e?.width??this.width,i=e?.height??this.height;this.frameOverride.width=t,this.frameOverride.height=i,this.frameOverride.localMatrix=D2,this.isScreenSpace&&(this.frameOverride.fill.color=gp.from0to1([0,0,0,0])),this.frameOverride.data={...this.frameOverride.data,width:t,height:i},function e({objectOverride:t,objectRoot:i,newParentWidth:r,newParentHeight:a,initialParentWidth:o,initialParentHeight:h}){if(t instanceof DU&&i instanceof DU||t instanceof Df&&i instanceof Df)for(let c=0,d=t.children.length;c<d;c++){let d=t.children[c],u=i.children[c];d&&u&&d.uuid===u.uuid&&function({objectOverride:t,objectRoot:i,newParentWidth:r,newParentHeight:a,initialParentWidth:o,initialParentHeight:h}){let[c,d]=function(e){if(D4(e))return[e.width,e.height];if(e instanceof DV){let[t,i]=e.getHalfSize();return[2*t,2*i]}if(e instanceof Df){let[t,i]=e.recursiveBBox.getHalfSize();return[2*t,2*i]}return[0,0]}(i),{width:u,height:p,position:f}=DH({constraints:t.data,newParentWidth:r,newParentHeight:a,initialParentWidth:o,initialParentHeight:h,objectInitialWidth:c,objectInitialHeight:d,objectInitialPosition:i.position});if(t.position=f,t.data={...t.data,position:f},t.states)for(let e in t.states)!function({stateId:e,objectOverride:t,objectRoot:i,newParentWidth:r,newParentHeight:a,initialParentWidth:o,initialParentHeight:h}){let c=t.states?.[e],d=i.states?.[e];if(c&&d){let{width:i,height:u,position:p}=DH({constraints:t.data,newParentWidth:r,newParentHeight:a,initialParentWidth:o,initialParentHeight:h,objectInitialWidth:xc.isResizeable(d)?d.width:0,objectInitialHeight:xc.isResizeable(d)?d.height:0,objectInitialPosition:d.position});Object.assign(t.states[e],{position:p}),xc.isResizeable(c)&&Object.assign(t.states[e],{width:i,height:u})}}({stateId:e,objectOverride:t,objectRoot:i,newParentWidth:r,newParentHeight:a,initialParentWidth:o,initialParentHeight:h});if(D4(t)||t instanceof Df)D4(t)&&(t.width=u,t.height=p,t.data={...t.data,width:u,height:p}),e({objectOverride:t,objectRoot:i,newParentWidth:u,newParentHeight:p,initialParentWidth:c,initialParentHeight:d});else if(t instanceof DV){let e=0!==c?u/c:1,r=0!==d?p/d:1;t.path=function(e,t=1,i=1){if(t<=0||i<=0)return e;if(/NaN/.test(e))return console.warn("Cannot scale invalid path",e),Dj([]);try{let r=(0,Dk.parseSVG)(e).map(e=>{let r={...e};return"x"in r&&(r.x=r.x*t),"y"in r&&(r.y=r.y*i),"x1"in r&&(r.x1=r.x1*t),"x2"in r&&(r.x2=r.x2*t),"y1"in r&&(r.y1=r.y1*i),"y2"in r&&(r.y2=r.y2*i),"rx"in r&&(r.rx=r.rx*t),"ry"in r&&(r.ry=r.ry*i),r});return Dj(r)}catch(e){return console.warn("Error parsing SVG path",e),Dj([])}}(i.path,e,r),t.data={...t.data,path:t.path}}}({objectOverride:d,objectRoot:u,newParentWidth:r,newParentHeight:a,initialParentWidth:o,initialParentHeight:h})}}({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(e,t=window.devicePixelRatio){let i=Math.max(1,e?.width??this.width),r=Math.max(1,e?.height??this.height);this.dpr=t,this.width=i,this.height=r,this._innerApplySize();let a=1;(i*t<512||r*t<512)&&(a=Math.max(512/(i*t),512/(r*t))),this.renderTarget.setSize(i*t*a,r*t*a),this._canvasTexture?.dispose(),this._canvasTexture=void 0,this.applyOverrides(e),this.frameOverride?.requestRender()}applyFrame(e){let t=this.context.scene.find2D(e);if(!(!t||!(t instanceof DU)))return this.disposeFrameOverride(),this.frameRoot=t,this.frameOverride=t.clone({dpr:this.renderer.dpr,shared:this.context.shared}),this.scene2d.add(this.frameOverride),this.applySize(),this.frame?.addEventListener("render",this.onRenderRequestedDownstream),this.frameOverride.traverse(e=>{e.addEventListener("beginState",this.onFrameOverrideObjectEvent)}),this.frameOverride.traverse(e=>{e.addEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frame?.requestRender(),t}get frame(){return this.frameOverride}get frameId(){return this.frame?.uuid}find(e){return this.scene2d.find(e)}get texture(){return this.textureHolder?.getTexture(1001)}disposeFrameOverride(){this.frameOverride?.removeEventListener("render",this.onRenderRequestedDownstream),this.frameOverride?.traverse(e=>{e.removeEventListener("beginStateChange",this.onFrameOverrideObjectEvent)}),this.frameOverride?.traverse(e=>{e.removeEventListener("completeState",this.onFrameOverrideObjectEvent)}),this.frameOverride&&this.scene2d.remove(this.frameOverride)}};function D4(e){return e instanceof Dz||e instanceof DU||e instanceof DB||e instanceof DF}var D5=class extends wu(n_){constructor(e,t,i){super(),this.data=t,this.bgColor=new xx(1,1,1,1),this.fog=null,this.backupFog=new nS(16777215,.1,2e3),this.fogUseBGColor=!1,this.isActive=!1,this.aoColor=new ia,this.penumbraSizeArrayCache=null,this.super_Entity(e,t),this.personalCamera=new Cq(mO,{...yO.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new lr(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight),t.uiScene?this.uiScene=new DG((Array.isArray(e)?e[0]:e)+"-ui",t.uiScene,{dpr:window.devicePixelRatio,shared:i.shared}):t.uiFrame&&this.createUICanvas(t.uiFrame,i)}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,t){this.uiCanvas=new D3(this.uuid+"-uiscreen",window.innerWidth,window.innerHeight,t),this.uiCanvas.isScreenSpace=!0,this.uiCanvas.promise.then(()=>{this.uiCanvas?.applyFrame(e),this.uiCanvas?.applySize()})}updateVisible(){}
6383setBackgroundColor(e){this.bgColor=e,!0===this.fogUseBGColor&&(this.backupFog.color=e)}entityChildrenCount(){return this.uiScene?this.uiScene.children.length:super.entityChildrenCount()}updateAmbientLight(e,t){void 0!==e.color&&(this.ambientLight.color=MY(e.color,t)),void 0!==e.intensity&&(this.ambientLight.intensity=e.intensity),void 0!==e.enabled&&(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(e=>{e instanceof CZ&&e.recomputeBoolean()}),this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof EH){if(Array.isArray(e.material))for(let t of e.material)t.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()}})}updateShadow(e){void 0!==e.softShadowQuality&&this.isActive&&PJ(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,t){e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive&&(this.scene.fog=this.fog),this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=MY(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){void 0!==e.aoColor&&(this.aoColor=MY(e.aoColor,t))}updateByOp(e,t,i,r){let a=this.data.uiFrame;super.updateByOp(e,t,i,r),fa(e.path,["fog"])?this.updateFog(t.fog,i.shared):fa(e.path,["ao"])?this.updateAo(t.ao,i.shared):fa(e.path,["ambient"])?this.updateAmbientLight(t.ambient,i.shared):fa(e.path,["shadow"])?this.updateShadow(t.shadow):0===e.type&&0===e.path.length&&(void 0!==e.props.uiFrame||a!==t.uiFrame)&&this.updateUIFrame(e.props.uiFrame,i)}updateUIFrame(e,t){e?(this.uiCanvas||this.createUICanvas(e,t),this.uiCanvas.enabled=!0,this.uiCanvas.applyFrame(e)):this.uiCanvas&&(this.uiCanvas.enabled=!1)}updateState(e,t){this.updateState_Entity(e,t),void 0!==e.backgroundColor&&this.setBackgroundColor(MY(e.backgroundColor,t.shared)),void 0!==e.fog&&this.updateFog(e.fog,t.shared),void 0!==e.ambient&&this.updateAmbientLight(e.ambient,t.shared),void 0!==e.ao&&this.updateAo(e.ao,t.shared),void 0!==e.shadow&&this.updateShadow(e.shadow)}createFrame(e,t){}raycast(e,t){super.raycast(e,t)}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 null===this.penumbraSizeArrayCache&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=[,,,,,].fill(.5);let e=0,t=0;this.traverseEntity(i=>{if(!i.visible)return!0;i instanceof De&&i.visible&&e<3&&(this.penumbraSizeArrayCache[e]=i.data.penumbraSize??.5,e+=1),i instanceof Ds&&i.visible&&e<2&&(this.penumbraSizeArrayCache[3+t]=i.data.penumbraSize??.5,t+=1)})}raycastWithClones(e){let t=[],i=r=>{for(let a of r.children){let r=a.cloner;_S.is(a)&&(a.visible||r?.object.data.visible)&&((CJ(a)||C0(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),OK(a,e,t,!0)),i(a))}};return i(this),t}updateEntity2DByOp(e,t,i,r){this.uiCanvas?.updateEntity2DByOp(e,t,i,r)}},D6=class extends CK(lf,P4){constructor(e,t,i){super(),this.super_Entity(e,t),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let r=this.shadow.camera;r.fov=90,r.aspect=1,r.near=100,r.far=2500;let a=new l0(new i_(new ib(-r.far+this.position.x,-r.far+this.position.y,-r.far+this.position.z),new ib(r.far+this.position.x,r.far+this.position.y,r.far+this.position.z)),new ia(16755200));a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let e in this.gizmos){let t=this.gizmos[e];if(t instanceof l0){let e=this.shadow.camera,i=new ib(-e.far+this.position.x,-e.far+this.position.y,-e.far+this.position.z),r=new ib(e.far+this.position.x,e.far+this.position.y,e.far+this.position.z);t.box.set(i,r),t.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update(
6383)}updateState(e,t){this.updateState_Light(e,t),void 0!==e.distance&&(this.distance=e.distance),void 0!==e.decay&&(this.decay=e.decay),void 0!==e.shadowRadius&&(this.shadow.radius=e.shadowRadius),void 0!==e.shadowResolution&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}},D8=class extends EZ{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(e,t){let i=this.geometry.getAttribute("position");void 0!==i?_7(i,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:i.count,e,t):super.updateEntityBoxSize(e,t)}},D9=class extends EZ{constructor(e,t,i){super(e,t,i),this._shapeId=null,this._context=i}updateState(e,t){super.updateState(e,t),this.updateShape(),this.refreshAttachedCloners(t)}updateShape(){let e,t={...this.data.geometry.extrusion.shape};for(let e in t)"string"==typeof t[e]&&(t[e]=this._context.shared.getVariable(t[e],[this.uuid,"geometry","extrusion","shape",e]));if("Custom"===t.type){let i=t.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let t=this._context.scene.find(i);t?.data&&(t.attachedPaths.add(this),e=t.geometry.userData?.shape),e||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(t.type){case"Rectangle":i=S1;break;case"Ellipse":i=Sv;break;case"Polygon":i=SZ;break;case"Star":i=S6;break;default:throw Error(`Unknown shape type: ${t.type}`)}e=i.create({parameters:t}).userData.shape}let i=this.geometry;e&&i.inputs&&(i.inputs.shapeData=e,i.build())}detachShape(){null!==this._shapeId&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,t){return super.updateTransformState(e,t)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let i=this.geometry.getAttribute("position");void 0!==i?_7(i,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:i.count,e,t):super.updateEntityBoxSize(e,t)}},D7=class extends Cg{constructor(e,t,i){super(e,t,i),this.data=t}},Oe=class extends CU(nf,C5){constructor(e,t,i){super(),"Instance"===t.type&&"string"==typeof e&&(t=this.transformAssignData(t,i)),this.super_Entity(e,t),this.objectHelper.update()}get isComponentRoot(){return"Component"===this.data.type&&"string"==typeof this.identity}get isInstanceRoot(){return"Instance"===this.data.type&&"string"==typeof this.identity}transformAssignData(e,t){let i=y2.getComponentData({scene:t.scene.data,shared:t.shared.data},e.component);if(!i)return{...vf.defaultData,...e,...u8(vf.defaultData,yL.rootOverrideProps)};{let t,r;for(let a of yL.rootOverrideProps)void 0===e[a]?(void 0===t&&(t={...e}),t[a]=i.data[a]):(void 0===r&&(r={}),r[a]=e[a],void 0===t&&(t={...e}),t[a]=pW.apply(i.data[a],e[a]));return this.overrideData=r,t}}updateByOp(e,t,i,r){let a;if(this.isInstanceRoot&&!r){if(t=this.transformAssignData(t,i),0===e.type&&0===e.path.length&&this.component)for(let t of yL.rootOverrideProps)t in e.props&&void 0===e.props[t]&&(void 0===a&&(a={...e,props:{...e.props}}),a.props[t]=this.component.data[t]);else if(0===e.type&&e.path.length>0&&yL.rootOverrideProps.includes(e.path[0])){let i=e.path[0];void 0===a&&(a={...e,path:[],props:{[i]:t[i]}})}}super.updateByOp(a??e,t,i,r)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(void 0===this.component){let i=e.scene.find(t.component)??null,r=!1;if(i!==this.oldComponent){if(this.oldComponent){let t=0;for(let i of this.children)if(_S.is(i))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(i),Ot(i),t+=1;else break;this.children.splice(0,t)}r=!0}if(i){let a={};for(let o of(function e(t,i,r,a,o,h,c,d,u){if(c>50)return!1;if(a.component!==o){if(a.component){let e=a.component.instances.indexOf(a);e>=0&&a.component.instances.splice(e,1)}o.instances.find(e=>e===a)||o.instances.push(a),a.component=o}o instanceof Oe&&o.isInstanceRoot&&o.expandInstanceChildren(t);let p=0;for(let f of o.children)if(_S.is(f)){let o=[...i,..."string"==typeof f.identity?[f.identity]:f.identity],m=yR.resolve(r,o,1);null==m||m instanceof pq||(Object.setPrototypeOf(m,pq.prototype),console.error("wrong prototype"));let g=null,v;if(!d){let e=a.children[p];if(null!==(g=_S.is(e)?e:null)){let e=Oi(g,f,m,o);v=e>=1?g.stateSelection:void 0,2!==e&&(g=null)}if(null===g&&null!==(g=t.scene.findInstance(o)??null)){let e=Oi(g,f,m,o);if(v=e>=1?g.stateSelection:void 0,2!==e)g=null;else{let e=g.parent.children.indexOf(g);g.parent.children.splice(e,1),a.children.splice(p,0,g),g.parent===a?e<=p&&console.error("not possible"):(g.parent=a,g.matrixWorldNeedsUpdate=!0,g.resetBBoxNeedsUpdate(),g.updateVisible(),t.pendingDeletes.delete(g))}}}if(null===g){let e=m?pW.apply(f.data,m):f.data;gR.is(e.type)&&(e={...e,type:"Empty"}),(g=wi.createEntity(o,e,t)).overrideData=m,a.add(g),a.children.splice(a.children.length-1,1),a.children.splice(p,0,g),g.updateState(g.data,t),v&&g.changeSelectedState(v,t),t.scene.registerInstanceAndSetUuid(g)}g.isBone&&(u[g.identity[g.identity.length-1]]=g.uuid),p+=1,e(t,i,r,g,f,h,c+1,d,u)}if(!d){let e=p;for(;;){let e=a.children[p];if(_S.is(e))t.pendingDeletes.add(e);else break;p+=1}a.children.splice(e,p-e)}return!0}(e,[this.uuid],t.overrides,this,i,i,0,r,a),this.children))if(_S.is(o)){let t=
6383o.data;"Empty"===t.type&&t.animations&&o.traverseEntity(t=>{let i=t.dataPatched;if(t instanceof EZ&&i.bones&&i.boneInverses){let i=t.dataPatched;if(i.bones&&i.boneInverses){let r=new nO(i.bones.map(t=>e.scene.find(a[t])),i.boneInverses.map(e=>new iZ().fromArray(e)));t.bind(r,t.bindMatrix)}}else t.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Ot(e){if(e.component){let t=e.component.instances.indexOf(e);for(let i of(t>=0&&e.component.instances.splice(t,1),e.children))_S.is(i)&&Ot(i)}}function Oi(e,t,i,r){return e.component===t&&u0(e.identity,r)?e.overrideData===i?2:1:0}var Or=class extends CU(nC,C5){constructor(e,t){super(),this.super_Entity(e,t),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(e,t){this.updateState_Entity(e,t)}},Os=class extends EZ{constructor(e,t,i){super(e,t,i),this.onBeforeRender=e=>{this.uiCanvas.render(e)},this.uiCanvas=new D3(e+"-canvas",t.geometry.width,t.geometry.height,i),this.uiCanvas.promise.then(()=>{this.applyFrame(this.dataPatched.geometry.frame,i.shared)})}updateByPatchedOpGeometry(e,t,i){super.updateByPatchedOpGeometry(e,t,i),0===e.type&&(void 0!==e.props.frame&&this.applyFrame(e.props.frame,i.shared),(void 0!==e.props.width||void 0!==e.props.height)&&this.applySize(e.props,i.shared))}applySize(e,t){let i=e?.width??this.dataPatched.geometry.width,r=e?.height??this.dataPatched.geometry.height;this.uiCanvas.applySize({width:i,height:r}),this.applyGeometryParametersFromFrame(t)}applyFrame(e,t){this.uiCanvas.applyFrame(e),this.applyGeometryParametersFromFrame(t),this.applyMaterialParametersFromFrame({shared:t})}applyGeometryParametersFromFrame(e){let t=this.frame;t&&(Object.assign(this.data,{geometry:Object.assign(this.data.geometry,{cornerRadius:t.cornerRadius,cornerType:0})}),Object.assign(this.dataPatched,{geometry:Object.assign(this.dataPatched.geometry,{cornerRadius:t.cornerRadius,cornerType:0})}),this.localGeometry?.dispose(),this.localGeometry=_O(this.dataPatched.geometry,e,this.data.flatShading,this))}applyMaterialParametersFromFrame(e){let t=this.frame;if(t){let i=t.data.backgroundBlur;Object.assign(this.data.material.layers[0].data.texture,{image:this.uiCanvas.uuid}),Object.assign(this.data.material.layers[1].data,{roughness:i.radius,alpha:i.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:i.radius,alpha:i.enabled?1:0}),this.material.reset?.(this.dataPatched.material,e,!0)}}updateEntity2DByOp(e,t,i,r){this.uiCanvas.updateEntity2DByOp(e,t,i,r),e===this.frameId&&0===t.type&&(void 0!==t.props.cornerRadius?this.applyGeometryParametersFromFrame(r):fa(t.path,["backgroundBlur"])&&this.applyMaterialParametersFromFrame({shared:r}))}get frame(){return this.uiCanvas.frame}get frameId(){return this.frame?.uuid}removeInteractionGeometry(e){super.removeInteractionGeometry(e),this.applySize({},e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.applySize({width:e.width,height:e.height},t);let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=_O(i,t,this.data.flatShading,this)}},Oa=class{constructor(e,t,i){this.variables=[],this.currentTextureIndex=0;let r=1015,a=new n_,o=new r7;o.position.z=1;let h={passThruTexture:{value:null}},c=p(`uniform sampler2D passThruTexture;
6384
6385void main() {
6386
6387	vec2 uv = gl_FragCoord.xy / resolution.xy;
6388
6389	gl_FragColor = texture2D( passThruTexture, uv );
6390
6391}
6392`,h),d=new r$(new sp(2,2),c);function u(i){i.defines.resolution="vec2( "+e.toFixed(1)+", "+t.toFixed(1)+" )"}function p(e,t){let i=new r9({uniforms:t=t||{},vertexShader:`void main()	{
6393
6394	gl_Position = vec4( position, 1.0 );
6395
6396}
6397`,fragmentShader:e});return u(i),i}a.add(d),this.setDataType=function(e){return r=e,this},this.addVariable=function(e,t,i){let r={name:e,initialValueTexture:i,material:this.createShaderMaterial(t),dependencies:null,renderTargets:[],wrapS:null,wrapT:null,minFilter:1003,magFilter:1003};return this.variables.push(r),r},this.setVariableDependencies=function(e,t){e.dependencies=t},this.init=function(){if(!1===i.capabilities.isWebGL2&&!1===i.extensions.has("OES_texture_float"))return"No OES_texture_float support for float textures.";if(0===i.capabilities.maxVertexTextures)return"No support for vertex shader textures.";for(let i=0;i<this.variables.length;i++){let r=this.variables[i];r.renderTargets[0]=this.createRenderTarget(e,t,r.wrapS,r.wrapT,r.minFilter,r.magFilter),r.renderTargets[1]=this.createRenderTarget(e,t,r.wrapS,r.wrapT,r.minFilter,r.magFilter),this.renderTexture(r.initialValueTexture,r.renderTargets[0]),this.renderTexture(r.initialValueTexture,r.renderTargets[1]);let a=r.material,o=a.uniforms;if(null!==r.dependencies)for(let e=0;e<r.dependencies.length;e++){let t=r.dependencies[e];if(t.name!==r.name){let e=!1;for(let i=0;i<this.variables.length;i++)if(t.name===this.variables[i].name){e=!0;break}if(!e)return"Variable dependency not found. Variable="+r.name+", dependency="+t.name}
6397o[t.name]={value:null},a.fragmentShader=`
6398uniform sampler2D `+t.name+`;
6399`+a.fragmentShader}}return this.currentTextureIndex=0,null},this.compute=function(){let e=this.currentTextureIndex,t=0===this.currentTextureIndex?1:0;for(let i=0,r=this.variables.length;i<r;i++){let r=this.variables[i];if(null!==r.dependencies){let t=r.material.uniforms;for(let i=0,a=r.dependencies.length;i<a;i++){let a=r.dependencies[i];t[a.name].value=a.renderTargets[e].texture}}this.doRenderTarget(r.material,r.renderTargets[t])}this.currentTextureIndex=t},this.getCurrentRenderTarget=function(e){return e.renderTargets[this.currentTextureIndex]},this.getAlternateRenderTarget=function(e){return e.renderTargets[0===this.currentTextureIndex?1:0]},this.dispose=function(){d.geometry.dispose(),d.material.dispose();let e=this.variables;for(let t=0;t<e.length;t++){let i=e[t];i.initialValueTexture&&i.initialValueTexture.dispose();let r=i.renderTargets;for(let e=0;e<r.length;e++)r[e].dispose()}},this.addResolutionDefine=u,this.createShaderMaterial=p,this.createRenderTarget=function(i,a,o,h,c,d){return o=o||1001,h=h||1001,c=c||1003,d=d||1003,new im(i=i||e,a=a||t,{wrapS:o,wrapT:h,minFilter:c,magFilter:d,format:1023,type:r,depthBuffer:!1})},this.createTexture=function(){let i=new nT(new Float32Array(e*t*4),e,t,1023,1015);return i.needsUpdate=!0,i},this.renderTexture=function(e,t){h.passThruTexture.value=e,this.doRenderTarget(c,t),h.passThruTexture.value=null},this.doRenderTarget=function(e,t){let r=i.getRenderTarget(),h=i.xr.enabled,u=i.shadowMap.autoUpdate,p=i.outputEncoding,f=i.toneMapping;i.xr.enabled=!1,i.shadowMap.autoUpdate=!1,i.outputEncoding=3e3,i.toneMapping=0,d.material=e,i.setRenderTarget(t),i.render(a,o),d.material=c,i.xr.enabled=h,i.shadowMap.autoUpdate=u,i.outputEncoding=p,i.toneMapping=f,i.setRenderTarget(r)}}},On=new rS,Oo=new ib,Ol=class{constructor(e){let t=e.geometry;if(!t.isBufferGeometry||3!==t.attributes.position.itemSize)throw Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");t.index&&(console.warn("THREE.MeshSurfaceSampler: Converting geometry to non-indexed BufferGeometry."),t=t.toNonIndexed()),this.geometry=t,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.colorAttribute=this.geometry.getAttribute("color"),this.weightAttribute=null,this.distribution=null}setWeightAttribute(e){return this.weightAttribute=e?this.geometry.getAttribute(e):null,this}build(){let e=this.positionAttribute,t=this.weightAttribute,i=new Float32Array(e.count/3);for(let r=0;r<e.count;r+=3){let a=1;t&&(a=t.getX(r)+t.getX(r+1)+t.getX(r+2)),On.a.fromBufferAttribute(e,r),On.b.fromBufferAttribute(e,r+1),On.c.fromBufferAttribute(e,r+2),a*=On.getArea(),i[r/3]=a}this.distribution=new Float32Array(e.count/3);let r=0;for(let e=0;e<i.length;e++)r+=i[e],this.distribution[e]=r;return this}setRandomGenerator(e){return this.randomFunction=e,this}sample(e,t,i){let r=this.distribution[this.distribution.length-1],a=this.binarySearch(this.randomFunction()*r);return this.sampleFace(a,e,t,i)}binarySearch(e){let t=this.distribution,i=0,r=t.length-1,a=-1;for(;i<=r;){let o=Math.ceil((i+r)/2);if(0===o||t[o-1]<=e&&t[o]>e){a=o;break}e<t[o]?r=o-1:i=o+1}return a}sampleFace(e,t,i,r){let a=this.randomFunction(),o=this.randomFunction();return a+o>1&&(a=1-a,o=1-o),On.a.fromBufferAttribute(this.positionAttribute,3*e),On.b.fromBufferAttribute(this.positionAttribute,3*e+1),On.c.fromBufferAttribute(this.positionAttribute,3*e+2),t.set(0,0,0).addScaledVector(On.a,a).addScaledVector(On.b,o).addScaledVector(On.c,1-(a+o)),void 0!==i&&On.getNormal(i),void 0!==r&&void 0!==this.colorAttribute&&(On.a.fromBufferAttribute(this.colorAttribute,3*e),On.b.fromBufferAttribute(this.colorAttribute,3*e+1),On.c.fromBufferAttribute(this.colorAttribute,3*e+2),Oo.set(0,0,0).addScaledVector(On.a,a).addScaledVector(On.b,o).addScaledVector(On.c,1-(a+o)),r.r=Oo.x,r.g=Oo.y,r.b=Oo.z),this}};function Oh(e,t){let i=new Float32Array(4*t*t);for(let r=0;r<t*t;r++)i[4*r]=e[3*r],i[4*r+1]=e[3*r+1],i[4*r+2]=e[3*r+2],i[4*r+3]=0;let r=new nT(i,t,t,1023,1015);return r.needsUpdate=!0,r}var Oc=`
6400// uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
6401// uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
6402// uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
6403uniform sampler2D uOriginalPosition;
6404uniform float uTime;
6405uniform float uSpeed;     // update speed of the particles
6406uniform vec3 uWorldOffset;    
6407uniform vec4 uWorldQuaternion;
6408uniform float uMaxLifeTime;
6409uniform vec3 uEmitterSize;
6410uniform float uFPSRatio;     // 1  for 60 FPS
6411
6412float random (vec2 st) {
6413    return fract(sin(dot(st.xy,
6414        vec2(12.9898,78.233)))*
6415        43758.5453123);
6416}
6417vec3 applyQuaternionToVector( vec4 q, vec3 v ){
6418    return v + 2.0 * cross( q.xyz, cross( q.xyz, v ) + q.w * v );
6419}
6420
6421vec3 applyForce(vec3 force, float mass) {
6422    vec3 acceleration = force / mass;
6423    
6424    return acceleration;
6425  }
6426  
6427
6428void main() {
6429    vec2 vUv = gl_FragCoord.xy / resolution.xy;
6430    vec3 position = texture2D( uCurrentPosition, vUv ).xyz;
6431    float currentLife = texture2D( uCurrentPosition, vUv ).w;   // from 1 to 0
6432    float isSpawning = texture2D( uCurrentEmissionRate, vUv ).r;        // 1. = spawning, 0. = not spawning
6433    float isActive = texture2D( uCurrentEmissionRate, vUv ).g;          // 1. = active, 0. = not active
6434    float timeStart = texture2D( uCurrentEmissionRate, vUv ).b;         // timeStart in seconds when the particle was emitted
6435    vec3 originalPosition = ((texture2D( uOriginalPosition, vUv ).xyz) * uEmitterSize);
6436    vec3 velocity = texture2D( uCurrentVelocity, vUv ).xyz;
6437    float collisionFlag = texture2D( uCurrentVelocity, vUv ).w;             // 1. = collided, 0. = not collided
6438    float lifeTime = uMaxLifeTime;
6439
6440    // Calculate the position adjustment based on collision
6441    //     if (collisionFlag > .5) {  
6442    float isColliding = step(0.5, collisionFlag); // 1.0 if collisionFlag > 0.5, otherwise 0.0
6443    float bounceOffset = 3.0 * isColliding; // Becomes 3.0 if colliding, 0.0 otherwise
6444    vec3 collisionAdjustedVelocity = velocity * (1.0 + bounceOffset);
6445
6446    // Update position based on collision or normal movement
6447    vec3 fpsVelocity = velocity * min(uFPSRatio, 5.0);
6448    position += mix(fpsVelocity, collisionAdjustedVelocity, isColliding);
6449
6450    // EMISSION RATE - BIRTH
6451    // if (isSpawning == 1.0) {
6452    // Better Approach to avoid If statement
6453    vec3 newPosition = applyQuaternionToVector(uWorldQuaternion, originalPosition) + uWorldOffset;
6454    originalPosition = mix(originalPosition, newPosition, isSpawning);
6455    position = mix(position, originalPosition, isSpawning);;
6456    timeStart = mix(timeStart, uTime, isSpawning);
6457
6458    // Calculate timeLeft for life normalization
6459    float timeLeft = max(lifeTime - (uTime - timeStart), 0.0);
6460    float life_Normalize = timeLeft / lifeTime;
6461
6462    // Use isActive to blend between the calculated color and black
6463    vec4 activeColor = vec4(position, life_Normalize);
6464    // if (isActive == 1.0) {
6465    gl_FragColor = mix(vec4(0.0), activeColor, isActive);
6466
6467}
6468`,Od=`
6469  #ifdef USE_COLLIDER
6470    float restitution = max(uBounce * 2., .01); // Energy Loss
6471    // SPHERE COLLIDER
6472    // **************************************************************
6473    #ifdef USE_SPHERE_COLLIDER       
6474      // Convert collider size to radii (assuming uColliderSize is the diameter in each axis)
6475      vec3 radii = uColliderSize;
6476      // Adjust position relative to collider
6477      vec3 relPos = position - uColliderPos;
6478      // Apply rotation of the collider to the relative position
6479      relPos = applyQuaternionToVector(uColliderQuaternionInvert, relPos);            
6480      // Scale relative position by radii (for ellipsoid collision detection)
6481      vec3 scaledPos = relPos / radii;
6482      // Calculate ellipsoidal distance
6483      float dist = length(scaledPos); // Distance in terms of ellipsoid
6484      
6485      // Check for collision
6486      if (dist <= 1. + particleSize / length(radii) && collisionFlag == 0.0) {
6487          // Compute the normal at the collision point, accounting for particle size
6488        vec3 adjustedPos = scaledPos * (1.0 + particleSize / length(radii));          
6489        // Compute the normal at the collision point
6490        vec3 normal = ellipsoidNormal(adjustedPos, radii);
6491        // Rotate the normal back to world space
6492        normal = applyQuaternionToVector(uColliderQuaternion, normal);
6493        // Reflect the velocity vector off the normal
6494        velocity = reflect(velocity, normal) * restitution;
6495
6496        collisionFlag = 1.0;
6497      } else {
6498        collisionFlag = 0.0;
6499      }
6500    #endif
6501
6502    // BOX COLLIDER or PLANE COLLIDER 
6503    // **************************************************************
6504    #ifdef USE_BOX_COLLIDER
6505      // Box dimensions and repulsion variables
6506      vec3 boxHalfSize = uColliderSize / 2.0;
6507      // Convert world position to box's local space
6508      vec3 localPos = applyQuaternionToVector(uColliderQuaternionInvert, position - uColliderPos);      
6509      // Collision detection
6510      vec3 localDistance = abs(localPos) - boxHalfSize;
6511      float distToSurface = max(localDistance.x, max(localDistance.y, localDistance.z));    
6512
6513      // Collision Detected
6514      if (distToSurface <= particleSize * 0.5 && collisionFlag == 0.0) {      
6515        // Find the nearest face normal for bounce direction
6516        vec3 normal;
6517        if (localDistance.x > localDistance.y && localDistance.x > localDistance.z) {
6518            normal = vec3(sign(localPos.x), 0.0, 0.0);
6519        } else if (localDistance.y > localDistance.z) {
6520            normal = vec3(0.0, sign(localPos.y), 0.0);
6521        } else {
6522            normal = vec3(0.0, 0.0, sign(localPos.z));
6523        }            
6524        // Rotate normal back to world space
6525        normal = applyQuaternionToVector(uColliderQuaternion, normal);      
6526        // Reflect velocity and apply repulsion force
6527        velocity = reflect(velocity, normal) * restitution;
6528        
6529        collisionFlag = 1.0;
6530      } else {
6531        collisionFlag = 0.0;
6532      }
6533    #endif      
6534  #endif      
6535  // END COLLIDER    
6536`,Ou=`
6537  #ifdef USE_ATTRACTOR
6538
6539      #ifdef USE_SPHERE_COLLIDER      
6540        // Convert collider size to radii (assuming uColliderSize is the diameter in each axis)
6541        vec3 radii = uColliderSize;
6542        // Adjust position relative to collider
6543        vec3 relPos = position - uColliderPos;
6544        // Apply rotation of the collider to the relative position
6545        relPos = applyQuaternionToVector(uColliderQuaternionInvert, relPos);            
6546        // Scale relative position by radii (for ellipsoid collision detection)
6547        vec3 scaledPos = relPos / radii;
6548        // Calculate ellipsoidal distance
6549        float distToSurface = length(scaledPos); // Distance in terms of ellipsoid
6550        float insideCheck = 1.0;
6551
6552      #endif
6553
6554
6555      #ifdef USE_BOX_COLLIDER
6556        // Box dimensions
6557        vec3 boxHalfSize = uColliderSize / 2.0;
6558        // Convert world position to box's local space
6559        vec3 localPos = applyQuaternionToVector(uColliderQuaternionInvert, position - uColliderPos);      
6560        vec3 localDistance = abs(localPos) - boxHalfSize;
6561        float distToSurface = max(localDistance.x, max(localDistance.y, localDistance.z));
6562        float insideCheck = particleSize;
6563      #endif      
6564  
6565      // Apply vortex force inside the Helper
6566      #ifdef USE_FORCE_LOCAL_SPACE
6567        if (distToSurface <= insideCheck ) {    
6568            // Define parameters for the attractor field
6569            #ifdef USE_SPHERE_COLLIDER      
6570              float attractorStrength = (1.0 - distToSurface ) * uForceIntensity; // Adjust as needed
6571            #endif
6572
6573            #ifdef USE_BOX_COLLIDER
6574              float attractorStrength = max((1.0 - insideCheck / distToSurface), 0.) * uForceIntensity; // Adjust as needed
6575              #endif
6576
6577            float attractorDamping = uForceDamping;  // Adjust as needed (higher values will attenuate velocity more)
6578          
6579            // Use the same radii calculation code as for the collider
6580            vec3 attractorRadii = uColliderSize;
6581            // Adjust position relative to attractor center
6582            vec3 relPos = position - uColliderPos;
6583            // Apply rotation of the collider to the relative position
6584            relPos = applyQuaternionToVector(uColliderQuaternionInvert, relPos);            
6585            // Scale relative position by radii (for ellipsoid attraction)
6586            vec3 scaledPos = relPos / attractorRadii;
6587
6588            // Calculate ellipsoidal distance as attractor radius
6589            float attractorRadius = length(scaledPos);
6590            // Calculate the distance from the attractor center
6591            vec3 relativePosition = position - uColliderPos;
6592            // Calculate the force vector towards the attractor center
6593            vec3 attractorForce = normalize(relativePosition) * attractorStrength;
6594            // Apply the attractor force to the particle
6595            velocity -= attractorForce;
6596            // Attenuate the particle's velocity
6597            velocity *= attractorDamping;
6598        }
6599      #else 
6600            // Calculate the distance from the attractor center
6601            vec3 relativePosition = position - uColliderPos;
6602            // Calculate the force vector towards the attractor center
6603            vec3 attractorForce = normalize(relativePosition) * uForceIntensity;
6604            // Apply the attractor force to the particle
6605            velocity -= attractorForce;
6606            // Attenuate the particle's velocity
6607            velocity *= uForceDamping;
6608      #endif    
6609  #endif      
6610`,Op=`
6611  #ifdef USE_VORTEX
6612    // Box dimensions
6613    vec3 boxHalfSize = uColliderSize / 2.0;
6614    // Convert world position to box's local space
6615    vec3 localPos = applyQuaternionToVector(uColliderQuaternionInvert, position - uColliderPos);      
6616    vec3 localDistance = abs(localPos) - boxHalfSize;
6617    float distToSurface = max(localDistance.x, max(localDistance.y, localDistance.z));
6618
6619    // Apply vortex force inside the box
6620    if (distToSurface <= particleSize) {
6621      float vortexStrength = uForceIntensity;
6622      vec3 localTopCenter = vec3(0.0, 0., 0.0);
6623
6624      // Transform the local top center to the world space
6625      vec3 vortexCenter = uColliderPos + applyQuaternionToVector(uColliderQuaternion, localTopCenter);
6626      // Calculate the vector from particle to vortex center
6627      vec3 vortexVector = vortexCenter - position;
6628
6629      // Calculate the rotation axis from the inverse of the collider's quaternion and the fixed up vector
6630      // Note: important to add a tiny z component to the up vector to avoid instability
6631      vec3 upVector = vec3(0.0, 1.0, 0.01);
6632      vec3 rotationAxis = cross(upVector, applyQuaternionToVector(uColliderQuaternion, vortexVector));
6633      rotationAxis = normalize(rotationAxis);
6634
6635      // Add rotational component to velocity
6636      float rotationSpeed = length(vortexVector * vortexStrength * 3.0) ; 
6637
6638      vec3 rotationVelocity = rotationAxis * rotationSpeed;
6639      // velocity += rotationVelocity * 0.005 ;
6640      velocity = rotationVelocity * 0.005 ;
6641
6642      // Calculate vortex force
6643      // vec3 vortexForce = normalize(vortexVector) * uSpeed * .1 ;
6644      // Apply the vortex force to the particle
6645      vec3 originDirection = applyQuaternionToVector(uWorldQuaternion, directions);
6646      velocity += applyForce( originDirection * uSpeed * (1. - uForceDamping) , mass * .5);
6647    }
6648  #endif      
6649`,Of=`
6650// uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
6651// uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
6652// uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
6653uniform sampler2D uOriginalPosition;
6654uniform sampler2D uDirections;     
6655uniform vec3 uDirectionsAxis;
6656uniform vec4 uWorldQuaternion;
6657uniform vec3 uGravity;        
6658uniform float uNoiseStrength;     // Variation of the noise
6659uniform float uNoiseScale;        // Scale of the noise
6660uniform float uNoiseSeed;         // Seed of the noise
6661uniform float particleSize;
6662uniform float uSpeed;     // update speed of the particles
6663uniform float uRandomMassFactor;
6664
6665// COLLIDER
6666uniform vec3 uColliderPos;                // Collider Position
6667uniform vec3 uColliderSize;               // Collider Dimension
6668uniform vec4 uColliderQuaternion;         // Collider Rotation
6669uniform vec4 uColliderQuaternionInvert;   // Collider Rotation
6670uniform float uBounce;                    // Bounce factor
6671uniform float uForceDamping;
6672uniform float uForceIntensity;
6673
6674
6675
6676
6677    vec3 mod289(vec3 x) {
6678      return x - floor(x * (1.0 / 289.0)) * 289.0;
6679    }
6680    
6681    vec4 mod289(vec4 x) {
6682    return x - floor(x * (1.0 / 289.0)) * 289.0;
6683    }
6684    
6685    vec4 permute(vec4 x) {
6686        return mod289(((x*34.0)+1.0)*x);
6687    }
6688    
6689    vec4 taylorInvSqrt(vec4 r)
6690    {
6691    return 1.79284291400159 - 0.85373472095314 * r;
6692    }
6693    
6694    vec3 fade(vec3 t) {
6695  return t*t*t*(t*(t*6.0-15.0)+10.0);
6696}
6697
6698    float snoise(vec3 v)
6699    {
6700    const vec2  C = vec2(1.0/6.0, 1.0/3.0) ;
6701    const vec4  D = vec4(0.0, 0.5, 1.0, 2.0);
6702    vec3 i  = floor(v + dot(v, C.yyy) );
6703    vec3 x0 =   v - i + dot(i, C.xxx) ;
6704    vec3 g = step(x0.yzx, x0.xyz);
6705    vec3 l = 1.0 - g;
6706    vec3 i1 = min( g.xyz, l.zxy );
6707    vec3 i2 = max( g.xyz, l.zxy );
6708    vec3 x1 = x0 - i1 + C.xxx;
6709    vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y
6710    vec3 x3 = x0 - D.yyy;      // -1.0+3.0*C.x = -0.5 = -D.y
6711    
6712    // Permutations
6713    i = mod289(i);
6714    vec4 p = permute( permute( permute(
6715                i.z + vec4(0.0, i1.z, i2.z, 1.0 ))
6716              + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))
6717              + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));
6718    
6719    // Gradients: 7x7 points over a square, mapped onto an octahedron.
6720    // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)
6721    float n_ = 0.142857142857; // 1.0/7.0
6722    vec3  ns = n_ * D.wyz - D.xzx;
6723    
6724    vec4 j = p - 49.0 * floor(p * ns.z * ns.z);  //  mod(p,7*7)
6725    
6726    vec4 x_ = floor(j * ns.z);
6727    vec4 y_ = floor(j - 7.0 * x_ );    // mod(j,N)
6728    
6729    vec4 x = x_ *ns.x + ns.yyyy;
6730    vec4 y = y_ *ns.x + ns.yyyy;
6731    vec4 h = 1.0 - abs(x) - abs(y);
6732    
6733    vec4 b0 = vec4( x.xy, y.xy );
6734    vec4 b1 = vec4( x.zw, y.zw );
6735    
6736    vec4 s0 = floor(b0)*2.0 + 1.0;
6737    vec4 s1 = floor(b1)*2.0 + 1.0;
6738    vec4 sh = -step(h, vec4(0.0));
6739    
6740    vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;
6741    vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;
6742    
6743    vec3 p0 = vec3(a0.xy,h.x);
6744    vec3 p1 = vec3(a0.zw,h.y);
6745    vec3 p2 = vec3(a1.xy,h.z);
6746    vec3 p3 = vec3(a1.zw,h.w);
6747    
6748    //Normalise gradients
6749    vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));
6750    p0 *= norm.x;
6751    p1 *= norm.y;
6752    p2 *= norm.z;
6753    p3 *= norm.w;
6754    
6755    // Mix final noise value
6756    vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);
6757    m = m * m;
6758    return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
6759                                  dot(p2,x2), dot(p3,x3) ) );
6760    }
6761    
6762    vec3 snoiseVec3( vec3 x ){
6763    
6764      float s  = snoise(vec3( x ));
6765      float s1 = snoise(vec3( x.y - 19.1 , x.z + 33.4 , x.x + 47.2 ));
6766      float s2 = snoise(vec3( x.z + 74.2 , x.x - 124.5 , x.y + 99.4 ));
6767      vec3 c = vec3( s , s1 , s2 );
6768      return c;
6769    
6770    }
6771    
6772      
6773    vec3 curlNoise( vec3 p, float seed){
6774      p += seed;
6775      const float e = .1;
6776      vec3 dx = vec3( e   , 0.0 , 0.0 );
6777      vec3 dy = vec3( 0.0 , e   , 0.0 );
6778      vec3 dz = vec3( 0.0 , 0.0 , e   );
6779    
6780      vec3 p_x0 = snoiseVec3( p - dx );
6781      vec3 p_x1 = snoiseVec3( p + dx );
6782      vec3 p_y0 = snoiseVec3( p - dy );
6783      vec3 p_y1 = snoiseVec3( p + dy );
6784      vec3 p_z0 = snoiseVec3( p - dz );
6785      vec3 p_z1 = snoiseVec3( p + dz );
6786    
6787      float x = p_y1.z - p_y0.z - p_z1.y + p_z0.y;
6788      float y = p_z1.x - p_z0.x - p_x1.z + p_x0.z;
6789      float z = p_x1.y - p_x0.y - p_y1.x + p_y0.x;
6790    
6791      const float divisor = 1.0 / ( 2.0 * e );
6792      return normalize( vec3( x , y , z ) * divisor );
6793    
6794    }
6795
6796
6797// Classic Perlin noise
6798float cnoise(vec3 P)
6799{
6800  vec3 Pi0 = floor(P); // Integer part for indexing
6801  vec3 Pi1 = Pi0 + vec3(1.0); // Integer part + 1
6802  Pi0 = mod289(Pi0);
6803  Pi1 = mod289(Pi1);
6804  vec3 Pf0 = fract(P); // Fractional part for interpolation
6805  vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0
6806  vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);
6807  vec4 iy = vec4(Pi0.yy, Pi1.yy);
6808  vec4 iz0 = Pi0.zzzz;
6809  vec4 iz1 = Pi1.zzzz;
6810
6811  vec4 ixy = permute(permute(ix) + iy);
6812  vec4 ixy0 = permute(ixy + iz0);
6813  vec4 ixy1 = permute(ixy + iz1);
6814
6815  vec4 gx0 = ixy0 * (1.0 / 7.0);
6816  vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;
6817  gx0 = fract(gx0);
6818  vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);
6819  vec4 sz0 = step(gz0, vec4(0.0));
6820  gx0 -= sz0 * (step(0.0, gx0) - 0.5);
6821  gy0 -= sz0 * (step(0.0, gy0) - 0.5);
6822
6823  vec4 gx1 = ixy1 * (1.0 / 7.0);
6824  vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;
6825  gx1 = fract(gx1);
6826  vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);
6827  vec4 sz1 = step(gz1, vec4(0.0));
6828  gx1 -= sz1 * (step(0.0, gx1) - 0.5);
6829  gy1 -= sz1 * (step(0.0, gy1) - 0.5);
6830
6831  vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);
6832  vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);
6833  vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);
6834  vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);
6835  vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);
6836  vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);
6837  vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);
6838  vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);
6839
6840  vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));
6841  g000 *= norm0.x;
6842  g010 *= norm0.y;
6843  g100 *= norm0.z;
6844  g110 *= norm0.w;
6845  vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));
6846  g001 *= norm1.x;
6847  g011 *= norm1.y;
6848  g101 *= norm1.z;
6849  g111 *= norm1.w;
6850
6851  float n000 = dot(g000, Pf0);
6852  float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));
6853  float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));
6854  float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));
6855  float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));
6856  float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));
6857  float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));
6858  float n111 = dot(g111, Pf1);
6859
6860  vec3 fade_xyz = fade(Pf0);
6861  vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);
6862  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
6863  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x); 
6864  return 2.2 * n_xyz;
6865}
6866
6867
6868vec3 fbm_vec3(vec3 p, float frequency, float offset)
6869{
6870  return vec3(
6871    cnoise((p+vec3(offset))*frequency),
6872    cnoise((p+vec3(offset+20.0))*frequency),
6873    cnoise((p+vec3(offset-30.0))*frequency)
6874  );
6875}
6876
6877
6878float rand(vec2 co){
6879    return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);
6880}
6881vec3 applyQuaternionToVector( vec4 q, vec3 v ){
6882    return v + 2.0 * cross( q.xyz, cross( q.xyz, v ) + q.w * v );
6883 } 
6884vec3 applyForce(vec3 force, float mass) {
6885  vec3 acceleration = force / mass;
6886  
6887  return acceleration;
6888}
6889
6890vec4 conjugate(vec4 q) {
6891  return vec4(q.w, -q.x, -q.y, -q.z);
6892}
6893
6894// Function to compute the normal of the ellipsoid at a given point
6895vec3 ellipsoidNormal(vec3 p, vec3 radii) {
6896  return normalize(p / (radii * radii));
6897}
6898
6899float friction = .3;
6900
6901void main() {
6902    vec2 vUv = gl_FragCoord.xy / resolution.xy;
6903    vec3 position = texture2D( uCurrentPosition, vUv ).xyz;
6904    vec3 originalPosition = texture2D( uOriginalPosition, vUv ).xyz;
6905    float timeLeft = texture2D( uCurrentPosition, vUv ).w;
6906    vec3 directions = texture2D( uDirections, vUv ).xyz;    
6907    vec3 velocity = texture2D( uCurrentVelocity, vUv ).xyz;
6908    float mass = rand(originalPosition.xy) * 0.5 + 0.5;
6909    float isSpawning = texture2D( uCurrentEmissionRate, vUv ).x;        // 1. = spawning, 0. = not spawning
6910    float isActive = texture2D( uCurrentEmissionRate, vUv ).y;          // 1. = active, 0. = not active
6911    float collisionFlag =texture2D( uCurrentVelocity, vUv ).w;          // Indicate collision
6912
6913    // Randomness Mass
6914    mass = (1.0 - (uRandomMassFactor * mass));
6915    
6916    if (isActive == 1.0) {
6917      // **************************************************************
6918      // FORCES NOISES
6919      // **************************************************************
6920      #ifdef USE_CURL_NOISE
6921        if (uNoiseScale > 0.0 ) {
6922          velocity = curlNoise(position * uNoiseScale * .002, uNoiseSeed) * ( uNoiseStrength + 1.0) * .05 * uSpeed;
6923        }
6924        // Variation of the noise Over Time
6925        if (uNoiseStrength > 0.0 && uNoiseScale == 0.0 ) {
6926          velocity += curlNoise( position, uNoiseSeed)  * uNoiseStrength * 0.05 * uSpeed;
6927        }
6928      #endif
6929      // **************************************************************
6930      #ifdef USE_SIMPLEX_NOISE
6931        if (uNoiseScale > 0.0 ) {
6932          velocity = vec3(snoise(position * uNoiseScale * .001) * ( uNoiseStrength + 1.0) * .1);
6933          velocity *= uSpeed;
6934        }
6935        // Variation of the noise Over Time
6936        if (uNoiseStrength > 0.0 && uNoiseScale == 0.0) {
6937          velocity += vec3(snoise(position * uNoiseStrength * .001) * .05 * uSpeed);
6938        }
6939      #endif
6940      // ************************************************************** 
6941      #ifdef USE_FBM_NOISE
6942        if (uNoiseScale > 0.0 ) {
6943          velocity = fbm_vec3(position * uNoiseScale * .001, ( uNoiseStrength + 1.0), uNoiseSeed);
6944          velocity *= uSpeed;
6945        }
6946        // Variation of the noise Over Time
6947        if (uNoiseStrength > 0.0 && uNoiseScale == 0.0 ) {      
6948          velocity += fbm_vec3(position * uNoiseStrength * .001, ( uNoiseStrength + 1.0), uNoiseSeed) * .1 * uSpeed;
6949        }
6950      #endif
6951
6952      // COLLIDER
6953      ${Od}
6954      // ATTRACTION
6955      ${Ou}  
6956      // VORTEX
6957      ${Op}
6958    } 
6959    // End isActive
6960
6961    // SPAWN BIRTH 
6962    // **************************************************************
6963    // if (isSpawning == 1.)
6964    #ifdef USE_NORMALS
6965      velocity = mix(velocity, applyQuaternionToVector(uWorldQuaternion, directions) * uSpeed, isSpawning);
6966    #else
6967      velocity = mix(velocity, applyQuaternionToVector(uWorldQuaternion, uDirectionsAxis) * uSpeed, isSpawning);    
6968    #endif
6969    
6970    // if (collisionFlag == 0.0)
6971    velocity += applyForce(uGravity, mass * .5) * (1.0 - collisionFlag);
6972
6973    gl_FragColor = vec4(velocity, collisionFlag);
6974}
6975`,Om=`
6976
6977  // Linear Fade In
6978  float linearFadeIn(float t) {
6979    return t;
6980  }
6981
6982
6983  // linear fade out
6984  float linearFadeOut(float t) {
6985    return 1.0 - t;
6986  }
6987  
6988  float linearInOut(float t) {
6989    return t < 0.5 ? t :  (1.0 - t);  
6990  }
6991
6992    // lerp
6993    float lerp(float a, float b, float t) {
6994      return a + (b - a) * t;
6995    }
6996
6997  // Ease In Out Quart
6998  float exponentialInOut(float t) {
6999    return t < 0.4 ? lerp(0.0, 1.0, t / 0.4) :
7000    t > 0.6 ? lerp(1.0, 0.0, (t - 0.6) / 0.4) :
7001    1.0;
7002   }
7003
7004  // constant
7005  float constant(float t) {
7006    return 1.0;
7007  } 
7008`,Og=`
7009
7010float rand(vec3 co){
7011  return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
7012}
7013
7014vec3 applyQuaternionToVector( vec4 q, vec3 v ){
7015  return v + 2.0 * cross( q.xyz, cross( q.xyz, v ) + q.w * v );
7016}
7017
7018vec3 applyForce(vec3 force, float mass) {
7019  vec3 acceleration = force / mass;
7020    
7021  return acceleration;
7022}
7023`,Ov=`
7024vec3 rgb2xyz (in vec3 rgb) {
7025    float r = rgb.r;
7026	float g = rgb.g;
7027	float b = rgb.b;
7028
7029	r = r > 0.04045 ? pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);
7030	g = g > 0.04045 ? pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);
7031	b = b > 0.04045 ? pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);
7032
7033	float x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);
7034	float y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);
7035	float z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);
7036    
7037    vec3 xyz = vec3(
7038        (r * 0.4124) + (g * 0.3576) + (b * 0.1805) * 100.0,
7039        (r * 0.2126) + (g * 0.7152) + (b * 0.0722) * 100.0,
7040        (r * 0.0193) + (g * 0.1192) + (b * 0.9505) * 100.0
7041    );
7042    return(xyz);
7043}
7044
7045vec3 xyz2lab (in vec3 xyz) {
7046	float x = xyz.x / 95.047;
7047	float y = xyz.y / 100.0;
7048	float z = xyz.z / 108.883;
7049
7050	x = x > 0.008856 ? pow(x, 1.0 / 3.0) : (7.787 * x) + (16.0 / 116.0);
7051	y = y > 0.008856 ? pow(y, 1.0 / 3.0) : (7.787 * y) + (16.0 / 116.0);
7052	z = z > 0.008856 ? pow(z, 1.0 / 3.0) : (7.787 * z) + (16.0 / 116.0);
7053
7054    vec3 lab = vec3((116.0 * y) - 16.0, 500.0 * (x - y), 200.0 * (y - z));
7055    return(lab);
7056}
7057
7058vec3 rgb2lab(in vec3 rgb) {
7059    vec3 xyz = rgb2xyz(rgb);
7060    vec3 lab = xyz2lab(xyz);
7061    return(lab);
7062}
7063
7064vec3 xyz2rgb (in vec3 xyz) {
7065	float x = xyz.x / 100.0;
7066	float y = xyz.y / 100.0;
7067	float z = xyz.z / 100.0;
7068	
7069    
7070	float r = (x *  3.2406) + (y * -1.5372) + (z * -0.4986);
7071	float g = (x * -0.9689) + (y *  1.8758) + (z *  0.0415);
7072	float b = (x *  0.0557) + (y * -0.2040) + (z *  1.0570);
7073
7074	r = r > 0.0031308 ? ((1.055 * pow(r, 1.0 / 2.4)) - 0.055) : r * 12.92;
7075	g = g > 0.0031308 ? ((1.055 * pow(g, 1.0 / 2.4)) - 0.055) : g * 12.92;
7076	b = b > 0.0031308 ? ((1.055 * pow(b, 1.0 / 2.4)) - 0.055) : b * 12.92;
7077
7078	r = min(max(0.0, r), 1.0);
7079	g = min(max(0.0, g), 1.0);
7080	b = min(max(0.0, b), 1.0);
7081
7082	return(vec3(r, g, b));
7083}
7084
7085vec3 lab2xyz (in vec3 lab) {
7086    float l = lab.x;
7087	float a = lab.y;
7088	float b = lab.z;
7089
7090  	float y = (l + 16.0) / 116.0;
7091	float x = a / 500.0 + y;
7092	float z = y - b / 200.0;
7093
7094	float y2 = pow(y, 3.0);
7095	float x2 = pow(x, 3.0);
7096	float z2 = pow(z, 3.0);
7097
7098  	y = y2 > 0.008856 ? y2 : (y - 16.0 / 116.0) / 7.787;
7099	x = x2 > 0.008856 ? x2 : (x - 16.0 / 116.0) / 7.787;
7100	z = z2 > 0.008856 ? z2 : (z - 16.0 / 116.0) / 7.787;
7101
7102	x *= 95.047;
7103	y *= 100.0;
7104	z *= 108.883;
7105
7106	return(vec3(x, y, z));
7107}
7108vec3 lab2rgb (in vec3 lab) {
7109    vec3 xyz = lab2xyz(lab);
7110    vec3 rgb = xyz2rgb(xyz);
7111    return(rgb);
7112}
7113
7114`,Oy=`
7115  uniform sampler2D uPosition;
7116  uniform float uSize;
7117  uniform float uSizeEnd;
7118  uniform vec3 uWorldOffset;
7119  uniform vec4 uWorldQuaternion;
7120  // Billboard Behavior - Currently at Zero, but we can change that
7121  uniform float uRotation;
7122  uniform float uRotationEnd;
7123  uniform vec2 center;
7124
7125  // Randomness
7126  uniform float uRandScaleFactor;
7127  uniform float uRandRotationFactor;
7128
7129  attribute vec2 ref;
7130
7131  varying float v_LifeLeft;    // normalized lifetime 1 to 0
7132  varying vec2 vUv;
7133  varying vec2 vRef;
7134
7135  ${Og}
7136  ${Om}
7137`,Ox=({easeSize:e="linearFadeOut"})=>`
7138  vUv = uv;  
7139  vRef = ref;
7140  // Normalized LifeTime 1 to 0
7141  float lifeLeft = texture2D(uPosition, ref).w;
7142  v_LifeLeft = lifeLeft;
7143  // Position From DataTexture Simulation
7144  vec3 pos = texture2D(uPosition, ref).rgb - uWorldOffset;
7145  // Apply World Quaternion
7146  pos = applyQuaternionToVector(uWorldQuaternion, pos);  
7147            
7148  #ifdef  USE_SIZE_END
7149    // Scaled Over Time
7150    float t = 1. - lifeLeft;
7151    float currentSize = mix(uSize, uSizeEnd, t); // Linearly interpolate between uSize and uSizeEnd
7152    vec3 scaledPosition = position * vec3(currentSize);
7153  #else
7154    // Change Size Behavior over LifeTime
7155    float easeSize = ${e}(1. - lifeLeft);
7156    // Scaled Over Time
7157    vec3 scaledPosition = position * vec3(uSize * easeSize);
7158  #endif
7159
7160  // Billboard Behavior
7161  vec2 scale;
7162  scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );
7163  scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );    
7164  // Randomness 
7165  float randRef = rand(ref);
7166  scale *= (1.0 - (uRandScaleFactor * randRef));
7167  // Rotation
7168  float randRotation =  2.0 * PI * ( uRandRotationFactor * randRef);
7169  float originalRotation = (1.0 - uRotation) * 2.0 * PI;
7170  float originalRotationEnd = (1.0 - uRotationEnd) * 2.0 * PI;
7171  // OverTime
7172  float finalRotation = mix(originalRotation + randRotation, originalRotationEnd + randRotation, lifeLeft);
7173
7174  vec2 alignedPosition = ( scaledPosition.xy - ( center - vec2( 0.5 ) ) ) * scale;
7175  vec2 rotatedPosition;
7176  rotatedPosition.x = cos( finalRotation ) * alignedPosition.x - sin( finalRotation ) * alignedPosition.y;
7177  rotatedPosition.y = sin( finalRotation ) * alignedPosition.x + cos( finalRotation ) * alignedPosition.y;
7178  
7179  mat4 instanceMatrix = mat4(
7180    vec4(1.0, 0.0, 0.0, 0.0),
7181    vec4(0.0, 1.0, 0.0, 0.0),
7182    vec4(0.0, 0.0, 1.0, 0.0),
7183    vec4(pos.x, pos.y, pos.z, 1.0)
7184  );  
7185
7186  mvPosition = modelViewMatrix * instanceMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );
7187  mvPosition.xy += rotatedPosition;
7188  gl_Position = projectionMatrix  * mvPosition;   
7189`,Ob=`
7190  uniform vec4 uColor;                // start color
7191  uniform vec4 uColor2;               // end color
7192  uniform sampler2D uTexture;         // texture
7193  varying float v_LifeLeft;   // normalized lifetime 1 to 0
7194  varying vec2 vUv;
7195  varying vec2 vRef;
7196
7197  float random(vec2 co) {
7198    return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
7199  }
7200  `+Om+`  
7201  ${Ov}
7202
7203`,Ow=({easeOpacity:e="linearFadeOut"})=>`  
7204  // if Particle is dead, hide it
7205  if (v_LifeLeft <= 0.005 ) {
7206    discard;
7207  }
7208
7209  #ifdef USE_RANDOM_COLORING
7210    float randVal = random(vRef); // Generate a random value based on the reference
7211    vec4 color = mix(uColor, uColor2, randVal); // Interpolate between the two colors
7212  #else
7213    vec4 color = mix(uColor, uColor2, 1. - v_LifeLeft);
7214  #endif
7215
7216  // Opacity over Life Time
7217  float finalAlpha = ${e}(1. - v_LifeLeft);  
7218  vec4 textureColor = texture2D(uTexture, vUv).rgba; 
7219  finalColor = textureColor.rgb * color.rgb;
7220  finalAlpha = color.a * textureColor.a * finalAlpha;
7221  
7222  gl_FragColor = vec4(finalColor, finalAlpha);     
7223
7224`,OS=class extends r9{constructor(e,t){super(),this.needsJitter=!0,this.type="ParticleMaterial",this.easeOpacity="linearFadeIn",this.easeSize="linearFadeIn",this.useSizeEnd=!1,this.isColoringRandom=!1,this.init(e,t),this.context=t}reset(){}init(e,t){this.transparent=!0,this.depthTest=!0,this.depthWrite=!1,this.easeOpacity=e.ease,this.easeSize=e.easeSize,this.layers=[],As.startContext(As.globalContext),this.lightLayer=new Ee(0,"",{...gY.defaultData("light","phong"),visible:!1},new My,{},t.shared),As.endContext(As.globalContext),this.build()}updateState(e){void 0!==e.coloring&&(this.isColoringRandom="random"===e.coloring),void 0!==e.color&&(e.color instanceof Array?this.uniforms.uColor.value=e.color:this.uniforms.uColor.value=this.context.shared.color(e.color)),void 0!==e.color2&&(e.color2 instanceof Array?this.uniforms.uColor2.value=e.color2:this.uniforms.uColor2.value=this.context.shared.color(e.color2)),void 0!==e.size&&(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),void 0!==e.ease&&(this.easeOpacity=e.ease,this.build()),void 0!==e.easeSize&&(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 AH;return e.needsJitter=this.needsJitter,e.addFragmentParsCode(AN),e.buildShader("vertex",this.fragment),e.buildShader("fragment",this.fragment),e.addFragmentFinalCode(AU),this.isColoringRandom&&e.define("USE_RANDOM_COLORING"),this.useSizeEnd&&e.define("USE_SIZE_END"),e.addVertexParsCode(Oy),e.addFragmentParsCode(Ob),e.addVertexFinalCode(Ox({easeSize:this.easeSize})),e.addFragmentFinalCode(Ow({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}
7224nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}},O_=class{constructor(e,t,i,r){this.type="SphereEmitterShape",this.targetMesh=void 0,this.size=e,this.type=i,this.textureSize=Math.max(Math.ceil(Math.sqrt(t)),1),this.targetMesh=r?.geometry.type==="BufferGeometry"||r?.type==="Mesh"&&r&&r.geometry.hasAttribute("position")&&r.geometry.hasAttribute("normal")?r:this.getMesh(i,1);let{positions:a,dataTexture:o,dataTextureNormals:h}=this.createPositions(this.textureSize,this.targetMesh??this.getMesh(i,1));this.positionsTexture=o,this.positionsAttribute=a,this.directionsTexture=h}createPositions(e,t){let{positions:i,normals:r}=function(e,t){let i=new r$(e.geometry,e.material),r=[],a=[],o=new ib,h=new ib;null!==i.geometry.index&&(i.geometry=i.geometry.toNonIndexed());let c=new Ol(i).build();for(let e=0;e<t;e++)c.sample(o,h),r.push(o.x,o.y,o.z),a.push(h.x,h.y,h.z);return{positions:new Float32Array(r),normals:new Float32Array(a)}}(t,e*e);return{dataTexture:Oh(i,e),positions:i,dataTextureNormals:Oh(r,e)}}getMesh(e,t){let i=null;switch(e){case"SphereEmitterShape":i=new oB(.5*t,32,32);break;case"TorusEmitterShape":i=new oz(.5*t,.3,15,40);break;case"ConeEmitterShape":i=new od(t,t,15);break;case"BoxEmitterShape":i=new r1(t,t,t);break;case"PlaneEmitterShape":(i=new sp(t,t)).rotateX(-Math.PI/2);break;default:i=new oB(t,32,32)}return new r$(i,new rM({color:16711680}))}applyToShader(e,t){this.size=new ib().fromArray(t.size),e.uEmitterSize.value=this.size}dispose(){this.positionsTexture.dispose(),this.directionsTexture.dispose(),this.positionsAttribute=new Float32Array}};function OA(e){let t={...e},i=gU.defaultData;t.forceFieldObjectId&&(t.colliderEntityId=t.forceFieldObjectId);let r={...i.shape,...t.shape},a={...i.renderMaterial,...t.renderMaterial};return{...i,...t,shape:r,renderMaterial:a}}var OM=`
7225// uniform sampler2D uCurrentPosition; // Pass in the variable from GPGPU
7226// uniform sampler2D uCurrentVelocity; // Pass in the variable from GPGPU
7227// uniform sampler2D uCurrentEmissionRate; // Pass in the variable from GPGPU
7228
7229uniform sampler2D uIndex; // Texture with corresponding index
7230uniform float uLastIndexEmitted; // Last emitted index
7231uniform float uParticlesToEmit; // Number of particles to emit on that frame
7232uniform float uTime;
7233
7234void main() {
7235    vec2 vUv = gl_FragCoord.xy / resolution.xy;
7236    float particleIndex = texture(uIndex, vUv).x;
7237    float timeLeft = texture2D( uCurrentPosition, vUv ).w;
7238    float isActive = texture2D( uCurrentEmissionRate, vUv ).g;    // 1. = active, 0. = not active
7239    float timeStart = texture2D( uCurrentEmissionRate, vUv ).b;
7240
7241
7242    // ********** Detect Colision to Create a flag and use it in position **********
7243    // We are doing this here, so
7244
7245    // ********** Emit Particles **********
7246    // X = isSpawning 0.0 or 1.0
7247    // Y = isActive 0.0 or 1.0
7248    // Check if the vertex index is between the first value and the last value
7249    // if (particleIndex >= uLastIndexEmitted && particleIndex < uLastIndexEmitted + uParticlesToEmit) {
7250    //     // Emit a particle by writing 1 to the red channel of the color output
7251    //     // r: 1. == emit the particle
7252    //     // g: 1. == particle is now active
7253    //     timeStart = uTime;
7254    //     gl_FragColor = vec4(1.0, 1.0, timeStart, 1.0);
7255    // } else {
7256    //     // The Particle is either already emitted or not in the range of the particles to emit
7257    //     // Do not emit a particle by writing 0 to the red channel of the color output        
7258    //     gl_FragColor = vec4(0.0, isActive, timeStart, 1.0);
7259    // }
7260    // Determine if the particle is within the emission range
7261    float emitLowerBound = step(uLastIndexEmitted, particleIndex);
7262    float emitUpperBound = step(particleIndex, uLastIndexEmitted + uParticlesToEmit - 1.0);
7263    float emitParticle = emitLowerBound * emitUpperBound; // 1.0 if in range, 0.0 otherwise
7264
7265    // Set timeStart and color
7266    timeStart = mix(timeStart, uTime, emitParticle);
7267    gl_FragColor = vec4(emitParticle, mix(isActive, 1.0, emitParticle), timeStart, 1.0);
7268
7269
7270}
7271`,OE=class extends rd{constructor(e,t){super(),this.type="ParticleEmitter",this.debugMode=!1,this.worldS
vendor: 5,671 bytes, line 7271
7271pace=!0,this.rootObject=null,this.gpuCompute=null,this.positionSimRT=null,this.velocitySimRT=null,this.emissionRateSimRT=null,this.emitterShape=void 0,this.isEmitting=!1,this.hasBeenReset=!1,this.emittedParticlesAmount=0,this.lastEmitTime=0,this.globalTime=0,this.targetFPS=60,this.previousRatio=1,this.lerpFactor=.4,this.particlesAmount=0,this.noiseStrength=0,this.noiseScale=0,this.isBillboardBased=!0,this.simFeaturesDefinition={USE_COLLIDER:!1,USE_ATTRACTOR:!1,USE_VORTEX:!1,USE_SPHERE_COLLIDER:!1,USE_BOX_COLLIDER:!1,USE_FORCE_LOCAL_SPACE:!1,USE_NORMALS:!1,USE_CURL_NOISE:!0,USE_SIMPLEX_NOISE:!1,USE_FBM_NOISE:!1},this.textureLoader=new lt,this.currentWorldPosition=new ib,this.systemQuaternion=new ix,this.worldGravity=new ib(0,0,0),this.directionAxis=new ib(0,0,0),this.colliderV3=new ib(0,0,0),this.colliderQuaternion=new ix(0,0,0,1),this.matrixAutoUpdate=!0,this.renderer=e,this.system=t,this.shared=t.context.shared;let i=t.data;this.material=new OS(i.renderMaterial,t.context),this.material.uniforms={uSize:{value:0},uSizeEnd:{value:0},uColor:{value:i.renderMaterial.color},uColor2:{value:i.renderMaterial.color2},uPosition:{value:new ib(0,0,0)},uEmissionData:{value:new ib(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new ib(0,0,0)},uWorldQuaternion:{value:new ip(0,0,0,1)},uRandScaleFactor:{value:i.randomScale??0},uRandRotationFactor:{value:i.randomRotation??0},uRotation:{value:i.renderMaterial.spriteRotation[0]??0},uRotationEnd:{value:i.renderMaterial.spriteRotation[1]??0}},this.setTexture(this.material.uniforms,i.renderMaterial.texture),this.init(i)}setTexture(e,t){let i=t.data;if("string"==typeof t){let i=new iu(this.shared.image(t).img);i.needsUpdate=!0,e.uTexture.value=i;return}if("string"!=typeof i){let t=new Image;t.onload=()=>{let i=new iu(t);i.needsUpdate=!0,e.uTexture.value=i};let r=new Blob([i],{type:"image/*"}),a=URL.createObjectURL(r);t.src=a}}updateGeometryAttributes(e,t){let i=function(e){let t=new Float32Array(e*e*2);for(let i=0;i<e;i++)for(let r=0;r<e;r++){let a=i*e+r;t[2*a+0]=i/(e-1),t[2*a+1]=r/(e-1)}return t}(t);this.emitterShape?.positionsAttribute&&e.geometry.setAttribute("ref",new nI(i,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,t){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 i=this.targetFPS/(1e3/t),r=this.previousRatio+(i-this.previousRatio)*this.lerpFactor;this.positionSimRT.material.uniforms.uFPSRatio.value=r,this.previousRatio=r;let a=this.isEmitting?this.GoEmitSomeParticles(e,this.system.data.birthRatePerSec):0;this.emissionRateSimRT.material.uniforms.uLastIndexEmitted.value=this.emittedParticlesAmount,this.emissionRateSimRT.material.uniforms.uParticlesToEmit.value=a,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],t=this.simFeaturesDefinition.USE_COLLIDER||this.simFeaturesDefinition.USE_ATTRACTOR||this.simFeaturesDefinition.USE_VORTEX;if(e.destroyedInAction&&t&&this.init(OA({...this.system.data,colliderEntityId:null})),!e||e.destroyedInAction)return;e.getWorldPosition(this.colliderV3),0===this.colliderV3.y&&(this.colliderV3.y=1e-4),this.velocitySimRT.material.uniforms.uColliderPos.value.copy(this.colliderV3);let i=e.data.size;this.colliderV3.fromArray(i),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,t){if(!this.velocitySimRT||!this.positionSimRT)return;"size"===t[2]&&this.material.updateState({size:[e,this.material.uniforms.uSizeEnd.value]}),"sizeEnd"===t[2]&&this.material.updateState({size:[this.material.uniforms.uSize.value,e]});let i=(e,t)=>{let i=[...this.system.data.shape.size];i[e]=t,this.updateParticleState({shape:{...this.system.data.shape,size:i}})};"shape_size_0"===t[2]&&i(0,e),"shape_size_1"===t[2]&&i(1,e),"shape_size_2"===t[2]&&i(2,e),"speed"===t[2]&&(this.velocitySimRT.material.uniforms.uSpeed.value=e/10),"gravity"===t[2]&&this.worldGravity.set(0,e/100,0),"noiseStrength"===t[2]&&(this.noiseStrength=e,this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),"n
7271oiseScale"===t[2]&&(this.noiseScale=e,this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),"direction_x"===t[2]&&(this.directionAxis=this.getDirectionAxis([Number(e),this.system.data.direction[1],this.system.data.direction[2]])),"direction_y"===t[2]&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],Number(e),this.system.data.direction[2]])),"direction_z"===t[2]&&(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(OA(this.system.data)),void 0!==e.life&&(this.positionSimRT.material.uniforms.uMaxLifeTime.value=e.life),void 0!==e.speed&&(this.velocitySimRT.material.uniforms.uSpeed.value=Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/10),void 0!==e.collisionBounce&&(this.velocitySimRT.material.uniforms.uBounce.value=e.collisionBounce),void 0!==e.noiseStrength&&(this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),void 0!==e.noiseScale&&(this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"])),this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),void 0!==e.noiseSeed&&(this.velocitySimRT.material.uniforms.uNoiseSeed.value=e.noiseSeed),void 0!==e.randomMass&&(this.velocitySimRT.material.uniforms.uRandomMassFactor.value=e.randomMass),e.renderMaterial?.size!==void 0){let t=this.shared.getVariable(e.renderMaterial.size[0],[this.uuid,"particles","size"]);this.velocitySimRT.material.uniforms.particleSize.value=Number(t)}if(e.renderMaterial?.spriteRotation!==void 0&&(this.material.uniforms.uRotation.value=e.renderMaterial.spriteRotation[0],this.material.uniforms.uRotationEnd.value=e.renderMaterial.spriteRotation[1]),void 0!==e.shape){let t=e.shape.size??this.system.data.shape.size,i=[Number(this.shared.getVariable(t[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(t[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(t[2],[this.uuid,"particles","shape_size_2"]))],r={...OA(this.system.data).shape,size:i};this.emitterShape?.applyToShader(this.positionSimRT.material.uniforms,r)}if(void 0!==e.gravity&&(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}),void 0!==e.direction){let t=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(t),this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis}void 0!==e.randomRotation&&(this.material.uniforms.uRandRotationFactor.value=e.randomRotation),void 0!==e.randomScale&&(this.material.uniforms.uRandScaleFactor.value=e.randomScale)}}updateForceFieldParameters(e){this.velocitySimRT&&(void 0!==e.forceIntensity&&(this.velocitySimRT.material.uniforms.uForceIntensity.value=e.forceIntensity),void 0===e.forceDambing||(this.velocitySimRT.material.uniforms.uForceDamping.value=e.forceDambing))}getDirectionAxis(e){let t=[Number(e[0])*tK.DEG2RAD,Number(e[1])*tK.DEG2RAD,Number(e[2])*tK.DEG2RAD],i=new i6(t[0],t[1],t[2],"XYZ");return this.directionAxis.set(0,1,0).applyEuler(i).normalize(),this.velocitySimRT&&(this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis),this.directionAxis}shouldReInitGPUCompute(e){let{birthRatePerSec:t,rootObjectType:i,colliderEntityId:r,shape:a,emitTimeDuration:o,emitTimeCycle:h,life:c,directionMode:d,noiseType:u}=e;return void 0!==t||void 0!==i||r||null===r||void 0!==h||void 0!==a||void 0!==c||void 0!==o||void 0!==d||void 0!==u}init(e){this.dispose(),this.particlesAmount=this.getMaxParticlesAmount({birthRatePerSecond:e.b
7271irthRatePerSec,particleMaxLifeTime:e.life,loopDuration:"infinity"===e.emitTimeCycle?0:e.emitTimeDuration}),this.particlesAmount>1e5&&(console.warn("The maximum number of particles is limited to 100000."),this.particlesAmount=1e5),this.emitterShape=this.createShape(e.shape,this.particlesAmount);let t=setInterval(()=>{if(this.emitterShape){if(isNaN(this.emitterShape.positionsTexture.source.data.data[0])){this.init(e);return}clearInterval(t)}},100);if(!this.emitterShape)return;let i=new Oa(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),r=this.updateSimulationDefinition(e),a=i.addVariable("uCurrentPosition",r+Oc,this.emitterShape.positionsTexture),o=i.addVariable("uCurrentVelocity",r+Of,this.emitterShape.directionsTexture),h=i.addVariable("uCurrentEmissionRate",OM,function(e){let t=new Float32Array(4*e*e);for(let i=0;i<e*e;i++)t[4*i]=0,t[4*i+1]=0,t[4*i+2]=0,t[4*i+3]=0;let i=new nT(t,e,e,1023,1015);return i.needsUpdate=!0,i}(this.emitterShape.textureSize));i.setVariableDependencies(a,[a,o,h]),i.setVariableDependencies(o,[a,o,h]),i.setVariableDependencies(h,[a,o,h]);let c=function({size:e}){let t=new Float32Array(4*e*e);for(let i=0;i<e*e;i++)t[4*i]=i,t[4*i+1]=0,t[4*i+2]=0,t[4*i+3]=0;let i=new nT(t,e,e,1023,1015);return i.needsUpdate=!0,i}({size:this.emitterShape.textureSize}),d={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new ib(0,0,0)},uWorldQuaternion:{value:new ip(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:e.life},uEmitterSize:{value:new ib(Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"])))},particleSize:{value:0}};a.material.uniforms=d;let u=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(u),this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"]));let p=e.colliderEntityId&&this.system.getColliderData(e.colliderEntityId),f={uOriginalPosition:{value:this.emitterShape.positionsTexture},uDirections:{value:this.emitterShape.directionsTexture},uDirectionsAxis:{value:this.directionAxis},uWorldQuaternion:{value:new ip(0,0,0,1)},uColliderPos:{value:new ib(0,0,0)},uColliderSize:{value:new ib(0,0,0)},uForceIntensity:{value:p?p.forceIntensity:0},uForceDamping:{value:p?p.forceDambing:0},uColliderQuaternion:{value:new ip(0,0,0,1)},uColliderQuaternionInvert:{value:new ip(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"]))/10}};o.material.uniforms=f,h.material.uniforms={uIndex:{value:c},uTime:{value:0},uLastIndexEmitted:{value:0},uParticlesToEmit:{value:0}};let m=[Number(this.shared.getVariable(e.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.shape.size[2],[this.uuid,"particles","shape_size_2"]))],g={...OA(this.system.data).shape,size:m};this.emitterShape.applyToShader(a.material.uniforms,g),i.init(),this.gpuCompute=i,this.positionSimRT=a,this.velocitySimRT=o,this.emissionRateSimRT=h,this.rootObject=this.createPrimaryEmitter(this.emitterShape.textureSize),this.add(this.rootObject),this.material.needsUpdate=!0}getDirectionFromVariable(e){return[Number(this.shared.getVariable(e[0],[this.uuid,"particles","direction_x"])),Number(this.shared.getVariable(e[1],[this.uuid,"particles","direction_y"])),Number(this.shared.getVariable(e[2],[this.uuid,"particles","direction_z"]))]}updateSimulationDefinition(e){if(this.simFeaturesDefinition.USE_COLLIDER=!1,this.simFeaturesDefinition.USE_ATTRACTOR=!1,this.simFeaturesDefinition.USE_VORTEX=!1,this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!1,this.simFeaturesDefinition.USE_BOX_COLLIDER=!1,this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!1,this.simFeaturesDefinition.USE_NORMALS=!1,this.simFeaturesDefinition.USE_CURL_NOISE=!1,this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!1,this.simFeaturesDefinition.USE_FBM_NOISE=!1,e.colliderEntityId&&this.system.colliderEntities.length>0){let t=this.system.getColliderData(e.colliderEntityId);switch(t?.forceType){case"attractor":this.simFeaturesDefinition.USE_ATTRACTOR=!0;break;case"collider":this.simFeaturesDefinition.USE_COLLIDER=!0;break;case"vortex":this.simFeaturesDefinition.USE_VORTEX=!0}let i=t?.colliderType;"sphere"===i&&(this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!0),"box"===i&&(this.simFeaturesDefinition.USE_BOX_COLLIDER=!0),t?.forceRange==="helper"&&(this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!0)}"normals"===e.directionMode&&(this.simFeaturesDefinition.USE_NORMALS=!0),"curl"===e.noiseType&&(this.simFeaturesDefinition.USE_CURL_NOISE=!0),"simplex"===e.n
7271oiseType&&(this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!0),"fbm"===e.noiseType&&(this.simFeaturesDefinition.USE_FBM_NOISE=!0);let t="";for(let[e,i]of Object.entries(this.simFeaturesDefinition))i&&(t+=`#define ${e}
7272`);return t}createShape(e,t){this.emitterShape&&this.emitterShape.dispose();let i=new ib(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("MeshEmitterShape"!==e.type)return new O_(i,t,e.type);{let r=null;return this.system.context.scene.traverseEntity(t=>{t.uuid===e.fromMeshId&&(r=t)}),r?new O_(i,t,e.type,r):new O_(i,t,"SphereEmitterShape")}}createPrimaryEmitter(e){let t;return t=new nN(new sp(1,1,1),this.material,e*e),this.updateGeometryAttributes(t,e),this.material.needsUpdate=!0,t.onBeforeRender=()=>{this.applyWorldSpace()},t}getMaxParticlesAmount({birthRatePerSecond:e,particleMaxLifeTime:t,loopDuration:i=0}){return Math.ceil(e*(t+i))}dispose(){this.gpuCompute&&(this.rootObject?.parent?.remove(this.rootObject),this.gpuCompute.dispose(),this.material.nodeMaterialDispose(),this.emitterShape?.dispose())}GoEmitSomeParticles(e,t){let i=e-this.lastEmitTime,r=1/t;if(i>=r){let t=Math.max(1,Math.floor(i/r));return this.lastEmitTime=e,this.emittedParticlesAmount+t>this.particlesAmount&&(this.emittedParticlesAmount=0),this.emittedParticlesAmount+=t,t}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(OA(this.system.data))}startEmitting(e){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=e}stopEmitting(){this.isEmitting=!1}},OC=class extends Ai{constructor(e,t,i){super(e,t),this.type="ParticleSystem",this.geometry=new rU,this.actualTime=0,this.currentLoopTime=0,this.started=!1,this.stopped=!1,this.timeoutId=void 0,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=i,this.data={...t,...OA(t)},this.geometry.setAttribute("position",new rO([],3)),this.material=new rM({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new OE(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 t="one_time"===this.data.emitTimeCycle;if(("loop"===this.data.emitTimeCycle||t)&&this.currentLoopTime>1e3*this.data.emitTimeDuration&&(this.stopped||(this.stop(),t||this.start(1e3*this.data.emitTimeDelay))),this.emitter&&this.started){let t=this.actualTime/1e3;this.emitter.update(t,e)}this.scale.set(1,1,1),this.updateMatrix()}isReady(){return!!this.emitter}hasCollider(e){return this.colliderEntities.some(t=>t.identity===e)}getColliderData(e){let t=this.colliderEntities.find(t=>t.identity===e);return t?t.data:null}updateByPatchedOp(e,t,i){super.updateByPatchedOp(e,t,i),fa(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...fd.drop(e,1).props}}),fa(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...fd.drop(e,1).props}})}updateState(e,t){super.updateState(e,t),this.updateParticleState(e)}updateParticleState(e){if(this.emitter){if(void 0!==e.colliderEntityId&&null!==e.colliderEntityId){let t=this.context.scene.find(e.colliderEntityId);this.colliderEntities=t?[t]:[]}null===e.colliderEntityId&&(this.colliderEntities=[]),this.emitter.updateState(e),e.emitTimeCycle&&this.started&&this.start()}}updateFromColliderEntity(e){this.emitter&&(this.emitter.updateForceFieldParameters(e),this.stop(),this.start())}start(e=0){if(this.currentLoopTime=0,e){this.timeoutId=window.setTimeout(()=>{this.start(0)},e);return}this.started=!0,this.stopped=!1,this.isFrozen=!1,this.emitter?.startEmitting(this.actualTime/1e3)}froze(){this.isFrozen=!0}unFroze(){this.isFrozen=!1}stop(){this.stopped=!0,this.currentLoopTime=0,this.emitter?.stopEmitting(),clearTimeout(this.timeoutId)}reset(){this.started=!1,this.stopped=!1,this.emitter?.reset()}wakeUp(){this.isIdle=!1}sleep(){this.isIdle=!0,this.reset()}},OT=function(){try{let e=window.location.href;if(e.includes("reducesubdiv=")){let t=e.indexOf("reducesubdiv=")+13;return parseInt(e.slice(t,t+1))}}catch{}}();function OP(e,t,i){return console.assert(void 0!==t.type),"Mesh"===t.type?(void 0!==OT&&(t?.geometry?.subdivisions??0)>OT&&(console.log("reducing subdivisions",t.name,t.geometry.subdivisions),t.geometry.subdivisions=OT),"TextGeometry"===t.geometry.type?new Cg(e,t,i):"InputGeometry"===t.geometry.type?new D7(e,t,i):"SubdivGeometry"===t.geometry.type?new E1(e,t,i):"PathGeometry"===t.geometry.type?new D9(e,t,i):"VectorGeometry"===t.geometry.type?new D8(e,t,i):"BooleanGeometry"===t.geometry.type?new CZ(e,t,i):"ShapeBlendGeometry"===t.geometry.type?new Oz(e,t,i):"UIGeometry"===t.geometry.type?new Os(e,t,i):new EZ(e,t,i)):"Empty"===t.type?new C6(e,t):"Particle"===t.type?new OC(e,t,i):"ParticleCollider"===t.type?new C8(e,t,i):"Splat"===t.type?new C6(e,t):"Bone"===t.type?new Or(e,t):"Page"===t.type?new D5(e,t,i):"PointLight"===t.type?new D6(e,t,i):"SpotLight"===t.type?new Ds(e,t,i):"DirectionalLight"===t.type?new De(e,t,i):"Component"===t.type||"Instance"===t.type?new Oe(e,t,i):gR.is(t.type)?new Cq(e,t):(console.error(t),new C6(e,t))}wi.createEntity=OP,wi.changeEntityProptotype=function(e,t,i){let r=OP(e.identity,t,i),a=e.children,o=e.attachedPaths,h=e.parent,c=e.component,d=e.instances,u=e.overrideData,p=e.uuid,f=e.stateSelection;
7272for(let t of(e.dispose(),Object.keys(e)))delete e[t];for(let t of(Object.setPrototypeOf(e,Object.getPrototypeOf(r)),Object.keys(r)))e[t]=r[t];e.children=[...e.children,...a],e.attachedPaths=o,e.parent=h,e.component=c,e.instances=d,e.uuid=p,e.overrideData=u,e.updateState(e.data,i),f&&e.changeSelectedState(f,i),e.resetBBoxNeedsUpdate()},wi.Cloner=CT;var OD=new rU;OD.setAttribute("position",new rT(new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),3));var OO=class extends oN{constructor(e){super({...e,depthTest:!1,depthWrite:!1,glslVersion:tz,vertexShader:`
7273				precision highp float;
7274				in vec3 position;
7275				void main() {
7276					gl_Position = vec4(position, 1);
7277				}
7278			`})}customProgramCacheKey(){return""}},OI=new r7,OR=class{constructor(){this.pyramidPassScene=new n_,this.pyramidPassMaterial=new OO({name:"PyramidPass"}),this.pyramidPassUniforms={inputTexture:{value:void 0},inputWidth:{value:0},inputHeight:{value:0},inputShiftX:{value:0},outputShiftX:{value:0}},this.pyramidTopLevelReadPixelBuffer=new Float32Array(4);let e=`
7279			precision highp float;
7280			precision highp sampler2D;
7281			layout(location = 0) out vec4 pc_FragColor;
7282			uniform sampler2D inputTexture;
7283			uniform float inputWidth;
7284			uniform float inputHeight;
7285			uniform float inputShiftX;
7286			uniform float outputShiftX;
7287			const vec2 half_unit_coord = vec2(0.5);
7288			const vec4 one = vec4(1.0);
7289			void main() {
7290				vec2 inputSize = vec2(inputWidth, inputHeight);
7291				vec2 input_pixel_uv = 1. / inputSize;
7292				vec2 coord = gl_FragCoord.xy - half_unit_coord;
7293				coord.x -= outputShiftX;
7294				coord = coord * 2. + half_unit_coord;
7295				coord.x += inputShiftX;
7296
7297				// sample bottom left corner
7298				vec2 input_uv = coord / inputSize;
7299				float bl = texture(inputTexture, input_uv).r;
7300
7301				// sample bottom right corner
7302				input_uv.x += input_pixel_uv.x;
7303				float br = texture(inputTexture, input_uv).r;
7304
7305				// sample top right corner
7306				input_uv.y += input_pixel_uv.y;
7307				float tr = texture(inputTexture, input_uv).r;
7308
7309				// sample top left corner
7310				input_uv.x -= input_pixel_uv.x;
7311				float tl = texture(inputTexture, input_uv).r;
7312
7313				pc_FragColor.a = bl;
7314				pc_FragColor.b = pc_FragColor.a + br;
7315				pc_FragColor.g = pc_FragColor.b + tr;
7316				pc_FragColor.r = pc_FragColor.g + tl; 
7317			}
7318		`;this.pyramidPassMaterial.fragmentShader=e,this.pyramidPassMaterial.uniforms=this.pyramidPassUniforms,this.pyramidPassMaterial.depthTest=!1,this.pyramidPassMaterial.depthWrite=!1;let t=new r$(OD,this.pyramidPassMaterial);t.frustumCulled=!1,this.pyramidPassScene.add(t)}renderPyramid(e,t,i,r,a){new lU().min.setScalar(0);let o=t.length-1,h=new ip;i.getViewport(h),this.pyramidPassUniforms.inputShiftX.value=0,this.pyramidPassUniforms.outputShiftX.value=0;let c=o-1;for(let o=c;o>=0;o--){let h=o%2==c%2?a[0]:a[1],d=o===c?r:o%2==c%2?a[1]:a[0];this.pyramidPassUniforms.inputTexture.value=Array.isArray(d.texture)?d.texture[1]:d.texture,this.pyramidPassUniforms.inputWidth.value=d.width,this.pyramidPassUniforms.inputHeight.value=d.height,i.setRenderTarget(h);let u=t[o],p=i.getPixelRatio();i.setViewport(this.pyramidPassUniforms.outputShiftX.value/p,0,u/p,u/p),2===o&&e%2!=0&&i.setViewport(this.pyramidPassUniforms.outputShiftX.value/p,0,3/p,3/p),i.render(this.pyramidPassScene,OI);let f=this.pyramidPassUniforms.inputShiftX.value;this.pyramidPassUniforms.inputShiftX.value=this.pyramidPassUniforms.outputShiftX.value,this.pyramidPassUniforms.outputShiftX.value=f,o<c&&(this.pyramidPassUniforms.outputShiftX.value+=t[o+1])}i.setViewport(h);let d=t.length%2==0?0:1;return i.readRenderTargetPixelsAsync(a[d],a[d].width-1,0,1,1,this.pyramidTopLevelReadPixelBuffer).then(()=>this.pyramidTopLevelReadPixelBuffer[0])}},OL={shapeInput:()=>`
7319			const float posRowCoord = 0.1;  // vec4: px py pz opType
7320			const float quatRowCoord = 0.3;  // vec4: qx qy qz qw
7321			const float param1RowCoord = 0.5;// vec4: type param1 param2 param3
7322			const float param2RowCoord = 0.7;// vec4: blendRange roundness scale param4
7323			const float colorRowCoord = 0.9; // vec4: r g b a
7324			uniform sampler2D shapesDataTexture;
7325			vec4 shapePos(float iin) { 
7326				vec4 r = texture(shapesDataTexture, vec2(iin, posRowCoord));
7327				return r;
7328			}
7329			vec4 shapeQuat(float iin) {
7330				vec4 r = texture(shapesDataTexture, vec2(iin, quatRowCoord));
7331				return r;
7332			}
7333			vec4 shapeParams1(float iin) {
7334				vec4 r = texture(shapesDataTexture, vec2(iin, param1RowCoord));
7335				return r;
7336			}
7337			vec4 shapeParams2(float iin) {
7338				vec4 r = texture(shapesDataTexture, vec2(iin, param2RowCoord));
7339				return r;
7340			}
7341			vec4 shapeColor(float iin) {
7342				vec4 r = texture(shapesDataTexture, vec2(iin, colorRowCoord));
7343				return r;
7344			}
7345		`,getxyzi:`
7346			// this code must complement lookup
7347			float xi = mod(gl_FragCoord.x - 0.5, VOXEL_RESOLUTION);
7348			float yi = mod(gl_FragCoord.y - 0.5, VOXEL_RESOLUTION);
7349			float zi = floor((gl_FragCoord.x - 0.5) * INV_VOXEL_RESOLUTION) + floor((gl_FragCoord.y - 0.5) * INV_VOXEL_RESOLUTION) * Z_LAYERS_PER_ROW;
7350		`,lookup:`
7351			uniform sampler2D potentialPassTexture;
7352			uniform sampler2D voxelPassTexture; // includes normal (in xyz) and key (in w)
7353			
7354			// box or marching cube lookup value in value texture, integer box coord inputs
7355			// this code must complement codebits.getxyzi
7356			vec4 look(float xi, float yi, float zi, sampler2D rt) {// range 0 .. numv etc
7357				vec2 uv = vec2(
7358					mod(zi, Z_LAYERS_PER_ROW) + (xi + 0.5) / VOXEL_RESOLUTION,
7359					floor(zi / Z_LAYERS_PER_ROW) + (yi + 0.5) / VOXEL_RESOLUTION
7360				); 
7361				uv /= Z_LAYERS_PER_ROW;
7362				return texture(rt, uv);
7363			}
7364		`,getpart:`
7365			float getpart(inout float a, float b) {
7366				float t = floor(a/b);
7367				float r = a - t*b;
7368				a = t;
7369				return r;
7370			}
7371		`,triTable:new Float32Array([-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,1,1,8,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,10,2,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,9,9,2,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,2,8,10,2,8,9,10,-1,-1,-1,-1,-1,-1,-1,2,11,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,11,0,0,11,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,9,1,11,3,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,11,1,11,9,1,11,8,9,-1,-1,-1,-1,-1,-1,-1,1,10,3,3,10,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,10,0,10,8,0,10,11,8,-1,-1,-1,-1,-1,-1,-1,0,9,3,9,11,3,9,10,11,-1,-1,-1,-1,-1,-1,-1,10,8,9,11,8,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,7,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,4,4,3,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,0,7,4,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,4,1,7,4,1,3,7,-1,-1,-1,-1,-1,-1,-1,10,2,1,7,4,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,4,3,4,0,3,10,2,1,-1,-1,-1,-1,-1,-1,-1,10,2,9,2,0,9,7,4,8,-1,-1,-1,-1,-1,-1,-1,9,10,2,7,9,2,3,7,2,4,9,7,-1,-1,-1,-1,7,4,8,2,11,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,4,11,4,2,11,4,0,2,-1,-1,-1,-1,-1,-1,-1,1,0,9,7,4,8,11,3,2,-1,-1,-1,-1,-1,-1,-1,11,7,4,11,4,9,2,11,9,1,2,9,-1,-1,-1,-1,1,10,3,10,11,3,4,8,7,-1,-1,-1,-1,-1,-1,-1,10,11,1,11,4,1,4,0,1,4,11,7,-1,-1,-1,-1,8,7,4,11,0,9,10,11,9,3,0,11,-1,-1,-1,-1,11,7,4,9,11,4,10,11,9,-1,-1,-1,-1,-1,-1,-1,4,5,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,5,9,3,8,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,5,0,0,5,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,5,8,5,3,8,5,1,3,-1,-1,-1,-1,-1,-1,-1,10,2,1,4,5,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,3,10,2,1,5,9,4,-1,-1,-1,-1,-1,-1,-1,10,2,5,2,4,5,2,0,4,-1,-1,-1,-1,-1,-1,-1,5,10,2,5,2,3,4,5,3,8,4,3,-1,-1,-1,-1,4,5,9,11,3,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,11,0,11,8,0,5,9,4,-1,-1,-1,-1,-1,-1,-1,4,5,0,5,1,0,11,3,2,-1,-1,-1,-1,-1,-1,-1,5,1,2,8,5,2,11,8,2,5,8,4,-1,-1,-1,-1,11,3,10,3,1,10,4,5,9,-1,-1,-1,-1,-1,-1,-1,5,9,4,1,8,0,1,10,8,10,11,8,-1,-1,-1,-1,0,4,5,11,0,5,10,11,5,3,0,11,-1,-1,-1,-1,8,4,5,10,8,5,11,8,10,-1,-1,-1,-1,-1,-1,-1,8,7,9,9,7,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,9,3,5,9,3,7,5,-1,-1,-1,-1,-1,-1,-1,8,7,0,7,1,0,7,5,1,-1,-1,-1,-1,-1,-1,-1,3,5,1,7,5,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,7,9,7,5,9,2,1,10,-1,-1,-1,-1,-1,-1,-1,2,1,10,0,5,9,0,3,5,3,7,5,-1,-1,-1,-1,2,0,8,5,2,8,7,5,8,2,5,10,-1,-1,-1,-1,5,10,2,3,5,2,7,5,3,-1,-1,-1,-1,-1,-1,-1,5,9,7,9,8,7,2,11,3,-1,-1,-1,-1,-1,-1,-1,7,5,9,2,7,9,0,2,9,11,7,2,-1,-1,-1,-1,11,3,2,8,1,0,8,7,1,7,5,1,-1,-1,-1,-1,1,2,11,7,1,11,5,1,7,-1,-1,-1,-1,-1,-1,-1,8,5,9,7,5,8,3,1,10,11,3,10,-1,-1,-1,-1,0,7,5,9,0,5,0,11,7,10,0,1,0,10,11,-1,0,10,11,3,0,11,0,5,10,7,0,8,0,7,5,-1,5,10,11,5,11,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,6,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,6,10,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,0,9,6,10,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,1,8,9,1,6,10,5,-1,-1,-1,-1,-1,-1,-1,5,6,1,1,6,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,6,1,6,2,1,8,0,3,-1,-1,-1,-1,-1,-1,-1,5,6,9,6,0,9,6,2,0,-1,-1,-1,-1,-1,-1,-1,8,9,5,2,8,5,6,2,5,8,2,3,-1,-1,-1,-1,11,3,2,5,6,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,11,0,2,11,5,6,10,-1,-1,-1,-1,-1,-1,-1,9,1,0,11,3,2,6,10,5,-1,-1,-1,-1,-1,-1,-1,6,10,5,2,9,1,2,11,9,11,8,9,-1,-1,-1,-1,11,3,6,3,5,6,3,1,5,-1,-1,-1,-1,-1,-1,-1,11,8,0,5,11,0,1,5,0,6,11,5,-1,-1,-1,-1,6,11,3,6,3,0,5,6,0,9,5,0,-1,-1,-1,-1,9,5,6,11,9,6,8,9,11,-1,-1,-1,-1,-1,-1,-1,6,10,5,8,7,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,4,3,7,4,10,5,6,-1,-1,-1,-1,-1,-1,-1,0,9,1,6,10,5,7,4,8,-1,-1,-1,-1,-1,-1,-1,5,6,10,7,9,1,3,7,1,4,9,7,-1,-1,-1,-1,2,1,6,1,5,6,8,7,4,-1,-1,-1,-1,-1,-1,-1,5,2,1,6,2,5,4,0,3,7,4,3,-1,-1,-1,-1,7,4,8,5,0,9,5,6,0,6,2,0,-1,-1,-1,-1,9,3,7,4,9,7,9,2,3,6,9,5,9,6,2,-1,2,11,3,4,8,7,5,6,10,-1,-1,-1,-1,-1,-1,-1,6,10,5,2,7,4,0,2,4,11,7,2,-1,-1,-1,-1,9,1,0,8,7,4,11,3,2,6,10,5,-1,-1,-1,-1,1,2,9,2,11,9,11,4,9,4,11,7,6,10,5,-1,7,4,8,5,11,3,1,5,3,6,11,5,-1,-1,-1,-1,11,1,5,6,11,5,11,0,1,4,11,7,11,4,0,-1,9,5,0,5,6,0,6,3,0,3,6,11,7,4,8,-1,9,5,6,11,9,6,9,7,4,9,11,7,-1,-1,-1,-1,9,4,10,10,4,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,10,4,10,9,4,3,8,0,-1,-1,-1,-1,-1,-1,-1,1,0,10,0,6,10,0,4,6,-1,-1,-1,-1,-1,-1,-1,1,3,8,6,1,8,4,6,8,10,1,6,-1,-1,-1,-1,9,4,1,4,2,1,4,6,2,-1,-1,-1,-1,-1,-1,-1,8,0,3,9,2,1,9,4,2,4,6,2,-1,-1,-1,-1,4,2,0,6,2,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,4,2,8,6,2,4,-1,-1,-1,-1,-1,-1,-1,9,4,10,4,6,10,3,2,11,-1,-1,-1,-1,-1,-1,-1,2,8,0,11,8,2,10,9,4,6,10,4,-1,-1,-1,-1,2,11,3,6,1,0,4,6,0,10,1,6,-1,-1,-1,-1,1,4,6,10,1,6,1,8,4,11,1,2,1,11,8,-1,4,6,9,6,3,9,3,1,9,3,6,11,-1,-1,-1,-1,1,11,8,0,1,8,1,6,11,4,1,9,1,4,6,-1,6,11,3,0,6,3,4,6,0,-1,-1,-1,-1,-1,-1,-1,8,4,6,8,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,10,7,10,8,7,10,9,8,-1,-1,-1,-1,-1,-1,-1,3,7,0,7,10,0,10,9,0,10,7,6,-1,-1,-1,-1,7,6,10,7,10,1,8,7,1,0,8,1,-1,-1,-1,-1,7,6,10,1,7,10,3,7,1,-1,-1,-1,-1,-1,-1,-1,6,2,1,8,6,1,9,8,1,7,6,8,-1,-1,-1,-1,9,6,2,1,9,2,9,7,6,3,9,0,9,3,7,-1,0,8,7,6,0,7,2,0,6,-1,-1,-1,-1,-1,-1,-1,2,3,7,2,7,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,3,2,8,6,10,9,8,10,7,6,8,-1,-1,-1,-1,7,0,2,11,7,2,7,9,0,10,7,6,7,10,9,-1,0,8,1,8,7,1,7,10,1,10,7,6,11,3,2,-1,1,2,11,7,1,11,1,6,10,1,7,
73716,-1,-1,-1,-1,6,9,8,7,6,8,6,1,9,3,6,11,6,3,1,-1,1,9,0,7,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,7,6,0,7,0,11,3,0,6,11,-1,-1,-1,-1,6,11,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,6,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,3,6,7,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,0,6,7,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,1,8,1,3,8,6,7,11,-1,-1,-1,-1,-1,-1,-1,2,1,10,7,11,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,1,8,0,3,7,11,6,-1,-1,-1,-1,-1,-1,-1,0,9,2,9,10,2,7,11,6,-1,-1,-1,-1,-1,-1,-1,7,11,6,3,10,2,3,8,10,8,9,10,-1,-1,-1,-1,3,2,7,7,2,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,7,0,6,7,0,2,6,-1,-1,-1,-1,-1,-1,-1,6,7,2,7,3,2,9,1,0,-1,-1,-1,-1,-1,-1,-1,2,6,1,6,8,1,8,9,1,6,7,8,-1,-1,-1,-1,6,7,10,7,1,10,7,3,1,-1,-1,-1,-1,-1,-1,-1,6,7,10,10,7,1,7,8,1,8,0,1,-1,-1,-1,-1,7,3,0,10,7,0,9,10,0,7,10,6,-1,-1,-1,-1,10,6,7,8,10,7,9,10,8,-1,-1,-1,-1,-1,-1,-1,4,8,6,6,8,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,6,3,6,0,3,6,4,0,-1,-1,-1,-1,-1,-1,-1,11,6,8,6,4,8,1,0,9,-1,-1,-1,-1,-1,-1,-1,6,4,9,3,6,9,1,3,9,6,3,11,-1,-1,-1,-1,4,8,6,8,11,6,1,10,2,-1,-1,-1,-1,-1,-1,-1,10,2,1,11,0,3,11,6,0,6,4,0,-1,-1,-1,-1,8,11,4,11,6,4,9,2,0,9,10,2,-1,-1,-1,-1,3,9,10,2,3,10,3,4,9,6,3,11,3,6,4,-1,3,2,8,2,4,8,2,6,4,-1,-1,-1,-1,-1,-1,-1,2,4,0,2,6,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,9,1,4,3,2,6,4,2,8,3,4,-1,-1,-1,-1,4,9,1,2,4,1,6,4,2,-1,-1,-1,-1,-1,-1,-1,3,1,8,1,6,8,6,4,8,1,10,6,-1,-1,-1,-1,0,1,10,6,0,10,4,0,6,-1,-1,-1,-1,-1,-1,-1,3,6,4,8,3,4,3,10,6,9,3,0,3,9,10,-1,4,9,10,4,10,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,9,4,11,6,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,8,0,5,9,4,6,7,11,-1,-1,-1,-1,-1,-1,-1,1,0,5,0,4,5,11,6,7,-1,-1,-1,-1,-1,-1,-1,6,7,11,4,3,8,4,5,3,5,1,3,-1,-1,-1,-1,4,5,9,2,1,10,11,6,7,-1,-1,-1,-1,-1,-1,-1,7,11,6,10,2,1,3,8,0,5,9,4,-1,-1,-1,-1,11,6,7,10,4,5,10,2,4,2,0,4,-1,-1,-1,-1,8,4,3,4,5,3,5,2,3,2,5,10,6,7,11,-1,3,2,7,2,6,7,9,4,5,-1,-1,-1,-1,-1,-1,-1,4,5,9,6,8,0,2,6,0,7,8,6,-1,-1,-1,-1,2,6,3,6,7,3,0,5,1,0,4,5,-1,-1,-1,-1,8,2,6,7,8,6,8,1,2,5,8,4,8,5,1,-1,4,5,9,6,1,10,6,7,1,7,3,1,-1,-1,-1,-1,10,6,1,6,7,1,7,0,1,0,7,8,4,5,9,-1,10,0,4,5,10,4,10,3,0,7,10,6,10,7,3,-1,10,6,7,8,10,7,10,4,5,10,8,4,-1,-1,-1,-1,5,9,6,9,11,6,9,8,11,-1,-1,-1,-1,-1,-1,-1,11,6,3,3,6,0,6,5,0,5,9,0,-1,-1,-1,-1,8,11,0,11,5,0,5,1,0,11,6,5,-1,-1,-1,-1,3,11,6,5,3,6,1,3,5,-1,-1,-1,-1,-1,-1,-1,10,2,1,11,5,9,8,11,9,6,5,11,-1,-1,-1,-1,3,11,0,11,6,0,6,9,0,9,6,5,10,2,1,-1,5,8,11,6,5,11,5,0,8,2,5,10,5,2,0,-1,3,11,6,5,3,6,3,10,2,3,5,10,-1,-1,-1,-1,9,8,5,8,2,5,2,6,5,2,8,3,-1,-1,-1,-1,6,5,9,0,6,9,2,6,0,-1,-1,-1,-1,-1,-1,-1,8,5,1,0,8,1,8,6,5,2,8,3,8,2,6,-1,6,5,1,6,1,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,3,1,10,6,1,6,8,3,9,6,5,6,9,8,-1,0,1,10,6,0,10,0,5,9,0,6,5,-1,-1,-1,-1,8,3,0,10,6,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6,5,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,11,11,5,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,11,5,7,11,0,3,8,-1,-1,-1,-1,-1,-1,-1,7,11,5,11,10,5,0,9,1,-1,-1,-1,-1,-1,-1,-1,5,7,10,7,11,10,1,8,9,1,3,8,-1,-1,-1,-1,2,1,11,1,7,11,1,5,7,-1,-1,-1,-1,-1,-1,-1,3,8,0,7,2,1,5,7,1,11,2,7,-1,-1,-1,-1,5,7,9,7,2,9,2,0,9,7,11,2,-1,-1,-1,-1,2,5,7,11,2,7,2,9,5,8,2,3,2,8,9,-1,10,5,2,5,3,2,5,7,3,-1,-1,-1,-1,-1,-1,-1,0,2,8,2,5,8,5,7,8,5,2,10,-1,-1,-1,-1,1,0,9,3,10,5,7,3,5,2,10,3,-1,-1,-1,-1,2,8,9,1,2,9,2,7,8,5,2,10,2,5,7,-1,5,3,1,5,7,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,0,1,7,0,5,7,1,-1,-1,-1,-1,-1,-1,-1,3,0,9,5,3,9,7,3,5,-1,-1,-1,-1,-1,-1,-1,7,8,9,7,9,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,8,5,8,10,5,8,11,10,-1,-1,-1,-1,-1,-1,-1,4,0,5,0,11,5,11,10,5,0,3,11,-1,-1,-1,-1,9,1,0,10,4,8,11,10,8,5,4,10,-1,-1,-1,-1,4,11,10,5,4,10,4,3,11,1,4,9,4,1,3,-1,1,5,2,5,8,2,8,11,2,8,5,4,-1,-1,-1,-1,11,4,0,3,11,0,11,5,4,1,11,2,11,1,5,-1,5,2,0,9,5,0,5,11,2,8,5,4,5,8,11,-1,5,4,9,3,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,2,2,5,3,5,4,3,4,8,3,-1,-1,-1,-1,2,10,5,4,2,5,0,2,4,-1,-1,-1,-1,-1,-1,-1,2,10,3,10,5,3,5,8,3,8,5,4,9,1,0,-1,2,10,5,4,2,5,2,9,1,2,4,9,-1,-1,-1,-1,5,4,8,3,5,8,1,5,3,-1,-1,-1,-1,-1,-1,-1,5,4,0,5,0,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,4,8,3,5,8,5,0,9,5,3,0,-1,-1,-1,-1,5,4,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,11,4,11,9,4,11,10,9,-1,-1,-1,-1,-1,-1,-1,3,8,0,7,9,4,7,11,9,11,10,9,-1,-1,-1,-1,11,10,1,4,11,1,0,4,1,11,4,7,-1,-1,-1,-1,4,1,3,8,4,3,4,10,1,11,4,7,4,11,10,-1,7,11,4,4,11,9,11,2,9,2,1,9,-1,-1,-1,-1,4,7,9,7,11,9,11,1,9,1,11,2,3,8,0,-1,4,7,11,2,4,11,0,4,2,-1,-1,-1,-1,-1,-1,-1,4,7,11,2,4,11,4,3,8,4,2,3,-1,-1,-1,-1,10,9,2,9,7,2,7,3,2,9,4,7,-1,-1,-1,-1,7,10,9,4,7,9,7,2,10,0,7,8,7,0,2,-1,10,7,3,2,10,3,10,4,7,0,10,1,10,0,4,-1,2,10,1,4,7,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,4,7,1,4,3,1,7,-1,-1,-1,-1,-1,-1,-1,1,9,4,7,1,4,1,8,0,1,7,8,-1,-1,-1,-1,3,0,4,3,4,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,10,9,8,11,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,0,3,11,9,3,10,9,11,-1,-1,-1,-1,-1,-1,-1,10,1,0,8,10,0,11,10,8,-1,-1,-1,-1,-1,-1,-1,10,1,3,10,3,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,2,1,9,11,1,8,11,9,-1,-1,-1,-1,-1,-1,-1,9,0,3,11,9,3,9,2,1,9,11,2,-1,-1,-1,-1,11,2,0,11,0,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,2,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,2,10,8,2,9,8,10,-1,-1,-1,-1,-1,-1,-1,2,10,9,2,9,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,2,10,8,2,8,1,0,8,10,1,-1,-1,-1,-1,2,10,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,1,8,1,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,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]),numTrisTable:new Float32Array([0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,2,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,2,3,3,2,3,4,4,3,3,4,4,3,4,5,5,2,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,4,2,3,3,4,3,4,2,3,3,4,4,5,4,5,3,2,3,4,4,3,4,5,3,2,4,5,5,4,5,2,4,1,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,3,2,3,3,4,3,4,4,5,3,2,4,3,4,3,5,2,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,4,3,4,4,3,4,5,5,4,4,3,5,2,5,4,2,1,2,3,3,4,3,4,4,5,3,4,4,5,2,3,3,2,3,4,4,5,4,5,5,2,4,3,5,4,3,2,4,1,3,4,4,5,4,5,3,4,4,5,5,2,3,4,2,1,2,3,3,2,3,4,2,1,3,2,4,1,2,1,1,0])}
7371,OB=class extends EZ{constructor(e,t,i){super(e,t,i),this.data=t,this.needsRebuild=!0,this.customDepthMaterialNeedsUpdate=!1,this._npart=-1,this.spatialn=1,this.drawRangeNeedsForceUpdate=!0,this._resolutionLevel=-1,this.resolution=64,this.spatialDivisions=25,this.zLayersPerRow=8,this.basePyramidSize=512,this.pyramidTexture1Width=341,this.pyramidTexture1Height=256,this.pyramidTexture2Width=170,this.pyramidTexture2Height=128,this.numLevels=9,this.pyramidLevelSizes=[1,2,4,8,16,32,64,128,256,512],this.bboxSize=0,this.bboxOffset=0,this.shapesDataTexture={value:void 0},this.spatialscene=new n_,this.potentialPassScene=new n_,this.voxelPassScene=new n_,this._spatialPassRenderTargets=[],this._potentialPassRenderTargets=[],this._voxelPassRenderTargets=[],this._pyramidRenderTargets=[],this.geometry=new rU,this.geometry.drawRange.count=0,this.spatialPassUniforms={span:{value:-1},shapesDataTexture:this.shapesDataTexture,npart:{value:this.npart},spatialn:{value:this.spatialn}},this.spatialMesh=new r$(OD,this.spatialPassMaterial()),this.spatialMesh.frustumCulled=!1,this.spatialscene.add(this.spatialMesh);let r=new nT(OL.triTable,16,256,1028,1015);r.needsUpdate=!0;let a=new nT(OL.numTrisTable,256,1,1028,1015);a.needsUpdate=!0,this.voxelPassUniforms={potentialPassTexture:{value:void 0},numTrisTable:{value:a}},this.voxelMesh=new r$(OD,this.voxelPassMaterial()),this.voxelMesh.frustumCulled=!1,this.voxelPassScene.add(this.voxelMesh),this.potentialPassUniforms={shapesDataTexture:this.shapesDataTexture,spatialPassTexture:{value:void 0},npart:{value:this.npart},spatialn:{value:this.spatialn}},this.potentialMesh=new r$(OD,this.potentialPassMaterial()),this.potentialMesh.frustumCulled=!1,this.potentialPassScene.add(this.potentialMesh),this.marchPassUniforms={triTable:{value:r},potentialPassTexture:{value:void 0},voxelPassTexture:{value:void 0},pyramidTexture1:{value:void 0},pyramidTexture1Size:{value:void 0},pyramidTexture2:{value:void 0},pyramidTexture2Size:{value:void 0}},this.frustumCulled=!1,this.onBeforeShadowPass=e=>{if(OW.call(this),0===this.npart){this.geometry.drawRange.count=0;return}let t=this.material.root;if(t.shadersPatchedForShapeBlend){if(this.customDepthMaterialNeedsUpdate){this.customDepthMaterialNeedsUpdate=!1,this.customDepthMaterial=new r9({vertexShader:t.vertexShader,fragmentShader:`
7372						#include <packing>
7373						void main()
7374						{
7375							gl_FragColor = packDepthToRGBA(gl_FragCoord.z);
7376						}
7377					`,uniforms:t.uniforms,defines:this.material.defines}),this.isMeshDepthMaterial=!0,this.customDistanceMaterial=new r9({vertexShader:t.vertexShader,fragmentShader:`
7378					#include <common>
7379					#include <packing>
7380					uniform vec3 referencePosition;
7381					uniform float nearDistance;
7382					uniform float farDistance;
7383					// World-space position
7384					varying vec3 vWPosition;
7385					void main()
7386					{
7387						float dist = length(vWPosition - referencePosition);
7388						dist = (dist - nearDistance) / (farDistance - nearDistance);
7389						dist = saturate(dist);
7390						// Required by Three.js for this to work
7391						gl_FragColor = packDepthToRGBA( dist );
7392					}`,uniforms:{nearDistance:{value:0},farDistance:{value:0},referencePosition:{value:new ib},opacity:{value:0},...t.uniforms},defines:this.material.defines});let e=this.customDistanceMaterial;e.referencePosition=new ib,e.nearDistance=0,e.farDistance=0,e.opacity=1,e.isMeshDistanceMaterial=!0}}else this.patchVertexShaderForShapeBlend(t),t.shadersPatchedForShapeBlend=!0,this.customDepthMaterialNeedsUpdate=!0;if(this.spatialPassUniforms.npart.value=this.npart,this.spatialPassUniforms.spatialn.value=this.spatialn,this.potentialPassUniforms.npart.value=this.npart,this.potentialPassUniforms.spatialn.value=this.spatialn,this.needsRebuild){this.needsRebuild=!1,this.spatialMesh.material.defines.RES=this.resolutionLevel,this.spatialMesh.material.needsUpdate=!0,this.potentialMesh.material.defines.RES=this.resolutionLevel,this.potentialPassUniforms.spatialPassTexture.value=this.spatialPassRenderTarget.texture,this.potentialMesh.material.needsUpdate=!0,this.voxelMesh.material.defines.RES=this.resolutionLevel,this.voxelMesh.material.needsUpdate=!0,this.voxelPassUniforms.potentialPassTexture.value=this.potentialPassRenderTarget.texture,this.marchPassUniforms.potentialPassTexture.value=this.potentialPassRenderTarget.texture,this.marchPassUniforms.voxelPassTexture.value=this.voxelPassRenderTarget.texture[0],this.material.defines.RES=this.resolutionLevel,this.material.defines.LEVELS=this.pyramidLevelSizes.length,this.material.defines.LOOP=this.pyramidLevelSizes.length%2==0?this.pyramidLevelSizes.length-3:this.pyramidLevelSizes.length-2,this.material.defines.HALF=this.pyramidLevelSizes.length%2==0?1:0,this.material.needsUpdate=!0;let e=this.pyramidLevelSizes.length%2==0?0:1,t=this.pyramidLevelSizes.length%2==0?1:0;this.marchPassUniforms.pyramidTexture2.value=this.pyramidRenderTarget[e].texture,this.marchPassUniforms.pyramidTexture2
7392Size.value=new tJ(this.pyramidRenderTarget[e].width,this.pyramidRenderTarget[e].height),this.marchPassUniforms.pyramidTexture1.value=this.pyramidRenderTarget[t].texture,this.marchPassUniforms.pyramidTexture1Size.value=new tJ(this.pyramidRenderTarget[t].width,this.pyramidRenderTarget[t].height),Object.assign(this.material.uniforms,this.marchPassUniforms)}let i=e.shadowMap.enabled;e.shadowMap.enabled=!1;let r=e.getRenderTarget();e.setRenderTarget(this.spatialPassRenderTarget),e.render(this.spatialscene,OI),e.setRenderTarget(this.potentialPassRenderTarget),e.render(this.potentialPassScene,OI),e.setRenderTarget(this.voxelPassRenderTarget),e.render(this.voxelPassScene,OI),OB.streamCompaction.renderPyramid(this.resolutionLevel,this.pyramidLevelSizes,e,this.voxelPassRenderTarget,this.pyramidRenderTarget).then(e=>{this.material.wireframe&&(3*e>this.geometry.attributes.position.count||this.drawRangeNeedsForceUpdate)&&(this.geometry.dispose(),this.geometry=new rU,this.geometry.userData.parameters={width:this.bboxSize,height:this.bboxSize,depth:this.bboxSize,centerOffset:[this.bboxOffset,this.bboxOffset,this.bboxOffset]},this.geometry.attributes.position=new rT(new Float32Array(6*e),3)),(3*e>this.geometry.drawRange.count||this.drawRangeNeedsForceUpdate)&&(this.geometry.drawRange.count=3*Math.floor(1.2*e)),this.drawRangeNeedsForceUpdate=!1}),e.shadowMap.enabled=i,e.setRenderTarget(r)}}set npart(e){e!==this._npart&&(this.drawRangeNeedsForceUpdate=!0,this._npart=e,this.spatialn=Math.ceil(e/96))}get npart(){return this._npart}set resolutionLevel(e){let t=Math.min(8,Math.max(5,e));if(t!==this._resolutionLevel){switch(this._resolutionLevel=t,this.resolution=Math.pow(2,t),this.resolutionLevel){case 5:this.pyramidLevelSizes=[1,2,4,6,12,24,48,96,192],this.bboxSize=496,this.bboxOffset=-8;break;case 6:this.pyramidLevelSizes=[1,2,4,8,16,32,64,128,256,512],this.bboxSize=504,this.bboxOffset=-4;break;case 7:this.pyramidLevelSizes=[1,2,4,6,12,24,48,96,192,384,768,1536],this.bboxSize=508,this.bboxOffset=-2;break;case 8:this.pyramidLevelSizes=[1,2,4,8,16,32,64,128,256,512,1024,2048,4096],this.bboxSize=510,this.bboxOffset=-1}this.pyramidTexture1Width=0,this.pyramidTexture2Width=0,this.pyramidTexture1Height=this.pyramidLevelSizes[this.pyramidLevelSizes.length-2],this.pyramidTexture2Height=this.pyramidLevelSizes[this.pyramidLevelSizes.length-3];for(let e=this.pyramidLevelSizes.length-2;e>=0;e--)(this.pyramidLevelSizes.length-2)%2==e%2?this.pyramidTexture1Width+=this.pyramidLevelSizes[e]:this.pyramidTexture2Width+=this.pyramidLevelSizes[e];this.basePyramidSize=this.pyramidLevelSizes[this.pyramidLevelSizes.length-1],this.zLayersPerRow=this.basePyramidSize/this.resolution,this.numLevels=this.pyramidLevelSizes.length-1,this.geometry.userData.parameters={width:this.bboxSize,height:this.bboxSize,depth:this.bboxSize,centerOffset:[this.bboxOffset,this.bboxOffset,this.bboxOffset]},this.needsRebuild=!0,this.customDepthMaterialNeedsUpdate=!0}}get resolutionLevel(){return this._resolutionLevel}get spatialPassRenderTarget(){let e=this._spatialPassRenderTargets[this.resolutionLevel];return e||(e=new im(this.spatialDivisions*this.spatialn,this.spatialDivisions**2,{format:1023,type:1015,stencilBuffer:!1,depthBuffer:!1,generateMipmaps:!1,minFilter:1003,magFilter:1003}),this._spatialPassRenderTargets[this.resolutionLevel]=e),e}get potentialPassRenderTarget(){let e=this._potentialPassRenderTargets[this.resolutionLevel];return e||(e=new im(this.basePyramidSize,this.basePyramidSize,{format:1023,type:1015,stencilBuffer:!1,depthBuffer:!1,generateMipmaps:!1,minFilter:1003,magFilter:1003}),this._potentialPassRenderTargets[this.resolutionLevel]=e),e}get voxelPassRenderTarget(){let e=this._voxelPassRenderTargets[this.resolutionLevel];return e||((e=new iy(this.basePyramidSize,this.basePyramidSize,2,{stencilBuffer:!1,depthBuffer:!1,generateMipmaps:!1,minFilter:1003,magFilter:1003})).texture[0].format=1023,e.texture[0].type=1015,e.texture[1].format=1028,e.texture[1].type=1015,this._voxelPassRenderTargets[this.resolutionLevel]=e),e}get pyramidRenderTarget(){let e=this._pyramidRenderTargets[this.resolutionLevel];return e||(e=[new im(this.pyramidTexture1Width,this.pyramidTexture1Height,{format:1023,type:1015,stencilBuffer:!1,depthBuffer:!1,magFilter:1003,minFilter:1003}),new im(this.pyramidTexture2Width,this.pyramidTexture2Height,{format:1023,type:1015,stencilBuffer:!1,depthBuffer:!1,magFilter:1003,minFilter:1003})],this._pyramidRenderTargets[this.resolutionLevel]=e),e}updateState(e,t){let i=this.material;super.updateState(e,t),i!==this.material&&(this.needsRebuild=!0),e.geometry&&(this.resolutionLevel=e.geometry.resolutionLevel,this.geometry.userData.parameters={width:this.bboxSize,height:this.bboxSize,depth:this.bboxSize,centerOffset:[this.bboxOffset,this.bboxOffset,this.bboxOffset]}),e.wireframe&&!this.geometry.getAttribute("position")?this.geometry.setAttribute("position",new rT(new Float32Array(3*this.geometry.drawRange.count),3)):!e.wireframe&&this.geometry.getAttribute("position")&&this.geometry.deleteAttribute("position")}spatialPassMaterial(){return new OO({name:"Spatial Pass",fragmentShader:`
7393			precision highp float;
7394			out vec4 pc_FragColor;
7395			const float spatialDivisions = ${this.spatialDivisions}.;
7396			uniform float span;
7397			uniform float npart;
7398			uniform float spatialn;
7399			${OL.shapeInput()}
7400
7401			vec3 low, high;     // range of current div; subset of -1 .. 1 with span border
7402
7403			// lookup one element/channel's worth of spheres for current division
7404			// stating with low sphere number lowi
7405			// gives a key to which spheres from lowi..lowi+23 are active within given div (low..high)
7406			float spatialKey(float lowi) {
7407				float t = 0.;
7408				for (float ii = 23.; ii >= 0.; ii--) {
7409					float i = ii + lowi;
7410					float iin = (i + 0.5) / 96.;
7411					vec4 shape = shapePos(iin);
7412					vec3 d = shape.xyz;
7413					float op = shape.w;
7414	
7415					t *= 2.;
7416					t += (
7417						low.x < d.x && d.x < high.x &&
7418						low.y < d.y && d.y < high.y &&
7419						low.z < d.z && d.z < high.z &&
7420						i < npart || op == -2. // always include if op is -2, which is the intersection operation
7421					) ? 1. : 0.;
7422				}
7423				return t;
7424			}
7425
7426			${OL.getpart}
7427
7428			void main() {               // spatialial fragment shader
7429				// find active div
7430				vec3 div;                               // which div is current
7431				// out holds x=> x, lowi faster moving and y=> z, y faster moving
7432				float yz = float(gl_FragCoord.y - 0.5);     // contains  z, y faster moving
7433				div.y = getpart(yz, spatialDivisions);
7434				div.z = yz; // getpart(yz, spatialDivisions.z); // what's left, should be the same as getpart
7435
7436				float lx = float(gl_FragCoord.x - 0.5);     // contains x, lowi faster moving
7437				float lowi = getpart(lx, spatialn) * 96.;
7438				div.x = lx;
7439
7440				low = div / spatialDivisions * 2. - 1. - span;
7441				high = (div+1.) / spatialDivisions * 2. - 1. + span;
7442
7443				// find active range of spheres
7444				pc_FragColor.x = spatialKey(lowi);
7445				pc_FragColor.y = spatialKey(lowi+24.);
7446				pc_FragColor.z = spatialKey(lowi+48.);
7447				pc_FragColor.w = spatialKey(lowi+72.);
7448			}
7449		`,uniforms:this.spatialPassUniforms})}potentialPassMaterial(){return new OO({name:"PotentialPass",fragmentShader:`
7450			precision highp float;
7451			out vec4 pc_FragColor;
7452
7453			${OL.shapeInput()}
7454			uniform sampler2D spatialPassTexture;
7455
7456			const float res = float(RES);
7457			const float VOXEL_RESOLUTION = pow(2., res);
7458			const float Z_LAYERS_PER_ROW = ceil(pow(2., res / 2.));
7459			const float VOXEL_RESOLUTION_SUB1 = VOXEL_RESOLUTION - 1.;
7460			const float INV_VOXEL_RESOLUTION = 1.0 / VOXEL_RESOLUTION;
7461
7462			uniform float npart;
7463			uniform float spatialn;
7464			const float spatialDivisions = ${this.spatialDivisions}.;
7465			const float spatialDivisions2 = spatialDivisions * spatialDivisions;
7466			const float spatialDivisionsSub1 = spatialDivisions - 1.;
7467
7468			${OL.getpart}
7469
7470			vec3 packRGBAToVec3(vec4 color) {
7471				uint r = uint(color.r * 255.);
7472				uint g = uint(color.g * 255.);
7473				uint combined = (r << 8) | g; 
7474				return vec3(float(combined) * 0.00001525902, color.b, color.a); // 1/65535
7475			}
7476
7477			void applyQuaternionToVector(in vec4 q, inout vec3 v) {
7478				v += 2.0 * cross(q.xyz, cross(q.xyz, v) + q.w * v);
7479			}
7480
7481			/**
7482			 * SDF functions (reference: https://iquilezles.org/articles/distfunctions/)
7483			 */
7484
7485			// branchless version of "Smooth Union, Subtraction and Intersection - bound, bound, bound" in above reference
7486			float smoothOperation(float op, float sdf, float d, float k) {
7487			  //        union: op =  1 =>
7487 signSubtract =  1, signIntersection =  1
7488			  //     subtract: op = -1 => signSubtract = -1, signIntersection =  1
7489				// intersection: op = -2 => signSubtract = -1, signIntersection = -1
7490
7491				float signSubtract = clamp(op, -1., 1.);
7492				float signIntersection = 2. * (op - signSubtract) + 1.;
7493				float h = clamp(
7494					0.5 + signSubtract * 0.5 * (sdf - signSubtract * signIntersection * d) / k,
7495					0.0,
7496					1.0
7497				);
7498				return mix(sdf, signSubtract * signIntersection * d, h) - 
7499							 signSubtract * k * h * (1.0 - h);
7500			}
7501
7502			float sdSphere( vec3 p, float s )
7503			{
7504				return length(p)-s;
7505			}
7506
7507			float sdEllipsoid( vec3 p, vec3 r )
7508			{
7509				float k0 = length(p/r);
7510				float k1 = length(p/(r*r));
7511				return k0*(k0-1.0)/k1;
7512			}
7513
7514			float sdBox( vec3 p, vec3 b )
7515			{
7516				vec3 q = abs(p) - b;
7517				return length(max(q,0.0)) + min(max(q.x,max(q.y,q.z)),0.0);
7518			}
7519
7520			float sdTorus( vec3 p, vec2 t )
7521			{
7522				vec2 q = vec2(length(p.xy)-t.x,p.z);
7523				return length(q)-t.y;
7524			}
7525
7526			float sdCappedTorus( vec3 p, vec2 sc, float ra, float rb)
7527			{
7528				p.x = abs(p.x);
7529				float k = (sc.y*p.x>sc.x*p.y) ? dot(p.xy,sc) : length(p.xy);
7530				return sqrt( dot(p,p) + ra*ra - 2.0*ra*k ) - rb;
7531			}
7532
7533			float dot2( in vec2 v ) { return dot(v,v); }
7534			float sdCappedCone( vec3 p, float h, float r1, float r2 )
7535			{
7536				vec2 q = vec2( length(p.xz), p.y );
7537				vec2 k1 = vec2(r2,h);
7538				vec2 k2 = vec2(r2-r1,2.0*h);
7539				vec2 ca = vec2(q.x-min(q.x,(q.y<0.0)?r1:r2), abs(q.y)-h);
7540				vec2 cb = q - k1 + k2*clamp( dot(k1-q,k2)/dot2(k2), 0.0, 1.0 );
7541				float s = (cb.x<0.0 && ca.y<0.0) ? -1.0 : 1.0;
7542				return s*sqrt( min(dot2(ca),dot2(cb)) );
7543			}
7544
7545			float sdCappedCylinder( vec3 p, float h, float r )
7546			{
7547				vec2 d = abs(vec2(length(p.xz),p.y)) - vec2(r,h);
7548				return min(max(d.x,d.y),0.0) + length(max(d,0.0));
7549			}
7550
7551			float maxBlend = 0.0;
7552			// compute potential from A (=24) spheres, using the bit flags in 'activeKey'
7553			// to avoid lookup/compute for inactive spheres
7554			// return field potential, side effect updates track,
7555			// compute and return +ve and -ve values separately
7556			void fillSpatialInner(
7557				float ii,
7558				float activeKey,
7559				vec3 corner,
7560				inout float sdf,
7561				inout float colorDivisor,
7562				inout vec4 trackColor
7563			) {
7564				for (float i = 0.; i < 24.; i++) {
7565					if (activeKey < 1.) break; // activeKey exhausted, no more active spheres
7566					activeKey *= 0.5;
7567					if (fract(activeKey) < 0.5) continue;
7568
7569					float iin = (i + ii + 0.5) * 0.010416666666666666;
7570					vec4 shape = shapePos(iin);
7571					vec4 quat = shapeQuat(iin);
7572					vec4 params1 = shapeParams1(iin);
7573					vec4 params2 = shapeParams2(iin);
7574
7575					vec3 p = corner - shape.xyz;
7576					applyQuaternionToVector(quat, p);
7577					p /= params2.z; // scale
7578					float d; // d in -1..1 coordinates
7579					switch (int(params1.x)) {
7580						case 0: d = sdSphere(p, params1.y); break;
7581						case 1: d = sdEllipsoid(p, params1.yzw); break;
7582						case 2: d = sdBox(p, params1.yzw); break;
7583						case 3: d = sdCappedCylinder(p, params1.y, params1.z); break;
7584						case 4: d = sdCappedCone(p, params1.y, params1.z, params1.w); break;
7585						case 5: d = sdTorus(p, params1.yz); break;
7586						case 6: d = sdCappedTorus(p, params1.yz, params1.w, params2.w); break;
7587					}
7588					d -= params2.y; // rounded edge
7589					d *= params2.z; // scale
7590
7591					float k = params2.x;
7592					float op = shape.w;
7593
7594					sdf = smoothOperation(shape.w, sdf, d, k);
7595
7596					float isNegativeOne = step(-1.5, op) * step(op, -0.5); // 1 when op == -1, 0 otherwise
7597					float colorCull = smoothstep(maxBlend, 0., -d);
7598					float cullFactor = mix(1.0, colorCull, isNegativeOne);
7599					trackColor *= cullFactor;
7600					colorDivisor *= cullFactor;
7601
7602					maxBlend = max(maxBlend, k);
7603
7604					k += 2. * INV_VOXEL_RESOLUTION; // avoid division by zero, and other color artifacts with very small k
7605					float nearness = smoothstep(k, 0., d);
7606
7607					vec4 color = shapeColor(iin);
7608					nearness *= float(color.a >= 0.);
7609
7610					colorDivisor += nearness;
7611					trackColor += color * nearness;
7612				}
7613			}
7614
7615			vec3 div;
7616			// compute potential from all spheres; collect +ve and =ve values separately
7617			// work in blocks of A*4 (=96) spheres, using the bit flags in 4 float channel 'activeKey' values
7618			// TODO check if extra vec3 output useful, not really used at present
7619			float fillSpatial(vec3 corner, inout vec4 trackColor) {
7620				float sdf = 1e3; // hack: initialize to large value
7621				float colorDivisor = 0.;
7622				// spatialPassTexture holds x=> lowi, x faster moving and y=> z, y faster moving
7623				float divyz = (div.y + div.z * spatialDivisions + 0.5) / (spatialDivisions2);
7624				for (float ii = 0.; ii < spatialn; ii++) {
7625					float i = ii * 96.;
7626
7627					vec4 activeKey = texture(spatialPassTexture, vec2((div.x * spatialn + ii + 0.5)/(spatialn * spatialDivisions), divyz));
7628					fillSpatialInner(i, activeKey.x, corner, sdf, colorDivisor, trackColor);
7629					fillSpatialInner(i+24., activeKey.y, corner, sdf, colorDivisor, trackColor);
7630					fillSpatialInner(i+48., activeKey.z, corner, sdf, colorDivisor, trackColor);
7631					fillSpatialInner(i+72., activeKey.w, corner, sdf, colorDivisor, trackColor);
7632				}
7633
7634				trackColor /= colorDivisor;
7635				return mix(sdf, 0.0, step(1e20 - 0.1, sdf));
7636			}
7637
7638			void main() {
7639				${OL.getxyzi}    // get xi yi zi from 2d position
7640
7641				vec3 xyzi = vec3(xi,yi,zi);
7642				vec3 corner = xyzi / VOXEL_RESOLUTION_SUB1 * 2. - 1.;  // -1..1 coords
7643
7644				div = floor(xyzi / VOXEL_RESOLUTION_SUB1 * spatialDivisionsSub1);
7645
7646				vec4 c = vec4(0.);
7647				float t = fillSpatial(corner, c);
7648
7649				pc_FragColor = vec4(t, packRGBAToVec3(c)); // RGB texture
7650			}
7651		`,uniforms:this.potentialPassUniforms})}voxelPassMaterial(){return new OO({name:"VoxelPass",fragmentShader:`
7652			precision highp float;
7653			layout(location = 0) out vec4 pc_FragColor;
7654			layout(location = 1) out vec4 numTris;
7655
7656			const float res = float(RES);
7657			const float VOXEL_RESOLUTION = pow(2., res);
7658			const float VOXEL_RESOLUTION_SUB1 = VOXEL_RESOLUTION - 1.; 
7659			const float Z_LAYERS_PER_ROW = ceil(pow(2., res / 2.));
7660			const float INV_VOXEL_RESOLUTION = 1.0 / VOXEL_RESOLUTION;
7661			uniform sampler2D numTrisTable; // 256 x 1
7662
7663			float keyi(float f000, float f100, float f010, float f110, float f001, float f101, float f011, float f111) {
7664				return (float(f000 < 0.) * 1.) +
7665							 (float(f100 < 0.) * 2.) +
7666							 (float(f010 < 0.) * 8.) +
7667							 (float(f110 < 0.) * 4.) +
7668							 (float(f001 < 0.) * 16.) +
7669							 (float(f101 < 0.) * 32.) +
7670							 (float(f011 < 0.) * 128.) +
7671							 (float(f111 < 0.) * 64.);
7672			}
7673
7674			${OL.lookup}
7675
7676			vec3 compNormi(float xi, float yi, float zi) {
7677				float dx = look(xi + 1., yi, zi, potentialPassTexture).r - look(xi - 1., yi, zi, potentialPassTexture).r;
7678				float dy = look(xi, yi + 1., zi, potentialPassTexture).r - look(xi, yi - 1., zi, potentialPassTexture).r;
7679				float dz = look(xi, yi, zi + 1., potentialPassTexture).r - look(xi, yi, zi - 1., potentialPassTexture).r;
7680				// if we allow (common) 0,0,0 case through then NaN can spread
7681				// eg r = vec4(compNorm i(???), 1.) will pollute r.w
7682				if (dx == 0.0 && dy == 0.0 && dz == 0.0) {
7683					return vec3(0.199, 0.299, 0.399);
7684				}
7685				return normalize(vec3(dx, dy, dz));
7686			}
7687
7688			void main() {
7689				${OL.getxyzi}    // get xi yi zi from 2d
7690
7691				vec3 normal = compNormi(xi, yi, zi);  // even if our key is -1 this may be needed by a neighbouring voxel
7692
7693				if (xi >= VOXEL_RESOLUTION_SUB1 || yi >= VOXEL_RESOLUTION_SUB1 || zi >= VOXEL_RESOLUTION_SUB1) {
7694					pc_FragColor = vec4(normal, 0.);
7695					numTris = vec4(0.);
7696					return;
7697				}
7698
7699				float
7700					f000 = look(xi, yi, zi, potentialPassTexture).r,
7701					f100 = look(xi+1., yi, zi, potentialPassTexture).r,
7702					f010 = look(xi, yi+1., zi, potentialPassTexture).r,
7703					f110 = look(xi+1., yi+1., zi, potentialPassTexture).r,
7704					f001 = look(xi, yi, zi+1., potentialPassTexture).r,
7705					f101 = look(xi+1., yi, zi+1., potentialPassTexture).r,
7706					f011 = look(xi, yi+1., zi+1., potentialPassTexture).r,
7707					f111 = look(xi+1., yi+1., zi+1., potentialPassTexture).r;
7708				float key = keyi(f000, f100, f010, f110, f001, f101, f011, f111);
7709
7710				pc_FragColor = vec4(normal, key);
7711
7712				numTris = texture(numTrisTable, vec2((key + 0.5) / 256., 0.5));
7713			}
7714		`,uniforms:this.voxelPassUniforms})}
7714patchVertexShaderForShapeBlend(e){let t=`
7715		#ifdef SHAPEBLEND 
7716			precision highp sampler2D;
7717
7718			uniform float isol;
7719
7720			uniform sampler2D triTable;     // 256 x 16
7721			uniform sampler2D pyramidTexture1;
7722			uniform vec2 pyramidTexture1Size;
7723			uniform sampler2D pyramidTexture2;
7724			uniform vec2 pyramidTexture2Size;
7725
7726			const vec2 halfPixelOffset = vec2(0.5, 0.5);
7727
7728			const vec2 rShift = vec2(0., 1.);
7729			const vec2 gShift = vec2(1., 1.);
7730			const vec2 bShift = vec2(1., 0.);
7731
7732			const float res = float(RES);
7733			const float VOXEL_RESOLUTION = pow(2., res);
7734			const float Z_LAYERS_PER_ROW = ceil(pow(2., res / 2.));
7735			const float INV_VOXEL_RESOLUTION = 1.0 / VOXEL_RESOLUTION;
7736
7737			const float scale_factor = 2.;
7738
7739			#if SHAPEBLEND == 5
7740				const float levelShiftX[7] = float[7](4., 6., 12., 24., 48., 96., 192.);
7741				const float scale = 8. * scale_factor;
7742				const vec3 originOffset = vec3(16.);
7743			#elif SHAPEBLEND == 7
7744				const float levelShiftX[10] = float[10](4., 6., 12., 24., 48., 96., 192., 384., 768., 1536.); 
7745				const float scale = 2. * scale_factor;
7746				const vec3 originOffset = vec3(64.);
7747			#elif SHAPEBLEND == 8
7748				const float levelShiftX[11] = float[11](4., 8., 16., 32., 64., 128., 256., 512., 1024., 2048., 4096.);
7749				const float scale = scale_factor;
7750				const vec3 originOffset = vec3(128.);
7751			#else
7752				const float levelShiftX[8] = float[8](4., 8., 16., 32., 64., 128., 256., 512.);
7753				const float scale = 4. * scale_factor;
7754				const vec3 originOffset = vec3(32.);
7755			#endif
7756
7757			${OL.lookup}
7758
7759			const vec3 offsets[24] = vec3[](
7760				vec3(0., 0., 0.), vec3(1., 0., 0.),
7761				vec3(1., 0., 0.), vec3(1., 1., 0.),
7762				vec3(0., 1., 0.), vec3(1., 1., 0.),
7763				vec3(0., 0., 0.), vec3(0., 1., 0.),
7764				vec3(0., 0., 1.), vec3(1., 0., 1.),
7765				vec3(1., 0., 1.), vec3(1., 1., 1.),
7766				vec3(0., 1., 1.), vec3(1., 1., 1.),
7767				vec3(0., 0., 1.), vec3(0., 1., 1.),
7768				vec3(0., 0., 0.), vec3(0., 0., 1.),
7769				vec3(1., 0., 0.), vec3(1., 0., 1.),
7770				vec3(1., 1., 0.), vec3(1., 1., 1.),
7771				vec3(0., 1., 0.), vec3(0., 1., 1.)
7772			);
7773
7774			vec2 computeShiftedPosition1(vec2 xy, float levelOriginX) {
7775				vec2 xyShifted = xy;
7776				xyShifted.x += levelOriginX;
7777				return (xyShifted + halfPixelOffset) / pyramidTexture1Size;
7778			}
7779
7780			vec2 computeShiftedPosition2(vec2 xy, float levelOriginX) {
7781				vec2 xyShifted = xy;
7782				xyShifted.x += levelOriginX;
7783				return (xyShifted + halfPixelOffset) / pyramidTexture2Size;
7784			}
7785
7786			vec4 unpackVec3ToRGBA(vec3 vec) {
7787				uint combined = uint(vec.x * 65535.0 + 0.5); // Add 0.5 for rounding
7788				float g = float(combined & uint(0xFF)) * 0.00392156862; // 1/255
7789				float r = float((combined >> 8) & uint(0xFF)) * 0.00392156862; 
7790		
7791				return vec4(r, g, vec.y, vec.z);
7792			}
7793
7794			out vec4 marchColor;
7795			// end of marchvertPre
7796		#endif
7797		`,i=`
7798		#ifdef SHAPEBLEND
7799			float triIndex = floor(float(gl_VertexID/3));
7800			float vertexIndex = float(gl_VertexID);
7801			
7802			// Initial pyramid lookup
7803			float levelOriginX1 = pyramidTexture1Size.x - 2.;
7804			float levelOriginX2 = pyramidTexture2Size.x - 1.;
7805			vec2 xy = vec2(0.);
7806			vec4 lookUp = texture(pyramidTexture2, computeShiftedPosition2(xy, levelOriginX2));
7807			
7808			// Early exit check
7809			if (triIndex >= lookUp.r) return;
7810			
7811			// Optimize loop variables
7812			float start = 0.;
7813			vec4 triIndexVec = vec4(triIndex);
7814			
7815			// Main position computation loop
7816			for (int i = 0; i < LOOP;) {
7817				// Compute boundaries
7818				vec4 ends = lookUp + vec4(start);
7819				vec4 starts = vec4(ends.gba, start);
7820				vec4 check = vec4(greaterThanEqual(triIndexVec, starts)) * 
7821											vec4(lessThan(triIndexVec, ends));
7822				
7823				// Update position
7824				xy *= 2.;
7825				xy += check.r * rShift + check.g * gShift + check.b * bShift;
7826				
7827				// Update loop variables
7828				start = dot(check, starts);
7829				levelOriginX2 -= levelShiftX[i];
7830				
7831				// Update lookup
7832				lookUp = texture(pyramidTexture1, computeShiftedPosition1(xy, levelOriginX1));
7833				i++;
7834
7835				ends = lookUp + vec4(start);
7836				starts = vec4(ends.gba, start);
7837				check = vec4(greaterThanEqual(triIndexVec, starts)) * 
7838											vec4(lessThan(triIndexVec, ends));
7839				
7840				// Update position
7841				xy *= 2.;
7842				xy += check.r * rShift + check.g * gShift + check.b * bShift;
7843				
7844				// Update loop variables
7845				start = dot(check, starts);
7846				levelOriginX1 -= levelShiftX[i];
7847				
7848				// Update lookup
7849				lookUp = texture(pyramidTexture2, computeShiftedPosition2(xy, levelOriginX2));
7850
7851				i++;
7852			}
7853
7854			#if HALF == 1
7855				vec4 ends = lookUp + vec4(start);
7856				vec4 starts = vec4(ends.gba, start);
7857				vec4 check = vec4(greaterThanEqual(triIndexVec, starts)) * vec4(lessThan(triIndexVec, ends));
7858			
7859				// Update position
7860				xy *= 2.;
7861				xy += check.r * rShift + check.g * gShift + check.b * bShift;
7862			
7863				// Update loop variables
7864				start = dot(check, starts);
7865			#endif
7866			
7867			// Compute final coordinates
7868			vec3 gridPos;
7869			gridPos.x = mod(xy.x, VOXEL_RESOLUTION);
7870			gridPos.y = mod(xy.y, VOXEL_RESOLUTION);
7871			gridPos.z = floor(xy.x * INV_VOXEL_RESOLUTION) + 
7872									floor(xy.y * INV_VOXEL_RESOLUTION) * Z_LAYERS_PER_ROW;
7873			
7874			// Vertex key computation
7875			vertexIndex -= start * 3.;
7876			float vk = vertexIndex * 0.0625 + 0.03125; // Optimized division by 16 and addition of 1/32
7877			
7878			// Voxel lookup and edge computation
7879			vec4 voxel = look(gridPos.x, gridPos.y, gridPos.z, voxelPassTexture);
7880			float key = (voxel.w + 0.5) * 0.00390625; // Optimized division by 256
7881			
7882			// Edge lookup and offset computation
7883			float edgeNum = texture(triTable, vec2(vk, key)).x;
7884			int edgeIndex = int(edgeNum) * 2;
7885			
7886			// Compute edge positions
7887			vec3 p1 = gridPos + offsets[edgeIndex];
7888			vec3 p2 = gridPos + offsets[edgeIndex + 1];
7889			
7890			// Compute potentials and normals
7891			vec4 potential1 = look(p1.x, p1.y, p1.z, potentialPassTexture);
7892			vec4 potential2 = look(p2.x, p2.y, p2.z, potentialPassTexture);
7893			
7894			// Final position and normal computation
7895			float mu = potential1.r / (potential1.r - potential2.r);
7896
7897			marchColor = mix(
7898				unpackVec3ToRGBA(potential1.gba),
7899				unpackVec3ToRGBA(potential2.gba),
7900				mu
7901			);
7902
7903			transformed = p1 + (p2 - p1) * mu;
7904			transformed -= originOffset;
7905			transformed *= scale;
7906			vec4 data1 = look(p1.x, p1.y, p1.z, voxelPassTexture);
7907			vec4 data2 = look(p2.x, p2.y, p2.z, voxelPassTexture);
7908			objectNormal = normalize(mix(data1.xyz, data2.xyz, mu));
7909			transformedNormal = normalMatrix * objectNormal;
7910			#ifndef FLAT_SHADED
7911				vNormal = transformedNormal;
7912			#endif
7913		#endif
7914		`;e.vertexShader=t+e.vertexShader.replace("#include <project_vertex>",i+`
7915#include <project_vertex>`);let r=e.fragmentShader.match(/vec3 diffuseColor[^\n]*\n/);if(!r)return;let a=`
7916		#ifdef SHAPEBLEND_C
7917			#if SHAPEBLEND_C == 1
7918				${r[0].replace(/nodeU0,/g,"marchColor.rgb,").replace(/nodeU\d+(?=,g_uid\d+_calpha\))/g,"marchColor.a")}
7919			#else
7920				${r[0]}
7921			#endif
7922		#else
7923			${r[0]}
7924		#endif
7925		`;e.fragmentShader=`in vec4 marchColor;
7926`+e.fragmentShader.replace(r[0],a),Object.assign(e.uniforms,this.marchPassUniforms)}initDebugPass(e){console.log("fboToDebug.width",e.width,e.height),this.geometry=new sp(e.width,e.height),this.geometry.userData={parameters:{width:4,height:4}};let t={inputTexture:{value:Array.isArray(e.texture)?e.texture[1]:e.texture},pyramidTextureSize:{value:void 0}},i=e=>{e.vertexShader=`
7927				precision highp float;
7928
7929				varying vec2 vUv;
7930
7931				void main() {
7932						gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
7933						vUv = uv;
7934				}
7935			`,e.fragmentShader=`
7936				layout(location = 1) out vec4 gVelocity;
7937
7938				precision highp float;
7939				
7940				uniform sampler2D inputTexture;
7941				varying vec2 vUv;
7942
7943				uniform vec2 pyramidTextureSize;
7944
7945				void main() {
7946						// Sample the input texture using UV coordinates
7947						gl_FragColor = texture(inputTexture, vUv);
7948						gVelocity = vec4(0.0);
7949				}
7950			`,t.pyramidTextureSize.value=new tJ(this.pyramidRenderTarget.width,this.pyramidRenderTarget.height),Object.assign(e.uniforms,t)};this.material.shapeBlendhack=i,this.material.root.shapeBlendhack=i}},Oz=OB;Oz.streamCompaction=new OR;var OF=new iZ,ON=new iZ,OU=new ix,Ok=new ib,OV=new ib,Oj=new ix;function OG(e,t=0){let i=this.children.length;for(;i--;){let r=this.children[i];bX.is(r)&&OH.call(r,e,t+1)}}function OH(e,t=0){if(!0!==e(this,t)){let i=this.children.length;for(;i--;){let r=this.children[i];bX.is(r)&&OH.call(r,e,t+1)}}}function OW(){if(void 0===this.shapesDataTexture.value){let e=new nT(new Float32Array(1920),96,5,1023,1015);this.shapesDataTexture.value=e}let e=this.shapesDataTexture.value,t=e.image.data;e.needsUpdate=!0;let i=0,r=this.data.geometry.blendRange,a=OF.copy(this.matrixWorld).invert(),o=0;OG.call(this,e=>{let h;if(!1===e.visible)return!0;
7950if(e instanceof CT||e instanceof C8||e instanceof OC)return;h=e instanceof b3?e.object:e;let c=e.data?.cloner;if(_S.is(e)&&c&&!c.hideBase&&"radial"!==c.type&&!0!==c.disabled||!(h instanceof EZ))return;let d=h.geometry.userData.parameters,u=d.shapeBlendNode;if(void 0===u)return;if(ON.multiplyMatrices(a,e.matrixWorld).decompose(OV,OU,Ok),"TorusGeometry"===d.type&&360!==d.arc){let e=d.arc*Math.PI/180;e/=4,OU.multiply(Oj.set(0,0,Math.sin(e),Math.cos(e)))}let p=u.overrideGlobalBlend?u.blendRange:r;p=p/this.bboxSize*2,t[4*o]=(OV.x-this.bboxOffset)/this.bboxSize*2,t[4*o+1]=(OV.y-this.bboxOffset)/this.bboxSize*2,t[4*o+2]=(OV.z-this.bboxOffset)/this.bboxSize*2,t[4*o+3]=0===u.operation?1:2===u.operation?-1:-2,t[384+4*o]=-OU.x,t[384+4*o+1]=-OU.y,t[384+4*o+2]=-OU.z,t[384+4*o+3]=OU.w;let f=new Float32Array(4),m=0;if("SphereGeometry"===d.type)d.width===d.height&&d.width===d.depth?f[0]=0:f[0]=1,f[1]=d.width/this.bboxSize,f[2]=d.height/this.bboxSize,f[3]=d.depth/this.bboxSize,i=Math.max(i,f[1]*Ok.x+p,f[2]*Ok.x+p,f[3]*Ok.x+p);else if("CubeGeometry"===d.type){m=d.cornerRadius;let e=d.width,t=d.height,r=d.depth;f[0]=2,f[1]=(e-2*m)/this.bboxSize,f[2]=(t-2*m)/this.bboxSize,f[3]=(r-2*m)/this.bboxSize,i=Math.max(i,Math.sqrt(e**2+t**2+r**2)/this.bboxSize*Ok.x+p)}else if("CylinderGeometry"===d.type){m=d.cornerRadius;let e=d.height,t=d.radiusBottom,r=d.radiusTop;if(r>=t){let i=(Math.PI/2-Math.atan2(r-t,e))/2;r-=m/Math.tan(i),t-=m*Math.tan(i)}else if(t>r){let i=(Math.PI/2-Math.atan2(t-r,e))/2;r-=m*Math.tan(i),t-=m/Math.tan(i)}f[1]=(d.height-2*m)/this.bboxSize,t===r?(f[0]=3,f[2]=t/this.bboxSize*2):(f[0]=4,f[2]=t/this.bboxSize*2,f[3]=r/this.bboxSize*2),i=Math.max(i,4*f[1]*Ok.x+p)}else if("TorusGeometry"===d.type){if(f[0]=5,f[1]=(d.width-d.depth)/this.bboxSize,f[2]=d.depth/this.bboxSize,360!==d.arc){f[0]=6,f[3]=f[1],t[1152+4*o+3]=f[2];let e=2*Math.atan2(f[2]/2,f[1]),i=d.arc*Math.PI/180/2-e;f[1]=Math.sin(i),f[2]=Math.cos(i)}i=Math.max(i,d.width*Ok.x/this.bboxSize+p)}t.set(f,768+4*o),t[1152+4*o]=p,t[1152+4*o+1]=m/this.bboxSize*2,t[1152+4*o+2]=Ok.x;let g=h.material,v=g.uniforms.nodeU0.node.value,y=g.uniforms.nodeU1.value;0===u.operation||u.useColor||(y=-1),t[1536+4*o]=v.r,t[1536+4*o+1]=v.g,t[1536+4*o+2]=v.b,t[1536+4*o+3]=y,y<1&&1===this.material.defines.SHAPEBLEND_C&&(this.material.transparent=!0),o++}),this.npart=o,this.spatialPassUniforms.span.value=1.4*i}function Oq(e,t){let i=!1,r=512&e.layers.mask,a=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return o.length>0&&(e.layers.set(8),a.length>0&&e.layers.enable(3),i=!0,EJ(e),EK(e)),0===a.length&&0===o.length&&e.layers.set(0),r&&e.layers.set(9),e instanceof EH&&e.needsAO&&e.layers.enable(5),i}function OX(e,t){if(!t.layers)return!1;let i=512&e.layers.mask,r=!1,a=t.getLayersOfType("transmission").filter(e=>e.data.visible),o=t.getLayersOfType("outline").filter(e=>e.data.visible);return a.length>0&&(e.layers.set(3),o.length>0&&e.layers.enable(8),r=!0),0===a.length&&0===o.length&&e.layers.set(0),i&&e.layers.set(9),e.needsAO&&e.layers.enable(5),r}var OY=new lL,OQ=new iZ,OZ=new iQ;function OK(e,t,i,r=!1){let a=e.cloner;if(a)for(let o of a.children){let a=OQ.copy(o.matrixWorld).invert(),h=OZ.copy(t.ray).applyMatrix4(a),c=e.matrixWorld;h.applyMatrix4(c),OY.set(h.origin,h.direction),OY.near=t.near,OY.far=t.far;let d=OY.intersectObject(e,!1);d.length>0&&i.push({...d[0],object:r?o:e})}}var OJ=class{constructor(){this._constraints=new Map}setConstraint(e,t){null===t?this._constraints.delete(e):this._constraints.set(e,t)}removeDependencies(e){this._constraints.delete(e)}applyConstraints(e){let t=new Set;this._constraints.forEach((i,r)=>{let a=[r,i],o=i;for(;this._constraints.has(o);){if(o=this._constraints.get(o),a.includes(o)){console.warn(`circular dependency detected: ${a.join(" -> ")}`);break}t.has(o)||a.push(o)}for(let i=a.length-2;i>=0;i--)if(!t.has(a[i])){let r=e.find(a[i]);r?r.applyPathSnapping(e):console.warn(`missing entity ${a[i]}`),t.add(a[i])}})}findDependency(e,t){let i=e;for(;this._constraints.has(i);)if((i=this._constraints.get(i))===t)return!0;return!1}},O$=class{};function O0(e){let t,i,r,a,o,h,c,d,u,p,f,m,g,v,y;function x(e,t,h){let c=new Float32Array(p,o,3*i);r=0;let d=new Uint32Array(p,a,i);for(let i=0;i<h.length-1;i++){let a=t[i],o=e[i].elements,u=a.filter(e=>e.enabled&&"Include"===e.mode).map(e=>"Box"===e.type?w(e):_(e)),p=a.filter(e=>e.enabled&&"Exclude"===e.mode).map(e=>"Box"===e.type?w(e):_(e));for(let e=h[i];e<h[i+1];e++){let t=m[3*e],i=m[3*e+1],a=m[3*e+2];
7950if((0===u.length||b(t,i,a,u))&&(0===p.length||!b(t,i,a,p))){let h=1/(o[3]*t+o[7]*i+o[11]*a+o[15]);c[3*r]=(o[0]*t+o[4]*i+o[8]*a+o[12])*h,c[3*r+1]=(o[1]*t+o[5]*i+o[9]*a+o[13])*h,c[3*r+2]=(o[2]*t+o[6]*i+o[10]*a+o[14])*h,d[r]=e,r++}}}}function b(e,t,i,r,a){return r["Intersect"===a?"every":"some"](r=>{var a,o,h,c,d,u,p,f;let m,g,v,y,x,b,w;let S=(a=r.invRotationMatrix,m=e-(o=r.cropCenter)[0],g=t-o[1],v=i-o[2],y=1/(a[3]*m+a[7]*g+a[11]*v+a[15]),{x:(a[0]*m+a[4]*g+a[8]*v+a[12])*y+o[0],y:(a[1]*m+a[5]*g+a[9]*v+a[13])*y+o[1],z:(a[2]*m+a[6]*g+a[10]*v+a[14])*y+o[2]});return Array.isArray(r)?(h=S.x,c=S.y,d=S.z,h>=r[0]&&h<=r[3]&&c>=r[1]&&c<=r[4]&&d>=r[2]&&d<=r[5]):(u=S.x,p=S.y,f=S.z,x=(u-r.cropCenter[0])*r.invRadiusX,x*x+(b=(p-r.cropCenter[1])*r.invRadiusY)*b+(w=(f-r.cropCenter[2])*r.invRadiusZ)*w<=1)})}function w(e){let t=e.cropSize[0]/2,i=e.cropSize[1]/2,r=e.cropSize[2]/2;return Object.assign([e.cropCenter[0]-t,e.cropCenter[1]-i,e.cropCenter[2]-r,e.cropCenter[0]+t,e.cropCenter[1]+i,e.cropCenter[2]+r],{invRotationMatrix:S(e.cropRotation),cropCenter:e.cropCenter})}function S(e){let t=[],i=e[0]*Math.PI/180,r=e[1]*Math.PI/180,a=e[2]*Math.PI/180,o=Math.cos(i),h=Math.sin(i),c=Math.cos(r),d=Math.sin(r),u=Math.cos(a),p=Math.sin(a),f=o*u,m=o*p,g=h*u,v=h*p;return t[0]=c*u,t[1]=-c*p,t[2]=d,t[4]=m+g*d,t[5]=f-v*d,t[6]=-h*c,t[8]=v-f*d,t[9]=g+m*d,t[10]=o*c,t[12]=0,t[13]=0,t[14]=0,t[3]=0,t[7]=0,t[11]=0,t[15]=1,t}function _(e){let t=2/e.cropSize[0],i=2/e.cropSize[1],r=2/e.cropSize[2],a=S(e.cropRotation);return{invRadiusX:t,invRadiusY:i,invRadiusZ:r,cropCenter:e.cropCenter,invRotationMatrix:a}}e.onmessage=S=>{if(S.data.getCroppedIndexes){let t=new Uint32Array(function(e,t){let i=[],r=t.filter(e=>e.enabled&&"Include"===e.mode).map(e=>"Box"===e.type?w(e):_(e)),a=t.filter(e=>e.enabled&&"Exclude"===e.mode).map(e=>"Box"===e.type?w(e):_(e)),o=e.length;for(let t=0;t<o;t+=3){let o=e[t],h=e[t+1],c=e[t+2];(0===r.length||b(o,h,c,r))&&(0===a.length||!b(o,h,c,a))||i.push(t/3)}return i}(new Float32Array(S.data.positions),S.data.crops)).buffer;e.postMessage({outOfBoundsIndexes:t},[t])}else if(S.data.positions)m=new Float32Array(S.data.positions),v=S.data.meshMatrixWorlds,y=S.data.cropsArray,g=S.data.meshIndexIntervals,x(v,y,g),e.postMessage({sortSetupComplete:!0});else if(S.data.sort||S.data.newMatrixWorlds||S.data.newCropsArray)(S.data.newMatrixWorlds||S.data.newCropsArray)&&(y=S.data.newCropsArray||y,x(v=S.data.newMatrixWorlds||v,y,g)),function(m){let g,v=new Float64Array(p,h,16);for(let e=0;e<16;e++)v[e]=m[e];if(r>1){t.exports.sortIndexes(a,o,u,h,c,d,f.DepthMapRange,r);let e=new Uint32Array(r);g=e.buffer,e.set(new Uint32Array(p,d,r))}else if(1===r){let e=new Uint32Array(r);e[0]=new Uint32Array(p,a,i)[0],g=e.buffer}else g=new ArrayBuffer(0);e.postMessage({sortDone:!0,indexesBuffer:g},[g])}(S.data.sort.view,S.data.sort.cameraPosition);else if(S.data.init){f=S.data.init.Constants,i=S.data.init.splatCount;
7950let r=f.BytesPerInt,m=3*f.BytesPerFloat,g=new Uint8Array(S.data.init.sorterWasmBytes),v=Math.floor((i*(r+m)+(i*f.BytesPerInt*2+f.DepthMapRange*f.BytesPerInt*2)+32*f.MemoryPageSize)/f.MemoryPageSize)+1,y={module:{},env:{memory:new WebAssembly.Memory({initial:2*v,maximum:3*v,shared:!0})}};WebAssembly.compile(g).then(e=>WebAssembly.instantiate(e,y)).then(g=>{t=g,a=0,d=(c=(u=(h=(o=i*r)+i*m)+16*f.BytesPerFloat*2)+i*f.BytesPerInt)+f.DepthMapRange*f.BytesPerInt,p=y.env.memory.buffer,e.postMessage({sortSetupPhase1Complete:!0})})}}}tM(O$,"DepthMapRange",65536),tM(O$,"MemoryPageSize",65536),tM(O$,"BytesPerFloat",4),tM(O$,"BytesPerInt",4);var O1=(ta=new Int32Array((ts=new Float32Array(1)).buffer),function(e){return ts[0]=e,ta[0]}),O2=new tJ;function O3(e){let t=!1;return e.scene.objects.traverse((e,i)=>{if(!1===i.visible)return!0;"Splat"===i.type&&(t=!0)}),t}var O4,O5,O6,O8,O9,O7=class extends r${constructor(e,t,i,r,a=!1,o=1,h,c){super(i,r),this.splatCount=t,this.meshIndexIntervals=h,this.meshMatrixWorlds=c,this.splatBuffers=e,this.geometry=i,this.material=r,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=o,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,t,i=!1,r=1,a,o){let h=O7.buildGeomtery(t),c=O7.buildMaterial(a);return new O7(e,t,h,c,i,r,a,o)}static buildMaterial(e){let t=`
7951            precision highp float;
7952            #include <common>
7953
7954            attribute uint splatIndex;
7955
7956            uniform highp sampler2D covariancesTexture;
7957            uniform highp usampler2D centersColorsTexture;
7958            uniform vec2 focal;
7959            uniform vec2 viewport;
7960            uniform vec2 basisViewport;
7961            uniform vec2 covariancesTextureSize;
7962            uniform vec2 centersColorsTextureSize;
7963						uniform highp sampler2D meshMatrixWorldsTexture;
7964						uniform uint meshIndexIntervals[257];
7965						uniform float orthoZoom;
7966
7967            varying vec4 vColor;
7968            varying vec2 vUv;
7969
7970            varying vec2 vPosition;
7971
7972            const vec4 encodeNorm4 = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0);
7973            const uvec4 mask4 = uvec4(uint(0x000000FF), uint(0x0000FF00), uint(0x00FF0000), uint(0xFF000000));
7974            const uvec4 shift4 = uvec4(0, 8, 16, 24);
7975            vec4 uintToRGBAVec (uint u) {
7976               uvec4 urgba = mask4 & u;
7977               urgba = urgba >> shift4;
7978               vec4 rgba = vec4(urgba) * encodeNorm4;
7979               return rgba;
7980            }
7981
7982            vec2 getDataUV(in int stride, in int offset, in vec2 dimensions) {
7983                vec2 samplerUV = vec2(0.0, 0.0);
7984                float d = float(splatIndex * uint(stride) + uint(offset)) / dimensions.x;
7985                samplerUV.y = float(floor(d)) / dimensions.y;
7986                samplerUV.x = fract(d);
7987                return samplerUV;
7988            }
7989
7990            void main () {
7991                uvec4 sampledCenterColor = texture(centersColorsTexture, getDataUV(1, 0, centersColorsTextureSize));
7992                vec3 splatCenter = uintBitsToFloat(uvec3(sampledCenterColor.gba));
7993                vColor = uintToRGBAVec(sampledCenterColor.r);
7994
7995                vPosition = position.xy * 2.0;
7996
7997								uint meshIndex;
7998								for (int i = 1; i < 257; i++) {
7999									if (splatIndex < meshIndexIntervals[i]) {
8000										meshIndex = uint(i - 1);
8001										break;
8002									}
8003								}
8004
8005								float strideMulmeshIndex = float(4u*meshIndex);
8006								float meshMatrixWorldsTextureLength = float(256*4);
8007
8008								mat4 modelMat = mat4(
8009									texture(meshMatrixWorldsTexture, vec2((strideMulmeshIndex+0.0)/meshMatrixWorldsTextureLength, 0)),
8010									texture(meshMatrixWorldsTexture, vec2((strideMulmeshIndex+1.0)/meshMatrixWorldsTextureLength, 0)),
8011									texture(meshMatrixWorldsTexture, vec2((strideMulmeshIndex+2.0)/meshMatrixWorldsTextureLength, 0)),
8012									texture(meshMatrixWorldsTexture, vec2((strideMulmeshIndex+3.0)/meshMatrixWorldsTextureLength, 0))
8013								);
8014								mat4 modelViewMat = viewMatrix * modelMat;
8015								vec4 viewCenter = modelViewMat * vec4(splatCenter, 1.0); 
8016                vec4 clipCenter = projectionMatrix * viewCenter;
8017
8018                vec2 sampledCovarianceA = texture(covariancesTexture, getDataUV(3, 0, covariancesTextureSize)).rg;
8019                vec2 sampledCovarianceB = texture(covariancesTexture, getDataUV(3, 1, covariancesTextureSize)).rg;
8020                vec2 sampledCovarianceC = texture(covariancesTexture, getDataUV(3, 2, covariancesTextureSize)).rg;
8021
8022                vec3 cov3D_M11_M12_M13 = vec3(sampledCovarianceA.rg, sampledCovarianceB.r);
8023                vec3 cov3D_M22_M23_M33 = vec3(sampledCovarianceB.g, sampledCovarianceC.rg);
8024
8025                // Compute the 2D covariance matrix from the upper-right portion of the 3D covariance matrix
8026                mat3 Vrk = mat3(
8027                    cov3D_M11_M12_M13.x, cov3D_M11_M12_M13.y, cov3D_M11_M12_M13.z,
8028                    cov3D_M11_M12_M13.y, cov3D_M22_M23_M33.x, cov3D_M22_M23_M33.y,
8029                    cov3D_M11_M12_M13.z, cov3D_M22_M23_M33.y, cov3D_M22_M23_M33.z
8030                );
8031                float s = 1.0 / (viewCenter.z * viewCenter.z);
8032
8033                mat3 W = transpose(mat3(modelViewMat));
8034                mat3 T = orthoZoom > 0.0 ? W : W * mat3(
8035									focal.x / viewCenter.z, 0., -(focal.x * viewCenter.x) * s,
8036									0., focal.y / viewCenter.z, -(focal.y * viewCenter.y) * s,
8037									0., 0., 0.
8038								);
8039                mat3 cov2Dm = transpose(T) * Vrk * T;
8040                cov2Dm[0][0] += 0.3;
8041                cov2Dm[1][1] += 0.3;
8042
8043                // We are interested in the upper-left 2x2 portion of the projected 3D covariance matrix because
8044                // we only care about the X and Y values. We want the X-diagonal, cov2Dm[0][0],
8045                // the Y-diagonal, cov2Dm[1][1], and the correlation between the two cov2Dm[0][1]. We don't
8046                // need cov2Dm[1][0] because it is a symetric matrix.
8047                vec3 cov2Dv = vec3(cov2Dm[0][0], cov2Dm[0][1], cov2Dm[1][1]);
8048
8049                vec3 ndcCenter = clipCenter.xyz / clipCenter.w;
8050
8051                // We now need to solve for the eigen-values and eigen vectors of the 2D covariance matrix
8052                // so that we can determine the 2D basis for the splat. This is done using the method described
8053                // here: https://people.math.harvard.edu/~knill/teaching/math21b2004/exhibits/2dmatrices/index.html
8054                //
8055                // This is a different approach than in the original work at INRIA. In that work they compute the
8056                // max extents of the 2D covariance matrix in screen space to form an axis aligned boun
8056ding rectangle
8057                // which forms the geometry that is actually rasterized. They then use the inverse 2D covariance
8058                // matrix (called 'conic') to determine fragment opacity.
8059                float a = cov2Dv.x;
8060                float d = cov2Dv.z;
8061                float b = cov2Dv.y;
8062                float D = a * d - b * b;
8063                float trace = a + d;
8064                float traceOver2 = 0.5 * trace;
8065                float term2 = sqrt(trace * trace / 4.0 - D);
8066                float eigenValue1 = traceOver2 + term2;
8067								float eigenValue2 = max(traceOver2 - term2, 0.00); // prevent negative eigen value
8068
8069                const float maxSplatSize = 1024.0;
8070                vec2 eigenVector1 = normalize(vec2(b, eigenValue1 - a));
8071                // since the eigen vectors are orthogonal, we derive the second one from the first
8072                vec2 eigenVector2 = vec2(eigenVector1.y, -eigenVector1.x);
8073                vec2 basisVector1 = eigenVector1 * min(sqrt(2.0 * eigenValue1), maxSplatSize);
8074                vec2 basisVector2 = eigenVector2 * min(sqrt(2.0 * eigenValue2), maxSplatSize);
8075
8076                vec2 ndcOffset = vec2(vPosition.x * basisVector1 + vPosition.y * basisVector2) * basisViewport;
8077
8078								if (orthoZoom > 0.0) {
8079									ndcOffset *= orthoZoom;
8080								}
8081
8082                gl_Position = vec4(ndcCenter.xy + ndcOffset, ndcCenter.z, 1.0);
8083            }`,i=`
8084            precision highp float;
8085            #include <common>
8086
8087            uniform vec3 debugColor;
8088
8089            varying vec4 vColor;
8090            varying vec2 vUv;
8091
8092            varying vec2 vPosition;
8093						layout(location = 1) out vec4 gVelocity; 
8094
8095            void main () {
8096                // compute the negative squared distance from the center of the splat to the
8097                // current fragment in the splat's local space.
8098                float A = -dot(vPosition, vPosition);
8099                if (A < -4.0) discard;
8100                vec3 color = vColor.rgb;
8101                A = exp(A) * vColor.a;
8102                gl_FragColor = vec4(color.rgb, A);
8103								gVelocity = vec4(0.0); // so it is ignored by TAA
8104            }`;return new r9({uniforms:{covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new tJ},viewport:{type:"v2",value:new tJ},basisViewport:{type:"v2",value:new tJ},debugColor:{type:"v3",value:new ia},covariancesTextureSize:{type:"v2",value:new tJ(1024,1024)},centersColorsTextureSize:{type:"v2",value:new tJ(1024,1024)},orthoZoom:{type:"f",value:-1}},vertexShader:t,fragmentShader:i,transparent:!0,alphaTest:1,blending:1,depthTest:!0,depthWrite:!1,side:2})}static buildGeomtery(e){let t=new rU;t.setIndex([0,1,2,0,2,3]);let i=new rT(new Float32Array(12),3);t.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 r=new lv().copy(t),a=new nI(new Uint32Array(e),1,!1);return a.setUsage(35048),r.setAttribute("splatIndex",a),r.instanceCount=e,r}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(e=>e.buildPreComputedBuffers()),this.covariances=new Float32Array(6*this.splatCount),this.colors=new Uint8Array(4*this.splatCount),this.centers=new Float32Array(3*this.splatCount);let e=0,t=0,i=0;for(let r of this.splatBuffers){let a=r.nsplats;this.colors.subarray(e,e+4*a).set(r.colorsA),e+=4*a,this.centers.subarray(t,t+3*a).set(r.decoded.xyz.denormDequant().data),t+=3*a,this.covariances.subarray(i,i+6*a).set(new Float32Array(r.precomputedCovarianceBufferData)),i+=6*a}}allocateAndStoreLocalSplatDataInTextures(){let e,t,i=this.splatCount,r=new tJ(4096,1024);for(;r.x*r.y*2<6*i;)r.y*=2;let a=new tJ(4096,1024);for(;a.x*a.y*4<4*i;)a.y*=2;if(this.halfPrecisionCovariancesOnGPU){t=new Uint16Array(r.x*r.y*2);for(let e=0;e<this.covariances.length;e++)t[e]=l3.toHalfFloat(this.covariances[e]);e=new nT(t,r.x,r.y,1030,1016)}
8104else(t=new Float32Array(r.x*r.y*2)).set(this.covariances),e=new nT(t,r.x,r.y,1030,1015);e.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=e,this.material.uniforms.covariancesTextureSize.value.copy(r);let o=new Uint32Array(a.x*a.y*4);for(let e=0;e<i;e++){var h;let t=4*e,i=3*e,r=4*e;o[r]=(h=this.colors[t],h+(this.colors[t+1]<<8)+(this.colors[t+2]<<16)+(this.colors[t+3]<<24)),o[r+1]=O1(this.centers[i]),o[r+2]=O1(this.centers[i+1]),o[r+3]=O1(this.centers[i+2])}let c=new nT(o,a.x,a.y,1033,1014);c.internalFormat="RGBA32UI",c.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=c,this.material.uniforms.centersColorsTextureSize.value.copy(a);let d=new Float32Array(4096);for(let e=0;e<this.meshMatrixWorlds.length;e++)d.set(this.meshMatrixWorlds[e].elements,16*e);let u=new nT(d,1024,1,1023,1015);u.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=u,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:t,texture:e,size:r},centerColors:{data:o,texture:c,size:a},meshMatrixWorlds:{data:d,texture:u}}}updateIndexes(e){let t=this.geometry;t.attributes.splatIndex.set(e),t.attributes.splatIndex.needsUpdate=!0,t.instanceCount=e.length}updateUniforms(e,t,i,r){this.splatCount>0&&(O2.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(O2),this.material.uniforms.basisViewport.value.set(2/O2.x,2/O2.y),this.material.uniforms.focal.value.set(t,i),this.material.uniforms.orthoZoom.value=r,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()),this.removeFromParent()}},Ie=new Promise(e=>{O9=e}),It=!1;Ie.then(e=>IC=e);var Ii=class{constructor(e={}){let t,i,r,a,o,h;tM(this,"updateView",(t=new iZ,i=[],r=new ib(0,0,-1),a=new ib(0,0,-1),o=new ib,h=new ib,function(e=!1,c){let d=this.updateMatrixWorldsInWorkerIfNeeded(),u=this.cropsChanged();if(!e){a.set(0,0,-1).applyQuaternion(c.quaternion);let e=!1,t=!1;if(.95>=a.dot(r)&&(e=!0),h.copy(c.position).sub(o).length()>=1&&(t=!0),!e&&!t&&!d&&!u&&!this.needsInitialRender)return}this.needsInitialRender=!1,o.copy(c.position),r.copy(a),t.copy(c.matrixWorld).invert(),t.premultiply(this.dummyPerspectiveMatrix),i[0]=c.position.x,i[1]=c.position.y,i[2]=c.position.z;let p={sort:{view:t.elements,cameraPosition:i,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...d?{newMatrixWorlds:this.meshMatrixWorlds}:{},...u?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=p:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(p))})),this.scene=e.scene,this.currentPage=null,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null,this.needsInitialRender=!0,this.dummyPerspectiveMatrix=new iZ().makePerspective(-1,1,-1,1,.1,1e3)}updateSplatMeshUniforms(e,t){let i=new tJ;null!==this.splatMesh&&this.splatMesh.getSplatCount()>0&&(e.getSize(i),this.cameraFocalLengthX=t.projectionMatrix.elements[0]*this.devicePixelRatio*i.x*.45,this.cameraFocalLengthY=t.projectionMatrix.elements[5]*this.devicePixelRatio*i.y*.45,this.splatMesh.updateUniforms(i,this.cameraFocalLengthX,this.cameraFocalLengthY,t.isPerspectiveCamera?-1:t.zoom*this.devicePixelRatio))}loadSplat(e={}){this.activePage=this.scene.activePage,e.position&&(e.position=new ib().fromArray(e.position)),e.orientation&&(e.orientation=new ix().fromArray(e.orientation)),e.halfPrecisionCovariances=!!e.halfPrecisionCovariances;let t=[];if(this.splatEntries=t,this.activePage.traverseVisibleEntity(e=>{"Splat"===e.data.type&&t.push(e)}),this.splatMesh&&this.splatMesh.dispose(),0===t.length)return this.splatMesh=null,!1;this.meshMatrixWorlds=t.map(e=>e.matrixWorld),this.meshMatrixWorldsOld=t.map(e=>e.matrixWorld.clone()),this.cropsArray=t.map(e=>e.data.crops.map(e=>e.data));let i=t.map(e=>new IC.GSplineBuffer(new Uint8Array(e.data.buffer).buffer)),r=0,a=[0];for(let e of i)r+=e.getSplatCount(),a.push(r);return this.setupSplatMesh(i,r,e.position,e.orientation,e.halfPrecisionCovariances,this.devicePixelRatio,a,this.meshMatrixWorlds),this.setupSortWorker(r),!0}updateMatrixWorldsInWorkerIfNeeded(){let e=this.splatDataTextures.meshMatrixWorlds.data;for(let t=0;t<this.meshMatrixWorlds.length;t++)e.set(this.meshMatrixWorlds[t].elements,16*t);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,!this.meshMatrixWorlds.every((e,t)=>e.equals(this.meshMatrixWorldsOld[t]))&&(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let e=!1;
8104return this.splatEntries.forEach((t,i)=>{t.data.crops.forEach((t,r)=>{void 0===this.cropsArray[i][r]?(e=!0,this.cropsArray[i][r]=t.data):Object.entries(t.data).forEach(([t,a])=>{Array.isArray(a)&&a.some((e,a)=>e!==this.cropsArray[i][r][t][a])?(e=!0,this.cropsArray[i][r][t]=a):a!==this.cropsArray[i][r]?.[t]&&(e=!0,this.cropsArray[i][r][t]=a)})}),t.data.crops.length!==this.cropsArray[i]?.length&&(this.cropsArray[i].length=t.data.crops.length,e=!0)}),e}setupSplatMesh(e,t,i=new ib,r=new ix,a=!1,o=1,h,c){this.splatMesh=O7.buildMesh(e,t,a,o,h,c),this.splatMesh.position.copy(i),this.splatMesh.quaternion.copy(r),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=99999,this.splatRenderCount=t,this.splatMesh.onBeforeRender=(e,t,i)=>this.update(e,i)}setupSortWorker(e){this.sortWorker=function(e){let t=new Worker(URL.createObjectURL(new Blob(["(",O0.toString(),")(self)"],{type:"application/javascript"}))),i=atob("AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGAIf39/f39/f38AYAABfwISAQNlbnYGbWVtb3J5AgMAgIAEAwQDAAECBzkDEV9fd2FzbV9jYWxsX2N0b3JzAAALc29ydEluZGV4ZXMAARNlbXNjcmlwdGVuX3Rsc19pbml0AAIK3gMDAwABC9IDAwF/BnwBfgJAIAdFDQAgAysDUCEMIAMrAzAhDSADKwMQIQ5BACEDRP///////+9/IQtEAAAAAAAAEAAhCgNAIAIgA0ECdGoCfyAOIAEgA0EMbGoiCCoCALuiIA0gCCoCBLuioCAMIAgqAgi7oqBEAAAAAAAAsECiIgmZRAAAAAAAAOBBYwRAIAmqDAELQYCAgIB4CzYCACAJIAsgCSALYxshCyAJIAogCSAKZBshCiADQQFqIgMgB0cNAAsgB0UNACAGuCAKIAuhoyEJQQAhAwNAAn8gCSACIANBAnRqIgEoAgC3IAuhoiIKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAshCCABIAg2AgAgBCAIQQJ0aiIBIAEoAgBBAWo2AgAgA0EBaiIDIAdHDQALCyAGQQJPBEAgBCgCACEIQQEhAwNAIAQgA0ECdGoiASABKAIAIAhqIgg2AgAgA0EBaiIDIAZHDQALCyAHQQFrIgGtIQ8DQCAEIAIgD6dBAnQiA2ooAgBBAnRqIgcgBygCAEEBayIHNgIAIAUgASAHa0ECdGogACADaigCADYCACAPUCEDIA9CAX0hDyADRQ0ACyAGBEAgBEEAIAZBAnT8CwALCwQAQQAL"),r=new Uint8Array(i.length);for(let e=0;e<i.length;e++)r[e]=i.charCodeAt(e);return t.postMessage({init:{sorterWasmBytes:r.buffer,splatCount:e,Constants:{BytesPerFloat:O$.BytesPerFloat,BytesPerInt:O$.BytesPerInt,DepthMapRange:O$.DepthMapRange,MemoryPageSize:O$.MemoryPageSize}}}),t}(e),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.scene.activePage.add(this.splatMesh),this.needsInitialRender=!0)}}update(e,t){null!==this.splatMesh&&(this.updateSplatMeshUniforms(e,t),this.updateView(!1,t))}getSplatMesh(){return this.splatMesh}},Ir=new rM;Ir.wireframe=!0;var Is=new ib,Ia=class extends n_{constructor(e,t){super(),this.data=e,this.sharedAssets=t,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.shapeBlendIntances=[],this.entityByUuid={},this.entityIdentityToEntity={},this.toExpandCloner=new Set,this.toUpdateCloner=new Set,this.pendingCommands=[],this.pathConstraints=new OJ,this.invisibleObjects=new C6("jflkdsafjasdifjaslk",{...yE.defaultData,visible:!1,name:"buildin invisible"}),this.needsRecomputeInstances=!1,this.init(e,t),this.matrixAutoUpdate=!1,this.errorPage=new D5("fdasfa",{...yB.defaultData,name:""},{shared:t,scene:this})}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){let e;return this.needsTransmissionDirty&&(this._needsTransmission=(e=!1,this.traverseEntity(t=>{if(t instanceof EH){if(Array.isArray(t.material))for(let i=0;i<t.material.length;i++)OX(t,t.material[i])&&(e=!0);else OX(t,t.material)&&(e=!0)}}),e),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){let e;return this.needsNormalDirty&&(this._needsNormal=(e=!1,this.traverseEntity(t=>{if(t instanceof EH){if(Array.isArray(t.material))for(let i=0;i<t.material.length;i++)Oq(t,t.material[i])&&(e=!0);else Oq(t,t.material)&&(e=!0)}}),e),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),i=this.entity
8104IdentityToEntity[t];i&&(e.uuid=i.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof D5&&(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 t=this.find(e);if(void 0===t)return;let i=[],r=t;for(;r!==this;){let e=r,t=(r=r.parent).children.indexOf(e);i.splice(0,0,t)}return{entity:t,sortKey:i}}getAllSorted(e){let t=[];for(let i of e){let e=this.getWithSortKey(i.id);void 0!==e&&t.push(e)}return t.sort((e,t)=>pd(e.sortKey,t.sortKey)),t.map(e=>e.entity)}nonExistOrDescendantOf(e,t){let i=this.find(e);if(void 0===i)return!0;for(;i;){if(i.uuid===t)return!0;i=i.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent&&("f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera"===e||e===mO))return this.activePage.personalCamera;if(""===e||void 0===e)return;let t=this.entityByUuid[e];return void 0===t?this.getObjectByProperty("uuid",e):t}find2D(e){for(let t of this.children)if(t instanceof D5&&t.uiScene){let i=t.uiScene.find(e);if(i)return i}}findScene2DfromObject2D(e){for(let t of this.children)if(t instanceof D5&&t.uiScene&&t.uiScene.find(e))return t.uiScene}find2DInUIObjects(e){let t;return this.traverseEntity(i=>{void 0===t&&i instanceof Os&&(t=i.uiCanvas.find(e))}),t}traverse2D(e){for(let t of this.children)t instanceof D5&&t.uiScene&&t.uiScene.traverse(e)}debugEnsureEntity(e){let t=this.find(e);t?Array.isArray(t.identity)&&void 0===this.findInstance(t.identity)&&console.error("not found instance"):console.error("not found")}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(e=>{this.toExpandCloner.add(e)})}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,t){1===e.path.length&&"components"===e.path[0]&&1===e.type&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,t)}updateTreeByOp(e,t){if(0===e.path.length&&7===e.type){let i=null===e.parent?this:this.find(e.parent);if(void 0===i)throw Error("unexpected");let r=this.createObject(e.id,e.data,e.children,i,e.localIndex,t);r.updateVisible(this),r.resetBBoxNeedsUpdate(),CJ(r)&&C$(r.parent)&&(r.invali
vendor: 9,710 bytes, line 8104
8104dateUpstreamBooleanData(),r.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(r),this.markToExpandCloner(r),this.markPenumbraSizeDirty(),r.updatePathSnapping()}else if(0===e.path.length&&8===e.type){let t=this.find(e.id);if(void 0===t)throw Error("unexpected");t.traverseEntity(e=>{e instanceof Oz&&(this.shapeBlendIntances=this.shapeBlendIntances.filter(t=>t!==e))}),this.markToExpandCloner(t),t.resetBBoxNeedsUpdate(),this.unregisterObject(t);let i=t.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(t),this.markPenumbraSizeDirty(),t.parent.remove(t),C$(t.parent)&&(t.parent.invalidateUpstreamBooleanData(),t.parent.invalidateDownstreamBooleanData().recomputeBoolean()),CJ(t)&&(t.freeBooleanPointer(),i instanceof CZ&&i.invalidateDownstreamBooleanData().recomputeBoolean()),t instanceof D9&&t.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(t),this.pathConstraints.removeDependencies(t.uuid),t.updatePathSnapping()}else if(0===e.path.length&&9===e.type){let t=this.find(e.id);if(void 0===t)throw Error("unexpected");this.markNeedsRecomputeInstancesForChildren(t);let i=t.parent;this.markNeedsRecomputeInstancesForAncessors(i),t.cloner?.resetOnMove(),this.markToExpandCloner(t);let r=null===e.parent?this:this.find(e.parent);if(void 0===r)throw Error("unexpected");r.add(t),this.markNeedsRecomputeInstancesForAncessors(r),this.markToExpandCloner(t),t.invalidateClonerTransform(t),t.updateVisible(this),t.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let a=e.localIndex;r.children.splice(a,0,r.children.pop()),CJ(t)&&(t.invalidateUpstreamBooleanData(),C$(t.parent)?t.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof CZ&&i.invalidateDownstreamBooleanData().recomputeBoolean()),t.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){for(let t of(this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage,this.children))t instanceof D5&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,t,i,r){if(0===t.type){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),"visible"in t.props&&this.markPenumbraSizeDirty(),t.path.includes("overrides")&&"states"in t.props){let{rest:e}=t.props;t={...t,props:e},this.markNeedsRecomputeInstances()}"pathSnapping"===t.path[0]&&void 0!==t.props.pathId&&this.pathConstraints.setConstraint(e,t.props.pathId)}let a=this.find(e);if(a)try{(function(e,t,i,r){e.updateByOp(t,i,r,!1)})(a,t,i,{scene:this,shared:r}),a instanceof EZ&&a.updateGeometryGroupsIfNeeded()}catch(e){console.error(e)}}updateEntity2DByOp(e,t,i,r,a,o=[]){e.updateEntityByOp(t,i,r,a),this.traverseEntity(e=>{(e instanceof Os||e instanceof D5)&&(o.includes(e.frameId??"")||e.frameId===t)&&e.updateEntity2DByOp(t,i,r,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,t){let i=Object.entries(t.data.lib.components).map((e,t)=>({data:e[1].asset.data,children:e[1].asset.children,id:e[0],fi:t}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:t}),this.add(this.invisibleObjects),this.createChildrenObjects(i,this.invisibleObjects,t),this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(e=>{e instanceof Cq&&e.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(e=>{("Component"===e.data.type||"Instance"===e.data.type)&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){_S.is(e)&&("Component"===e.data.type&&this.markNeedsRecomputeInstances(),e.traverseAncestors(e=>{_S.is(e)&&"Component"===e.data.type&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,i,r,a,o,h){if(e){let c=r.find(e);c&&c!==r&&a.forInstancesRec(r=>{r.data=fr(r.data,a=>{let c=a.events.data(h.id),d=r.goUp(o);if(d){let r=[...pc(d.identity),e].join("-"),a=this.entityIdentityToEntity[r];if(a){let e=a.uuid;fp.zoom(c,t)[i]=e}else console.warn("cannot find instance")}}).data})}}rewriteActions(e,t,i,r,a,o){e.forEach(e=>{"Transition"===e.data.type?this.relativeizeInner(e.data.object,[...t,e.id],"object",i,r,a,o):"Animation"===e.data.type?this.relativeizeInner(e.data.object,[...t,e.id],"object",i,r,a,o):"Conditional"===e.data.type&&(this.rewriteActions(e.data.ifActions,[...t,e.id,"ifActions"],i,r,a,o),this.rewriteActions(e.data.elseActions,[...t,e.id,"elseActions"],i,r,a,o))})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof Oe&&"string"==typeof e.identity&&"Component"===e.data.type)return e.traverseEntity((t,i)=>{t.data.events.forEach(r=>{if("GameControl"===r.data.type){let a=!1;if(t.forInstancesRec(e=>{e.data=fr(e.data,t=>{e.isInstanceRoot||(t.events.delete(r.id),a=!0)}).data}),!1===a)for(let a of y0.list)this.rewriteActions(r.data.gameActions[a],["gameActions",a],e,t,i,r)}else"Conditional"===r.data.type?("Distance"===r.data.condition.type?(this.relativeizeInner(r.data.condition.fromObject,["condition"],"fromObject",e,t,i,r),this.relativeizeInner(r.data.condition.toObject,["condition"],"toObject",e,t,i,r)):"State"===r.data.condition.type?this.relativeizeInner(r.data.condition.object,["condition"],"object",e,t,i,r):"Comparison"===r.data.condition.type&&("Property"===r.data.condition.lOperand.type&&this.relativeizeInner(r.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,i,r),"Property"===r.data.condition.rOperand.type&&this.relativeizeInner(r.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,i,r)),this.rewriteActions(r.data.inActions,["inActions"],e,t,i,r),this.rewriteActions(r.data.outActions,["outActions"],e,t,i,r)):"actions"in r.data&&this.rewriteActions(r.data.actions,["actions"],e,t,i,r)})}),!0})}expandInstances(e,t,i){let r=new Set;for(let a of(this.traverseEntity(a=>{if(a instanceof Oe&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:r}),t||a.resetBBoxNeedsUpdate(),i&&a.traverseEntity(e=>{i.addClip(e)}),!0}),r))this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Ot(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(e=>{e instanceof Oe&&e.isInstanceRoot&&(e.component=void 0)}),this.expandInstances(e,!1,t))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(e=>{let t="string"==typeof e.identity?e.identity:e.identity.join("-");this.entityIdentityToEntity[t]===e&&(delete this.entityByUuid[e.uuid],delete this.entityIdentityToEntity[t]),e.dispose()})}clearScene(){for(let e of this.children)_S.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}raycast(e){return this.raycast1(e,!1)}raycast1(e,t){let i=[],r=a=>{for(let o of a.children){let a=o.cloner;if(_S.is(o)&&!o.raycastLock&&(o.visible||a?.object.data.visible)){if(!0===t&&o.isInstanceRoot){let t=[];if(e.intersectObject(o,!0,t),t.length){let e=t[0];e.object=o,e.point.applyMatrix4(e.object.matrixWorld);let r=o.matrixWorld.clone().invert();e.point.applyMatrix4(r),i.push(e)}}else(CJ(o)||C0(o)&&this.enableHelpers&&o.objectHelper.visible)&&(e.intersectObject(o,!1,i),OK(o,e,i)),r(o)}}};return r(this.activePage),i}raycastWithClones(e){let t=[],i=r=>{for(let a of r.children){let r=a.cloner;_S.is(a)&&(a.visible||r?.object.data.visible)&&((CJ(a)||C0(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),OK(a,e,t,!0)),i(a))}};return i(this),t}forEachEntity(e){for(let t of this.children)_S.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)_S.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)_S.is(t)&&t.traverseEntity(e)}updateFont(e,t){this.traverseEntity(i=>{if(i instanceof EZ&&"Mesh"===i.data.type&&("TextGeometry"===i.data.geometry.type||"InputGeometry"===i.data.geometry.type)&&i.data.geometry.font===e){let r=i.geometry,a=i.data.geometry;r.updateFont(e,t).then(()=>{r.update(a,t);let e=i.invalidateDownstreamBooleanData();C$(e)&&e.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)bX.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)_S.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,i){let r=0;for(let a of e)this.createObject(a.id,a.data,a.children,t,r,i),r+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){for(let t of(delete this.entityByUuid[e.uuid],e.children))this.unregisterObject(t)}createObject(e,t,i,r,a,o){let h={scene:this,shared:o},c=OP(e,t,h);return c instanceof Oz&&this.shapeBlendIntances.push(c),c&&(this.entityByUuid[e]=c,r.add(c),r.children.splice(a,0,r.children.pop()),i.length>0&&(c.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(i,c,o)),c.updateState(t,h),c instanceof EZ&&c.updateGeometryGroupsIfNeeded(),c.updateVisible(this),c.cloner&&this.toExpandCloner.add(c),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),"Empty"===t.type&&t.animations&&c.traverseEntity(e=>{let t=e.dataPatched;
8104if(e instanceof EZ&&t.bones&&t.boneInverses){let i=new nO(t.bones.map(e=>this.find(e)),t.boneInverses.map(e=>new iZ().fromArray(e)));e.bind(i,e.bindMatrix)}else e.matrixAutoUpdate=!0}),c}getCenter(e){let t=[];for(let i=0,r=e.length;i<r;++i){let{id:r,recursive:a}=e[i],o=this.find(r),h=a?o.recursiveBBox:o.singleBBox;t.push(...h.vertices)}let i=new i_;return i.setFromPoints(t),i.getCenter(Is),Is}copyMatrixWorld(e,t){if(null===e){t.identity();return}let i=this.find(e);i?t.copy(i.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(null===e){t.identity();return}let i=this.find(e)?.parent;i?t.copy(i.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof Ai){if(Array.isArray(t.material))for(let i=0;i<t.material.length;i++)t.material[i]instanceof Ea&&e(t.material[i]);else t.material instanceof Ea&&e(t.material)}})}updateViewPlaneSize(e,t,i=!1){this.traverseConcreteEntity(r=>{r instanceof Cq&&r.setViewplaneSize(e,t,i)})}initializeSplatViewer(){this.splatViewer=new Ii({scene:this}),this.reloadSplats()}reloadSplats(){this.splatViewer?.loadSplat()}},In=(e,t)=>{let i=t.x-e.x,r=t.y-e.y;return Math.sqrt(i*i+r*r)},Io=(e,t)=>{let i=t.x-e.x;return Ic(Math.atan2(t.y-e.y,i))},Il=(e,t,i)=>{let r={x:0,y:0};return i=Ih(i),r.x=e.x-t*Math.cos(i),r.y=e.y-t*Math.sin(i),r},Ih=e=>Math.PI/180*e,Ic=e=>180/Math.PI*e,Id=e=>isNaN(e.buttons)?0!==e.pressure:0!==e.buttons,Iu=new Map,Ip=e=>{Iu.has(e)&&clearTimeout(Iu.get(e)),Iu.set(e,setTimeout(e,100))},If=(e,t,i)=>{let r=t.split(/[ ,]+/g),a;for(let t=0;t<r.length;t+=1)a=r[t],e.addEventListener?e.addEventListener(a,i,!1):e.attachEvent&&e.attachEvent(a,i)},Im=(e,t,i)=>{let r=t.split(/[ ,]+/g),a;for(let t=0;t<r.length;t+=1)a=r[t],e.removeEventListener?e.removeEventListener(a,i):e.detachEvent&&e.detachEvent(a,i)},Ig=e=>(e.preventDefault(),e.type.match(/^touch/)?e.changedTouches:e),Iv=()=>{if(!(typeof window>"u"))return{x:void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,y:void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop}},Iy=(e,t)=>{t.top||t.right||t.bottom||t.left?(e.style.top=t.top,e.style.right=t.right,e.style.bottom=t.bottom,e.style.left=t.left):(e.style.left=t.x+"px",e.style.top=t.y+"px")},Ix=(e,t,i)=>{let r=Iw(e);for(let e in r)if(r.hasOwnProperty(e)){if("string"==typeof t)r[e]=t+" "+i;else{let a="";for(let e=0,r=t.length;e<r;e+=1)a+=t[e]+" "+i+", ";r[e]=a.slice(0,-2)}}return r},Ib=(e,t)=>{let i=Iw(e);for(let e in i)i.hasOwnProperty(e)&&(i[e]=t);return i},Iw=e=>{let t={};return t[e]="",["webkit","Moz","o"].forEach(function(i){t[i+e.charAt(0).toUpperCase()+e.slice(1)]=""}),t},IS=(e,t)=>{for(let i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e},I_=(e,t)=>{let i={};for(let r in e)e.hasOwnProperty(r)&&t.hasOwnProperty(r)?i[r]=t[r]:e.hasOwnProperty(r)&&(i[r]=e[r]);return i},IA=(e,t)=>{if(e.length)for(let i=0,r=e.length;i<r;i+=1)t(e[i]);else t(e)},IM=(e,t,i)=>({x:Math.min(Math.max(e.x,t.x-i),t.x+i),y:Math.min(Math.max(e.y,t.y-i),t.y+i)});"u">typeof window&&(IT="ontouchstart"in window,IP=!!window.PointerEvent,ID=!!window.MSPointerEvent);var IE,IC,IT,IP,ID,IO,II={touch:{start:"touchstart",move:"touchmove",end:"touchend, touchcancel"},mouse:{start:"mousedown",move:"mousemove",end:"mouseup"},pointer:{start:"pointerdown",move:"pointermove",end:"pointerup, pointercancel"},MSPointer:{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}},IR={};function IL(){}function IB(e,t){return this.identifier=t.identifier,this.position=t.position,this.frontPosition=t.frontPosition,this.collection=e,this.defaults={size:100,threshold:.1,color:"white",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:1,mode:"dynamic",zone:document.body,lockX:!1,lockY:!1,shape:"circle"},this.config(t),"dynamic"===this.options.mode&&(this.options.restOpacity=0),this.id=IB.id,IB.id+=1,this.buildEl().stylize(),this.instance={el:this.ui.el,on:this.on.bind(this),off:this.off.bind(this),show:this.show.bind(this),hide:this.hide.bind(this),add:this.addToDom.bind(this),remove:this.removeFromDom.bind(this),destroy:this.destroy.bind(this),setPosition:this.setPosition.bind(this),resetDirection:this.resetDirection.bind(this),computeDirection:this.computeDirection.bind(this),trigger:this.trigger.bind(this),position:this.position,frontPosition:this.frontPosition,ui:this.ui,identifier:this.identifier,id:this.id,options:this.options},this.instance}function Iz(e,t){this.nipples=[],this.idles=[],this.actives=[],this.ids=[],this.pressureIntervals={},this.manager=e,this.id=Iz.id,Iz.id+=1,this.defaults={zone:document.body,multitouch:!1,maxNumberOfNipples:10,mode:"dynamic",position:{top:0,left:0},catchDistance:200,size:100,threshold:.1,color:"white",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:1,lockX:!1,lockY:!1,shape:"circle",dynamicPage:!1,follow:!1},this.config(t),("static"===this.options.mode||"semi"===this.options.mode)&&(this.options.multitouch=!1),this.options.multitouch||(this.options.maxNumberOfNipples=1);let i=getComputedStyle(this.options.zone.parentElement);return i&&"flex"===i.display&&(this.parentIsFlex=!0),this.updateBox(),this.prepareNipples(),this.bindings(),this.begin(),this.nipples}function IF(e){var t=this;t.ids={},t.index=0,t.collections=[],t.scroll=Iv(),t.config(e),t.prepareCollections();var i=function(){var e;
8104t.collections.forEach(function(i){i.forEach(function(i){e=i.el.getBoundingClientRect(),i.position={x:t.scroll.x+e.left,y:t.scroll.y+e.top}})})};if(typeof window>"u")return t.collections;If(window,"resize",function(){Ip(i)});var r=function(){t.scroll=Iv()};return If(window,"scroll",function(){Ip(r)}),t.collections}IP?IO=II.pointer:ID?IO=II.MSPointer:IT?(IO=II.touch,IR=II.mouse):IO=II.mouse,IL.prototype.on=function(e,t){var i,r=e.split(/[ ,]+/g);this._handlers_=this._handlers_||{};for(var a=0;a<r.length;a+=1)i=r[a],this._handlers_[i]=this._handlers_[i]||[],this._handlers_[i].push(t);return this},IL.prototype.off=function(e,t){return this._handlers_=this._handlers_||{},void 0===e?this._handlers_={}:void 0===t?this._handlers_[e]=null:this._handlers_[e]&&this._handlers_[e].indexOf(t)>=0&&this._handlers_[e].splice(this._handlers_[e].indexOf(t),1),this},IL.prototype.trigger=function(e,t){var i,r=this,a=e.split(/[ ,]+/g);r._handlers_=r._handlers_||{};for(var o=0;o<a.length;o+=1)i=a[o],r._handlers_[i]&&r._handlers_[i].length&&r._handlers_[i].forEach(function(e){e.call(r,{type:i,target:r},t)})},IL.prototype.config=function(e){this.options=this.defaults||{},e&&(this.options=I_(this.options,e))},IL.prototype.bindEvt=function(e,t){var i=this;return i._domHandlers_=i._domHandlers_||{}
8104,i._domHandlers_[t]=function(){"function"==typeof i["on"+t]?i["on"+t].apply(i,arguments):console.warn('[WARNING] : Missing "on'+t+'" handler.')},If(e,IO[t],i._domHandlers_[t]),IR[t]&&If(e,IR[t],i._domHandlers_[t]),i},IL.prototype.unbindEvt=function(e,t){return this._domHandlers_=this._domHandlers_||{},Im(e,IO[t],this._domHandlers_[t]),IR[t]&&Im(e,IR[t],this._domHandlers_[t]),delete this._domHandlers_[t],this},IB.prototype=new IL,IB.constructor=IB,IB.id=0,IB.prototype.buildEl=function(e){return this.ui={},this.options.dataOnly||(this.ui.el=document.createElement("div"),this.ui.back=document.createElement("div"),this.ui.front=document.createElement("div"),this.ui.el.className="nipple collection_"+this.collection.id,this.ui.back.className="back",this.ui.front.className="front",this.ui.el.setAttribute("id","nipple_"+this.collection.id+"_"+this.id),this.ui.el.appendChild(this.ui.back),this.ui.el.appendChild(this.ui.front)),this},IB.prototype.stylize=function(){if(this.options.dataOnly)return this;var e=this.options.fadeTime+"ms",t=Ib("borderRadius","50%"),i=Ix("transition","opacity",e),r={};return r.el={position:"absolute",opacity:this.options.restOpacity,display:"block",zIndex:999},r.back={position:"absolute",display:"block",width:this.options.size+"px",height:this.options.size+"px",marginLeft:-this.options.size/2+"px",marginTop:-this.options.size/2+"px",background:"rgba(255, 255, 255, .4)",border:"solid 2px rgba(0, 0, 0, .1)"},r.front={width:this.options.size/2+"px",height:this.options.size/2+"px",position:"absolute",display:"block",marginLeft:-this.options.size/4+"px",marginTop:-this.options.size/4+"px",background:"rgba(255, 255, 255, .8)",border:"solid 2px rgba(0, 0, 0, .1)"},IS(r.el,i),"circle"===this.options.shape&&IS(r.back,t),IS(r.front,t),this.applyStyles(r),this},IB.prototype.applyStyles=function(e){for(var t in this.ui)if(this.ui.hasOwnProperty(t))for(var i in e[t])this.ui[t].style[i]=e[t][i];return this},IB.prototype.addToDom=function(){return this.options.dataOnly||document.body.contains(this.ui.el)||this.options.zone.appendChild(this.ui.el),this},IB.prototype.removeFromDom=function(){return this.options.dataOnly||!document.body.contains(this.ui.el)||this.options.zone.removeChild(this.ui.el),this},IB.prototype.destroy=function(){clearTimeout(this.removeTimeout),clearTimeout(this.showTimeout),clearTimeout(this.restTimeout),this.trigger("destroyed",this.instance),this.removeFromDom(),this.off()},IB.prototype.show=function(e){var t=this;return t.options.dataOnly||(clearTimeout(t.removeTimeout),clearTimeout(t.showTimeout),clearTimeout(t.restTimeout),t.addToDom(),t.restCallback(),setTimeout(function(){t.ui.el.style.opacity=1},0),t.showTimeout=setTimeout(function(){t.trigger("shown",t.instance),"function"==typeof e&&e.call(this)},t.options.fadeTime)),t},IB.prototype.hide=function(e){var t=this;if(t.options.dataOnly)return t;if(t.ui.el.style.opacity=t.options.restOpacity,clearTimeout(t.removeTimeout),clearTimeout(t.showTimeout),clearTimeout(t.restTimeout),t.removeTimeout=setTimeout(function(){var i="dynamic"===t.options.mode?"none":"block";t.ui.el.style.display=i,"function"==typeof e&&e.call(t),t.trigger("hidden",t.instance)},t.options.fadeTime),t.options.restJoystick){let i=t.options.restJoystick,r={};r.x=!0===i||!1!==i.x?0:t.instance.frontPosition.x,r.y=!0===i||!1!==i.y?0:t.instance.frontPosition.y,t.setPosition(e,r)}return t},IB.prototype.setPosition=function(e,t){var i=this;i.frontPosition={x:t.x,y:t.y};var r=i.options.fadeTime+"ms",a={};a.front=Ix("transition",["top","left"],r);var o={front:{}};o.front={left:i.frontPosition.x+"px",top:i.frontPosition.y+"px"},i.applyStyles(a),i.applyStyles(o),i.restTimeout=setTimeout(function(){"function"==typeof e&&e.call(i),i.restCallback()},i.options.fadeTime)},IB.prototype.restCallback=function(){var e={};e.front=Ix("transition","none",""),this.applyStyles(e),this.trigger("rested",this.instance)},IB.prototype.resetDirection=function(){this.direction={x:!1,y:!1,angle:!1}},IB.prototype.computeDirection=function(e){var t,i,r,a=e.angle.radian,o=Math.PI/4,h=Math.PI/2;if(a>o&&a<3*o&&!e.lockX?t="up":a>-o&&a<=o&&!e.lockY?t="left":a>-(3*o)&&a<=-o&&!e.lockX?t="down":e.lockY||(t="right"),e.lockY||(i=a>-h&&a<h?"left":"right"),e.lockX||(r=a>0?"up":"down"),e.force>this.options.threshold){var c,d={};for(c in this.direction)this.direction.hasOwnProperty(c)&&(d[c]=this.direction[c]);var u={};for(c in this.direction={x:i,y:r,angle:t},e.direction=this.direction,d)d[c]===this.direction[c]&&(u[c]=!0);if(u.x&&u.y&&u.angle)return e;u.x&&u.y||this.trigger("plain",e),u.x||this.trigger("plain:"+i,e),u.y||this.trigger("plain:"+r,e),u.angle||this.trigger("dir dir:"+t,e)}else this.resetDirection();return e},Iz.prototype=new IL,Iz.constructor=Iz,Iz.id=0,Iz.prototype.prepareNipples=function(){var e=this.nipples;e.on=this.on.bind(this),e.off=this.off.bind(this),e.options=this.options,e.destroy=this.destroy.bind(this),e.ids=this.ids,e.id=this.id,e.processOnMove=this.processOnMove.bind(this),e.processOnEnd=this.processOnEnd.bind(this),e.get=function(t){if(void 0===t)return e[0];for(var i=0,r=e.length;i<r;i+=1)if(e[i].identifier===t)return e[i];return!1}},Iz.prototype.bindings=function(){this.bindEvt(this.options.zone,"start"),this.options.zone.style.touchAction="none",this.options.zone.style.msTouchAction="none"},Iz.prototype.begin=function(){var e=this.options;if("static"===e.mode){var t=this.createNipple(e.position,this.manager.getIdentifier());t.add(),this.idles.push(t)}},Iz.prototype.createNipple=function(e,t){var i=this.manager.scroll,r={},a=this.options,o={x:this.parentIsFlex?i.x:i.x+this.box.left,y:this.parentIsFlex?i.y:i.y+this.box.top};if(e.x&&e.y)r={x:e.x-o.x,y:e.y-o.y};else if(e.top||e.right||e.bottom||e.left){var h=document.createElement("DIV");h.style.display="hidden",h.style.top=e.top,h.style.right=e.right,h.style.bottom=e.bottom,h.style.left=e.left,h.style.position="absolute",a.zone.appendChild(h);var c=h.getBoundingClientRect();a.zone.removeChild(h),r=e,e={x:c.left+i.x,y:c.top+i.y}}var d=new IB(this,{color:a.color,size:a.size,threshold:a.threshold,fadeTime:a.fadeTime,dataOnly:a.dataOnly,restJoystick:a.restJoystick,restOpacity:a.restOpacity,mode:a.mode,identifier:t,position:e,zone:a.zone,frontPosition:{x:0,y:0},shape:a.shape});return a.dataOnly||(Iy(d.ui.el,r),Iy(d.ui.front,d.frontPosition)),this.nipples.push(d),this.trigger("added "+d.identifier+":added",d),this.manager.trigger("added "+d.identifier+":added",d),this.bindNipple(d),d},Iz.prototype.updateBox=function(){this.box=this.options.zone.getBoundingClientRect()},Iz.prototype.bindNipple=function(e){var t,i=this,r=function(e,r){t=e.type+" "+r.id+":"+e.type,i.trigger(t,r)};e.on("destroyed",i.onDestroyed.bind(i)),e.on("shown hidden rested dir plain",r),e.on("dir:up dir:right dir:down dir:left",r),e.on("plain:up plain:right plain:down plain:left",r)},Iz.prototype.pressureFn=function(e,t,i){var r=this,a=0;clearInterval(r.pressureIntervals[i]),r.pressureIntervals[i]=setInterval((function(){var i=e.force||e.pressure||e.webkitForce||0;
8104i!==a&&(t.trigger("pressure",i),r.trigger("pressure "+t.identifier+":pressure",i),a=i)}).bind(r),100)},Iz.prototype.onstart=function(e){var t=this,i=t.options,r=e;return e=Ig(e),t.updateBox(),IA(e,function(a){t.actives.length<i.maxNumberOfNipples?t.processOnStart(a):r.type.match(/^touch/)&&(Object.keys(t.manager.ids).forEach(function(i){if(0>Object.values(r.touches).findIndex(function(e){return e.identifier===i})){var a=[e[0]];a.identifier=i,t.processOnEnd(a)}}),t.actives.length<i.maxNumberOfNipples&&t.processOnStart(a))}),t.manager.bindDocument(),!1},Iz.prototype.processOnStart=function(e){var t,i=this,r=i.options,a=i.manager.getIdentifier(e),o=e.force||e.pressure||e.webkitForce||0,h={x:e.pageX,y:e.pageY},c=i.getOrCreate(a,h);c.identifier!==a&&i.manager.removeIdentifier(c.identifier),c.identifier=a;var d=function(t){t.trigger("start",t),i.trigger("start "+t.id+":start",t),t.show(),o>0&&i.pressureFn(e,t,t.identifier),i.processOnMove(e)};if((t=i.idles.indexOf(c))>=0&&i.idles.splice(t,1),i.actives.push(c),i.ids.push(c.identifier),"semi"!==r.mode)d(c);else if(In(h,c.position)<=r.catchDistance)d(c);else{c.destroy(),i.processOnStart(e);return}return c},Iz.prototype.getOrCreate=function(e,t){var i,r=this.options;return/(semi|static)/.test(r.mode)?(i=this.idles[0])?(this.idles.splice(0,1),i):"semi"===r.mode?this.createNipple(t,e):(console.warn("Coudln't find the needed nipple."),!1):i=this.createNipple(t,e)},Iz.prototype.processOnMove=function(e){var t=this.options,i=this.manager.getIdentifier(e),r=this.nipples.get(i),a=this.manager.scroll;if(!Id(e)){this.processOnEnd(e);return}if(!r){console.error("Found zombie joystick with ID "+i),this.manager.removeIdentifier(i);return}if(t.dynamicPage){var o=r.el.getBoundingClientRect();r.position={x:a.x+o.left,y:a.y+o.top}}r.identifier=i;var h=r.options.size/2,c={x:e.pageX,y:e.pageY};t.lockX&&(c.y=r.position.y),t.lockY&&(c.x=r.position.x);var d,u,p=In(c,r.position),f=Io(c,r.position),m=Ih(f),g=p/h,v={distance:p,position:c};if("circle"===r.options.shape?(d=Math.min(p,h),u=Il(r.position,d,f)):d=In(u=IM(c,r.position,h),r.position),t.follow){if(p>h){let e=c.x-u.x,t=c.y-u.y;r.position.x+=e,r.position.y+=t,r.el.style.top=r.position.y-(this.box.top+a.y)+"px",r.el.style.left=r.position.x-(this.box.left+a.x)+"px",p=In(c,r.position)}}else c=u,p=d;var y=c.x-r.position.x,x=c.y-r.position.y;r.frontPosition={x:y,y:x},t.dataOnly||Iy(r.ui.front,r.frontPosition);var b={identifier:r.identifier,position:c,force:g,pressure:e.force||e.pressure||e.webkitForce||0,distance:p,angle:{radian:m,degree:f},vector:{x:y/h,y:-x/h},raw:v,instance:r,lockX:t.lockX,lockY:t.lockY};(b=r.computeDirection(b)).angle={radian:Ih(180-f),degree:180-f},r.trigger("move",b),this.trigger("move "+r.id+":move",b)},Iz.prototype.processOnEnd=function(e){var t=this,i=t.options,r=t.manager.getIdentifier(e),a=t.nipples.get(r),o=t.manager.removeIdentifier(a.identifier);!a||(i.dataOnly||a.hide(function(){"dynamic"===i.mode&&(a.trigger("removed",a),t.trigger("removed "+a.id+":removed",a),t.manager.trigger("removed "+a.id+":removed",a),a.destroy())}),clearInterval(t.pressureIntervals[a.identifier]),a.resetDirection(),a.trigger("end",a),t.trigger("end "+a.id+":end",a),t.ids.indexOf(a.identifier)>=0&&t.ids.splice(t.ids.indexOf(a.identifier),1),t.actives.indexOf(a)>=0&&t.actives.splice(t.actives.indexOf(a),1),/(semi|static)/.test(i.mode)?t.idles.push(a):t.nipples.indexOf(a)>=0&&t.nipples.splice(t.nipples.indexOf(a),1),t.manager.unbindDocument(),/(semi|static)/.test(i.mode)&&(t.manager.ids[o.id]=o.identifier))},Iz.prototype.onDestroyed=function(e,t){this.nipples.indexOf(t)>=0&&this.nipples.splice(this.nipples.indexOf(t),1),this.actives.indexOf(t)>=0&&this.actives.splice(this.actives.indexOf(t),1),this.idles.indexOf(t)>=0&&this.idles.splice(this.idles.indexOf(t),1),this.ids.indexOf(t.identifier)>=0&&this.ids.splice(this.ids.indexOf(t.identifier),1),this.manager.removeIdentifier(t.identifier),this.manager.unbindDocument()},Iz.prototype.destroy=function(){for(var e in this.unbindEvt(this.options.zone,"start"),this.nipples.forEach(function(e){e.destroy()}),this.pressureIntervals)this.pressureIntervals.hasOwnProperty(e)&&clearInterval(this.pressureIntervals[e]);this.trigger("destroyed",this.nipples),this.manager.unbindDocument(),this.off()},IF.prototype=new IL,IF.constructor=IF,IF.prototype.prepareCollections=function(){var e=this;e.collections.create=e.create.bind(e),e.collections.on=e.on.bind(e),e.collections.off=e.off.bind(e),e.collections.destroy=e.destroy.bind(e),e.collections.get=function(t){var i;return e.collections.every(function(e){return!(i=e.get(t))}),i}}
8104,IF.prototype.create=function(e){return this.createCollection(e)},IF.prototype.createCollection=function(e){var t=new Iz(this,e);return this.bindCollection(t),this.collections.push(t),t},IF.prototype.bindCollection=function(e){var t,i=this,r=function(e,r){t=e.type+" "+r.id+":"+e.type,i.trigger(t,r)};e.on("destroyed",i.onDestroyed.bind(i)),e.on("shown hidden rested dir plain",r),e.on("dir:up dir:right dir:down dir:left",r),e.on("plain:up plain:right plain:down plain:left",r)},IF.prototype.bindDocument=function(){this.binded||(this.bindEvt(document,"move").bindEvt(document,"end"),this.binded=!0)},IF.prototype.unbindDocument=function(e){Object.keys(this.ids).length&&!0!==e||(this.unbindEvt(document,"move").unbindEvt(document,"end"),this.binded=!1)},IF.prototype.getIdentifier=function(e){var t;return e?void 0===(t=void 0===e.identifier?e.pointerId:e.identifier)&&(t=this.latest||0):t=this.index,void 0===this.ids[t]&&(this.ids[t]=this.index,this.index+=1),this.latest=t,this.ids[t]},IF.prototype.removeIdentifier=function(e){var t={};for(var i in this.ids)if(this.ids[i]===e){t.id=i,t.identifier=this.ids[i],delete this.ids[i];break}return t},IF.prototype.onmove=function(e){return this.onAny("move",e),!1},IF.prototype.onend=function(e){return this.onAny("end",e),!1},IF.prototype.oncancel=function(e){return this.onAny("end",e),!1},IF.prototype.onAny=function(e,t){var i,r=this,a="processOn"+e.charAt(0).toUpperCase()+e.slice(1);t=Ig(t);var o=function(e,t,i){i.ids.indexOf(t)>=0&&(i[a](e),e._found_=!0)};return IA(t,function(e){i=r.getIdentifier(e),IA(r.collections,o.bind(null,e,i)),e._found_||r.removeIdentifier(i)}),!1},IF.prototype.destroy=function(){this.unbindDocument(!0),this.ids={},this.index=0,this.collections.forEach(function(e){e.destroy()}),this.off()},IF.prototype.onDestroyed=function(e,t){if(0>this.collections.indexOf(t))return!1;this.collections.splice(this.collections.indexOf(t),1)};var IN=new IF,IU={create:function(e){return IN.create(e)}},Ik=new Map,IV=new Map,Ij=class{constructor(e,t,i,r){this.data=t;let{audio:a,volume:o,delay:h,loop:c}=t;if(!a)throw Error("Missing property");let d="string"==typeof a?r.getAudio(a).src:a.data;this.audioPlayer=new Ev({src:d,volume:o,delay:h,loop:c}),IV.has(i.uuid)?IV.get(i.uuid).push(this):IV.set(i.uuid,[this]),Ik.set(e,this)}playByToggle(){"stop"===this.data.toggle?"playing"===this.audioPlayer.status?this.audioPlayer.stop():(this.audioPlayer.stop(),this.audioPlayer.play()):"pause"===this.data.toggle?"playing"===this.audioPlayer.status?this.audioPlayer.pause():this.audioPlayer.play():(this.audioPlayer.stop(),this.audioPlayer.play())}dispose(){this.audioPlayer.stop()}},IG=class{constructor(e){this.data=e}dispatch(){this.data.playAudio?this.pauseAudio(this.data.playAudio):this.data.object?this.pauseAllAudiosFromObject(this.data.object):this.pauseAllAudios()}pauseAudio(e){let t=Ik.get(e);t&&(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t.audioPlayer[this.data.interaction](),this.disposeDelay()},this.data.delay)):t.audioPlayer[this.data.interaction]())}pauseAllAudiosFromObject(e){let t=IV.get(e);t?.length&&(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t.forEach(e=>e.audioPlayer[this.data.interaction]()),this.disposeDelay()},this.data.delay)):t.forEach(e=>e.audioPlayer[this.data.interaction]()))}pauseAllAudios(){let e=[...IV.values()];e.length&&(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{e.forEach(e=>{e.forEach(e=>{e.audioPlayer[this.data.interaction]()})}),this.disposeDelay()},this.data.delay)):e.forEach(e=>{e.forEach(e=>{e.audioPlayer[this.data.interaction]()})}))}disposeDelay(){clearTimeout(this.timeoutId),delete this.timeoutId}dispose(){clearTimeout(this.timeoutId),delete this.timeoutId}},IH=class{constructor(e,t,i,r,a){if(this.data=t,this.shared=r,this.condition=a,"play"===t.interaction)this.interaction=new Ij(e,t,i,r);else if("pause"===t.interaction||"stop"===t.interaction)this.interaction=new IG(t);else throw Error("Missing property")}dispatchBasic(){if(!1===R_(this.shared,this.condition))return!1;
8104this.interaction instanceof Ij?this.interaction.playByToggle():this.interaction.dispatch()}dispatchConditional(){if(!1===R_(this.shared,this.condition))return!1;this.interaction instanceof Ij?this.interaction.audioPlayer.play():this.interaction.dispatch()}dispatchGameControl(e){if(!1===R_(this.shared,this.condition))return!1;this.interaction instanceof Ij&&("start"===e?this.interaction.audioPlayer.play():this.interaction.audioPlayer.stop())}dispose(){this.interaction.dispose()}},IW=class{constructor(e,t,i,r){this.data=e,this.page=t,this.shared=i,this.condition=r,this.delay=0,this.emission=e.emission,void 0!==e.delay&&(this.delay=e.delay),this.particleSystem=this.page.scene.find(this.data.emitterObjectId)}toggleEmitting(){this.particleSystem.started&&!this.particleSystem.stopped?this.stop(this.delay):this.start(this.delay)}toggleFroze(){this.particleSystem.started&&!this.particleSystem.isFrozen?this.freeze(this.delay):this.unFreeze(this.delay)}start(e=0){if(e){this.delayTimerId=window.setTimeout(()=>{this.start(0),this.clearDelay()},e);return}this.particleSystem.start()}stop(e=0){if(e){this.delayTimerId=window.setTimeout(()=>{this.stop(0),this.clearDelay()},e);return}this.particleSystem.stop()}freeze(e=0){if(e){this.delayTimerId=window.setTimeout(()=>{this.freeze(0),this.clearDelay()},e);return}this.particleSystem.froze()}unFreeze(e=0){if(e){this.delayTimerId=window.setTimeout(()=>{this.unFreeze(0),this.clearDelay()},e);return}this.particleSystem.unFroze()}reset(e=0){if(e){this.delayTimerId=window.setTimeout(()=>{this.reset(0),this.clearDelay()},e);return}this.particleSystem.reset()}reverseFromCurrent(){switch(this.emission){case"emitToggle":this.toggleEmitting();break;case"pauseToggle":this.toggleFroze()}}dispatchBasic(){if(!1===R_(this.shared,this.condition)||!this.particleSystem)return!1;switch(this.emission){case"start":this.start(this.delay);break;case"emitToggle":this.toggleEmitting();break;case"pause":this.freeze(this.delay);break;case"pauseToggle":this.toggleFroze();break;case"stop":this.stop(this.delay);break;case"reset":this.reset(this.delay)}}dispatchConditional(){if(!1===R_(this.shared,this.condition)||!this.particleSystem)return!1;switch(this.emission){case"start":this.start(this.delay);break;case"stop":this.stop(this.delay);break;case"reset":this.reset(this.delay)}}dispatchGameControl(e){if(!1===R_(this.shared,this.condition)||!this.particleSystem)return!1;"start"===e?this.start(this.delay):this.stop(this.delay)}dispose(){this.particleSystem&&(this.particleSystem.reset(),this.clearDelay())}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}},Iq=(e,t)=>t.some(t=>t instanceof RegExp?t.test(e):t===e),IX=(e,{stripHash:t})=>{let i=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(e);if(!i)throw Error(`Invalid URL: ${e}`);let{type:r,data:a,hash:o}=i.groups,h=r.split(";");o=t?"":o;let c=!1;"base64"===h[h.length-1]&&(h.pop(),c=!0);let d=(h.shift()||"").toLowerCase(),u=[...h.map(e=>{let[t,i=""]=e.split("=").map(e=>e.trim());return"charset"===t&&"us-ascii"===(i=i.toLowerCase())?"":`${t}${i?`=${i}`:""}`}).filter(Boolean)];return c&&u.push("base64"),(u.length>0||d&&"text/plain"!==d)&&u.unshift(d),`data:${u.join(";")},${c?a.trim():a}${o?`#${o}`:""}`},IY=class{constructor({url:e,context:t},i,r,a){if(this.controlsManager=i,this.shared=r,this.condition=a,!e)throw Error("Missing property");this.url=e.startsWith("mailto:")?e:function(e,t){if(t={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...t},e=e.trim(),/^data:/i.test(e))return IX(e,t);if(/^view-source:/i.test(e))throw Error("`view-source:` is not supported as it is a non-standard protocol");let i=e.startsWith("//");!i&&/^\.*\//.test(e)||(e=e.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,t.defaultProtocol));let r=new URL(e);if(t.forceHttp&&t.forceHttps)throw Error("The `forceHttp` and `forceHttps` options cannot be used together");if(t.forceHttp&&"https:"===r.protocol&&(r.protocol="http:"),t.forceHttps&&"http:"===r.protocol&&(r.protocol="https:"),t.stripAuthentication&&(r.username="",r.password=""),t.stripHash?r.hash="":t.stripTextFragment&&(r.hash=r.hash.replace(/#?:~:text.*?$/i,"")),r.pathname){let e=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,t=0,i="";for(;;){let a=e.exec(r.pathname);if(!a)break;let o=a[0],h=a.index;i+=r.pathname.slice(t,h).replace(/\/{2,}/g,"/")+o,t=h+o.length}i+=r.pathname.slice(t,r.pathname.length).replace(/\/{2,}/g,"/"),r.pathname=i}if(r.pathname)try{r.pathname=decodeURI(r.pathname)}catch{}if(!0===t.removeDirectoryIndex&&(t.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let e=r.pathname.split("/");Iq(e[e.length-1],t.removeDirectoryIndex)&&(e=e.slice(0,-1),r.pathname=e.slice(1).join("/")+"/")}if(r.hostname&&(r.hostname=r.hostname.replace(/\.$/,""),t.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(r.hostname)&&(r.hostname=r.hostname.replace(/^www\./,""))),Array.isArray(t.removeQueryParameters))for(let e of[...r.searchParams.keys()])Iq(e,t.removeQueryParameters)&&r.searchParams.delete(e);
8104if(!0===t.removeQueryParameters&&(r.search=""),t.sortQueryParameters){r.searchParams.sort();try{r.search=decodeURIComponent(r.search)}catch{}}t.removeTrailingSlash&&(r.pathname=r.pathname.replace(/\/$/,""));let a=e;return e=r.toString(),t.removeSingleSlash||"/"!==r.pathname||a.endsWith("/")||""!==r.hash||(e=e.replace(/\/$/,"")),(t.removeTrailingSlash||"/"===r.pathname)&&""===r.hash&&t.removeSingleSlash&&(e=e.replace(/\/$/,"")),i&&!t.normalizeProtocol&&(e=e.replace(/^http:\/\//,"//")),t.stripProtocol&&(e=e.replace(/^(?:https?:)?\/\//,"")),e}(e,{removeTrailingSlash:!1,removeSingleSlash:!1,stripWWW:!1}),this.context=t??"tab"}dispatch(){if(!1===R_(this.shared,this.condition))return!1;pa?window.location.assign(this.url):("tab"===this.context||pr&&"none"===this.context?window.open(this.url,"_blank"):"window"===this.context?window.open(this.url,"_blank",`width=${window.innerWidth}, height=${window.innerHeight}`):window.open(this.url,"_parent"),this.controlsManager.orbitControls?.onPointerUp(pp[0]),pp.splice(0,pp.length))}},IQ=class{constructor(e,t,i,r,a){this.data=e,this.page=t,this.controlsManager=i,this.shared=r,this.condition=a,this.timeoutIdQueue=[],this.dispatchInner=()=>{this.objects.forEach(this.destroyCallback)},this.destroyCallback=e=>{this.timeoutIdQueue.shift();let t=this.page.scene.find(e);if(void 0===t)return;let i=this.controlsManager.sharedGameControlGlobals.rapierWorld,r=!i||t.dataPatched.physics?.fusedBody;if(t.cloner){for(let e of t.cloner.children)r?(e.playModeVisible=!1,e.rigidBody&&t.dataPatched.physics?.rigidBody==="positioned"&&(this.controlsManager.sharedGameControlGlobals.colliderToEntity.delete(e.rigidBody.collider(0).handle),i.removeRigidBody(e.rigidBody),e.rigidBody=void 0),e.bvhGeometry&&(e.bvhGeometry=void 0)):void 0===this.clone||this.clone===e?(e.playModeVisible=!1,e.rigidBody&&(this.controlsManager.sharedGameControlGlobals.colliderToEntity.delete(e.rigidBody.collider(0).handle),i.removeRigidBody(e.rigidBody),e.rigidBody=void 0)):void 0===e.playModeVisible&&(e.playModeVisible=!0);(r||void 0===this.clone||!1===this.clone)&&(t.visible=!1,t.rigidBody&&(this.controlsManager.sharedGameControlGlobals.colliderToEntity.delete(t.rigidBody.collider(0).handle),i.removeRigidBody(t.rigidBody),t.rigidBody=void 0),t.bvhGeometry&&(t.bvhGeometry=void 0))}else t.rigidBody&&(this.controlsManager.sharedGameControlGlobals.colliderToEntity.delete(t.rigidBody.collider(0).handle),i.removeRigidBody(t.rigidBody),t.rigidBody=void 0),t.bvhGeometry&&(t.bvhGeometry=void 0),t.visible=!1;void 0===i?this.controlsManager.sharedGameControlGlobals.entitiesWithTransformAnim=this.controlsManager.sharedGameControlGlobals.entitiesWithTransformAnim.filter(e=>void 0!==e.bvhGeometry):this.controlsManager.sharedGameControlGlobals.entitiesWithTransformAnim=this.controlsManager.sharedGameControlGlobals.entitiesWithTransformAnim.filter(e=>void 0!==e.rigidBody),t.destroyedInAction=!0,this.controlsManager.requestRender()},this.objects=[...e.objects]}dispatch(e){if(!1===R_(this.shared,this.condition))return!1;this.clone=e,this.data.delay?this.timeoutIdQueue.push(window.setTimeout(this.dispatchInner,1e3*this.data.delay)):this.dispatchInner()}dispatchFromStart(){if(!1===R_(this.shared,this.condition))return!1;this.timeoutIdQueue.push(window.setTimeout(this.dispatchInner,1e3*this.data.delay))}dispose(){this.timeoutIdQueue.forEach(e=>window.clearTimeout(e))}},IZ=class{constructor(e,t,i,r,a){this.data=e,this.page=t,this.shared=i,this.eventManager=r,this.condition=a,this.shared=i}dispatch(){if(!1===R_(this.shared,this.condition))return!1;clearTimeout(this.timeoutId),delete this.timeoutId,this.timeoutId=window.setTimeout(()=>{this.shared.reset(this.shared.data,!0),Rt(this.page,this.shared,!0),this.eventManager.reset(),this.eventManager.controlsManager.gameControl?.reset(!0),this.page.switchToPlayCamera(),this.eventManager.controlsManager.requestRender(),delete this.timeoutId},(this.data.delay??0)*1e3)}dispose(){clearTimeout(this.timeoutId),delete this.timeoutId}};function IK(e,t,i,r){let a=[],o=Es(i,r)||!!t.layers&&Es(t,r);for(let h of(a.push({update:()=>{e.transparent=o}}),e.layers)){let e=t.layers?.data(h.uuid),o=i.layers.data(h.uuid);if(o&&("light"===h.type||(h.visible??!0)&&(o.visible??!0)))for(let t of h.getNames().filter(e=>!gQ.some(t=>e.includes(t))))try{let i=h.getValue(t),c;if("colors"===t)c=I4(h,e,o,t);else if(Array.isArray(i))"steps"===t&&(c=I3(h,e,o,t));else if("number"==typeof i)c=IJ(h,e,o,t,r);else{if("boolean"==typeof i)continue;i instanceof tJ?c=I$(h,e,o,t):i instanceof ib?c=I0(h,e,o,t,r):i instanceof xx?c=I2(h,e,o,t,r):i instanceof ia?c=I1(h,e,o,t,r):"isTexture"in i&&(c=I5(h,e,o,t))}c&&(Array.isArray(c)?a.push(...c):a.push(c))}catch(e){console.error(`lerpMaterial: unexpected material layer for ${t}`,e)}}return a}function IJ(e,t,i,r,a){if(!e.hasValue(r)||!(r in i))return;let o=t?t[r]:e.getValue(r),h=i[r],c="string"==typeof o?Number(a.getVariable(o)??0):o,d="string"==typeof h?Number(a.getVariable(h)??0):h;if(c!==d)return{update:t=>{e.setValue(r,tK.lerp(c,d,t))},start:()=>{e.setValue(r,c)},end:()=>{e.setValue(r,d)}}}function I$(e,t,i,r){if(!e.hasValue(r)||!(r in i))return;let a=e.getValue(r),o=t?new tJ().fromArray(t[r]):a.clone(),h=new tJ().fromArray(i[r]);if(!o.equals(h))return{update:e=>{a.lerpVectors(o,h,e)},start:()=>{a.copy(o)},end:()=>{a.copy(h)}}}function I0(e,t,i,r,a){if(!e.hasValue(r)||!(r in i))return;let o=e.getValue(r),h=t?t[r]:void 0,c=i[r],d=h?xC(new ib,h,a):o.clone(),u=xC(new ib,c,a);if(!d.equals(u))return{update:e=>{o.lerpVectors(d,u,e)},start:()=>{o.copy(d)},end:()=>{o.copy(u)}}}function I1(e,t,i,r,a){if(!e.hasValue(r)||!(r in i))return;let o=t?t[r]:void 0,h=i[r],c=e.getValue(r),d=o?"string"==typeof o?a.getColor(o).clone():new ia().setRGB(o.r,o.g,o.b):c.clone(),u="string"==typeof h?a.getColor(h).clone():new ia().setRGB(h.r,h.g,h.b);
8104if(d.equals(u))return;let p=c.clone();return{update:t=>{e.getValue(r)!==p&&e.setValue(r,p),p.lerpColors(d,u,t)},start:()=>{p.copy(d)},end:()=>{p.copy(u)}}}function I2(e,t,i,r,a){if(!e.hasValue(r)||!(r in i))return;let o=t?t[r]:void 0,h=i[r],c=e.getValue(r),d=o?"string"==typeof o?a.color(o).clone():new ia().setRGB(o.r,o.g,o.b):c.clone(),u="string"==typeof h?a.getColor(h).clone():new xx(h.r,h.g,h.b,h.a);if(d.equals(u))return;let p=c.clone();return{update:t=>{e.getValue(r)!==p&&e.setValue(r,p),p.lerpColors(d,u,t)},start:()=>{p.copy(d)},end:()=>{p.copy(u)}}}function I3(e,t,i,r="steps"){if(!e.hasValue(r)||!(r in i))return;let a=[],o=e.getValue(r),h=t?t[r]:o,c=i[r];return u0(h,c)||a.push({update:t=>{let i=[...o];for(let e=0;e<o.length;++e){let r=h[e],a=c[e];i[e]=tK.lerp(r,a,t)}e.setValue(r,i)},start:()=>{e.setValue(r,h)},end:()=>{e.setValue(r,c)}}),a.length?a:void 0}function I4(e,t,i,r="colors"){if(!e.hasValue(r)||!(r in i))return;let a=[],o=e.getValue(r),h=t?t[r]:o.map(e=>e.toArray()),c=i[r];for(let e=0;e<o.length;++e){let t=[...h[e]],i=[...c[e]];gh.isEqual(t,i)||a.push({update:r=>{o[e].fromArray(gh.lerp(t,i,r))},start:()=>{o[e].fromArray(t)},end:()=>{o[e].fromArray(i)}})}return a.length?a:void 0}function I5(e,t,i,r="texture"){if(!e.hasValue(r)||!(r in i))return;let a=e.getNode("rotation"),o=t?.[r]?.rotation??0,h=i[r]?.rotation??0;if(a&&o!==h)return{update:e=>{a.value=tK.lerp(o,h,e)*tK.DEG2RAD},start:()=>{a.value=o*tK.DEG2RAD},end:()=>{a.value=h*tK.DEG2RAD}};let c=e.getNode("mat");if(!c)return;let d=t?t[r]:c,u=i[r],p=[...d.repeat],f=[...d.offset],m=[...u.repeat],g=[...u.offset],v=d.rotation??0,y=u.rotation??0;if(!go.isEqual(p,m)||!go.isEqual(f,g)||v!==y)return{update:e=>{c.repeat=go.lerp(p,m,e),c.offset=go.lerp(f,g,e),c.rotation=tK.lerp(v,y,e),c.updateMatrix()},start:()=>{c.repeat=[...p],c.offset=[...f],c.rotation=v,c.updateMatrix()},end:()=>{c.repeat=[...m],c.offset=[...g],c.rotation=y,c.updateMatrix()}}}function I6(e,t,i,r,a,o,h){if("colors"===e)I4(t,i,r,e)?.forEach(e=>e.update(a));else if(Array.isArray(o))"steps"===e&&I3(t,i,r,e)?.forEach(e=>e.update(a));else if("number"==typeof o)IJ(t,i,r,e,h)?.update(a);else{if("boolean"==typeof o)return;o instanceof tJ?I$(t,i,r,e)?.update(a):o instanceof ib?I0(t,i,r,e,h)?.update(a):o instanceof xx&&h?I2(t,i,r,e,h)?.update(a):o instanceof ia&&h?I1(t,i,r,e,h)?.update(a):"isTexture"in o&&I5(t,i,r,e)?.update(a)}}var I8=new ib,I9=new i6;function I7(e,t,i,r,a){let o=[];return e.data.visible&&o.push(...function(e,t,i,r,a){let o=[],h,c,d,u,p,f,m,g;if(e instanceof Du?((h=xD("position",e,t,i,a))&&o.push(h),(d=xM("rotation",e,t,i,a))&&o.push(d),(u=xD("shear",e,t,i,a))&&o.push(u)):((f=xM("slide",g={slide:t.pathSnapping?.slide??e.updatedPathSnapping?.slide??e.dataPatched.pathSnapping?.slide??0,offset:t.pathSnapping?.offset??e.updatedPathSnapping?.offset??e.dataPatched.pathSnapping?.offset??0},t.pathSnapping??e.updatedPathSnapping??e.dataPatched.pathSnapping,i.pathSnapping??e.dataPatched.pathSnapping,a))&&o.push(f),(m=xM("offset",g,t.pathSnapping??e.updatedPathSnapping??e.dataPatched.pathSnapping,i.pathSnapping??e.dataPatched.pathSnapping,a))&&o.push(m),!f&&!m&&((h=xT("position",e,t,i,a))&&o.push(h),(c=xT("scale",e,t,i,a))&&o.push(c),(d=function(e,t,i,r,a){let o=t?.rotation?t.rotation.map(e=>("string"==typeof e?Number(a.getVariable(e)??0):e)*tK.DEG2RAD):void 0,h=i.rotation?.map(e=>("string"==typeof e?Number(a.getVariable(e)??0):e)*tK.DEG2RAD);if(!h)return;let c=o?new ib().fromArray(o):new ib().setFromEuler(e.rotation),d=new ib().fromArray(h);if(c.equals(d))return;let u=I8.subVectors(d,c);if(!(r&&u.toArray().every(e=>Math.abs(e)<2*Math.PI)))return{update:t=>{I8.lerpVectors(c,d,t),e.rotation.setFromVector3(I8)},start:()=>{e.rotation.setFromVector3(c)},end:()=>{e.rotation.setFromVector3(d)}};{let t=new ix().setFromEuler(I9.setFromVector3(c)),i=new ix().setFromEuler(I9.setFromVector3(d));return{update:r=>{!function(e,t,i,r){if(0===r)return i.copy(e);if(1===r)return i.copy(t);let a=e.w*t.w+e.x*t.x+e.y*t.y+e.z*t.z;if(a>=1)return i.copy(e);let o=1-a*a;if(o<=Number.EPSILON){let a=1-r;return i.w=a*e.w+r*t.w,i.x=a*e.x+r*t.x,i.y=a*e.y+r*t.y,i.z=a*e.z+r*t.z,i.normalize()}let h=Math.sqrt(o),c=Math.atan2(h,a),d=Math.sin((1-r)*c)/h,u=Math.sin(r*c)/h;i.w=e.w*d+t.w*u,i.x=e.x*d+t.x*u,i.y=e.y*d+t.y*u,i.z=e.z*d+t.z*u}(t,i,e.quaternion,r)},start:()=>{e.rotation.setFromVector3(c)},end:()=>{e.rotation.setFromVector3(d)}}}}(e,t,i,r,a))&&o.push(d),(p=function(e,t,i,r){let a=i[e]?i[e]:void 0,o=r[e];if(!o)return;let h=t[e],c=a?new iZ().fromArray(a):h.clone(),d=new ib,u=new ix,p=new ib;c.decompose(d,u,p);let f=new iZ().fromArray(o),m=new ib,g=new ix,v=new ib;if(f.decompose(m,g,v),!c.equals(f))return{update:e=>{xA.slerpQuaternions(u,g,e),xS.lerpVectors(d,m,e),x_.lerpVectors(p,v,e),h.compose(xS,xA,x_)},start:()=>{h.compose(d,u,p)},end:()=>{h.compose(m,g,v)}}}("hiddenMatrix",e,t,i))&&o.push(p))),h||c||d||p||f||m){let i=e instanceof Du?()=>{e.updateWorldMatrix(!0,!1,!0),e.resetBBoxNeedsUpdate()}:()=>{e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD()),e.parent?.matrixWorldFusedFalse&&(e.matrixWorld.multiplyMatrices(e.parent.matrixWorldFusedFalse,e.matrix),e.matrixWorldNeedsUpdate=!1),CJ(e)&&C$(e.parent)&&e.invali
8104dateDownstreamBooleanData(!0),e.updatePathSnapping(Object.assign({},t.pathSnapping,g))};o.push({update:i,start:i,end:i})}return o}(e,t,i,a,r)),e instanceof Du?o.push(...function(e,t,i,r,a){let o=[],h,c,d,u,p,f,m,g,v,y,x,b,w,S,_;if("width"in e&&(h=xM("width",e,t,i,a))&&o.push(h),"height"in e&&(c=xM("height",e,t,i,a))&&o.push(c),e instanceof DL||e instanceof DU){let r={...t.fill},h={...i.fill};void 0!==r.enabled&&r.enabled!==h.enabled&&(o.push({update:()=>{e instanceof DL&&(e.fill.enabled=!0)}}),r.enabled||Object.assign(r,{enabled:!0,color:{...r.color,a:0}}),h.enabled||Object.assign(h,{enabled:!0,color:{...h.color,a:0}})),(d=xO("color",e.fill,r,h,a))&&o.push(d)}if(e instanceof DL){let r={...t.stroke},h={...i.stroke};(r.enabled||h.enabled)&&(o.push({update:()=>{e instanceof DL&&(e.stroke.enabled=!0)}}),r.enabled||Object.assign(r,{enabled:!0,color:{...r.color,a:0}}),h.enabled||Object.assign(h,{enabled:!0,color:{...h.color,a:0}})),(u=xO("color",e.stroke,r,h,a))&&o.push(u),(p=xM("thickness",e.stroke,r,h,a))&&o.push(p)}if(e instanceof DL){let r={...t.dropShadow},h={...i.dropShadow};(r.enabled||h.enabled)&&(o.push({update:()=>{e instanceof DL&&(e.dropShadow.enabled=!0)}}),r.enabled||Object.assign(r,{enabled:!0,color:{...r.color,a:0}}),h.enabled||Object.assign(h,{enabled:!0,color:{...h.color,a:0}})),(f=xO("color",e.dropShadow,r,h,a))&&o.push(f),(m=xM("blurRadius",e.dropShadow,r,h,a))&&o.push(m),(v=xM("spread",e.dropShadow,r,h,a))&&o.push(v),(g=xD("offset",e.dropShadow,r,h,a))&&o.push(g)}if(e instanceof DL){let r={...t.innerShadow},h={...i.innerShadow};(r.enabled||h.enabled)&&(o.push({update:()=>{e instanceof DL&&(e.innerShadow.enabled=!0)}}),r.enabled||Object.assign(r,{enabled:!0,color:{...r.color,a:0}}),h.enabled||Object.assign(h,{enabled:!0,color:{...h.color,a:0}})),(y=xO("color",e.innerShadow,r,h,a))&&o.push(y),(x=xM("blurRadius",e.innerShadow,r,h,a))&&o.push(x),(w=xM("spread",e.innerShadow,r,h,a))&&o.push(w),(b=xD("offset",e.innerShadow,r,h,a))&&o.push(b)}if(e instanceof DL||e instanceof DU){let r={...t.backgroundBlur},h={...i.backgroundBlur};(r.enabled||h.enabled)&&(o.push({update:()=>{e instanceof DL&&(e.backgroundBlur.enabled=!0)}}),r.enabled||Object.assign(r,{enabled:!0,radius:0}),h.enabled||Object.assign(h,{enabled:!0,radius:0})),(S=xM("radius",e.backgroundBlur,r,h,a))&&o.push(S)}if(e instanceof DL){let r={...t.layerBlur},h={...i.layerBlur};(r.enabled||h.enabled)&&(o.push({update:()=>{e instanceof DL&&(e.layerBlur.enabled=!0)}}),r.enabled||Object.assign(r,{enabled:!0,radius:0}),h.enabled||Object.assign(h,{enabled:!0,radius:0})),(_=xM("radius",e.layerBlur,r,h,a))&&o.push(_)}if(e instanceof DU||e instanceof Dz){let r=xE("cornerRadius",e,t,i,a);r&&o.push(r)}return o}(e,t,i,0,r)):(e.data.visible&&o.push(...function(e,t,i,r){let a=[];if(!("cloner"in i)||!e.cloner)return a;let o=e.cloner,h="cloner"in t?t.cloner:{},c=i.cloner;gy.forEach(e=>{let t;(t="count"===e?xM("count",o.parameters,h,c,r,!0):xI(e,o.parameters,h??{},c,r))&&a.push(t)});let d=function(e,t,i,r){if("radial"!==e.parameters.type)return;let a=t.radial,o=i.radial;if(!o)return;let h=e.parameters.radial,c=[];return gx.forEach(e=>{let t=xI(e,h,a??{},o,r);t&&c.push(t)}),c}(o,h,c,r);d?.length&&a.push(...d);let u=function(e,t,i,r){if("linear"!==e.parameters.type)return;let a=t.linear,o=i.linear;if(!o)return;let h=[],c=e.parameters.linear;return gb.forEach(e=>{let t=xI(e,c,a??{},o,r);t&&h.push(t)}),h}(o,h,c,r);u?.length&&a.push(...u);let p=function(e,t,i,r){if("grid"!==e.parameters.type)return;let a=t.grid,o=i.grid;if(!o)return;let h=[],c=e.parameters.grid;return gw.forEach(e=>{let t;(t="count"===e?xE(e,c,a??{},o,r,!0):xI(e,c,a??{},o,r))&&h.push(t)}),h}(o,h,c,r);p?.length&&a.push(...p);let f=function(e,t,i,r){if("toObject"!==e.parameters.type)return;let a=t.toObject,o=i.toObject;if(!o)return;let h=[],c=e.parameters.toObject;return gS.forEach(e=>{let t;(t="count"===e?xM(e,c,a??{},o,r,!0):xI(e,c,a??{},o,r))&&h.push(t)}),h}(o,h,c,r);f?.length&&a.push(...f);let m=function(e,t,i,r){if(!e.parameters.randomness)return;let a=t.randomnessObject,o=i.randomnessObject;if(!o)return;let h=[],c=e.parameters.randomnessObject;
8104return g_.forEach(e=>{let t=xI(e,c,a??{},o,r);t&&h.push(t)}),h}(o,h,c,r);return m?.length&&a.push(...m),a.length&&a.push({update:()=>{o.update()}}),a}(e,t,i,r)),e instanceof Ai?(e instanceof EZ&&e.data.visible&&o.push(...function(e,t,i,r){let a=[];if(!("geometry"in i))return a;let o=e.geometry.userData.parameters,h="geometry"in t?t.geometry:{},c=i.geometry;if(e instanceof E1){let t=function(e,t,i,r){if(void 0===i.scaleBaked)return;let a=(t.scaleBaked??e.data.geometry.scaleBaked).map(e=>"string"==typeof e?Number(r.getVariable(e)??0):e),o=i.scaleBaked.map(e=>"string"==typeof e?Number(r.getVariable(e)??0):e);if(gl.isEqual(a,o))return;let h=[];return h.push({update:t=>{e.updateGeometryInteractions({scaleBaked:[tK.lerp(a[0],o[0],t),tK.lerp(a[1],o[1],t),tK.lerp(a[2],o[2],t)]},r),e.invalidateDownstreamBooleanData(),e.refreshAttachedClonersInteractions()},start:()=>{e.updateGeometryInteractions({scaleBaked:a},r),e.invalidateDownstreamBooleanData(),e.refreshAttachedClonersInteractions()},end:()=>{e.updateGeometryInteractions({scaleBaked:o},r),e.invalidateDownstreamBooleanData(),e.refreshAttachedClonersInteractions()}}),h}(e,h,c,r);t&&a.push(...t)}else{let t={};if(Object.assign(t,u8(o,g0),u8(h,g0)),g0.forEach(e=>{let i=xI(e,t,h,c,r);i&&a.push(i)}),e instanceof D9){Object.assign(t,{extrusion:{...o.extrusion}});let e=function(e,t,i,r){if(!i.extrusion)return;let a=e.extrusion,o=t.extrusion??{},h=i.extrusion,c=[];return g$.forEach(e=>{let t=xI(e,a,o,h,r);t&&c.push(t)}),c}(t,h,c,r);e&&a.push(...e)}a.length&&a.push({update:i=>{e.updateGeometryInteractions(t,r),e.updateGeometryGroupsIfNeeded(),e.refreshAttachedClonersInteractions()},start:i=>{e.updateGeometryInteractions(t,r),e.updateGeometryGroupsIfNeeded(),e.refreshAttachedClonersInteractions()},end:i=>{e.updateGeometryInteractions(t,r),e.updateGeometryGroupsIfNeeded(),e.refreshAttachedClonersInteractions()}})}return a}(e,t,i,r)),e.data.visible&&o.push(...function(e,t,i,r){let a=[];if(Array.isArray(e.material)){if(!("materials"in i&&i.materials))return a;let o="materials"in t&&t.materials?t.materials:[],h=i.materials;e.material.forEach((e,t)=>{if(!h[t])return;let i=o[t]??{},c=h[t];"string"==typeof i||"string"==typeof c||a.push(...IK(e,i,c,r))})}else{if(!("material"in i&&i.material))return a;let o="material"in t&&t.material?t.material:{},h=i.material;if("string"==typeof o||"string"==typeof h)return a;a.push(...IK(e.material,o,h,r))}return a}(e,t,i,r))):Dl.is(e)?e.data.visible&&o.push(...function(e,t,i,r){let a=[];if(void 0!==i.intensity){let o=xM("intensity",e,t,i,r);o&&a.push(o)}if(void 0!==i.color){let o=function(e,t,i,r,a){let o=i[e]?i[e]:void 0,h=r[e];if(!h)return;let c=t[e],d=o?"string"==typeof o?a.getColor(o).clone():new ia().setRGB(o.r,o.g,o.b):c.clone(),u="string"==typeof h?a.getColor(h).clone():new ia().setRGB(h.r,h.g,h.b);
8104if(d.equals(u))return;let p=c.clone();return{update:i=>{p.lerpColors(d,u,i),t[e]?.copy?.(p)},start:()=>{p.copy(d)},end:()=>{p.copy(u)}}}("color",e,t,i,r);o&&a.push(o)}return a}(e,t,i,r)):e instanceof Cq&&o.push(...function(e,t,i,r){let a=[],o="OrthographicCamera"===e.cameraType?t.orthographic?.zoom:t.perspective?.zoom,h="OrthographicCamera"===e.cameraType?i.orthographic?.zoom:i.perspective?.zoom;if(void 0!==h){let t=o??e.zoom;t!==h&&a.push({update:i=>{e.zoom=tK.lerp(t,h,i),e.updateProjectionMatrix()},start:()=>{e.zoom=t,e.updateProjectionMatrix()},end:()=>{e.zoom=h,e.updateProjectionMatrix()}})}if(void 0!==i.targetOffset){let o=xM("targetOffset",e,t,i,r);o&&a.push(o)}return a}(e,t,i,r))),o.length?{update:e=>{o.forEach(t=>t.update(e))},start:e=>{o.forEach(t=>t.start?.(e))},end:e=>{o.forEach(t=>t.end?.(e))}}:void 0}var Re=new ib;function Rt(e,t,i=!1){let r=[],a=i=>{let r=i.data;for(let e of(delete i.states,i.currentState=null,i.reversibleToState=null,i.currentTransitionEvent=null,r.states)){let t={...e.data};i.states||(i.states={}),i.states[e.id]=y7.patch(r,t)}Rr(e.scene,i,null,t,void 0!==r.events.find(e=>"Follow"===e.data.type||"LookAt"===e.data.type)),Ri(e)};e.scene.traverse2D(a),e.traverseChildren(o=>{if(i&&(o.rigidBody?.setTranslation(o.position0,!0),o.rigidBody?.setRotation(o.rotation0,!0),o.rigidBody?.setLinvel(Re,!0),o.rigidBody?.setAngvel(Re,!0)),!_S.is(o))return;let h=o.uuid,c=o.data;if(delete o.states,o.uuid===mO)return;let d=!1;for(let t of(r.some(t=>e.scene.find(h)?.isDescendantOf(t))?d=!0:c.physics?.fusedBody===!0&&"dynamic"===c.physics.rigidBody&&r.push(h),o.data=c,o.currentState=null,o.reversibleToState=null,o.currentTransitionEvent=null,c.states)){let i={...t.data};!0===e.data.globalPhysics.usePhysics&&c.physics&&("dynamic"===c.physics.rigidBody||d)&&(void 0!==t.data.position&&delete i.position,void 0!==t.data.rotation&&delete i.rotation,void 0!==t.data.hiddenMatrix&&delete i.hiddenMatrix),o.states||(o.states={}),o.states[t.id]=yF.patch(c,i)}Rr(e.scene,o,null,t,void 0!==c.events.find(e=>"Follow"===e.data.type||"LookAt"===e.data.type)),o instanceof Os&&o.frame&&(o.frame.traverse(e=>a(e)),o.uiCanvas?.applySize())}),Ri(e),e.frame&&(e.frame.traverse(e=>a(e)),e.uiCanvas?.applySize())}function Ri(e){e.traverseEntity(t=>{for(let i of t.data.events){let t=[];switch(i.data.type){case"Follow":case"MouseHover":case"Scroll":case"MouseDown":case"MouseUp":case"MousePress":case"KeyUp":case"KeyDown":case"KeyPress":case"Collision":t.push(...i.data.actions);break;case"GameControl":for(let e of Object.values(i.data.gameActions))t.push(...e);break;case"DragDrop":t.push(...i.data.dragDropActions.drag,...i.data.dragDropActions.drop);break;case"Conditional":t.push(...i.data.inActions,...i.data.outActions)}for(let i of t)if("Create"===i.data.type&&"Yes"===i.data.hideBase){let t=e.scene.find(i.data.object);t&&(t.visible=!1)}}})}function Rr(e,t,i,r,a=!1){if(t instanceof EZ&&!(t instanceof Oz)&&t.removeInteractionGeometry(r),t instanceof Du?t.changeSelectedState(i,{shared:r},a):t.changeSelectedState(i,{scene:e,shared:r},a),t instanceof EZ&&t.updateGeometryGroupsIfNeeded(),t instanceof Cq&&t.updateCameraState(t.dataPatched,{scene:e,shared:r}),!(t instanceof Du)){if(t.cloner)for(let e of t.cloner.children)e.playModeVisible=void 0;t.updateVisible()}}function Rs(e){let t;if(5===e.easing){let{control1:i,control2:r}=e;t=`cubicBezier(
8105			${i[0]}, ${i[1]}, ${r[0]}, ${r[1]}
8106		)`}else if(6===e.easing){let{mass:i,stiffness:r,damping:a,velocity:o}=e;t=`spring( ${i}, ${r}, ${a}, ${o} )`}else{let i;switch(e.easing){case 0:default:i=gI.linear;break;case 1:i=gI.ease;break;case 2:i=gI.easeIn;break;case 3:i=gI.easeOut;break;case 4:i=gI.easeInOut}let[r,a,o,h]=i;t=`cubicBezier( ${r}, ${a}, ${o}, ${h} )`}return{duration:Math.max(e.duration,1e-4),easing:t}}function Ra(e){let t={delay:0,loop:-1===e.repeat||e.repeat+1};if(0===e.repeat)t.direction="normal",t.rewind=!1;else switch(e.direction){case"pingpong":t.direction="alternate",t.rewind=!1;break;case"pingpong-rewind":t.direction="alternate",t.rewind=!0;break;default:t.direction="normal",t.rewind=!1}switch(t.delay=0,t.endDelay=0,t.startOnceDelay=0,t.pingPongDelayCorrection=0,t.pingPongEndDelayCorrection=0,e.delayDirection){case"start-once":t.startOnceDelay=e.delay;break;case"start":t.delay=e.delay;break;case"end":t.endDelay=e.delay;break;case"start-end":case void 0:t.delay=e.delay,t.endDelay=e.delay}return"alternate"===t.direction&&(t.delay/=2,t.endDelay/=2,"start"===e.delayDirection?(t.pingPongDelayCorrection=t.delay,"number"==typeof t.loop&&t.loop%2==0&&(t.pingPongEndDelayCorrection=t.delay)):"end"===e.delayDirection?"number"==typeof t.loop&&t.loop%2!=0&&(t.pingPongEndDelayCorrection=t.endDelay):"start-end"===e.delayDirection&&(t.pingPongDelayCorrection=t.delay,t.pingPongEndDelayCorrection=t.endDelay)),t}var Rn={type:"beginState"},Ro={type:"completeState",isfromEntity:!1},Rl=class{constructor(e,t,i,r,a,o){if(this.object=e,this.data=r,this.sharedAssets=a,this.allowSlerp=o,this.targets={t:0},this.firstLoop=!0,this._changeBegan=!1,this._changeCompleted=!0,this.onChange=()=>{this.callback&&(this.callback.update(this.targets.t),this.object.requestRender()),0===this.targets.t||1===this.targets.t?this._changeCompleted||(this._changeCompleted=!0,this._changeBegan=!1,this.onChangeComplete()):(this._changeCompleted&&(this._changeCompleted=!1),this._changeBegan||(this._changeBegan=!0,this.onChangeBegin()))},this.onChangeBegin=()=>{this.object.reversibleToState=this.to.id;let e=this.targets.t>.5?this.from.id:this.to.id;this.object.prevState!==this.object.currentState&&(this.object.prevState=this.object.currentState),this.object.currentState=e,this.object.dispatchEvent({type:"beginState",state:e}),this.object instanceof Du||this.object.traverseEntity(e=>{e!==this.object&&e instanceof Cq&&e.dispatchEvent(Rn)})},this.onChangeComplete=()=>{this.firstLoop&&(this.onFirstLoop(),this.firstLoop=!1),this.object.reversibleToState=this.to.id;let e=this.targets.t<.5?this.from.id:this.to.id;this.object.prevState!==this.object.currentState&&(this.object.prevState=this.object.currentState),this.object.currentState=e,this.object.dispatchEvent({type:"completeState",state:e}),this.object instanceof Du||this.object.traverseEntity(e=>{e!==this.object&&e instanceof Cq&&e.dispatchEvent(Ro)})},this.onFirstLoop=()=>{this.useCurrentState&&(this.callback=I7(this.object,this.from.data,this.to.data,this.sharedAssets,this.allowSlerp))},void 0===t){let e=Rc(this.object,this.object.currentState===i?this.object.prevState:this.object.currentState);if(!e)throw Error("Missing property");this.from=e}else{let e=Rc(this.object,t);if(!e)throw Error("Missing property");this.from=e}if(void 0===i)throw Error("Missing property");{let e=Rc(this.object,i);if(!e)throw Error("Missing property");this.to=e}this.useCurrentState=void 0===t||void 0===i,this.params={targets:this.targets,t:1,autoplay:!1,...Ra(r),...Rs(r),change:this.onChange},this.callback=I7(this.object,void 0===t?{}:this.from.data,void 0===i?{}:this.to.data,this.sharedAssets,this.allowSlerp)}get changeBegan(){return this._changeBegan}get changeCompleted(){return this._changeCompleted}},Rh=class extends tF{constructor(e,t,i,r,a){if(super(),this.eventType=e,this.data=t,this.page=i,this.shared=r,this.condition=a,this.toggleIsForward=!1,this.timelineNeedsRebuild=!1,this.hasPlayedOnce=!1,this.pauseOnNextLoopEnd=!1,this.onTimelineChangeComplete=()=>{if(this.pauseOnNextLoopEnd){this.pauseOnNextLoopEnd=!1,this.timeline?.pause();return}"normal"!==this.data.tweens[0].data.direction&&(this.toggleIsForward=!this.toggleIsForward),!1!==this.timelineNeedsRebuild&&(this.timeline?.pause(),this.buildTimeline({isForward:this.toggleIsForward,needsRebuild:!1,isRebuild:!0}),this.timeline.play())},!t.object)throw Error("Missing property");let o=this.page.scene.find(t.object)??this.page.uiCanvas?.find(t.object)??this.page.scene.find2DInUIObjects(t.object);if(!o||!o.states||(this.object=o,t.tweens.length<2))throw Error("Missing property");this.tweens=Array(this.data.tweens.length-1),this.startOnceDelay="start-once"===t.tweens[0].data.delayDirection?t.tweens[0].data.delay:0,this.init()}get playing(){return this.timeline?.paused===!1}
8106get changeBegan(){return this.tweens.some(e=>e.changeBegan)??!1}init(){this.initialCurrentState=Rc(this.object,this.object.currentState).id,this.toggleIsForward=!1}get currentState(){return"Toggle"===this.data.runMode&&mM(this.eventType)?this.initialCurrentState:this.object.currentState}buildTimeline({isForward:e=!0,needsRebuild:t=!1,isRebuild:i=!1}={}){try{let r=Ra(this.data.tweens[0].data);i&&"number"==typeof r.loop&&r.loop--,this.timeline?.pause(),this.timeline=xv.timeline({autoplay:!1,...r,...!0===r.loop||r.loop>1?{timelineChangeComplete:this.onTimelineChangeComplete}:{}});let a=this.tweens.findIndex(e=>e?.changeBegan);if(!0===t&&(this.timelineNeedsRebuild=!0),e){let e=-1===a?0:a;for(let t=e;t<this.data.tweens.length-1;t++){let i=this.data.tweens[t],o=this.data.tweens[t+1],h;t===e&&(!0===this.object.wasMovedByUser||this.object.previousAction?.changeBegan===!0)?(h=void 0,this.object instanceof Cq&&(this.object.wasMovedByUser=!1)):h=void 0===i.data.state?this.currentState:i.data.state;let c=new Rl(this.object,h,void 0===o.data.state?this.currentState:o.data.state,o.data,this.shared,this.data.allowSlerp??!1);-1!==a&&t===e&&Object.assign(c.params,{startOnceDelay:0}),this.tweens[t]=c,this.timeline.add(c.params,this.timeline.duration+(t===e?r.delay:0))}this.timeline.duration+=r.endDelay}else{let e=-1===a?this.data.tweens.length-1:a+1;for(let t=e;t>0;t--){let i=this.data.tweens[t],o=this.data.tweens[t-1],h;t===e&&(!0===this.object.wasMovedByUser||this.object.previousAction?.changeBegan===!0)?(h=void 0,this.object instanceof Cq&&(this.object.wasMovedByUser=!1)):h=void 0===i.data.state?this.currentState:i.data.state;let c=new Rl(this.object,h,void 0===o.data.state?this.currentState:o.data.state,i.data,this.shared,this.data.allowSlerp??!1);-1!==a&&t===e&&Object.assign(c.params,{startOnceDelay:0}),this.tweens[t-1]=c,this.timeline.add(c.params,this.timeline.duration+(t===e?r.endDelay:0))}this.timeline.duration+=r.delay}}catch(e){e instanceof Error&&console.error(e.message)}this.object.previousAction?.playing===!0&&this.object.previousAction.pause(),this.object.previousAction=this}play(){if(!1===R_(this.shared,this.condition)||mM(this.eventType)&&"Once"===this.data.runMode&&this.hasPlayedOnce||(this.hasPlayedOnce=!0,this.playing))return!1;this.startTimeout?.pause();let e=Ra(this.data.tweens[0].data).pingPongDelayCorrection;this.startTimeout=xv({targets:{},duration:this.startOnceDelay+e,easing:"linear",complete:()=>{this.startTimeout=void 0;try{this.buildTimeline(),this.timeline.play()}catch(e){e instanceof Error&&console.error(e.message)}}})}pause(){this.timeline?.pause(),this.startTimeout?.pause(),this.tweens=Array(this.data.tweens.length-1),delete this.startTimeout}stop(){this.pause();let e=void 0===this.data.tweens[0].data.state?this.initialCurrentState:this.data.tweens[0].data.state;this.object instanceof Du?this.object.changeSelectedState(e,{shared:this.shared}):this.object.changeSelectedState(e,{scene:this.page.scene,shared:this.shared}),this.object.currentState=e}seek(e){if(!1===R_(this.shared,this.condition))return!1;void 0===this.timeline&&this.buildTimeline(),this.timeline?.seek(e*this.timeline.duration,!0)}toggle(e){if(!1===R_(this.shared,this.condition))return!1;this.startTimeout?.pause(),this.toggleIsForward=e??!this.toggleIsForward,this.playing?(this.timeline?.pause(),this.buildTimeline({isForward:this.toggleIsForward,needsRebuild:!0}),this.pauseOnNextLoopEnd=!0,this.timeline.play()):this.startTimeout=xv({targets:{},duration:this.startOnceDelay,easing:"linear",complete:()=>{this.startTimeout=void 0,this.timeline?.pause(),this.buildTimeline({isForward:this.toggleIsForward}),this.timeline.play()}})}playFromCurrent(){this.toggle(!0)}reverseFromCurrent(){this.toggle(!1)}dispose(){this.pause()}};function Rc(e,t){let i,r;if("string"==typeof t?(i=t,r=e.states?.[i]):null===t&&(i=null,r=e.data),!(void 0===i||void 0===r))return{id:i,data:r}}var Rd={type:"beginState"},Ru={type:"completeState",isfromEntity:!1},Rp={type:"requestRender"},Rf=class extends tF{constructor(e,t,i,r){super(),this.data=e,this.page=t,this.shared=i,this.condition=r,this.toggleIsForward=!1,this.posStart=new ib,this.posEnd=new ib,this.qStart=new ix,this.qEnd=new ix,this.zoomStart=1,this.zoomEnd=1}init(){}get playing(){return this.animation&&this.animation.began&&!this.animation.completed}buildAnimation(e=!1){if(!this.data.animate)return;let t=this.page.scene.find(this.data.targetCamera);if(!t||!t.visible)throw ReferenceError("Target camera not founded or not visible");let i={t:0};this.posStart.copy(this.page.activeCamera.position),this.qStart.copy(this.page.activeCamera.quaternion),this.zoomStart=this.page.activeCamera.zoom,this.animation=xv({targets:i,t:1,...Rs(this.data),update:()=>{0===i.t&&("Toggle"!==this.data.runMode||this.toggleIsForward?(this.posEnd.copy(t.position),this.qEnd.copy(t.quaternion),this.zoomEnd=t.zoom,this.fromCamera=this.page.activeCamera,this.switchCamera(t.uuid)):this.fromCamera&&(this.posEnd.copy(this.fromCamera.position),this.qEnd.copy(this.fromCamera.quaternion),this.zoomEnd=this.fromCamera.zoom,this.switchCamera(this.fromCamera.uuid)),this.page.activeCamera.dispatchEvent(Rd));let e=this.page.activeCamera;e.position.lerpVectors(this.posStart,this.posEnd,i.t),e.quaternion.slerp
8106Quaternions(this.qStart,this.qEnd,i.t),e.zoom=this.zoomStart+(this.zoomEnd-this.zoomStart)*i.t,e.wasMovedBySwitchCameraAction=!0,e.updateMatrix(),e.updateMatrixWorld(),e.updateProjectionMatrix(),e.dispatchEvent(Rp),1===i.t&&e.dispatchEvent(Ru)}})}switchCamera(e){let t=this.page.activeCamera,i=this.page.scene.find(e);if(!i||!i.visible)throw ReferenceError("Target camera not founded or not visible");this.page.switchActiveCamera(i),t.dispatchEvent({type:"cameraChange",camera:i})}play(){if(!1===R_(this.shared,this.condition))return!1;if(!this.playing&&this.page.activeCamera.uuid!==this.data.targetCamera)try{clearTimeout(this.timeoutId),this.timeoutId=window.setTimeout(()=>{delete this.timeoutId,this.data.animate?(this.buildAnimation(),this.animation?.play()):this.switchCamera(this.data.targetCamera)},1e3*this.data.delay)}catch{}}pause(){this.animation?.pause(),clearTimeout(this.timeoutId),delete this.timeoutId}toggle(e){if(!1===R_(this.shared,this.condition))return!1;if(window.clearTimeout(this.timeoutId),delete this.timeoutId,e!==this.toggleIsForward)try{this.playing?(this.animation?.pause(),this.toggleIsForward=e??!this.toggleIsForward,this.buildAnimation(!0),this.animation?.play()):this.timeoutId=window.setTimeout(()=>{this.toggleIsForward=e??!this.toggleIsForward,this.data.animate?(this.animation?.pause(),this.buildAnimation(),this.animation?.play()):(this.toggleIsForward?(this.fromCamera=this.page.activeCamera,this.switchCamera(this.data.targetCamera)):this.fromCamera&&this.switchCamera(this.fromCamera.uuid),this.page.activeCamera.dispatchEvent(Ru),this.page.activeCamera.dispatchEvent(Rp))},1e3*this.data.delay)}catch{}}playFromCurrent(){this.toggle(!0)}reverseFromCurrent(){this.toggle(!1)}dispose(){this.pause(),this.toggleIsForward=!1}},Rm=class extends tF{constructor(e,t,i,r,a){super(),this.id=e,this.data=t,this.scene=i,this.sharedAssets=r,this.eventType=a,this.toggleIsForward=!1,this._finished=!1,this.hasPlayedOnce=!1,this._shouldForwardLoop=!1,this._shouldPauseOnNextLoopComplete=!1,this._onLoopComplete=()=>{this._shouldPauseOnNextLoopComplete&&(this.timeline.pause(),this._shouldPauseOnNextLoopComplete=!1)};try{let e=Ra(this.data);"number"==typeof e.loop&&e.loop--,this.timeline=xv.timeline({...e,autoplay:!1}),this._shouldForwardLoop=!0===e.loop||"number"==typeof e.loop&&e.loop>1;let t=this.sharedAssets.data.timelineAnimations[this.data.timeline].mapping;Object.entries(t).forEach(([e,t])=>{var i;let r=this.scene.find(e);if(!r)return;let a=r.data.timelineAnimations[t];if(!a)return;let o=bg.addKeyframesToTimeline(r,{...a},(i=this.sharedAssets,{position(e){Object.assign(r.position,e),(void 0!==e.x||void 0!==e.y||void 0!==e.z)&&(r.updateMatrix(),r.resetBBoxNeedsUpdate(),r.dispatchEvent({type:"requestRender"}))},rotation(e){let t=Object.keys(e)[0];r.rotation[t]=e[t]*tK.DEG2RAD,(void 0!==e.x||void 0!==e.y||void 0!==e.z)&&(r.updateMatrix(),r.resetBBoxNeedsUpdate(),r.dispatchEvent({type:"requestRender"}))},scale(e){Object.assign(r.scale,e),(void 0!==e.x||void 0!==e.y||void 0!==e.z)&&(r.updateMatrix(),r.resetBBoxNeedsUpdate(),r.dispatchEvent({type:"requestRender"}))},shapeSize(e){r instanceof EZ&&(r.userData.value={...r.userData.value,...e},(void 0!==e.x||void 0!==e.y||void 0!==e.z)&&(r.updateGeometryInteractions({width:r.userData.value.x,height:r.userData.value.y,depth:r.userData.value.z},i),r.resetBBoxNeedsUpdate(),r.invalidateDownstreamBooleanData(),r.dispatchEvent({type:"requestRender"})))},material(e,t,a){a&&(Object.entries(a).forEach(([e,{start:r,end:a,t:o}])=>{let h=t.getValue(e);void 0!==h&&I6(e,t,r,a,o,h,i)}),r.dispatchEvent({type:"requestRender"}))},opacity(e){if(r instanceof Ai&&!Array.isArray(r.material)){let t=r.material.getLayersOfType("light")[0];r.material.transparent=!0,I6("alphaOverride",t,{alphaOverride:e},{alphaOverride:e+1},0,e,i),r.dispatchEvent({type:"requestRender"})}},light(e,t){(r instanceof De||r instanceof D6||r instanceof Ds)&&(r[e]=t,r.dispatchEvent({type:"requestRender"}))},cloner(e){e.cloner?.update(),e.dispatchEvent({type:"requestRender"})},pathExtrusion(e,t){e.geometry.userData.parameters.extrusion={...e.geometry.userData.parameters.extrusion,...t},e.updateGeometryInteractions({extrusion:{...e.geometry.userData.parameters.extrusion}}
8106,i),e.resetBBoxNeedsUpdate(),e.invalidateDownstreamBooleanData(),e.dispatchEvent({type:"requestRender"})},pathSnapping(e){r.userData.pathSnapping={...r.userData.pathSnapping,...e},r.updatePathSnapping(r.userData.pathSnapping),r.dispatchEvent({type:"requestRender"})}}),this.sharedAssets),h=("start"===this.data.delayDirection?this.data.delay:0)+("start-end"===this.data.delayDirection?this.data.delay:0)+("start-once"===this.data.delayDirection?this.data.delay:0);o.forEach(e=>{this.timeline.add(e,h)}),this.timeline.duration=1e3*a.to+h}),this.timeline.delay=0,this.timeline.duration+=("start"===this.data.delayDirection?this.data.delay:0)+("end"===this.data.delayDirection?this.data.delay:0)+("start-end"===this.data.delayDirection?2*this.data.delay:0)+("start-once"===this.data.delayDirection?2*this.data.delay:0),this.timeline.finished.then(()=>{Object.keys(t).forEach(e=>{let t=this.scene.find(e);t instanceof Cq&&t.dispatchEvent(Ro)}),this._finished=!0}),this.timeline.loopComplete=this._onLoopComplete}catch(e){throw Error("Missing property")}}get playing(){return!1===this.timeline.paused}get finished(){return this._finished}get paused(){return this.timeline.paused}play(){if(void 0!==this.eventType&&mM(this.eventType)&&"Once"===this.data.runMode&&this.hasPlayedOnce||void 0===this.eventType&&this._finished)return!1;this.hasPlayedOnce=!0,Object.keys(this.sharedAssets.data.timelineAnimations[this.data.timeline].mapping).forEach(e=>{let t=this.scene.find(e);t instanceof Cq&&t.dispatchEvent(Rn)}),this.timeline.restart()}pause(){this.timeline.pause()}stop(){this.pause(),this.seek(0),this.timeline.reset(),this._finished=!1}seek(e){this.timeline.seek(e*this.timeline.duration,!0)}toggle(e){if(this.toggleIsForward=e??!this.toggleIsForward,this.playing){if(!this.toggleIsForward&&this.timeline.reversed&&this._shouldForwardLoop&&this.timeline.remaining%2==1){this._shouldPauseOnNextLoopComplete=!0;return}this.timeline.reverse(this.timeline.duration-this.timeline.currentTime),this._shouldForwardLoop&&this.timeline.loop&&this.timeline.reversed&&(this._shouldPauseOnNextLoopComplete=!0)}else(!this.toggleIsForward!==this.timeline.reversed||!this.toggleIsForward&&this.timeline.reversed&&"alternate"===this.timeline.direction)&&this.timeline.reverse(),"number"==typeof this.timeline.loop&&"number"==typeof this.timeline.remaining&&this.timeline.remaining<this.timeline.loop&&this.toggleIsForward&&(this.timeline.remaining=this.timeline.loop),this.timeline.play()}playFromCurrent(){this.toggle(!0)}reverseFromCurrent(){this.toggle(!1)}dispose(){this.pause()}};function Rg(e){let t=e?.tracks.filter(e=>"vector"===e.ValueTypeName||"quaternion"===e.ValueTypeName).map(e=>e.times.length);if(t?.length){let e=t&&t.length?u1(t,h4,u$):void 0;return e&&e>2?e:2}return 2}var Rv=class extends tF{constructor(e,t,i,r,a){super(),this.data=e,this.page=t,this.animationControls=i,this.shared=r,this.condition=a,this.startOnceDelay=0,this.toggleIsForward=!1;let o=e.object,h=t.scene.find(e.object);h&&Array.isArray(h.identity)&&(o=h.identity[0]),this.data={...e,object:o};let c=this.animationControls.clipIdToAction[e.clipId+"/"+o];if(this.duration=c?.getClip()?.duration??1,this.data.crop2){let e=Rg(c?.getClip());this.leftFrameTime=this.data.crop2[0]/(e-1)*this.duration,this.rightFrameTime=this.data.crop2[1]/(e-1)*this.duration}else{let e=c?.getClip()?.tracks[0]?.times.length;e&&e>1?(this.leftFrameTime=this.data.crop[0]/e*this.duration,this.rightFrameTime=this.data.crop[1]/e*this.duration):(this.leftFrameTime=0,this.rightFrameTime=this.duration)}this.startOnceDelay=e.delay}get playing(){return this.threeAnimAction?.isRunning()??!1}play(e=!1){if(!1===R_(this.shared,this.condition))return!1;window.clearTimeout(this.timeoutId),this.timeoutId=window.setTimeout(()=>{if(this.threeAnimAction=this.animationControls.play(this.data),!this.threeAnimAction)return;this.threeAnimAction.reset(),this.threeAnimAction.time=this.leftFrameTime,this.threeAnimAction._clip.start=this.leftFrameTime,this.threeAnimAction._clip.duration=this.rightFrameTime;let t=this.data.object;
vendor: 5,511 bytes, line 8106
8106Object.entries(this.animationControls.clipIdToAction).forEach(([i,r])=>{let a=i.split("/")[1];this.threeAnimAction!==r&&a===t&&r.isRunning()&&(e?r.fadeOut(.2):r.stop())}),e&&this.threeAnimAction?.fadeIn(.2)},this.startOnceDelay)}pause(){this.threeAnimAction&&(this.threeAnimAction.paused=!0),window.clearTimeout(this.timeoutId),delete this.timeoutId}stop(){this.threeAnimAction?.fadeOut(.2)}seek(e){this.threeAnimAction=this.animationControls.play(this.data),this.threeAnimAction&&(this.threeAnimAction.paused=!0,this.threeAnimAction.time=tK.clamp(this.threeAnimAction.time+1/60*e,this.leftFrameTime,this.rightFrameTime-16e-5),this.animationControls.needsUpdate=!0,this.animationControls.requestRender())}toggle(e,t=!1){if(!1===R_(this.shared,this.condition))return!1;this.toggleIsForward=e??!this.toggleIsForward,this.threeAnimAction&&(this.threeAnimAction._loopCount=0),this.playing?this.threeAnimAction&&(this.threeAnimAction.timeScale=this.toggleIsForward?1:-1,this.toggleIsForward?(this.threeAnimAction._clip.start=this.leftFrameTime,this.threeAnimAction._clip.duration=this.rightFrameTime):(this.threeAnimAction._clip.start=this.rightFrameTime,this.threeAnimAction._clip.duration=this.leftFrameTime)):this.timeoutId=window.setTimeout(()=>{if(this.threeAnimAction=this.animationControls.play(this.data),this.threeAnimAction){this.toggleIsForward?(this.threeAnimAction.time=this.leftFrameTime,this.threeAnimAction._clip.start=this.leftFrameTime,this.threeAnimAction._clip.duration=this.rightFrameTime):(this.threeAnimAction.time=this.rightFrameTime,this.threeAnimAction._clip.start=this.rightFrameTime,this.threeAnimAction._clip.duration=this.leftFrameTime),this.threeAnimAction.paused=!1,this.threeAnimAction.timeScale=this.toggleIsForward?1:-1;let e=this.data.clipId.split("/")[1];Object.entries(this.animationControls.clipIdToAction).forEach(([i,r])=>{let a=i.split("/")[1];this.threeAnimAction!==r&&a===e&&r.isRunning()&&(t?r.fadeOut(.2):r.stop())}),t&&this.threeAnimAction?.fadeIn(.2)}},this.startOnceDelay)}playFromCurrent(){this.toggle(!0)}reverseFromCurrent(){this.toggle(!1)}dispose(){let e=this.animationControls.clipIdToAction[this.data.clipId+"/"+this.data.object]?.getClip();e&&(e.duration=this.duration),this.pause()}},Ry=class{constructor(e,t,i,r,a){this.data=e,this.page=t,this.eventManager=i,this.shared=r,this.condition=a,this.timeOutId=-1,this.scene=t.scene}dispatch(){if(!1===R_(this.shared,this.condition))return!1;this.data.target!==this.page.uuid&&(window.clearTimeout(this.timeOutId),this.timeOutId=window.setTimeout(()=>{this.play()},1e3*this.data.delay))}dispose(){window.clearTimeout(this.timeOutId)}play(){if(this.scene.children.every(e=>e.uuid!==this.data.target||e.data.uiScene))return;"fade"===this.data.transition&&this.data.duration>0&&this.eventManager.eventContext.renderer.renderFromSceneForSceneTransitionPass(this.scene,this.scene.activeCamera,1e3*this.data.duration),this.eventManager.deactivate(),this.eventManager.controlsManager.deactivate();let e=this.scene.activeCamera;this.scene.updatePage(this.data.target),this.scene.traverseVisibleEntity(e=>{"ParticleSystem"===e.type&&(e.sleep(),e.wakeUp(),e.data.autoPlay?e.start():e.stop())}),this.scene.activePage.switchToPlayCamera(),this.scene.activeCamera.copyViewPlaneSize(e),Rt(this.scene.activePage,this.shared),this.eventManager.activate(),this.eventManager.controlsManager.activate(this.eventManager)}},Rx=class{constructor(e,t,i,r){this.data=e,this.page=t,this.shared=i,this.condition=r,this.evaluatedCondition=!1}checkConditions(){this.evaluatedCondition=R_(this.shared,this.condition)}dispatch(){if(!1===this.evaluatedCondition)return!1;let e=this.shared.getVariable(this.data.variableId),t=_f(this.data.expression,this.shared,yY.typeOfVariable(e));void 0!==t&&this.shared.updateVariable(this.data.variableId,"string"==typeof t?{textValue:t}:t)}dispose(){}},Rb=class{constructor(e,t,i,r){this.data=e,this.page=t,this.shared=i,this.condition=r,this.timeoutId=null}dispatchInner(){if(!1===R_(this.shared,this.condition))return!1;let e=this.shared.getDynamicVariablePlayState(this.data.variableId);if("PlayPause"===this.data.mode)void 0===this.shared.getDynamicVariableToggleIsForward(this.data.variableId)&&this.shared.setDynamicVariableToggleIsForward(this.data.variableId,!0),this.shared.setDynamicVariablePlayState(this.data.variableId,"Playing"===e?"Paused":"Playing");else if("Play"===this.data.mode&&"Playing"!==e)void 0===this.shared.getDynamicVariableToggleIsForward(this.data.variableId)&&this.shared.setDynamicVariableToggleIsForward(this.data.variableId,!0),this.shared.setDynamicVariablePlayState(this.data.variableId,"Playing");else if("Stop"===this.data.mode&&"Stopped"!==e)this.shared.setDynamicVariablePlayState(this.data.variableId,"Stopped");else if("Pause"===this.data.mode&&"Paused"!==e)this.shared.setDynamicVariablePlayState(this.data.variableId,"Paused");else if("Restart"===this.data.mode)this.shared.setDynamicVariablePlayState(this.data.variableId,"Restarted");else if("Toggle"===this.data.mode){let t=this.shared.getDynamicVariableToggleIsForward(this.data.variableId);"Playing"===e?this.shared.setDynamicVariableToggleIsForward(this.data.variableId,void 0!==t&&!t):(this.shared.setDynamicVariableToggleIsForward(this.data.variableId,!t),this.shared.setDynamicVariablePlayState(this.data.variableId,"Playing"))}}dispatch(){let e=this.data.delay,t=this.shared.getDynamicVariablePlayState(this.data.variableId);"PlayPause"===this.data.mode&&"Playing"===t&&(e=this.data.pauseDelay),0!==e?
8106(this.timeoutId&&window.clearTimeout(this.timeoutId),this.timeoutId=window.setTimeout(()=>{this.timeoutId=null,this.dispatchInner()},e)):this.dispatchInner()}dispose(){this.timeoutId&&window.clearTimeout(this.timeoutId)}},Rw=class{constructor(e,t,i,r){this.data=e,this.page=t,this.shared=i,this.condition=r}dispatch(){if(!1===R_(this.shared,this.condition))return!1;("single"===this.data.target?this.data.variableId?[this.data.variableId]:[]:Object.keys(this.shared.getVariables())).forEach(e=>{this.shared.getVariable(e);let t=this.shared.data.variables.data(e)?.value;void 0!==t&&this.shared.updateVariable(e,t),this.shared.enableLocalStorageForPersistentVariables&&localStorage.removeItem(EV(e))})}dispose(){}},RS=class{constructor(e,t,i,r){this.data=e,this.page=t,this.shared=i,this.condition=r}dispatch(){if(!1===R_(this.shared,this.condition))return!1;this.data.userAPIId&&this.shared.getUserAPI(this.data.userAPIId)?.callUserAPI(this.shared)}dispose(){}};function R_(e,t){if(void 0===t)return!0;if(0===t.expression.length)return!1;let i=_f(t.expression,e,"boolean");return t.negate?!i:!!i}function RA(e,t,i,r,a,o){let h={Audio:[],Video:[],Particles:[],Link:[],Destroy:[],Create:[],Reset:[],Transition:[],TimelineAnimation:[],SwitchCamera:[],Animation:[],SceneTransition:[],SetVariable:[],DynamicVariablePlay:[],ClearLocalStorage:[],UserAPI:[]},c=t=>({id:d,data:u})=>{try{"Audio"===u.type?mD[e.type].includes("Audio")&&h.Audio.push(new IH(d,u,o,r,t)):"Video"!==u.type||o instanceof Du?"Particles"===u.type?mD[e.type].includes("Particles")&&h.Particles.push(new IW(u,i,r,t)):"Link"===u.type?mD[e.type].includes("Link")&&h.Link.push(new IY(u,a.controlsManager,r,t)):"Create"===u.type?mD[e.type].includes("Create")&&h.Create.push(new Rz(u,i,a.controlsManager,r,t)):"Destroy"===u.type?mD[e.type].includes("Destroy")&&h.Destroy.push(new IQ(u,i,a.controlsManager,r,t)):"Reset"===u.type?mD[e.type].includes("Reset")&&h.Reset.push(new IZ(u,i,r,a,t)):"Transition"===u.type?mD[e.type].includes("Transition")&&h.Transition.push(new Rh(e.type,u,i,r,t)):"SwitchCamera"===u.type?mD[e.type].includes("SwitchCamera")&&h.SwitchCamera.push(new Rf(u,i,r,t)):"SceneTransition"===u.type?mD[e.type].includes("SceneTransition")&&h.SceneTransition.push(new Ry(u,i,a,r,t)):"Animation"===u.type?mD[e.type].includes("Animation")&&h.Animation.push(new Rv(u,i,a.animationControls,r,t)):"SetVariable"===u.type?mD[e.type].includes("SetVariable")&&h.SetVariable.push(new Rx(u,i,r,t)):"DynamicVariablePlay"===u.type?mD[e.type].includes("DynamicVariablePlay")&&h.DynamicVariablePlay.push(new Rb(u,i,r,t)):"Conditional"===u.type?mD[e.type].includes("Conditional")&&(u.ifActions.forEach(c({expression:u.condition,negate:!1})),u.elseActions.forEach(c({expression:u.condition,negate:!0}))):"ClearLocalStorage"===u.type?mD[e.type].includes("ClearLocalStorage")&&h.ClearLocalStorage.push(new Rw(u,i,r,t)):"UserAPI"===u.type?mD[e.type].includes("UserAPI")&&h.UserAPI.push(new RS(u,i,r,t)):"TimelineAnimation"===u.type&&mD[e.type].includes("TimelineAnimation")&&h.TimelineAnimation.push(new Rm(d,u,i.scene,r,e.type)):mD[e.type].includes("Video")&&h.Video.push(new RD(d,u,o,r,t))}catch(e){}};return t.forEach(c()),h}function RM(e){Object.values(e).forEach(e=>{e.forEach(e=>{(e instanceof IH||e instanceof RD||e instanceof Rh||e instanceof Rm||e instanceof IW||e instanceof Rv||e instanceof Rh||e instanceof Rz||e instanceof IQ||e instanceof Rf||e instanceof Ry||e instanceof IZ||e instanceof Rx||e instanceof Rb)&&e.dispose()})})}var RE=new Map,RC=new Map,RT=class{constructor(e,t,i){this.data=t,this.delay=0,this.status="stopped";let{layerId:r,loop:a,volume:o,delay:h}=t;if(this.object=i,void 0===r)throw Error("Missing property");let c=function(e,t){let i;if("material"in e&&(i=Array.isArray(e.material)?e.material[0].layers.find(e=>e.uuid===t):e.material.layers.find(e=>e.uuid===t)),i)return i.color.texture.image.img instanceof HTMLVideoElement?i.color.texture.image.img:void 0}(i,r);c&&(this.videoElement=c,this.videoElement.loop=a===1/0,pa&&(this.videoElement.autoplay=!0),void 0!==o&&(this.videoElement.volume=o)),void 0!==h&&(this.delay=h),RC.has(i.uuid)?RC.get(i.uuid).push(this):RC.set(i.uuid,[this]),RE.set(e,this),this.pause()}mute(){this.videoElement&&(this.videoElement.muted=!0)}unMute(){this.videoElement&&(this.videoElement.muted=!1)}play(e){if(!this.videoElement)return;let t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);e?(this.mute(),this.delay+=150):t?(this.mute(),window.setTimeout(()=>{this.unMute()},100)):this.unMute(),this.delayTimerId=window.setTimeout(()=>{if(!this.videoElement)return;let e=this.videoElement.play();void 0!==e&&e.then(e=>{}).catch(e=>{this.play()}),this.clearDelay()},this.delay),this.status="playing"}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}pause(){this.videoElement&&(this.videoElement.pause(),this.status="paused")}stop(){this.videoElement&&(this.videoElement.pause(),this.videoElement.currentTime=0,this.status="stopped",this.clearDelay())}seek(e){return new Promise(t=>{if(!this.videoElement)return t();let i=this.videoElement.duration;i>0&&(this.videoElement.currentTime=e%i),this.videoElement.addEventListener("seeked",()=>t(),{once:!0})})}
8106playByToggle(){"stop"===this.data.toggle?"playing"===this.status?this.stop():(this.stop(),this.play()):"pause"===this.data.toggle?"playing"===this.status?this.pause():this.play():(this.stop(),this.play())}dispose(){this.videoElement&&(this.stop(),this.videoElement.muted=!0)}},RP=class{constructor(e){this.data=e}dispatch(){this.data.playVideo?this.pauseVideo(this.data.playVideo):this.data.object?this.pauseAllVideosFromObject(this.data.object):this.pauseAllVideos()}pauseVideo(e){let t=RE.get(e);t&&(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t[this.data.interaction](),this.disposeDelay()},this.data.delay)):t[this.data.interaction]())}pauseAllVideosFromObject(e){let t=RC.get(e);t?.length&&(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{t.forEach(e=>e[this.data.interaction]()),this.disposeDelay()},this.data.delay)):t.forEach(e=>e[this.data.interaction]()))}pauseAllVideos(){let e=[...RC.values()];e.length&&(this.data.delay>0?(this.disposeDelay(),this.timeoutId=window.setTimeout(()=>{e.forEach(e=>{e.forEach(e=>{e[this.data.interaction]()})}),this.disposeDelay()},this.data.delay)):e.forEach(e=>{e.forEach(e=>{e[this.data.interaction]()})}))}disposeDelay(){clearTimeout(this.timeoutId),delete this.timeoutId}dispose(){clearTimeout(this.timeoutId),delete this.timeoutId}},RD=class{constructor(e,t,i,r,a){if(this.data=t,this.shared=r,this.condition=a,"play"===t.interaction)this.interaction=new RT(e,t,i);else if("pause"===t.interaction||"stop"===t.interaction)this.interaction=new RP(t);else throw Error("Missing property")}dispatchBasic(){if(!1===R_(this.shared,this.condition))return!1;this.interaction instanceof RT?this.interaction.playByToggle():this.interaction.dispatch()}dispatchConditional(){if(!1===R_(this.shared,this.condition))return!1;this.interaction instanceof RT?this.interaction.play():this.interaction.dispatch()}dispose(){this.interaction.dispose()}},RO=(()=>{let e,t,i,r;function a(i){!e&&!RI()&&t?.sharedGameControlGlobals.createdObjects.length>0&&(e=requestAnimationFrame(o)),i&&(t=i,r=i.requestRender)}function o(a){let h=i?a-i:0,c=t.sharedGameControlGlobals.createdObjects,d=t.sharedGameControlGlobals.nCreatedPerAction,u=c.length,p=0;for(;p<u;){let e=c[p];void 0===e.userData.createdTime&&(e.userData.createdTime=a),void 0===e.userData.lifetime&&void 0===e.userData.quantity||e.userData.lifetime&&a-e.userData.createdTime<e.userData.lifetime||e.userData.quantity&&d[e.userData.actionId]<=e.userData.quantity?(e.userData.velocity&&(e.position.addScaledVector(e.userData.velocity,h/1e3),e.updateMatrix(),r()),p++):(d[e.userData.actionId]>e.userData.quantity&&d[e.userData.actionId]--,c.splice(p,1),e.removeFromParent(),t.sharedGameControlGlobals.rapierWorld&&e.rigidBody?(t.sharedGameControlGlobals.colliderToEntity.delete(e.rigidBody.collider(0).handle),t.sharedGameControlGlobals.rapierWorld.removeRigidBody(e.rigidBody)):(e.bvhGeometry=void 0,t.sharedGameControlGlobals.entitiesWithTransformAnim=t.sharedGameControlGlobals.entitiesWithTransformAnim.filter(e=>void 0!==e.bvhGeometry)),u--,r())}e=p>0?requestAnimationFrame(o):void 0,i=p>0?a:void 0}return"u">typeof document&&document.addEventListener("visibilitychange",function(){RI()?e&&(cancelAnimationFrame(e),e=void 0,i=void 0):a()}),a})();function RI(){return!!document&&document.hidden}var RR=new ix,RL=new ib,RB=new ib,Rz=class{constructor(e,t,i,r,a){this.data=e,this.page=t,this.controlsManager=i,this.shared=r,this.condition=a,this.intervalId=null,this.timeoutIdQueue=[],this.uniqueId=tK.generateUUID(),this.dispatch=()=>{if(!1===R_(this.shared,this.condition))return!1;this.data.delay?this.timeoutIdQueue.push(window.setTimeout(this.dispatchInner,1e3*this.data.delay)):this.dispatchInner()},this.dispatchFromStart=()=>{if(!1===R_(this.shared,this.condition))return!1;this.timeoutIdQueue.push(window.setTimeout(this.dispatchInner,1e3*this.data.delay))},this.dispatchThrottled=u9(this.dispatch,1e3/this.data.creationSpeed),this.dispatchStart=()=>{null===this.intervalId&&(this.intervalId=window.setInterval(this.dispatch,1e3/this.data.creationSpeed))},this.dispatchStop=()=>{null!==this.intervalId&&(window.clearInterval(this.intervalId),this.intervalId=null)},this.dispatchInner=()=>{this.timeoutIdQueue.shift();let e=new b3(this.object);if(e.playModeVisible=!0,e.expand(),"world"!==this.data.coordinateSystem){let t=this.data.coordinateSystem,i=this.page.scene.find(t);i&&(i.updateMatrixWorldSVD(),e.hiddenMatrix.copy(i.matrixWorldRigid))}e.scale.copy(this.object.scale),e.position.fromArray(this.data.position),e.rotation.fromArray(this.data.rotation),e.updateMatrix(),this.page.add(e);let t=this.controlsManager.sharedGameControlGlobals;t.createdObjects.push(e),void 0===t.nCreatedPerAction[this.uniqueId]?t.nCreatedPerAction[this.uniqueId]=1:t.nCreatedPerAction[this.uniqueId]++,e.updateWorldMatrix(!0,!0),e.traverseObject(this.traverseObjectCB),RO(),this.controlsManager.requestRender()},this.traverseObjectCB=e=>{let t;if(e.hasNonUniformScale&&e.updateMatrixWorldSVD(),this.controlsManager.sharedGameControlGlobals.rapierWorld){if(e instanceof CT){if(!e.objectForSample)return!0===e.object.dataPatched.physics.fusedBody&&"dynamic"===e.object.dataPatched.physics.rigidBody||void 0;if(e.objectForSample.dataPatched.physics.fusedBody)return;t=e.object}else if(e instanceof b3)t=e.object;else if(t=e,t.dataPatched.cloner?.hideBase)return!0}else{if(e instanceof CT)return;t=e instanceof b3?e.object:e}"Time"===this.data.destroy?e.userData.lifetime=1e3*this.data.lifetime:"Quantity"===this.data.destroy&&(e.userData.quantity=this.data.destroyAfterQuantity,e.userData.actionId=this.uniqueId);let i=new ib().fromArray(this.data.velocity),r=t.dataPatched;
8106if(!("visibility"===r.physics.enabled?!r.visible:!r.physics.enabled)&&(this.controlsManager.sharedGameControlGlobals.rapierWorld?(this.controlsManager.addRigidBody(e,t,{fromCreate:!0,dynamic:this.data.dynamic}),"Collision"===this.data.destroy&&(e.rigidBody?.collider(0).setActiveEvents(1),e.userData.hasCollisionDestroy=!0),e.matrixWorld.decompose(RL,RR,RB),i.applyQuaternion(RR),this.data.velocity.some(e=>0!==e)&&this.data.dynamic&&e.rigidBody?.setLinvel(i.divideScalar(this.controlsManager.pixelsPerMeter),!0)):("geometry"in e.object&&this.controlsManager.addBoundsTree(e),this.data.velocity.some(e=>0!==e)&&this.data.dynamic&&(e.userData.velocity=i)),t.dataPatched.physics?.fusedBody===!0))return!0};let o=this.page.scene.find(this.data.object);if(!o||(this.object=o,"world"!==this.data.coordinateSystem&&!this.page.scene.find(this.data.coordinateSystem)))throw Error("Missing Property");RO(i)}dispose(){null!==this.intervalId&&(window.clearInterval(this.intervalId),this.intervalId=null),this.timeoutIdQueue.forEach(e=>window.clearTimeout(e)),this.dispatchThrottled.cancel(),this.page.remove(...this.controlsManager.sharedGameControlGlobals.createdObjects),this.controlsManager.sharedGameControlGlobals.createdObjects=[]}},RF=new ib,RN=new ib,RU=new ib,Rk=new ib,RV=new ib,Rj=new ib,RG=new iZ,RH=new iZ,RW=new iZ,Rq=(new iZ,new ix),RX=new ix,RY=new i6(0,0,0,"YXZ"),RQ=new ib(1,0,0),RZ=new ib(0,1,0),RK=new ib(0,0,1),RJ=new ib(1,1,1),R$=(new iV,new lj),R0=new i_,R1={type:"requestRender"},R2={type:"updateMatrix"},R3=Math.PI/6,R4=class extends tF{constructor(e,t,i,r,a,o,h,c,d){super(),this.object=e,this.domElement=t,this.data=i,this.gloabalPhysics=r,this.controlsManager=a,this.cameraFollow=o,this.camera=h,this.page=c,this.sharedAssets=d,this.enableDamping=!0,this.hiddenMatrix0=new iZ,this.target0=new ib,this.zoom0=1,this.rotForce=1,this.moveForce=1,this.pixelsPerMeter=200,this.euler0=new i6(0,0,0,"YXZ"),this.position0Cam=new ib,this.quat0Cam=new ix,this.scale0Cam=new ib,this.hiddenMatrix0Cam=new iZ,this.threshEndTranslate=.01,this.threshEndRotate=1e-8,this.threshEndRotVel=.005,this.collider={type:"capsule",radius:40,segment:new lj(new ib(0,-40,0),new ib(0,40,0)),matrix:new iZ,position:new ib,rotation:new ix},this.euler=new i6(0,0,0,"YXZ"),this.eulerDelta=new ib,this.lastPosition=new ib,this.lastCameraQuaternion=new ix,this.lastCameraPosition=new ib,this.PI_2=Math.PI/2,this.prevMouse=new tJ,this.velocityTarget=new ib,this.velocity=new ib,this.directionXZ=new ib,this.rotVelocityStick=new ib,this.rotVelocityTarget=new ib,this.rotVelocity=new ib,this.rotDirection=new ib,this.nonColliderRotOffset=new iZ,this.nonColliderPosOffset=new iZ,this.firstPointerId=-1,this.rot=new ib,this.path=[],this.movementState={moveNegZ:0,movePosZ:0,moveNegX:0,movePosX:0,moveNegY:0,movePosY:0,rotPosX:0,rotNegX:0,rotPosY:0,rotNegY:0,jump:0,run:0},this.vrEulerYOffset=0,this.onObject=!1,this.actionState={},this.keyAssignments=[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","ArrowUp"],["rotPosY","ArrowLeft"],["rotNegX","ArrowDown"],["rotNegY","ArrowRight"],["jump"," "]],this.collisionEnabled=!0,this.offsetMatrix=new iZ,this.objectToTarget=new ib,this.objectToTarget0=new ib,this.objectToCamXZ=new ib,this.objectToCamXZ0=new ib,this.targetToCamera=new ib,this.targetToCamera0=new ib,this.cameraPolarAxis0=new ib,this.targetPos=new ib,this.targetQuat=new ix,this.lerpFactorPos=new ib().setScalar(.3),this.lerpFactorPosStart=.3,this.lerpFactorPosEnd=.3,this.lerpFactorRotStart=.3,this.lerpFactorRotEnd=.3,this.lerpFactorPosCamera=.3,this.lerpFactorRotCamera=.3,this.objXZQuat=new ix,this.objXZQuatInv=new ix,this.objXZRotMat=new iZ,this.isFirstPerson=!1,this.didHit=!1,this.groundVelocity=new ib,this.pushedVelocity=new ib,this.groundYRotation=0,this.objectRealQuat=new ix,this.colliderWorldQuat=new ix,this.groundNormal=new ib,this.groundTilt=new ix,this.groundTiltInv=new ix,this.lastHitObj=null,this.isFirstFrame=!0,this.rotationAccumWhenOrientWithCamera=0,this.navMeshPathDest=null,this.position=new ib,this.quaternion=new ix,this.scale=new ib,this.initialAction=!0,this.onPointerDown=e=>{(e.target===this.domElement||e.target instanceof HTMLElement&&"SPLINE-VIEWER"===e.target.tagName&&e.target.shadowRoot?.contains(this.domElement))&&-1===this.firstPointerId&&(this.firstPointerId=e.pointerId,this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp),"keys"===this.rotBy||po||pl||this.domElement.requestPointerLock(),this.prevMouse.set(e.clientX,e.clientY))},this.onPointerUp=e=>{this.firstPointerId=-1,this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this.onPointerUp),"mouse"===e.pointerType&&this.domElement.ownerDocument.exitPointerLock()},this.onPointerMove=e=>{if(e.pointerId!==this.firstPointerId)return;let t=e.clientX-this.prevMouse.x,i=e.clientY-this.prevMouse.y;this.prevMouse.set(e.clientX,e.clientY),"mouse"===e.pointerType&&"keys"!==this.rotBy&&(pl&&ph<15.5&&!po?(this.eulerDelta.y=-t*this.mouseOrbitSensitivity,this.eulerDelta.x=-i*this.mouseOrbitSensitivity):(this.eulerDelta.y=-e.movementX*this.mouseOrbitSensitivity,this.eulerDelta.x=-e.movementY*this.mouseOrbitSensitivity)),"mouse"!==e.pointerType&&"drag"===this.rotByTouch&&(this.eulerDelta.y=-t*this.mouseOrbitSensitivity*5,this.eulerDelta.x=-i*this.mouseOrbitSensitivity*5),this.controlsManager.requestRender()},this.onPointerlockChange=e=>{this.domElement.ownerDocument.pointerLockElement===this.domElement?R4.isLocked=!0:R4.isLocked=!1},this.onPointerlockError=()=>{console.error("SPE.GameControls: Unable to use Pointer Lock API")},this.handleVisibilityChange=()=>{if(document?.hidden)for(let e in this.movementState)this.movementState[e]=0},this.onKeyDown=e=>{for(let t of(e.target instanceof HTMLInputElement||"ArrowLeft"!==e.code&&"ArrowUp"!==e.code&&"ArrowRight"!==e.code&&"ArrowDown"!==e.code&&"Space"!==e.code||e.preventDefault(),this.keyAssignments))if(e.key.toUpperCase()===t[1]||e.key===t[1]){this.movementState[t[0]]=1;break}this.controlsManager.requestRender()},this.onKeyUp=e=>{for(let t of this.keyAssignments)if(e.key.toUpperCase()===t[1]||e.key===t[1]||e.code.slice(3,e.code.length).toUpperCase()===t[1]){this.movementState[t[0]]=0;break}},this.copyVRGamePadValues=(e,t)=>{for(let i=2;i<4;i++){let r=e.axes[i];0===t?2===i?this.movementState.movePosX=r:this.movementState.movePosZ=r:(e.buttons[3].pressed?this.movementState.jump=1:this.movementState.jump=0,2===i?(.3>Math.abs(this.movementState.rotPosY)&&Math.abs(r)>=.3&&(this.vrEulerYOffset+=r<0?1:-1),this.movementState.rotPosY=r):"fly"===this.moveMode&&(this.movementState.moveNegY=r))}},this.sharedGameControlGlobals=a.sharedGameControlGlobals,e===h&&
8106(this.isFirstPerson=!0),this.hiddenMatrix0.copy(this.object.hiddenMatrix),this.object.parent?this.object.hiddenMatrix.copy(this.object.parent.matrixWorld).invert():this.object.hiddenMatrix.identity(),this.object.matrix.copy(this.object.matrixWorld),this.object.matrix.decompose(this.position,this.quaternion,this.scale),this.euler0.setFromQuaternion(this.quaternion,"YXZ");let u=this.euler0.clone(),p=u.y;if(this.objectRealQuat.copy(this.quaternion),u.y=0,this.quaternion.setFromEuler(u),this.objXZQuat.copy(this.quaternion),this.objXZQuatInv.copy(this.objXZQuat).invert(),this.objXZRotMat.makeRotationFromQuaternion(this.quaternion),u.set(0,p,0),this.quaternion.setFromEuler(u),this.rot.setFromEuler(u),this.object.matrixAutoUpdate=!1,(this.isFirstPerson||!0===this.cameraFollow)&&(this.target0.copy(this.camera.getTarget()),this.zoom0=this.camera.zoom),!0===this.cameraFollow){let e,t;this.position0Cam.copy(this.camera.position),this.quat0Cam.copy(this.camera.quaternion),this.scale0Cam.copy(this.camera.scale),this.hiddenMatrix0Cam.copy(this.camera.hiddenMatrix),this.camera.parent?(this.camera.hiddenMatrix.copy(this.camera?.parent.matrixWorld),this.camera.matrix.copy(this.camera.matrixWorld)):this.camera.hiddenMatrix.identity(),this.camera.matrix.copy(this.camera.matrixWorld),this.camera.matrix.decompose(this.camera.position,this.camera.quaternion,this.camera.scale),this.camera.matrixAutoUpdate=!1,this.offsetMatrix.copy(this.object.matrix).invert().multiply(this.camera.matrix);let i=new ib(0,0,-1).applyQuaternion(this.camera.quaternion),r=new ib().subVectors(this.position,this.camera.position);this.objectToCamXZ.copy(r),this.objectToCamXZ.y=0,this.objectToCamXZ0.copy(this.objectToCamXZ),1e-6>Math.abs(i.y)?(r.y=0,i.y=0,t=r.projectOnVector(i)):t=r.y/i.y>0?i.multiplyScalar(r.y/i.y):i.multiplyScalar(r.length()),this.targetToCamera0.copy(t).negate(),e=this.camera.position.clone().add(t),this.objectToTarget0.subVectors(e,this.position);let a=new i6().setFromQuaternion(this.camera.quaternion,"YXZ");this.cameraPolarOffset=-a.x,a.x=0,a.z=0,a.y-=Math.PI/2,this.cameraPolarAxis0.set(0,0,-1).applyEuler(a)}if(this.object instanceof Cq&&(this.object.matrixAutoUpdate=!1),this.euler.setFromQuaternion(this.quaternion,"YXZ"),this.rotByTouch=i.rotByTouch??"joystick",this.rotBy=i.rotBy??"keys",this.rotationMode=i.rotationMode??"normal",this.moveMode=i.moveMode??"walk",this.collisionEnabled=i.collisionEnabled,this.speedTranslate=(i.speedTranslate??250)*1,this.speedOrbit=(i.speedRotate??100)*.025,this.mouseOrbitSensitivity=(i.speedRotate??100)*16e-6,this.keyAssignments=i.keyAssignments.map(e=>{let t=[e[0],e[1]];return"▲"===t[1]?t[1]="ArrowUp":"◀"===t[1]?t[1]="ArrowLeft":"▼"===t[1]?t[1]="ArrowDown":"▶"===t[1]?t[1]="ArrowRight":"⇧"===t[1]?t[1]="Shift":"↵"===t[1]?t[1]="Enter":"Space"===t[1]?t[1]=" ":"⌘"===t[1]?t[1]="Meta":"Ctrl"===t[1]?t[1]="Control":"Esc"===t[1]&&(t[1]="Escape"),t}),"mouse"===i.rotBy){let e;-1!==(e=this.keyAssignments.findIndex(e=>"rotNegX"===e[0]))&&(this.keyAssignments[e][1]=""),-1!==(e=this.keyAssignments.findIndex(e=>"rotPosX"===e[0]))&&(this.keyAssignments[e][1]=""),-1!==(e=this.keyAssignments.findIndex(e=>"rotPosY"===e[0]))&&(this.keyAssignments[e][1]=""),-1!==(e=this.keyAssignments.findIndex(e=>"rotNegY"===e[0]))&&(this.keyAssignments[e][1]="")}this.lerpFactorPosStart=1-.02**(1/((i.delayPos[0]??.3)*60)),this.lerpFactorPosEnd=1-.02**(1/((i.delayPos[1]??.3)*60)),this.lerpFactorPos.setScalar(this.lerpFactorPosStart),this.lerpFactorRotStart=1-.02**(1/((i.delayRot[0]??.3)*60)),this.lerpFactorRotEnd=1-.02**(1/((i.delayRot[1]??.3)*60)),this.lerpFactorPosCamera=1-.02**(1/((i.delayPosCamera??.3)*60)),this.lerpFactorRotCamera=1-.02**(1/((i.delayRotCamera??.3)*60)),this.gravity=(this.gloabalPhysics.gravity??vl.defaultData.gravity)*12,this.usePhysics=this.gloabalPhysics.usePhysics??vl.defaultData.usePhysics,this.jumpPower=20*i.jumpPower,this.resetYPosition=this.position.y+Math.abs(i.resetYPosition)*(this.gravity>0?1:-1),this.alignToGround=i.alignToGround??!1,this.orientMode=i.autoOrientMove?i.orientMode:"none",this.orientWith=i.orientWith??y1.defaultDataThirdPerson.orientWith,this.slopeThresh=65*Math.PI/180,"capsule"===i.collider.type?(this.collider.radiu
8106s=i.collider.radius,this.collider.segment.start.y=i.collider.height/2-i.collider.radius,this.collider.segment.end.y=-this.collider.segment.start.y,this.offset=.02*i.collider.height/this.pixelsPerMeter,this.stepThresh=.3*i.collider.height/this.pixelsPerMeter,this.colliderHeight=i.collider.height):"sphere"===i.collider.type?(this.collider.radius=i.collider.radius,this.collider.segment.start.y=0,this.collider.segment.end.y=0,this.offset=2*i.collider.radius*.02/this.pixelsPerMeter,this.stepThresh=2*i.collider.radius*.3/this.pixelsPerMeter,this.colliderHeight=2*i.collider.radius):(this.offset=.02*i.collider.height/this.pixelsPerMeter,this.stepThresh=.3*i.collider.height/this.pixelsPerMeter,this.colliderHeight=i.collider.height),this.collider.type=i.collider.type;let f=new ib().fromArray(i.collider.position),m=new ix().setFromEuler(new i6().fromArray([...i.collider.rotation,"XYZ"]));this.collider.position.copy(f).multiply(this.scale),this.collider.rotation.copy(m),this.collider.matrix.compose(f,m,RJ),void 0!==i.cameraXAxis&&(this.cameraXAxis=i.cameraXAxis,this.cameraYAxis=i.cameraYAxis,this.minPolarAngle=i.cameraRotXLimits[0],this.maxPolarAngle=i.cameraRotXLimits[1],this.minAzimuthAngleRel=i.cameraRotYLimits[0],this.maxAzimuthAngleRel=i.cameraRotYLimits[1]),this.forwardDir=i.forwardDirection??"-z",this.isFirstPerson&&(this.forwardDir="-z"),this.runMultiplier=i.runMultiplier??2;let g=2*i.navmesh.destinationHelperRadius;if(g>0){let e=new pV;e.push({fi:0,data:{...gY.defaultData("light","phong"),alpha:0},id:"layer1"}),e.push({fi:0,data:{...gY.defaultData("color"),color:i.navmesh.destinationHelperColor,alpha:i.navmesh.destinationHelperColor.a},id:"layer2"});let t=new Eo({layers:e},{scene:this.page.scene,shared:this.sharedAssets});this.navMeshPathDest=new r$(wp.create({parameters:{width:g,height:g/10,hollow:.7}}),t),this.navMeshPathDest.material.userData.opacity0=i.navmesh.destinationHelperColor.a}this.activate()}reset(e=!1){if(this.object.hiddenMatrix.copy(this.hiddenMatrix0),e){this.object.updateMatrix(),this.object.updateMatrixWorld(),this.object.matrix.copy(this.object.matrixWorld),this.object.matrix.decompose(this.position,this.quaternion,this.scale),this.object.parent?this.object.hiddenMatrix.copy(this.object.parent.matrixWorld).invert():this.object.hiddenMatrix.identity();let e=new i6().setFromQuaternion(this.quaternion,"YXZ"),t=e.y;this.objectRealQuat.copy(this.quaternion),e.y=0,this.quaternion.setFromEuler(e),this.objXZQuat.copy(this.quaternion),this.objXZQuatInv.copy(this.objXZQuat).invert(),this.objXZRotMat.makeRotationFromQuaternion(this.quaternion),e.set(0,t,0),this.quaternion.setFromEuler(e),this.rot.setFromEuler(e),this.euler.setFromQuaternion(this.quaternion,"YXZ"),this.velocityTarget.set(0,0,0),this.velocity.set(0,0,0)}else this.object instanceof Cq?this.object.matrixAutoUpdate=!0:this.object.updateMatrix();!0===this.cameraFollow&&(this.camera.quaternion.copy(this.quat0Cam),this.camera.position.copy(this.position0Cam),this.camera.scale.copy(this.scale0Cam),this.camera.hiddenMatrix.copy(this.hiddenMatrix0Cam),this.camera.matrixAutoUpdate=!0),this.controlsManager.requestRender()}activate(){this.instantiateActions(),this.domElement.ownerDocument.addEventListener("pointerdown",this.onPointerDown),this.domElement.ownerDocument.addEventListener("keydown",this.onKeyDown),this.domElement.ownerDocument.addEventListener("keyup",this.onKeyUp),this.domElement.ownerDocument.addEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.addEventListener("pointerlockerror",this.onPointerlockError),this.domElement.ownerDocument.addEventListener("visibilitychange",this.handleVisibilityChange)}deactivate(){this.disposeActions(),this.domElement.ownerDocument.removeEventListener("pointerdown",this.onPointerDown),this.domElement.ownerDocument.removeEventListener("keydown",this.onKeyDown),this.domElement.ownerDocument.removeEventListener("keyup",this.onKeyUp),this.domElement.ownerDocument.removeEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.removeEventListener("pointerlockerror",this.onPointerlockError),this.domElement.ownerDocument.removeEventListener("visibilitychange",this.handleVisibilityChange)}dispose(){this.deactivate(),this.navMeshPathDest?.parent&&this.page.remove(this.navMeshPathDest)}instantiateActions(){let e=this.data,t=this.sharedAssets;void 0!==e.gameActions&&(this.actions={},y0.list.forEach(i=>
vendor: 1,387 bytes, line 8106
8106{this.actions[i]=RA({...e,disabled:!1,type:"GameControl"},e.gameActions[i],this.page,t,this.controlsManager.eventManager,this.object)})),this.dispatchStopEvent("move"),this.dispatchStopEvent("run"),this.dispatchStopEvent("jump"),this.dispatchStartEvent("idle"),this.initialAction&&(this.initialAction=!1)}disposeActions(){this.initialAction=!1,this.dispatchStopEvent("idle"),this.dispatchStopEvent("move"),this.dispatchStopEvent("run"),this.dispatchStopEvent("jump"),RM(this.actions.idle),RM(this.actions.move),RM(this.actions.run),RM(this.actions.jump)}dispatchStartEvent(e){void 0!==this.actions[e]&&(this.actionState[e]||(this.actionState[e]=!0,this.actions[e].Transition.forEach(e=>{e.play()}),this.actions[e].Animation.forEach(e=>{e.play(!1===this.initialAction)}),this.actions[e].TimelineAnimation.forEach(e=>{e.play()}),this.actions[e].Create.forEach(e=>{e.dispatchStart()}),this.actions[e].Audio.forEach(e=>{e.dispatchGameControl("start")}),this.actions[e].Particles.forEach(e=>{e.dispatchGameControl("start")})))}dispatchStopEvent(e){void 0===this.actions[e]||this.actionState[e]&&(this.actionState[e]=!1,this.actions[e].Transition.forEach(e=>{e.stop(),null!==e.object.currentState&&e.object.changeSelectedState(null,{scene:this.page.scene,shared:this.sharedAssets})}),this.actions[e].TimelineAnimation.forEach(e=>{e.stop()}),this.actions[e].Create.forEach(e=>{e.dispatchStop()}
8106),this.actions[e].Audio.forEach(e=>{e.dispatchGameControl("stop")}),this.actions[e].Particles.forEach(e=>{e.dispatchGameControl("stop")}))}get colliderWorldPosition(){return Rk.copy(this.collider.position).applyQuaternion(this.objectRealQuat).add(this.position)}update(e,t,i){if(this.gravity<0?this.position.y<this.resetYPosition:this.position.y>this.resetYPosition)return this.reset(!0),!0;this.sharedGameControlGlobals.gamePads.forEach(this.copyVRGamePadValues);let r=(this.isFirstFrame?16.6:e)/1e3;this.isFirstFrame&&(this.isFirstFrame=!1);let a=60*r,o=!1;if(this.usePhysics&&this.collisionEnabled){let e=RV.set(0,(0===this.velocity.y?this.pixelsPerMeter*Math.max(Math.abs(this.gravity)/120,1)*(this.gravity>0?1:-1):this.velocity.y)*r,0).divideScalar(this.pixelsPerMeter),t=this.sharedGameControlGlobals.rapierWorld.castShape(this.colliderWorldPosition.divideScalar(this.pixelsPerMeter),this.colliderWorldQuat,e,this.object.rigidBody?.collider(0).shape,1,!1,16,void 0,void 0,this.object.rigidBody);if(t){this.onObject=!0,this.groundNormal.set(t.normal2.x,t.normal2.y,t.normal2.z).applyQuaternion(this.colliderWorldQuat).negate(),this.alignToGround&&this.groundTiltAdjustment(this.groundNormal),Math.acos(this.groundNormal.y)<this.slopeThresh&&(o=!0),t.collider.parent()?.bodyType()===0&&Math.acos(this.groundNormal.y)*(180/Math.PI)>45&&(this.onObject=!1);let e=t.collider.parent();for(let t of(this.groundYRotation=0,this.groundVelocity.set(0,0,0),this.sharedGameControlGlobals.entitiesWithTransformAnim))if(t.rigidBody===e&&t.userData.isFollowingObj!==this.object.uuid){(t.hasNonUniformScale?t.matrixWorldRigid:t.matrixWorld).decompose(Rk,RX,RV),this.groundVelocity.subVectors(Rk,t.prevT),this.object.getWorldPosition(RV).add(this.collider.position).sub(Rk),this.groundYRotation=RY.setFromQuaternion(RX).y-t.prevR.y,Rj.copy(RV).applyAxisAngle(RZ,this.groundYRotation),this.groundVelocity.add(Rj.sub(RV)).divideScalar(r);break}}else this.onObject=!1}if("walk"===this.moveMode&&this.collisionEnabled&&(1===this.movementState.jump&&this.onObject&&(this.velocityTarget.y=this.jumpPower,this.movementState.jump=0,this.dispatchStopEvent("idle"),this.dispatchStopEvent("move"),this.dispatchStopEvent("run"),this.dispatchStopEvent("jump"),this.dispatchStartEvent("jump"),this.onObject=!1),this.onObject?this.velocityTarget.y/=2:this.velocityTarget.y+=this.gravity*a),"fly"===this.moveMode&&(this.velocityTarget.y=(this.movementState.movePosY-this.movementState.moveNegY)*this.speedTranslate),this.directionXZ.z=this.movementState.movePosZ-this.movementState.moveNegZ,this.directionXZ.x=this.movementState.movePosX-this.movementState.moveNegX,"+z"===this.forwardDir&&this.directionXZ.multiplyScalar(-1),this.directionXZ.manhattanLength()>0&&(this.path=[]),this.navMeshPathDest){let e=this.navMeshPathDest.material;if("walk"===this.moveMode&&this.path.length>1){this.navMeshPathDest.position.copy(this.path[this.path.length-1]),this.navMeshPathDest.parent||this.page.add(this.navMeshPathDest);let t=Rk.subVectors(this.path[1],this.position),i=RV.subVectors(this.path[1],this.path[0]);0>t.dot(i)?this.path.shift():(this.directionXZ.x=i.x,this.directionXZ.z=i.z),e.opacity=e.userData.opacity0}else e.opacity-=.05*e.userData.opacity0,this.navMeshPathDest.material.opacity<=0&&this.navMeshPathDest.parent&&this.page.remove(this.navMeshPathDest)}this.directionXZ.normalize(),this.movementState.run?this.moveForce=this.runMultiplier:this.moveForce=1,this.velocityTarget.z=this.directionXZ.z*this.speedTranslate*this.moveForce,this.velocityTarget.x=this.directionXZ.x*this.speedTranslate*this.moveForce,("walk"===this.moveMode?this.velocityTarget.x+this.velocityTarget.z===0:0===this.velocityTarget.manhattanLength())?this.lerpFactorPos.setScalar(this.lerpFactorPosEnd):this.lerpFactorPos.setScalar(this.lerpFactorPosStart),"walk"===this.moveMode&&(this.lerpFactorPos.y=1),!1===this.didHit&&0===this.pushedVelocity.manhattanLength()||!1===this.usePhysics?(this.velocity.x+=(this.velocityTarget.x-this.velocity.x)*(1-(1-this.lerpFactorPos.x)**a),this.velocity.y+=(this.velocityTarget.y-this.velocity.y)*(1-(1-this.lerpFactorPos.y)**a),this.velocity.z+=(this.velocityTarget.z-this.velocity.z)*(1-(1-this.lerpFactorPos.z)**a)):this.velocity.copy(this.velocityTarget),("walk"===this.moveMode?this.velocity.x**2+this.velocity.z**2<this.speedTranslate:this.velocity.lengthSq()<this.speedTranslate)?(this.dispatchStopEvent("move"),this.dispatchStopEvent("run"),this.onObject&&(this.dispatchStopEvent("jump"),this.dispatchStartEvent("idle"))):(this.dispatchStopEvent("idle"),(this.onObject||"fly"===this.moveMode)&&(this.dispatchStopEvent("jump"),this.movementState.run?(this.dispatchStopEvent("move"),this.dispatchStartEvent("run")):(this.dispatchStopEvent("run"),this.dispatchStartEvent("move"))));let h=RU.copy(this.velocity);if("none"!==this.orientMode&&!1===this.isFirstPerson){let e=RV.copy(h);e.y=0,h.set(0,h.y,e.length()*("+z"===this.forwardDir?1:-1))}if(this.directionXZ.manhattanLength()>0&&"none"!==this.orientMode&&!1===this.isFirstPerson){if("camera"===this.orientWith&&this.path.length<=1){this.camera.getWorldDirection(Rk);let e=Rj.copy(RZ).multiplyScalar(Rk.dot(RZ));Rk.sub(e);let t=RV.copy(this.directionXZ);t.x*=-1,this.rot.y=Rk.angleTo(t)*(Rk.cross(t).y>0?-1:1)+this.rotationAccumWhenOrientWithCamera}else this.rot.y=(this.path.length>1?0:this.euler.y)+Math.atan2(-this.directionXZ.z,this.directionXZ.x)+Math.PI/2*("+z"===this.forwardDir?1:-1)}if(RY.setFromVector3(this.rot),"walk"===this.moveMode&&(RY.x=0),h.applyEuler(RY),o&&(RX.setFromUnitVectors(RZ,this.groundNormal),h.applyQuaternion(RX)),i){let e=RY.set(0,this.vrEulerYOffset*R3,0);i.applyEuler(e),h.x+=i.x,h.z+=i.z,this.nonColliderPosOffset.elements[13]+=i.y*r}if(!0===this.usePhysics){for(let e of(this.pushedVelocity.set(0,0,0),this.sharedGameControlGlobals.entitiesWithTransformAnim)){let t=Rj.setFromMatrixPosition(e.matrixWorld).sub(e.prevT).divideScalar(r).divideScalar(this.pixelsPerMeter),i=e.rigidBody.collider(0).castCollider(t,this.object.rigidBody.collider(0),Rk.copy(h).divideScalar(this.pixelsPerMeter),r,!1);t.multiplyScalar(this.pixelsPerMeter);let a=_S.is(e)?e:e.object;if(null!==i&&this.lastHitObj!==a){let t;e instanceof b3&&(t=e);let i=this.sharedGameControlGlobals.entityToCollisionEvents[a.uuid];
8106if(i)for(let e of i)"character"===e.data.target&&(e.dispatch(t),a.dispatchEvent(B6));this.lastHitObj=a}if(null!==i){this.pushedVelocity.copy(t),RV.copy(i.normal1).applyQuaternion(e.quaternion);break}}if(0!==this.pushedVelocity.manhattanLength()){let e=RV.dot(h);e<0&&h.addScaledVector(RV,-e),h.add(this.pushedVelocity)}else h.add(this.groundVelocity)}if(this.rotDirection.y=Number(this.movementState.rotPosY)-Number(this.movementState.rotNegY),this.rotDirection.x=Number(this.movementState.rotPosX)-Number(this.movementState.rotNegX),this.rotDirection.normalize(),"normal"===this.rotationMode&&(this.movementState.rotPosX||this.movementState.rotNegX)||"steer"===this.rotationMode&&(this.movementState.rotPosX||this.movementState.rotNegX)&&(this.movementState.movePosZ||this.movementState.moveNegZ||"walk"===this.moveMode)?this.rotVelocityStick.x=-this.rotDirection.x*this.speedOrbit*this.rotForce:this.rotVelocityStick.x=0,"normal"===this.rotationMode&&(this.movementState.rotPosY||this.movementState.rotNegY)||"steer"===this.rotationMode&&(this.movementState.rotPosY||this.movementState.rotNegY)&&(this.movementState.movePosZ||this.movementState.moveNegZ)?this.rotVelocityStick.y=-this.rotDirection.y*this.speedOrbit*this.rotForce:this.rotVelocityStick.y=0,this.rotVelocityTarget.subVectors(this.eulerDelta.divideScalar(r),this.rotVelocityStick),0===this.rotVelocityTarget.manhattanLength()?this.rotVelocity.lerp(this.rotVelocityTarget,1-(1-this.lerpFactorRotEnd)**a):this.rotVelocity.lerp(this.rotVelocityTarget,1-(1-this.lerpFactorRotStart)**a),this.euler.x+=this.rotVelocity.x*r,this.euler.y+=this.rotVelocity.y*r+this.groundYRotation,0===this.rotVelocityTarget.y&&0===this.directionXZ.manhattanLength()?this.rotationAccumWhenOrientWithCamera=0:(!1===this.cameraFollow||"Locked"===this.cameraYAxis)&&(this.rotationAccumWhenOrientWithCamera+=this.rotVelocity.y*r),!1===this.isFirstPerson&&"none"!==this.orientMode&&this.directionXZ.manhattanLength()>0){if("radial"===this.orientMode){this.objectToCamXZ.copy(this.objectToCamXZ0).applyAxisAngle(RZ,this.euler.y-this.euler0.y);let e=RV.copy(this.objectToCamXZ).normalize(),t=Rj.copy(h).multiplyScalar(r);t.y=0;let i=t.sub(Rk.copy(e).multiplyScalar(t.dot(e))).cross(e).y;this.euler.y-=Math.atan2(i,this.objectToCamXZ.length())}}else this.rot.y+=this.rotVelocity.y*r+this.groundYRotation,0!==this.rotVelocityTarget.y&&(!1===this.cameraFollow||"Locked"===this.cameraYAxis)&&(this.euler.y=this.rot.y);if(!0===this.cameraFollow&&("walk"===this.moveMode?"Limit"===this.cameraXAxis?this.euler.x=tK.clamp(this.euler.x,-this.maxPolarAngle+this.cameraPolarOffset+1e-6,-this.minPolarAngle+this.cameraPolarOffset-1e-6):this.euler.x=tK.clamp(this.euler.x,-this.PI_2+this.cameraPolarOffset,this.PI_2+this.cameraPolarOffset):"Limit"===this.cameraXAxis&&(this.euler.x=tK.clamp(this.euler.x,-this.PI_2,this.PI_2))),"fly"===this.moveMode?this.rot.x=this.euler.x:this.isFirstPerson&&(t?RY.copy(t):RY.copy(this.euler),RY.y=0,this.nonColliderRotOffset.makeRotationFromEuler(RY)),t&&("walk"===this.moveMode?(this.rot.y=t.y,this.rot.x=0,this.rot.z=0):this.rot.setFromEuler(t),this.rot.y+=this.vrEulerYOffset*R3),Rq.setFromAxisAngle(RQ,this.rot.x),RX.setFromAxisAngle(RZ,this.rot.y),RX.multiply(Rq),Rq.setFromAxisAngle(RK,this.rot.z),RX.multiply(Rq),this.quaternion.copy(RX),this.objectRealQuat.multiplyQuaternions(this.quaternion,this.objXZQuat),this.colliderWorldQuat.copy(this.objectRealQuat).multiply(this.collider.rotation),this.collisionEnabled){if(this.usePhysics){let e=RV.copy(h).multiplyScalar(r/this.pixelsPerMeter),t=null;this.didHit=!1;let i=new ib;for(let r=0;r<5;r++){let a=e.length(),o=Rj.copy(e).normalize();if(null!==(t=this.sharedGameControlGlobals.rapierWorld.castShape(this.colliderWorldPosition.divideScalar(this.pixelsPerMeter).add(i),this.colliderWorldQuat,o,this.object.rigidBody?.collider(0).shape,a,!1,24,void 0,void 0,this.object.rigidBody))){this.didHit=!0;let h=this.sharedGameControlGlobals.colliderToEntity.get(t.collider.handle);if(h!==this.lastHitObj&&0===r){this.lastHitObj=h;let e=this.sharedGameControlGlobals.entityToCollisionEvents[h?.uuid];if(e){for(let i of e)if("character"===i.data.target){let e=(this.sharedGameControlGlobals.rapierWorld?.getCollider(t.collider.handle))._parent,r;if(h.cloner){for(let t of h.cloner.children)if(t.rigidBody===e){r=t;break}}i.dispatch(r),h.dispatchEvent(B6)}}}let c=RF.set(t.normal2.x,t.normal2.y,t.normal2.z).applyQuaternion(this.colliderWorldQuat),d=RN.copy(o).multiplyScalar(t.toi).dot(c),u=t.toi;if(0===u&&(this.position.y+=this.offset*this.pixelsPerMeter),d>this.offset&&(u=t.toi*(d-this.offset)/d,i.addScaledVector(o,u)),e.copy(o).multiplyScalar(a-u),Math.acos(-c.y)>this.slopeThresh){let r=this.colliderWorldPosition.divideScalar(this.pixelsPerMeter).add(i),a=Rj.copy(t.witness2).applyQuaternion(this.colliderWorldQuat);a.y=0;let o=r.add(a);o.y+=this.stepThresh;let h=this.sharedGameControlGlobals.rapierWorld.castShape(o,this.colliderWorldQuat,e,this.object.rigidBody?.collider(0).shape,1,!1,24,void 0,void 0,this.object.rigidBody);null!==h&&0===h.toi&&(c.y=0,c.normalize())}
8106e.addScaledVector(c,-e.dot(c))}else{0===r&&0!==this.directionXZ.manhattanLength()&&(this.lastHitObj=null),i.add(e);break}}this.position.addScaledVector(i,this.pixelsPerMeter),this.object.rigidBody?.setTranslation(Rk.copy(this.position).divideScalar(this.pixelsPerMeter),!0),this.object.rigidBody?.setRotation(Rq.copy(this.quaternion).premultiply(this.groundTilt).multiply(this.objXZQuat),!0)}else{let e=this.onObject?1:5,t=h.multiplyScalar(r/e);for(let i=0;i<e;i++)this.position.add(t),this.collisionAdjustment(r/e)}}else this.position.addScaledVector(h,r);if("walk"===this.moveMode&&this.onObject&&(this.velocityTarget.y=0,this.velocity.y=0),this.quaternion.premultiply(this.groundTilt).multiply(this.objXZQuat),this.object.matrix.compose(this.position,this.quaternion,this.scale),this.object.matrixWorldNeedsUpdate=!0,this.object.matrix.multiply(this.nonColliderPosOffset).multiply(this.nonColliderRotOffset),this.quaternion.premultiply(this.groundTiltInv).multiply(this.objXZQuatInv),!0===this.cameraFollow){this.updateFollowArms();let e=this.objectToTarget.add(this.position),t=this.targetToCamera.add(e);RG.lookAt(t,e,RZ).setPosition(t),RG.decompose(this.targetPos,this.targetQuat,Rk),this.camera.quaternion.slerp(this.targetQuat,1-(1-this.lerpFactorRotCamera)**a),this.camera.position.lerp(this.targetPos,1-(1-this.lerpFactorPosCamera)**a),this.camera.updateMatrix(),this.camera.updateMatrixWorld(),"Limit"===this.cameraYAxis&&"cartesian"===this.orientMode&&(this.euler.y=tK.clamp(this.euler.y,this.minAzimuthAngleRel,this.maxAzimuthAngleRel)),this.euler.x=tK.clamp(this.euler.x,-this.PI_2+(this.cameraPolarOffset<0?this.cameraPolarOffset:0),this.PI_2+(this.cameraPolarOffset>0?this.cameraPolarOffset:0))}return this.eulerDelta.set(0,0,0),this.object.dispatchEvent(R2),!(this.path.length<2&&this.lastPosition.distanceToSquared(this.position)<this.threshEndTranslate&&Math.abs(this.rotVelocity.x)<this.threshEndRotVel&&Math.abs(this.rotVelocity.y)<this.threshEndRotVel&&(void 0===this.camera||this.isFirstPerson||this.lastCameraPosition.distanceToSquared(this.camera.position)<this.threshEndTranslate&&8*(1-this.lastCameraQuaternion.dot(this.camera.quaternion))<this.threshEndRotate)&&("fly"===this.moveMode||!0===this.onObject||!1===this.collisionEnabled)&&(null===this.navMeshPathDest||this.navMeshPathDest.material.opacity<-.04*this.navMeshPathDest?.material?.userData.opacity0))&&(this.camera&&(this.lastCameraPosition.copy(this.camera.position),this.lastCameraQuaternion.copy(this.camera.quaternion)),this.lastPosition.copy(this.position),this.object.dispatchEvent(R1),!0)}updateFollowArms(){let e;this.objectToTarget.copy(this.objectToTarget0),this.targetToCamera.copy(this.targetToCamera0);let t=Rq.setFromAxisAngle(RZ,"Limit"===this.cameraYAxis&&"radial"!==this.orientMode?tK.clamp(this.euler.y-this.euler0.y,this.minAzimuthAngleRel,this.maxAzimuthAngleRel):this.euler.y-this.euler0.y);("Locked"!==this.cameraYAxis||"radial"===this.orientMode)&&this.objectToTarget.applyQuaternion(t),e="Limit"===this.cameraXAxis?tK.clamp(this.euler.x,-this.maxPolarAngle+this.cameraPolarOffset+1e-6,-this.minPolarAngle+this.cameraPolarOffset-1e-6):tK.clamp(this.euler.x,-this.PI_2+this.cameraPolarOffset+1e-6,this.PI_2+this.cameraPolarOffset-1e-6);let i=Rk.copy(this.cameraPolarAxis0);("Locked"!==this.cameraYAxis||"radial"===this.orientMode)&&i.applyQuaternion(t);let r=RX.setFromAxisAngle(i,e);"Locked"!==this.cameraYAxis&&this.targetToCamera.applyQuaternion(t),"Locked"!==this.cameraXAxis&&this.targetToCamera.applyQuaternion(r)}groundTiltAdjustment(e){180*RZ.angleTo(e)/Math.PI<15||180*RZ.angleTo(e)/Math.PI>85?Rq.identity():Rq.setFromUnitVectors(RZ,e),this.groundTilt.slerp(Rq,.06),this.groundTiltInv.copy(this.groundTilt).invert()}collisionAdjustment(e){let t=RN.set(0,0,0);this.object.matrix.compose(this.position,this.quaternion,this.scale);let i=RG.multiplyMatrices(this.object.matrix,this.objXZRotMat).multiply(this.collider.matrix).decompose(Rk,Rq,RV).compose(Rk,Rq,RJ);this.sharedGameControlGlobals.entitiesWithTransformAnim.forEach(e=>{if(e===this.object||e.isDescendantOf(this.object))return;R0.makeEmpty(),e.updateMatrixWorldSVD();let r=e.matrixWorldRigid,a=RH.copy(r).invert(),o=RW.copy(RH).multiply(i);
8106R$.copy(this.collider.segment),R$.start.applyMatrix4(o),R$.end.applyMatrix4(o);let h=RF.copy(this.position).applyMatrix4(a);R0.expandByPoint(R$.start),R0.expandByPoint(R$.end),R0.min.addScalar(-this.collider.radius),R0.max.addScalar(this.collider.radius),e.bvhGeometry.boundsTree.shapecast({traverseBoundsOrder:e=>e.distanceToPoint(R$.end),intersectsBounds:e=>e.intersectsBox(R0),intersectsTriangle:e=>{let i=e.closestPointToSegment(R$,Rk,RV);if(i<this.collider.radius){let e=this.collider.radius-i,a=RV.sub(Rk).normalize(),o=Rj.copy(h);o.addScaledVector(a,e);let c=o.applyMatrix4(r).sub(this.position);t.add(c),R$.start.addScaledVector(a,e),R$.end.addScaledVector(a,e)}}})}),R0.makeEmpty(),R$.copy(this.collider.segment),R$.start.applyMatrix4(i),R$.end.applyMatrix4(i),R0.expandByPoint(R$.start),R0.expandByPoint(R$.end),R0.min.addScalar(-this.collider.radius),R0.max.addScalar(this.collider.radius),this.sharedGameControlGlobals.staticMeshBVH?.shapecast({traverseBoundsOrder:e=>e.distanceToPoint(R$.end),intersectsBounds:e=>e.intersectsBox(R0),intersectsTriangle:e=>{let i=e.closestPointToSegment(R$,Rk,RV);if(i<this.collider.radius){let e=this.collider.radius-i,r=RV.sub(Rk).normalize();this.alignToGround&&this.groundTiltAdjustment(r),t.addScaledVector(r,e),R$.start.addScaledVector(r,e),R$.end.addScaledVector(r,e)}}}),this.onObject=Math.abs(t.y)>Math.abs(e*this.velocity.y*.25),this.onObject&&this.dispatchStopEvent("jump");let r=Math.max(0,t.length()-1e-5);t.normalize().multiplyScalar(r),this.position.add(t)}pause(){this.firstPointerId=-1,this.movementState={moveNegZ:0,movePosZ:0,moveNegX:0,movePosX:0,moveNegY:0,movePosY:0,rotPosX:0,rotNegX:0,rotPosY:0,rotNegY:0,jump:0,run:0},this.deactivate()}resume(){this.activate()}};R4.isLocked=!1;var R5=tA(tC());function R6(e){let t=e.elements,i=t[0]**2+t[1]**2+t[2]**2,r=t[4]**2+t[5]**2+t[6]**2,a=t[8]**2+t[9]**2+t[10]**2,o=t[0]**2+t[4]**2+t[8]**2,h=t[1]**2+t[5]**2+t[9]**2,c=t[2]**2+t[6]**2+t[10]**2;return i<1e-8||r<1e-8||a<1e-8||o<1e-8||h<1e-8||c<1e-8}function R8(e,t){let i=new rU;if(t&&R6(t)||!e.getAttribute("position"))return i.setAttribute("position",new rO([],3)),i.setIndex([]),i;let{positions:r,triIndices:a}=_G(e.getAttribute("position"),e.getIndex());return i.setAttribute("position",new rO(r,3)),i.setIndex(a),t&&i.applyMatrix4(t),i}var R9=new iZ,R7=new iZ,Le=[[0,0,0],[0,0,0],[0,0,0]];function Lt(e){let t=e.elements;Le[0][0]=t[0],Le[0][1]=t[4],Le[0][2]=t[8],Le[1][0]=t[1],Le[1][1]=t[5],Le[1][2]=t[9],Le[2][0]=t[2],Le[2][1]=t[6],Le[2][2]=t[10];let{u:i,v:r}=(0,R5.SVD)(Le),a=R9.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),o=R7.set(r[0][0],r[0][1],r[0][2],0,r[1][0],r[1][1],r[1][2],0,r[2][0],r[2][1],r[2][2],0,0,0,0,1);return a.multiply(o.transpose())}var Li=class extends lL{constructor(){super(),this.layers.enable(3),this.layers.enable(8),this.layers.enable(9)}setFromCamera(e,t){t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,-1).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):t.isPerspectiveCamera?(this.ray.origin.set(e.x,e.y,-1).unproject(t),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):console.error("Raycaster: Unsupported camera type.")}intersectVisibleObjects(e,t=!0,i=[]){return e.forEach(e=>{e.visible&&this.intersectObject(e,t,i)}),i}createRaycastLineHelper(){let e=new nU({color:65280,linewidth:10}),t=new ib(this.ray.origin.x,this.ray.origin.y,this.ray.origin.z),i=new ib(this.ray.direction.x,this.ray.direction.y,this.ray.direction.z),r=this.camera.far-this.camera.near,a=new ib().addVectors(t,i.multiplyScalar(r)),o=new rU;return o.setFromPoints([t,a]),new nW(o,e)}},Lr=e=>e instanceof C6||e instanceof Oe;function Ls(e,t){return e.distance-t.distance}function La(e,t,i,r=!1){if(!r&&!i.some(t=>void 0!==Ll(e,t)))return[];let a=[];return t.children.forEach(t=>(function e(t,i,r){if(!(!wo(i)||!i.visible))for(let a of(CJ(i)&&i.raycast(t,r),i.children))e(t,a,r)})(e,t,a)),a.sort(Ls),a}function Ln(e){let t=[];if(e.length){let i=e[0].object;wo(i)&&t.push(i);let r=i.parent;for(;r;)Lr(r)&&t.push(r),r=r.parent}return t}function Lo(e,t,i,r){let a=e.frame;if(a){let e=t[0]*a.width,o=(1-t[1])*a.height;for(let t of i){let i=t===a.uuid?a:a.find(t);if(i?.intersects(e,o))return r(i),!0}}return!1}function Ll(e,t){if(CJ(t)){if(t.visible){let i=[];return t.raycast(e,i),i.length?i[0]:void 0}}else if(Lr(t))return function e(t,i){if(!(!wo(i)||!i.visible)){if(CJ(i)){let e=[];
8106if(i.raycast(t,e),e.length)return e[0]}for(let r of i.children){let i=e(t,r);if(i)return i}}}(e,t)}var Lh=class{constructor(e,t,i,r,a,o,h,c){this.renderer=e,this.publish=t,this.scene=i,this.getCamera=r,this.sharedAssets=a,this.requestRender=o,this.isExport=h,this.frame=c,this.raycaster=new Li,this._useWindowEvents=!1,this.pointerWorld={x:0,y:0},this.pointerScreen={x:0,y:0},this._useWindowEvents="window"===t.mouseEventTarget,this.domElement=e.domElement,this.eventElement=this._useWindowEvents?window:e.domElement,this._domRect=this.domElement.getBoundingClientRect()}get stopRaycast(){return this.publish.stopRaycast}get page(){return this.scene.activePage}set useWindowEvents(e){this._useWindowEvents=e,this.eventElement=e?window:this.renderer.domElement}get useWindowEvents(){return this._useWindowEvents}set domRect(e){this._domRect=e}get domRect(){return this._domRect}updateRaycaster(e){var t,i;let{pageX:r,pageY:a}=e.touches?.length>0?e.touches[0]:e;this.pointerWorld={x:(r-((t=this._domRect).left+window.scrollX))/t.width*2-1,y:-((a-(t.top+window.scrollY))/t.height*2)+1},this.pointerScreen={x:(r-((i=this._domRect).left+window.scrollX))/i.width,y:1-(a-(i.top+window.scrollY))/i.height},this.raycaster.setFromCamera(this.pointerWorld,this.getCamera())}},Lc=class{constructor(e){this.eventContext=e,this.domEventsNeeded=new Set,this.hasVideoAction=!1}connect(){}disconnect(){}},Ld=[["start","Start"],["keyDown","KeyDown"],["keyUp","KeyUp"],["mouseDown","MouseDown"],["mouseUp","MouseUp"],["mouseHover","MouseHover"],["collision","Collision"],["lookAt","LookAt"],["follow","Follow"],["scroll","Scroll"]],Lu=e=>Ld.find(([t,i])=>i===e)?.[0],Lp=e=>Ld.find(([t])=>t===e)?.[1],Lf=(e,t)=>{let i=Lu(e);if(i){let e=new CustomEvent(i,{bubbles:!0});return Object.defineProperty(e,"target",{writable:!1,value:t}),e}},Lm=class extends Lc{constructor(){super(...arguments),this.objectsPerEvents=new Map,this.splineEvents={},this.onBeginEvent=e=>{if(!e.eventName||!e.target||"Scroll"===e.eventName)return;let t=this.splineEvents[Lu(e.eventName)]?.[e.target.uuid];if(!t)return;"Scroll"===e.eventName&&void 0!==e.deltaY&&Object.assign(t,{deltaY:e.deltaY});let{domElement:i}=this.eventContext;i.dispatchEvent(t)}}connect(){let{page:e}=this.eventContext;e.traverseEntity(e=>{if(e.data?.events.length){for(let[t,i]of Ld)if(e.data.events.some(e=>e.data.type===i&&!e.data.disabled)){this.objectsPerEvents.has(t)?this.objectsPerEvents.get(t)?.push(e):this.objectsPerEvents.set(t,[e]);let r=Lf(i,{id:e.uuid,name:e.name}),a=this.splineEvents[t];a?a[e.uuid]=r:this.splineEvents[t]={[e.uuid]:r}}}}),this.objectsPerEvents.forEach(e=>{e.forEach(e=>{e.addEventListener("beginEvent",this.onBeginEvent)})})}disconnect(){this.objectsPerEvents.forEach(e=>{e.forEach(e=>{e.removeEventListener("beginEvent",this.onBeginEvent)})})}},Lg=class{constructor(e,t,i,r,a,o){if(this.id=e,this.data=t,this.object=i,this.entered=!1,("KeyDown"===t.type||"KeyUp"===t.type||"KeyPress"===t.type)&&!t.key)throw Error("Missing property");this.actions=RA(t,t.actions,r,a,o,i)}disconnect(){RM(this.actions)}dispatchHeld(e){this.actions.Create.forEach(t=>{e&&t.dispatchThrottled.cancel(),t.dispatchThrottled()})}dispatch(e=!1){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),"MousePress"===this.data.type||"KeyPress"===this.data.type?this.entered||(this.entered=!0,this.actions.Transition.forEach(e=>e.playFromCurrent()),this.actions.Animation.forEach(e=>e.playFromCurrent()),this.actions.TimelineAnimation.forEach(e=>e.playFromCurrent()),this.actions.SwitchCamera.forEach(e=>e.playFromCurrent()),this.actions.Create.forEach(e=>e.dispatchStart())):(this.actions.Transition.some(e=>e.playing&&"Toggle"!==e.data.runMode)||this.actions.Transition.forEach(e=>{"Toggle"===e.data.runMode?e.toggle():e.play()}),this.actions.SwitchCamera.some(e=>e.playing&&"Toggle"!==e.data.runMode)||this.actions.SwitchCamera.forEach(e=>{"Toggle"===e.data.runMode?e.toggle():e.play()}),this.actions.Animation.forEach(e=>{"Toggle"===e.data.runMode?e.toggle():e.play()}
vendor: 1,972 bytes, line 8106
8106),this.actions.TimelineAnimation.forEach(e=>{"Toggle"===e.data.runMode?e.toggle():e.play()})),this.actions.Link.forEach(e=>{e.dispatch()}),this.actions.SceneTransition.forEach(e=>{e.dispatch()}),!1===e&&this.actions.Create.forEach(e=>{e.dispatch()}),this.actions.Destroy.forEach(e=>{e.dispatch()}),this.actions.Reset.forEach(e=>{e.dispatch()}),this.actions.Audio.forEach(e=>{e.dispatchBasic()}),this.actions.Video.forEach(e=>{e.dispatchBasic()}),this.actions.Particles.forEach(e=>{e.dispatchBasic()}),this.actions.SetVariable.forEach(e=>e.checkConditions()),this.actions.SetVariable.forEach(e=>e.dispatch()),this.actions.DynamicVariablePlay.forEach(e=>e.dispatch()),this.actions.ClearLocalStorage.forEach(e=>e.dispatch()),this.actions.UserAPI.forEach(e=>e.dispatch())}dispatchRelease(){this.entered&&(this.entered=!1,this.actions.Transition.forEach(e=>e.reverseFromCurrent()),this.actions.Particles.forEach(e=>e.reverseFromCurrent()),this.actions.Animation.forEach(e=>e.reverseFromCurrent()),this.actions.SwitchCamera.forEach(e=>e.reverseFromCurrent()),this.actions.Create.forEach(e=>e.dispatchStop()))}dispatchUserEvent(e){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),e?(this.actions.Transition.forEach(e=>e.reverseFromCurrent()),this.actions.Animation.forEach(e=>e.reverseFromCurrent()),this.actions.TimelineAnimation.forEach(e=>e.reverseFromCurrent()),this.actions.SwitchCamera.forEach(e=>e.reverseFromCurrent())):(this.actions.Transition.forEach(e=>e.playFromCurrent()),this.actions.Animation.forEach(e=>e.playFromCurrent()),this.actions.TimelineAnimation.forEach(e=>e.playFromCurrent()),this.actions.SwitchCamera.forEach(e=>e.playFromCurrent())),this.actions.Link.forEach(e=>{e.dispatch()}),this.actions.SceneTransition.forEach(e=>{e.dispatch()}),this.actions.Create.forEach(e=>{e.dispatch()}),this.actions.Destroy.forEach(e=>{e.dispatch()}),this.actions.Reset.forEach(e=>{e.dispatch()}
8106),this.actions.Audio.forEach(e=>{e.dispatchBasic()}),this.actions.Video.forEach(e=>{e.dispatchBasic()}),this.actions.Particles.forEach(e=>{e.dispatchBasic()}),this.actions.SetVariable.forEach(e=>e.checkConditions()),this.actions.SetVariable.forEach(e=>e.dispatch()),this.actions.DynamicVariablePlay.forEach(e=>e.dispatch()),this.actions.ClearLocalStorage.forEach(e=>e.dispatch()),this.actions.UserAPI.forEach(e=>e.dispatch())}},Lv=class extends Lc{constructor(e,t,i){super(e),this.eventManager=t,this.useForRaycastProperty=i,this.objectsPerTypes={MouseDown:[],MouseUp:[],MousePress:[],KeyDown:[],KeyUp:[],KeyPress:[]},this.canvasMouseEvents=[],this.eventsPerObjects={MouseDown:{},MouseUp:{},MousePress:{},KeyDown:{},KeyUp:{},KeyPress:{}},this.heldKeys={},this.heldKeysPress={},this._prevObjects=[],this.sceneInterects=null,this.onCanvasRaycast=e=>{if(!0===this.useForRaycastProperty&&null===this.sceneInterects){this.eventContext.updateRaycaster(e);let{raycaster:t,page:i}=this.eventContext,r=La(t,i,[],!0);this.sceneInterects=r,r.length&&(this.eventContext.sharedAssets.raycastProperty={x:r[0].point.x,y:r[0].point.y,z:r[0].point.z,objX:r[0].object.matrixWorld.elements[12],objY:r[0].object.matrixWorld.elements[13],objZ:r[0].object.matrixWorld.elements[14]})}},this.onCanvasMouseDown=e=>{(e.target===this.eventContext.domElement||"SPLINE-VIEWER"===e.target.tagName)&&this.canvasMouseEvents.forEach(t=>{("MouseDown"===t.data.type||"MousePress"===t.data.type)&&(this.onCanvasRaycast(e),t.dispatch())})},this.onCanvasMouseUp=e=>{(e.target===this.eventContext.domElement||"SPLINE-VIEWER"===e.target.tagName)&&this.canvasMouseEvents.forEach(t=>{"MouseUp"===t.data.type?(this.onCanvasRaycast(e),t.dispatch()):"MousePress"===t.data.type&&t.dispatchRelease()})},this.onMouseDown=e=>{pp.length>1||(this.eventContext.updateRaycaster(e),this.handleMouseEvent("MouseDown"))},this.onMouseUp=e=>{pp.length>1||(this.eventContext.updateRaycaster(e),this.handleMouseEvent("MouseUp"))},this.onMousePressDown=e=>{pp.length>1||(this.eventContext.updateRaycaster(e),this.handleMousePressEvent())},this.onMousePressRelease=e=>{pp.length>1||(this.eventContext.updateRaycaster(e),this.handleMousePressEvent(!0))},this.onKeyDown=e=>{this.heldKeys[e.key]||(this.handleKeyEvent(e,"KeyDown"),this.handleKeyEventHeld(e,"KeyDown",!0)),this.heldKeys[e.key]=!0},this.onKeyUp=e=>{this.handleKeyEvent(e,"KeyUp"),this.handleKeyEventHeld(e,"KeyUp",!0)},this.onKeyPressDown=e=>{this.heldKeysPress[e.key]?this.handleKeyEventHeld(e,"KeyPress"):(this.handleKeyEvent(e,"KeyPress"),this.handleKeyEventHeld(e,"KeyPress",!0)),this.heldKeysPress[e.key]=!0},this.onKeyPressUp=e=>{this.handleKeyEvent(e,"KeyPress",!0)},this.releaseHeldKey=e=>{delete this.heldKeys[e.key]},this.releaseHeldKeyPress=e=>{delete this.heldKeysPress[e.key]},this._onUserEvent=({eventName:e,target:t,reverse:i})=>{if(!e||!t)return;let r=Lp(e);r&&("MouseDown"===r||"MouseUp"===r||"MousePress"===r?(t.dispatchEvent({type:"beginEvent",eventName:r}),this.eventsPerObjects[r]?.[t.uuid]?.forEach(e=>{e.dispatchUserEvent(i)}),this.canvasMouseEvents.forEach(e=>{e.dispatchUserEvent(i)})):("KeyDown"===r||"KeyUp"===r||"KeyPress"===r)&&(t.dispatchEvent({type:"beginEvent",eventName:r}),this.eventsPerObjects[r]?.[t.uuid]?.forEach(e=>{e.dispatchUserEvent()})))}}connect(){let{page:e,sharedAssets:t,domElement:i}=this.eventContext,r=(i,r)=>{if(i.data?.events.length)for(let a of["MouseDown","MouseUp","MousePress","KeyDown","KeyUp","KeyPress"]){let o=this.eventsPerObjects[a];if(i.data.events.filter(({data:e})=>e.type===a&&!0!==e.disabled).forEach(({id:r,data:a})=>{try{let h=new Lg(r,a,i,e,t,this.eventManager);h.actions.Video.length&&(this.hasVideoAction=!0),("MouseDown"===a.type||"MouseUp"===a.type||"MousePress"===a.type)&&("Canvas"===a.mode||"Window"===a.mode)?this.canvasMouseEvents.push(h):(o[i.uuid]?o[i.uuid].some(e=>e.id===h.id)||o[i.uuid].push(h):o[i.uuid]=[h],i instanceof Oz&&i.traverseChildren(e=>{if(!e.visible)return!0;e instanceof EZ&&"shapeBlendNode"in e.data.geometry&&e.data.geometry.shapeBlendNode?.operation!==2&&(o[e.uuid]?o[e.uuid].push(h):o[e.uuid]=[h])}))}catch(e){}}),o[i.uuid]?.length&&(this.objectsPerTypes[a].push(i instanceof Du&&("MouseDown"===a||"MouseUp"===a||"MousePress"===a)?r:i),i instanceof Oz)){let e=this.objectsPerTypes[a];i.traverseChildren(t=>{if(!t.visible)return!0;t instanceof EZ&&-1===e.indexOf(t)&&e.push(t)})}}};e.traverseEntity(e=>{(e instanceof Os||e instanceof D5)&&e.frame?.traverse(t=>{r(t,e)}),r(e)}),this.heldKeys={},this.heldKeysPress={},this.domEventsNeeded.clear(),i.addEventListener("pointerdown",this.onCanvasMouseDown),i.addEventListener("pointerup",this.onCanvasMouseUp),(this.objectsPerTypes.MouseDown?.length||this.useForRaycastProperty)&&(this.domEventsNeeded.add("pointerdown"),i.addEventListener("pointerdown",this.onMouseDown)),this.objectsPerTypes.MouseUp?.length&&(this.domEventsNeeded.add("pointerup"),i.addEventListener("pointerup",this.onMouseUp)),this.objectsPerTypes.MousePress?.length&&(this.domEventsNeeded.add("pointerdown"),i.addEventListener("pointerdown",this.onMousePressDown),this.domEventsNeeded.add("pointerup"),i.addEventListener("pointerup",this.onMousePressRelease)),this.objectsPerTypes.KeyDown?.length&&(this.domEventsNeeded.add("keydown"),document.addEventListener("keydown",this.onKeyDown),document.addEventListener("keyup",this.releaseHeldKey)),this.objectsPerTypes.KeyUp?.length&&(this.domEventsNeeded.add("keyup"),document.addEventListener("keyup",this.onKeyUp)),this.objectsPerTypes.KeyPress?.length&&(this.domEventsNeeded.add("keydown"),document.addEventListener("keydown",this.onKeyPressDown),document.addEventListener("keyup",this.releaseHeldKeyPress),this.domEventsNeeded.add("keyup"),document.addEventListener("keyup",this.onKeyPressUp)),Object.entries(this.objectsPerTypes).forEac
vendor: 4,714 bytes, line 8106
8106h(([e,t])=>{t.forEach(e=>{e.addEventListener("userEvent",this._onUserEvent)})}),this.canvasMouseEvents.forEach(e=>{e.object.addEventListener("userEvent",this._onUserEvent)})}disconnect(){let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),this.heldKeys={},this.heldKeysPress={},e.removeEventListener("pointerdown",this.onCanvasMouseDown),e.removeEventListener("pointerup",this.onCanvasMouseUp),e.removeEventListener("pointerdown",this.onMouseDown),e.removeEventListener("pointerdown",this.onMousePressDown),e.removeEventListener("pointerup",this.onMouseUp),e.removeEventListener("pointerup",this.onMousePressRelease),document.removeEventListener("keydown",this.onKeyDown),document.removeEventListener("keyup",this.onKeyUp),document.removeEventListener("keydown",this.onKeyPressDown),document.removeEventListener("keyup",this.onKeyPressUp),document.removeEventListener("keyup",this.releaseHeldKey),Object.values(this.eventsPerObjects).forEach(e=>{Object.values(e).forEach(e=>{e.forEach(e=>{e.disconnect()})})}),this.canvasMouseEvents.forEach(e=>{e.disconnect()}),Object.entries(this.objectsPerTypes).forEach(([e,t])=>{t.forEach(e=>{e.removeEventListener("userEvent",this._onUserEvent)})}),this.canvasMouseEvents.forEach(e=>{e.object.removeEventListener("userEvent",this._onUserEvent)})}handleMouseEvent(e){let{stopRaycast:t,raycaster:i,page:r,pointerScreen:a}=this.eventContext,o=this.objectsPerTypes[e],h=o.filter(e=>!(e instanceof Du));if(!(!o.length&&!this.useForRaycastProperty)&&!(r.uiCanvas&&Lo(r,[a.x,a.y],Object.keys(this.eventsPerObjects[e]),t=>{this.handleObjectMouseEventDispatch(t,e)}))){if(t||this.useForRaycastProperty){let a;if(null===this.sceneInterects?a=La(i,r,h,this.useForRaycastProperty):(a=this.sceneInterects,this.sceneInterects=null),this.useForRaycastProperty&&a.length&&(this.eventContext.sharedAssets.raycastProperty={x:a[0].point.x,y:a[0].point.y,z:a[0].point.z,objX:a[0].object.matrixWorld.elements[12],objY:a[0].object.matrixWorld.elements[13],objZ:a[0].object.matrixWorld.elements[14]}),t){let t=[a[0]?.uv?.x??0,a[0]?.uv?.y??0];Ln(a).forEach(i=>{i instanceof Os&&Lo(i,t,Object.keys(this.eventsPerObjects[e]),t=>{this.handleObjectMouseEventDispatch(t,e)}),this.eventsPerObjects[e][i.uuid]&&this.handleObjectMouseEventDispatch(i,e)})}}t||h.forEach(t=>{let r=Ll(i,t);r&&(this.handleObjectMouseEventDispatch(t,e),t instanceof Os&&Lo(t,[r?.uv?.x??0,r?.uv?.y??0],Object.keys(this.eventsPerObjects[e]),t=>{this.handleObjectMouseEventDispatch(t,e)}))})}}handleMousePressEvent(e=!1){let t="MousePress",i=this.objectsPerTypes[t],r=i.filter(e=>!(e instanceof Du)),a=[];if(i.length){if(!e){let{stopRaycast:e,raycaster:i,page:o,pointerScreen:h}=this.eventContext,c=!1;if(o.uiCanvas&&(c=Lo(o,[h.x,h.y],Object.keys(this.eventsPerObjects[t]),e=>{a.push(e)})),e&&!c){let e=La(i,o,r);a=Ln(e),e.forEach(e=>{e.object instanceof Os&&Lo(e.object,[e?.uv?.x??0,e?.uv?.y??0],Object.keys(this.eventsPerObjects[t]),e=>{a.push(e)})})}else r.forEach(e=>{let r=Ll(i,e);r&&(a.push(e),e instanceof Os&&Lo(e,[r?.uv?.x??0,r?.uv?.y??0],Object.keys(this.eventsPerObjects[t]),e=>{a.push(e)}))})}this._prevObjects.length&&this._prevObjects.forEach(e=>{a.includes(e)||this.handleObjectMouseEventDispatchRelease(e,t)}),a.length&&a.forEach(e=>{this.handleObjectMouseEventDispatch(e,t)}),this._prevObjects=a}}handleObjectMouseEventDispatch(e,t){e.dispatchEvent({type:"beginEvent",eventName:t}),this.eventsPerObjects[t]?.[e.uuid]?.forEach(e=>{e.dispatch()})}handleObjectMouseEventDispatchRelease(e,t){e.dispatchEvent({type:"beginEvent",eventName:t}),this.eventsPerObjects[t]?.[e.uuid]?.forEach(e=>{e.dispatchRelease()})}handleKeyEvent(e,t,i=!1){this.objectsPerTypes[t].forEach(r=>{let a=this.eventsPerObjects[t][r.uuid];a.some(({data:t})=>"key"in t&&t.key===e.key)&&r.dispatchEvent({type:"beginEvent",eventName:t}),a.forEach(t=>{"key"in t.data&&t.data.key===e.key&&(i?t.dispatchRelease():t.dispatch(!0))})})}handleKeyEventHeld(e,t,i=!1){this.objectsPerTypes[t].forEach(r=>{this.eventsPerObjects[t][r.uuid].forEach(t=>{"key"in t.data&&t.data.key===e.key&&t.dispatchHeld(i)})})}},Ly=new ib,Lx=new ib,Lb=class{constructor(e,t,i,r,a){this.actionsIn=RA(e,e.inActions,i,r,a,t),this.actionsOut=RA(e,e.outActions,i,r,a,t)}disconnect(){RM(this.actionsIn),RM(this.actionsOut)}},Lw=class extends Lb{constructor(e,t,i,r,a,o){super(t,i,r,a,o),this.id=e,this.data=t,this.object=i,this.stage="out",this.objects=[],this.onUpdateMatrixWorld=()=>{for(let e of this.objects)if(!e.visible)return;let e=Ly.setFromMatrixPosition(this.objects[0].matrixWorld),t=Lx.setFromMatrixPosition(this.objects[1].matrixWorld),i=e.distanceTo(t)<=this.distance?"in":"out";if(this.stage!==i){this.stage=i;let e="in"===i?this.actionsIn:this.actionsOut;
8106e.Audio.forEach(e=>e.dispatchConditional()),e.Particles.forEach(e=>e.dispatchConditional()),e.Video.forEach(e=>e.dispatchConditional()),e.Link.forEach(e=>e.dispatch()),e.Create.forEach(e=>e.dispatch()),e.Destroy.forEach(e=>e.dispatch()),e.Reset.forEach(e=>e.dispatch()),e.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this),e.init()}),e.Transition.forEach(e=>e.play()),e.Animation.forEach(e=>e.play()),e.TimelineAnimation.forEach(e=>e.play()),e.SwitchCamera.forEach(e=>e.play()),e.SceneTransition.forEach(e=>e.dispatch()),e.SetVariable.forEach(e=>e.checkConditions()),e.SetVariable.forEach(e=>e.dispatch()),e.DynamicVariablePlay.forEach(e=>e.dispatch()),e.ClearLocalStorage.forEach(e=>e.dispatch()),e.UserAPI.forEach(e=>e.dispatch())}};let{distance:h,fromObject:c,toObject:d}=t.condition;for(let e of(this.distance=h,[c,d])){if(!e)throw Error("Missing property");let t=r.find(e);if(!t)throw Error("Missing property");this.objects.push(t)}}connect(){window.setTimeout(()=>{this.objects.forEach(e=>{e.addEventListener("updateMatrixWorld",this.onUpdateMatrixWorld)}),this.onUpdateMatrixWorld()},0)}disconnect(){super.disconnect(),this.stage="out",this.objects.forEach(e=>{e.removeEventListener("updateMatrixWorld",this.onUpdateMatrixWorld)})}},LS=class extends Lb{constructor(e,t,i,r,a,o){super(t,i,r,a,o),this.id=e,this.data=t,this.object=i,this.onBegin=({target:e,state:t})=>
8106{this.toState!==t&&(this.actionsOut.Audio.forEach(e=>e.dispatchConditional()),this.actionsOut.Particles.forEach(e=>e.dispatchConditional()),this.actionsOut.Video.forEach(e=>e.dispatchConditional()),this.actionsOut.Link.forEach(e=>e.dispatch()),this.actionsOut.Create.forEach(e=>e.dispatch()),this.actionsOut.Destroy.forEach(e=>e.dispatch()),this.actionsOut.Reset.forEach(e=>e.dispatch()),this.actionsIn.Transition.forEach(e=>e.pause()),this.object.currentTransitionEvent=this,this.actionsOut.Transition.forEach(e=>e.play()),this.actionsOut.Animation.forEach(e=>e.play()),this.actionsOut.TimelineAnimation.forEach(e=>e.play()),this.actionsIn.SwitchCamera.forEach(e=>e.pause()),this.actionsOut.SwitchCamera.forEach(e=>e.play()),this.actionsOut.SceneTransition.forEach(e=>e.dispatch()),this.actionsOut.SetVariable.forEach(e=>e.checkConditions()),this.actionsOut.SetVariable.forEach(e=>e.dispatch()),this.actionsOut.DynamicVariablePlay.forEach(e=>e.dispatch()),this.actionsOut.ClearLocalStorage.forEach(e=>e.dispatch()),this.actionsOut.UserAPI.forEach(e=>e.dispatch()))},this.onComplete=({target:e,state:t})=>
8106{this.toState===t&&(this.actionsIn.Audio.forEach(e=>e.dispatchConditional()),this.actionsIn.Particles.forEach(e=>e.dispatchConditional()),this.actionsIn.Video.forEach(e=>e.dispatchConditional()),this.actionsIn.Link.forEach(e=>e.dispatch()),this.actionsIn.Create.forEach(e=>e.dispatch()),this.actionsIn.Destroy.forEach(e=>e.dispatch()),this.actionsIn.Reset.forEach(e=>e.dispatch()),this.actionsOut.Transition.forEach(e=>e.pause()),this.actionsOut.Transition.forEach(e=>e.pause()),this.object.currentTransitionEvent=this,this.actionsIn.Transition.forEach(e=>e.play()),this.actionsIn.Animation.forEach(e=>e.play()),this.actionsIn.TimelineAnimation.forEach(e=>e.play()),this.actionsOut.SwitchCamera.forEach(e=>e.pause()),this.actionsIn.SwitchCamera.forEach(e=>e.play()),this.actionsIn.SceneTransition.forEach(e=>e.dispatch()),this.actionsIn.SetVariable.forEach(e=>e.checkConditions()),this.actionsIn.SetVariable.forEach(e=>e.dispatch()),this.actionsIn.DynamicVariablePlay.forEach(e=>e.dispatch()),this.actionsOut.ClearLocalStorage.forEach(e=>e.dispatch()),this.actionsOut.UserAPI.forEach(e=>e.dispatch()))};let{condition:h}=t;if(!h.object)throw Error("Missing property");let c=r.find(h.object)??r.scene.find2D(h.object);if(!c||(this.toObject=c,h.state&&!this.toObject.states?.[h.state]))throw Error("Missing property");this.toState=h.state}connect(){c4(this.actionsOut).forEach(e=>{this.actionsOut[e]?.length&&this.toObject.addEventListener("beginState",this.onBegin)}),c4(this.actionsIn).forEach(e=>{this.actionsIn[e]?.length&&this.toObject.addEventListener("completeState",this.onComplete)})}disconnect(){super.disconnect(),c4(this.actionsOut).forEach(e=>{this.actionsIn[e]?.length&&this.toObject.removeEventListener("beginState",this.onBegin)}),c4(this.actionsIn).forEach(e=>{this.actionsIn[e]?.length&&this.toObject.removeEventListener("completeState",this.onComplete)})}},L_=class extends Lc{constructor(e,t){super(e),this.eventManager=t,this.eventsPerConditions={Comparison:[],Distance:[],State:[]},this.hasVideoAction=!1}connect(){super.connect();let{page:e,sharedAssets:t}=this.eventContext;e.traverseEntity(i=>{if(i.data?.events.length){for(let{id:r,data:a}of i.data.events)if(!a.disabled&&"Conditional"===a.type)try{let o;"Comparison"===a.condition.type||("Distance"===a.condition.type?o=new Lw(r,a,i,e,t,this.eventManager):"State"===a.condition.type&&(o=new LS(r,a,i,e,t,this.eventManager))),o&&(this.eventsPerConditions[a.condition.type].push(o),(o.actionsIn.Video.length||o.actionsOut.Video.length)&&(this.hasVideoAction=!0))}catch(e){}}}),Object.values(this.eventsPerConditions).forEach(e=>e.forEach(e=>e.connect()))}disconnect(){super.disconnect(),Object.values(this.eventsPerConditions).forEach(e=>e.forEach(e=>e.disconnect()))}},LA=new ib,LM=new ib,LE=new ib,LC=new so,LT=new ib,LP=new ib,LD=new ib,LO=new ix,LI=new i6,LR=new iZ,LL=new t$,LB=new ib,Lz=new ib;function LF(e,t){!t||(t[0]<t[1]&&(e.x=Math.min(Math.max(e.x,t[0]),t[1])),t[2]<t[3]&&(e.y=Math.min(Math.max(e.y,t[2]),t[3])),t[4]<t[5]&&(e.z=Math.min(Math.max(e.z,t[4]),t[5])))}var LN=(tn=new iZ,(e,t,i)=>{let r=e.obj;tn.copy(r.hiddenMatrix),null!==r.parent&&tn.premultiply(r.parent.matrixWorld),tn.invert(),r.position.copy(t),"global"===e.reference&&LF(r.position,e.limits),r.position.applyMatrix4(tn),"parent"===e.reference?LF(r.position,e.limits):"local"===e.reference&&(LO.copy(e.quat0).invert(),r.position.sub(e.position0),r.position.applyQuaternion(LO),LF(r.position,e.limits),LO.invert(),r.position.applyQuaternion(LO),r.position.add(e.position0)),tn.multiply(i??r.matrixWorld).decompose(LT,r.quaternion,LP),r.updateMatrix(),r.hasNonUniformScale&&(r.updateMatrixWorld(),r.updateMatrixWorldSVD()),r instanceof Ai&&C$(r.parent)&&r.invalidateDownstreamBooleanData(!0)}),LU=class{constructor(e,t,i,r,a,o,h){this.object=e,this.id=t,this.data=i,this.dropDestIds=[],this.activeIdx=null,this.wasDragEventTriggered=!1,this.resetDampingFactor=0===this.data.resetSpeed?1:8/this.data.resetSpeed+1,this.snapDampingFactor=0===this.data.snapSpeed?1:8/this.data.snapSpeed+1,this.actionsDrag=RA(i,i.dragDropActions.drag,r,a,o,this.object),this.actionsDrop=RA(i,i.dragDropActions.drop,r,a,o,this.object);let c=[];
8106this.data.objects.forEach(e=>{let t=r.find(e);!t||!1!==t.data.visible&&(c.push(t),h[t.uuid]&&h[t.uuid].forEach(e=>{let t=r.find(e);t&&!1!==t.data.visible&&c.push(t)}))}),this.data.dropDestinations.forEach(e=>{let t=r.find(e);!t||!1!==t.data.visible&&(this.dropDestIds.push(t.uuid),h[t.uuid]&&h[t.uuid].forEach(e=>{let t=r.find(e);t&&!1!==t.data.visible&&this.dropDestIds.push(t.uuid)}))}),this.dragItems=c.map(e=>("locked"===this.data.planeMode&&(e.userData.lockedPlane=!0),e.userData.worldPosition0=new ib().setFromMatrixPosition(e.matrixWorld),{obj:e,fromPosition:new ib().setFromMatrixPosition(e.matrixWorld),pointStart:new ib,pointEnd:new ib,paused:!0,currentDampingFactor:this.data.dampingFactor,reset:!1,position0:new ib().copy(e.position),quat0:new ix().copy(e.quaternion),snapped:!1,orientationMatrix:new iZ,limits:this.data.limits,reference:this.data.referenceFrame}))}get activeDragItem(){return null!==this.activeIdx?this.dragItems[this.activeIdx]:null}dispose(){RM(this.actionsDrag),RM(this.actionsDrop),this.dragItems.forEach(e=>{e.fromPosition.copy(e.obj.userData.worldPosition0),e.pointStart.copy(e.fromPosition),e.pointEnd.copy(e.pointStart),e.obj.recursiveBBoxNeedsUpdate=!0,e.obj.userData.lockedPlane=void 0,e.obj.position.copy(e.position0),e.obj.quaternion.copy(e.quat0),e.obj.updateMatrix()})}},Lk=class extends Lc{constructor(e,t){super(e),this.eventManager=t,this.events=[],this.lastDropDestination=null,this.dragTimeout=null,this.onPointerDown=e=>{if(pp.length>1)return;this.eventContext.updateRaycaster(e);let{raycaster:t,page:i}=this.eventContext,r=i.raycastWithClones(t);if(this.lastDropDestination=null,0===r.length){this.activeEvent=null;return}for(let e of this.events){let t=0;for(let{obj:i,pointEnd:a,pointStart:o}of e.dragItems){if(i===r[0].object||i===r[0].object.object||_S.is(i)&&i.isAncestorOf(r[0].object.uuid)){if(e.activeIdx=t,e.activeDragItem.reset=!1,e.activeDragItem.currentDampingFactor=e.data.dampingFactor,e.activeDragItem.snapped=!1,"hand"===e.data.cursor&&this.setCursor("grabbing"),this.eventManager.controlsManager.usePhysics){e.activeDragItem.obj.rigidBody&&e.activeDragItem.obj.rigidBody.setBodyType(2,!0);let t=e.activeDragItem.obj;i.hasNonUniformScale&&i.updateMatrixWorldSVD(),(t.hasNonUniformScale?t.matrixWorldRigid:t.matrixWorld).decompose(LT,LO,LP),LI.setFromQuaternion(LO),void 0===t.prevR?(t.prevR=LI.clone(),t.prevT=LT.clone()):(t.prevR.copy(LI),t.prevT.copy(LT)),this.eventManager.controlsManager.sharedGameControlGlobals.entitiesWithTransformAnim.push(e.activeDragItem.obj)}this.calcPlaneIntersectPos(i,o,e.data.plane,e.data.referenceFrame),a.copy(o),(this.eventManager.controlsManager.usePhysics&&i.data.physics?.rigidBody==="dynamic"||!1===e.data.drop||!1===e.data.resetOnSnapFail)&&e.activeDragItem.fromPosition.setFromMatrixPosition(e.activeDragItem.obj.matrixWorld),this.activeEvent=e,this.eventManager.controlsManager.orbitControls&&(this.eventManager.controlsManager.orbitControls.enabled=!1);return}t++}}this.activeEvent=null},this.onPointerMove=e=>{if(pp.length>1)return;this.eventContext.updateRaycaster(e);let{raycaster:t,page:i}=this.eventContext,r=i.raycastWithClones(t);if(0===pp.length){let e=!1;for(let t of this.events){for(let{obj:i}of t.dragItems)if(i===r[0]?.object||i===r[0]?.object?.object||_S.is(i)&&i.isAncestorOf(r[0]?.object.uuid)){switch(e=!0,t.data.cursor){case"hand":this.setCursor("grab");break;case"move":this.setCursor("move")}break}if(e)break}e||this.setCursor("default");return}if(this.activeEvent&&this.activeEvent.activeDragItem){let e,t=this.activeEvent.activeDragItem;if(t.snapped=!1,this.activeEvent.data.drop&&(e=r.filter(e=>t.obj!==e.object&&!t.obj.isAncestorOf(e.object.uuid)&&!(e.object instanceof C6)&&("all"===this.activeEvent.data.dropOn||this.activeEvent.dropDestIds.some(t=>t===e.object.uuid||i.scene.find(t).isAncestorOf(e.object.uuid))))[0]),e){let i=LD.copy(e.face.normal).applyMatrix3(LL.getNormalMatrix(e.object.matrixWorld));if("center"===this.activeEvent.data.snapTo)t.fromPosition.setFromMatrixPosition(e.object.matrixWorld);else if("surface"===this.activeEvent.data.snapTo){if(t.fromPosition.copy(e.point),"bbox"===this.activeEvent.data.snapSurfaceMode){LT.copy(i).applyMatrix3(LL.setFromMatrix4(t.obj.matrixWorld).transpose());let e=t.obj;LT.x>.2?LP.x=-e.recursiveBBox.min.x:LT.x<-.2&&(LP.x=-e.recursiveBBox.max.x),LT.y>.2?LP.y=-e.recursiveBBox.min.y:LT.y<-.2&&(LP.y=-e.recursiveBBox.max.y),LT.z>.2?LP.z=-e.recursiveBBox.min.z:LT.z<-.2&&(LP.z=-e.recursiveBBox.max.z),LP.applyMatrix3(LL.invert())}else LP.copy(i).multiplyScalar(this.activeEvent.data.snapSurfaceOffset);t.fromPosition.add(LP)}
8106this.activeEvent.data.autoOrient&&(LT.set(0,1,0).cross(i),1e-4>LT.length()&&LT.set(-1,0,0).cross(i),LP.crossVectors(LD,LT),t.orientationMatrix.makeBasis(LT,LP,i)),t.pointStart.copy(t.fromPosition),t.pointEnd.copy(t.pointStart),t.currentDampingFactor=this.activeEvent.snapDampingFactor,t.snapped=!0,this.lastDropDestination!==e.object&&(this.lastDropDestination=e.object,this.activeEvent.actionsDrop.Transition.forEach(e=>{e.play()}),this.activeEvent.actionsDrop.Animation.forEach(e=>{e.play()}),this.activeEvent.actionsDrop.Audio.forEach(e=>{e.dispatchGameControl("start")}),this.activeEvent.actionsDrop.Particles.forEach(e=>{e.dispatchGameControl("start")}),this.activeEvent.actionsDrop.Create.forEach(e=>{e.dispatchThrottled()}))}else t.orientationMatrix.makeRotationFromQuaternion(t.quat0),this.lastDropDestination=null,t.currentDampingFactor=this.activeEvent.data.dampingFactor,this.calcPlaneIntersectPos(t.obj,t.pointEnd,this.activeEvent.data.plane,this.activeEvent.data.referenceFrame),this.activeEvent.actionsDrop.Transition.forEach(e=>{e.stop(),null!==e.object.currentState&&e.object.changeSelectedState(null,{scene:this.eventContext.page.scene,shared:this.eventContext.sharedAssets})}),this.activeEvent.actionsDrop.Animation.forEach(e=>{e.stop()}
8106),this.activeEvent.actionsDrop.Audio.forEach(e=>{e.dispatchGameControl("stop")}),this.activeEvent.actionsDrop.Particles.forEach(e=>{e.dispatchGameControl("stop")});this.activeEvent.actionsDrag.Create.forEach(e=>{e.dispatchThrottled()}),this.activeEvent.actionsDrag.SetVariable.forEach(e=>e.checkConditions()),this.activeEvent.actionsDrag.SetVariable.forEach(e=>e.dispatch()),this.activeEvent.actionsDrag.DynamicVariablePlay.forEach(e=>e.dispatch()),this.activeEvent.actionsDrag.ClearLocalStorage.forEach(e=>e.dispatch()),this.activeEvent.actionsDrag.UserAPI.forEach(e=>e.dispatch()),!1===this.activeEvent.wasDragEventTriggered&&(this.activeEvent.wasDragEventTriggered=!0,this.activeEvent.actionsDrag.Transition.forEach(e=>{e.play()}),this.activeEvent.actionsDrag.Animation.forEach(e=>{e.play()}),this.activeEvent.actionsDrag.Audio.forEach(e=>{e.dispatchGameControl("start")}),this.activeEvent.actionsDrag.Particles.forEach(e=>{e.dispatchGameControl("start")})),this.dragTimeout&&window.clearTimeout(this.dragTimeout),this.dragTimeout=window.setTimeout(()=>{this.activeEvent&&(this.activeEvent.wasDragEventTriggered=!1,this.activeEvent.actionsDrag.Audio.forEac
vendor: 5,919 bytes, line 8106
8106h(e=>{e.dispatchGameControl("stop")}),this.activeEvent.actionsDrag.Particles.forEach(e=>{e.dispatchGameControl("stop")}),this.activeEvent.actionsDrag.Transition.forEach(e=>{e.stop(),null!==e.object.currentState&&e.object.changeSelectedState(null,{scene:this.eventContext.page.scene,shared:this.eventContext.sharedAssets})}),this.activeEvent.actionsDrag.Animation.forEach(e=>{e.stop()}))},500),this.updateDragItem(t),t.obj.dispatchEvent({type:"requestRender"})}},this.onPointerUp=e=>{if(this.activeEvent&&this.activeEvent.activeDragItem){"hand"===this.activeEvent.data.cursor&&this.setCursor("grab");let e=this.activeEvent.activeDragItem.obj.data.physics?.rigidBody==="dynamic";!1===this.activeEvent.activeDragItem.snapped&&this.activeEvent.data.drop&&this.activeEvent.data.resetOnSnapFail&&(!1===this.eventManager.controlsManager.usePhysics||!e)&&(this.activeEvent.activeDragItem.reset=this.activeEvent.data.resetOnSnapFail,this.activeEvent.activeDragItem.paused=!1,this.activeEvent.activeDragItem.currentDampingFactor=this.activeEvent.resetDampingFactor),this.eventManager.controlsManager.usePhysics&&e&&(this.eventManager.controlsManager.sharedGameControlGlobals.entitiesWithTransformAnim.pop(),this.activeEvent.activeDragItem.obj.rigidBody.setBodyType(0,!0),this.activeEvent.activeDragItem.paused=!0),!0===this.activeEvent.wasDragEventTriggered&&(this.activeEvent.wasDragEventTriggered=!1,this.activeEvent.actionsDrag.Transition.forEach(e=>{e.stop(),null!==e.object.currentState&&e.object.changeSelectedState(null,{scene:this.eventContext.page.scene,shared:this.eventContext.sharedAssets})}),this.activeEvent.actionsDrag.Animation.forEach(e=>{e.stop()}),this.activeEvent.actionsDrag.Audio.forEach(e=>{e.dispatchGameControl("stop")}),this.activeEvent.actionsDrag.Particles.forEach(e=>{e.dispatchGameControl("stop")}),this.activeEvent.actionsDrop.SetVariable.forEach(e=>e.checkConditions()),this.activeEvent.actionsDrop.SetVariable.forEach(e=>e.dispatch()),this.activeEvent.actionsDrop.DynamicVariablePlay.forEach(e=>e.dispatch()),this.activeEvent.actionsDrop.ClearLocalStorage.forEach(e=>e.dispatch()),this.activeEvent.actionsDrop.UserAPI.forEach(e=>e.dispatch())),this.eventManager.controlsManager.orbitControls&&(this.eventManager.controlsManager.orbitControls.enabled=!0)}}}connect(){let e={};if(this.eventContext.page.traverseEntity(t=>{t.component&&(e[t.component.uuid]?e[t.component.uuid].push(t.uuid):e[t.component.uuid]=[t.uuid])}),this.eventContext.page.traverseEntity(t=>{t.data?.events.filter(e=>"DragDrop"===e.data.type&&!e.data.disabled).forEach(i=>{this.events.push(new LU(t,i.id,i.data,this.eventContext.page,this.eventContext.sharedAssets,this.eventManager,e))})}),!this.events.length)return;this.domEventsNeeded.clear(),this.domEventsNeeded.add("pointerdown");let t=this.eventContext.domElement;t.addEventListener("pointerdown",this.onPointerDown),t.addEventListener("pointermove",this.onPointerMove),t.addEventListener("pointerup",this.onPointerUp),this.domEventsNeeded.add("pointermove")}disconnect(){if(!this.events.length)return;this.domEventsNeeded.clear();let e=this.eventContext.domElement;e.removeEventListener("pointerdown",this.onPointerDown),e.removeEventListener("pointermove",this.onPointerMove),e.removeEventListener("pointerup",this.onPointerUp),this.events.forEach(e=>e.dispose())}setCursor(e){this.eventContext.domElement.style.cursor=e}onAnimationFrameDamping(){for(let e of this.events)for(let t of e.dragItems)t.paused||this.updateDragItem(t,!0)}calcPlaneIntersectPos(e,t,i,r){let{getCamera:a,raycaster:o}=this.eventContext;a().getWorldDirection(LM),LM.negate();let h=LO.identity();switch("parent"===r?LR.multiplyMatrices(e.parent.matrixWorld,e.hiddenMatrix).decompose(LT,h,LP):"local"===r&&e.matrixWorld.decompose(LT,h,LP),i){case"x":LT.set(1,0,0).applyQuaternion(h),LB.copy(LM).cross(LT),Lz.copy(LT).cross(LB);break;case"y":LT.set(0,1,0).applyQuaternion(h),LB.copy(LM).cross(LT),Lz.copy(LT).cross(LB);break;case"z":LT.set(0,0,1).applyQuaternion(h),LB.copy(LM).cross(LT),Lz.copy(LT).cross(LB);break;case"xy":Lz.set(0,0,1).applyQuaternion(h);break;case"yz":Lz.set(1,0,0).applyQuaternion(h);break;case"xz":Lz.set(0,1,0).applyQuaternion(h);break;case"adaptive":LM.angleTo(LP.set(0,1,0))>Math.PI/6?(LT.crossVectors(LP.set(0,1,0),LM),Lz.crossVectors(LT,LP)):Lz.set(0,1,0);break;default:Lz.copy(LM)}LE.setFromMatrixPosition(e.matrixWorld);let c=e.userData.lockedPlane?e.userData.worldPosition0:LE;if(LC.setFromNormalAndCoplanarPoint(Lz,c),o.ray.intersectPlane(LC,t)&&("x"===i||"y"===i||"z"===i)){let e=LP.subVectors(t,c).dot(LT);t.copy(c).addScaledVector(LT,e)}}updateDragItem(e,t=!1){LE.setFromMatrixPosition(e.obj.matrixWorld),"current"===e.reset?LA.subVectors(e.fromPosition,LE).divideScalar(e.currentDampingFactor):"original"===e.reset?(LA.subVectors(e.obj.userData.worldPosition0,LE).divideScalar(e.currentDampingFactor),e.fromPosition.copy(e.obj.userData.worldPosition0),e.pointStart.copy(e.fromPosition),e.pointEnd.copy(e.pointStart)):LA.subVectors(e.pointEnd,e.pointStart).add(e.fromPosition).sub(LE).divideScalar(e.currentDampingFactor),e.paused=!(e.currentDampingFactor>1)||.01>LA.length(),(this.activeEvent&&1===this.activeEvent.data.dampingFactor||t)&&LN(e,LA.add(LE),this.activeEvent?.data.drop&&this.activeEvent?.data.autoOrient?e.orientationMatrix:null),e.obj.dispatchEvent({type:"beginEvent",eventName:"DragDrop"}),this.eventManager.requestRender()}},LV=new ib,Lj=new ib,LG=new ib,LH=new ib,LW=new so,Lq={type:"requestRender"},LX=(to=new ib,tl=new ib,(e,t,i)=>i>0?(to.subVectors(e,t),to.length()<=i?e:tl.copy(t).add(to.normalize().multiplyScalar(i))):t),LY=(th=new iZ,(e,t)=>{e.position.copy(t),null!==e.parent&&(th.copy(e.parent.matrixWorld).invert(),e.position.applyMatrix4(th)),th.copy(e.hiddenMatrix).invert(),e.position.applyMatrix4(th),e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD()),e instanceof Ai&&C$(e.parent)&&e.invali
8106dateDownstreamBooleanData(!0)}),LQ=class{constructor(e,t,i,r,a,o){this.data=e,this.id=t,this.object=i,this.paused=!1,this.currentDampingFactor=1,this.snapComplete=!1,this.isReset=!1,this.worldPosition0=new ib,this.timeoutId=null,this.delayFinished=!0,this.wasOutside=!1,this.data={...m4.defaultData,...e,...void 0===e.resetOnPointerLeave&&{resetOnPointerLeave:!1}},void 0===e.target||"cursor"===e.target||(this.target=r.find(e.target)),this.data.dampingFactor&&(this.currentDampingFactor=this.data.dampingFactor),this.resetDampingFactor=80/this.data.resetSpeed+1,this.object.getWorldPosition(this.worldPosition0),this.actions=RA(e,e.actions,r,a,o,i)}},LZ=class extends Lc{constructor(e,t){super(e),this.eventManager=t,this.events=[],this.pairOfEventListeners=[],this.onMouseMove=e=>{if(!(pp.length>1))for(let t of(this.eventContext.updateRaycaster(e),this.events))void 0===t.target&&this.updateSingleEvent(t)},this.onMouseEnter=e=>{for(let e of this.events)void 0===e.target&&(e.isReset=!1,e.currentDampingFactor=e.data.dampingFactor)},this.onMouseLeave=e=>{for(let e of this.events)void 0===e.target&&(e.data.resetOnPointerLeave&&(e.isReset=!0,e.currentDampingFactor=e.resetDampingFactor),this.updateSingleEvent(e))},this.onTargetChange=e=>()=>{this.updateSingleEvent(e)}}connect(){let{page:e}=this.eventContext;if(e.traverseEntity(t=>{let i=t.data?.events.find(e=>"Follow"===e.data.type&&!e.data.disabled);i&&(!e.data.globalPhysics.usePhysics||t.dataPatched.physics?.rigidBody!=="dynamic")&&this.events.push(new LQ(i.data,i.id,t,e,this.eventContext.sharedAssets,this.eventManager))}),!this.events.length)return;let{domElement:t,eventElement:i}=this.eventContext;for(let e of(this.domEventsNeeded.clear(),po&&(this.domEventsNeeded.add("pointerdown"),t.addEventListener("pointerdown",this.onMouseMove)),this.domEventsNeeded.add("pointermove"),i.addEventListener("pointermove",this.onMouseMove),this.eventContext.useWindowEvents||(t.addEventListener("pointerenter",this.onMouseEnter),t.addEventListener("pointerleave",this.onMouseLeave)),this.events))if(void 0!==e.target){let t=e.target,i=this.onTargetChange(e);this.pairOfEventListeners.push([t,i]),t.addEventListener("requestRender",i)}}disconnect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;for(let[i,r]of(this.domEventsNeeded.clear(),po&&e.removeEventListener("pointerdown",this.onMouseMove),t.removeEventListener("pointermove",this.onMouseMove),e.removeEventListener("pointerenter",this.onMouseEnter),e.removeEventListener("pointerleave",this.onMouseLeave),this.pairOfEventListeners))i.removeEventListener("requestRender",r);for(let e of this.events)e.paused=!0,e.isReset=!1,RM(e.actions)}onAnimationFrameDamping(){for(let e of this.events)e.paused||this.updateSingleEvent(e,!0)}updateSingleEvent(e,t=!1){this.events.forEach(e=>{e.actions.Create.forEach(e=>{e.dispatchThrottled()})});let{plane:i,limitDistance:r,limitDistanceEnabled:a}=e.data;if(e.object.getWorldPosition(LG),e.isReset)LH.copy(e.worldPosition0);else if(e.target)e.target.getWorldPosition(LH);else{let{getCamera:e,raycaster:t}=this.eventContext;if("custom"===i?(e().getWorldDirection(Lj),Lj.negate(),LV.copy(Lj)):"xy"===i?LV.set(0,0,1):"xz"===i?LV.set(0,1,0):"yz"===i&&LV.set(1,0,0),LW.setFromNormalAndCoplanarPoint(LV,LG),!t.ray.intersectPlane(LW,LH))return}if(!e.isReset){if(LH.distanceTo(e.worldPosition0)>r&&a&&e.target){if(e.snapComplete=!1,e.data.snapDelay&&(e.delayFinished=!1,"u">typeof window&&null!==e.timeoutId&&(window.clearTimeout(e.timeoutId),e.timeoutId=null)),e.wasOutside=!0,!e.data.resetAfterDistanceLimit)return;LH.copy(e.worldPosition0),e.currentDampingFactor=e.resetDampingFactor}else if(e.wasOutside&&(e.data.snapDelay&&"u">typeof window&&(e.timeoutId=window.setTimeout(()=>{e.delayFinished=!0,e.paused=!1,this.updateSingleEvent(e)},1e3*e.data.snapDelay)),e.currentDampingFactor=e.data.dampingFactor,e.wasOutside=!1),!1===e.delayFinished)return}!1===e.data.enabledTranslation[0]&&(LH.x=LG.x),!1===e.data.enabledTranslation[1]&&(LH.y=LG.y),!1===e.data.enabledTranslation[2]&&(LH.z=LG.z);
8106let o=LX(LG,LH,e.wasOutside?0:e.data.maxDelta);if(e.currentDampingFactor>1){let i=LV.subVectors(o,LG).divideScalar(e.currentDampingFactor);LG.add(i),t&&LY(e.object,LG),e.paused=.01>i.length()}else LY(e.object,o),e.paused=!0;e.object?.dispatchEvent({type:"beginEvent",eventName:"Follow"}),e.object.dispatchEvent(Lq)}},LK=new ib,LJ=new ib,L$=new iZ,L0=new ix,L1=new ix,L2=new ib,L3=new ib,L4=new ib,L5=new ib,L6=new so,L8={type:"requestRender"},L9={type:"changeRotation"},L7=(tc=new iZ,function(e,t){null!==e.parent?tc.multiplyMatrices(e.parent.matrixWorld,e.hiddenMatrix):tc.copy(e.hiddenMatrix),t.premultiply(Lt(tc).invert()),e.rotation.setFromRotationMatrix(t),e.updateMatrix(),e instanceof Ai&&C$(e.parent)&&e.invalidateDownstreamBooleanData(!0)}),Be=class{constructor(e,t,i,r){this.id=t,this.object=i,this.paused=!1,this.currentDampingFactor=1,this.isReset=!1,this.worldQuaternion0=new ix,this.timeoutId=null,this.delayFinished=!0,this.wasOutside=!1,this.data={...m5.defaultData,...e,...void 0===e.resetOnPointerLeave&&{resetOnPointerLeave:!1}},void 0===e.target||"cursor"===e.target||(this.target=r.find(e.target)),this.data.dampingFactor&&(this.currentDampingFactor=this.data.dampingFactor),this.object.getWorldQuaternion(this.worldQuaternion0),this.resetDampingFactor=80/this.data.resetSpeed+1}},Bt=class extends Lc{constructor(){super(...arguments),this.events=[],this.pairOfEventListeners=[],this.pairOfUserEventListeners=[],this.onMouseMove=e=>{if(!(pp.length>1))for(let t of(this._lastMouseEvent=e,this.eventContext.updateRaycaster(e),this.events))void 0===t.target&&this.updateSingleEvent(t)},this.onMouseEnter=e=>{for(let e of this.events)void 0===e.target&&(e.isReset=!1,e.currentDampingFactor=e.data.dampingFactor)},this.onMouseLeave=e=>{for(let e of this.events)void 0===e.target&&(e.data.resetOnPointerLeave&&(e.isReset=!0,e.currentDampingFactor=e.resetDampingFactor),this.updateSingleEvent(e))},this.onScroll=e=>{if(this._lastMouseEvent){let e=new PointerEvent("pointermove",{clientX:this._lastMouseEvent.clientX,clientY:this._lastMouseEvent.clientY,bubbles:!0,cancelable:!0,view:window});this.eventContext.eventElement.dispatchEvent(e)}},this.onTargetChange=e=>()=>{this.updateSingleEvent(e)},this.createUserEventListener=e=>({eventName:t,target:i})=>{if(!t||!i)return;let r=Lp(t);r&&"LookAt"===r&&this.updateSingleEvent(e)}}connect(){let{page:e}=this.eventContext;if(e.traverseEntity(t=>{let i=t.data?.events.find(e=>"LookAt"===e.data.type&&!e.data.disabled);i&&(!e.data.globalPhysics.usePhysics||t.dataPatched.physics?.rigidBody!=="dynamic")&&this.events.push(new Be(i.data,i.id,t,e))}),!this.events.length)return;let{domElement:t,eventElement:i}=this.eventContext;for(let e of(this.domEventsNeeded.clear(),po&&(this.domEventsNeeded.add("pointerdown"),t.addEventListener("pointerdown",this.onMouseMove)),this.domEventsNeeded.add("pointermove"),i.addEventListener("pointermove",this.onMouseMove),this.eventContext.useWindowEvents?i.addEventListener("scroll",this.onScroll):(t.addEventListener("pointerenter",this.onMouseEnter),t.addEventListener("pointerleave",this.onMouseLeave)),this.events)){if(void 0!==e.target){let t=this.onTargetChange(e),i=e.target;this.pairOfEventListeners.push([i,t]),i.addEventListener("requestRender",t)}let t=this.createUserEventListener(e),i=e.object;this.pairOfUserEventListeners.push([i,t]),i.addEventListener("userEvent",t)}}disconnect(){if(!this.events.length)return;let{domElement:e,eventElement:t}=this.eventContext;for(let[i,r]of(this.domEventsNeeded.clear(),po&&e.removeEventListener("pointerdown",this.onMouseMove),t.removeEventListener("pointermove",this.onMouseMove),e.removeEventListener("pointerenter",this.onMouseEnter),e.removeEventListener("pointerleave",this.onMouseLeave),t.removeEventListener("scroll",this.onScroll),this.pairOfEventListeners))i.removeEventListener("requestRender",r);for(let[e,t]of this.pairOfUserEventListeners)e.removeEventListener("userEvent",t);for(let e of this.events)e.paused=!0,e.isReset=!1}onAnimationFrameDamping(){for(let e of this.events)e.paused||this.updateSingleEvent(e)}updateSingleEvent(e){let{tilt:t,axis:i,distance:r,plane:a,limitDistance:o,enabledRotation:h,limitDistanceEnabled:c}=e.data,{getCamera:d,raycaster:u}=this.eventContext,{object:p,target:f}=e;if(p.getWorldPosition(L2),!e.isReset){if(e.target)e.target.getWorldPosition(L3);else{if("custom"===a?(d().getWorldDirection(LJ),LJ.negate(),L6.setFromNormalAndCoplanarPoint(LJ,L2)):("xy"===a?LK.set(0,0,1):"xz"===a?LK.set(0,1,0):"yz"===a&&LK.set(1,0,0),L6.setFromNormalAndCoplanarPoint(LK,L2)),!u.ray.intersectPlane(L6,L3))return;r>0&&("custom"===a||void 0===a)&&L3.addScaledVector(LJ,r)}}if(e.isReset||(f?"target"===t?L4.copy(f.up).applyMatrix4(L$.extractRotation(f.matrixWorld)).normalize():h.some(e=>!1===e)?("x"===i?(L5.set(0,0,1),!1===h[2]&&L5.set(0,1,0)):"y"===i?(L5.set(1,0,0),!1===h[0]&&L5.set(0,0,1)):(L5.set(0,1,0),!1===h[1]&&L5.set(1,0,0)),L4.copy(L5).applyQuaternion(e.worldQuaternion0).normalize()):L4.set(0,1,0):"custom"===a?L4.set(0,1,0):L4.copy(LK)),e.
vendor: 8,120 bytes, line 8106
8106isReset)L1.copy(e.worldQuaternion0);else if(L2.distanceTo(L3)>o&&c&&f){if(e.data.snapDelay&&(e.delayFinished=!1,"u">typeof window&&null!==e.timeoutId&&(window.clearTimeout(e.timeoutId),e.timeoutId=null)),e.wasOutside=!0,!e.data.resetAfterDistanceLimit)return;L1.copy(e.worldQuaternion0),e.currentDampingFactor=e.resetDampingFactor}else{let r;if(e.wasOutside&&(e.data.snapDelay&&"u">typeof window&&(e.timeoutId=window.setTimeout(()=>{e.delayFinished=!0,e.paused=!1,this.updateSingleEvent(e)},1e3*e.data.snapDelay)),e.currentDampingFactor=e.data.dampingFactor,e.wasOutside=!1),!1===e.delayFinished)return;r=L$.elements,Bs.subVectors(L3,L2),0===Bs.lengthSq()&&(Bs.z=1),Bs.normalize(),Br.crossVectors(L4,Bs),0===Br.lengthSq()&&(1===Math.abs(L4.z)?Bs.x+=1e-4:Bs.z+=1e-4,Bs.normalize(),Br.crossVectors(L4,Bs)),Br.normalize(),Bi.crossVectors(Bs,Br),"x"===i?1===L5.z?[Br,Bi,Bs]=[Bs,Br,Bi]:(Br.negate(),[Br,Bs]=[Bs,Br]):"y"===i?1===L5.x?[Br,Bi,Bs]=[Bi,Bs,Br]:(Br.negate(),[Bi,Bs]=[Bs,Bi]):1===L5.x&&(Br.negate(),[Br,Bi]=[Bi,Br]),r[0]=Br.x,r[4]=Bi.x,r[8]=Bs.x,r[1]=Br.y,r[5]=Bi.y,r[9]=Bs.y,r[2]=Br.z,r[6]=Bi.z,r[10]=Bs.z,L1.setFromRotationMatrix(L$),L0.setFromUnitVectors(L5.applyQuaternion(L1),L4),h.some(e=>!1===e)&&"target"!==t&&L1.premultiply(L0).normalize()}e.currentDampingFactor>1?(p.updateWorldMatrix(!0,!1),L0.setFromRotationMatrix(Lt(p.matrixWorld)),L0.slerp(L1,1/e.currentDampingFactor),L7(p,L$.makeRotationFromQuaternion(L0)),e.paused=8*(1-L0.dot(L1))<1e-6):(L7(p,L$.makeRotationFromQuaternion(L1)),e.paused=!0),e.object?.dispatchEvent({type:"beginEvent",eventName:"LookAt"}),p.dispatchEvent(L8),p.dispatchEvent(L9)}},Bi=new ib,Br=new ib,Bs=new ib,Ba=class{constructor(e,t,i,r,a,o){this.id=e,this.data=t,this.object=i,this.entered=!1,this.actions=RA(t,t.actions,r,a,o,i)}disconnect(){RM(this.actions)}dispatchEnter(){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.entered||(this.entered=!0,this.actions.TimelineAnimation.forEach(e=>e.playFromCurrent()),this.actions.Transition.forEach(e=>e.playFromCurrent()),this.actions.Animation.forEach(e=>e.play()),this.actions.Create.forEach(e=>e.dispatchStart()),this.actions.Particles.forEach(e=>e.dispatchBasic()),this.actions.Destroy.forEach(e=>e.dispatch()),this.actions.SwitchCamera.forEach(e=>e.playFromCurrent()),this.actions.SceneTransition.forEach(e=>e.dispatch()),this.actions.SetVariable.forEach(e=>e.checkConditions()),this.actions.SetVariable.forEach(e=>e.dispatch()),this.actions.DynamicVariablePlay.forEach(e=>e.dispatch()),this.actions.ClearLocalStorage.forEach(e=>e.dispatch()),this.actions.UserAPI.forEach(e=>e.dispatch()))}dispatchLeave(){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.entered&&(this.entered=!1,this.actions.TimelineAnimation.forEach(e=>e.reverseFromCurrent()),this.actions.Create.forEach(e=>e.dispatchStop()),this.actions.Transition.forEach(e=>e.reverseFromCurrent()),this.actions.Particles.forEach(e=>e.reverseFromCurrent()),this.actions.SwitchCamera.forEach(e=>e.reverseFromCurrent()))}dispatchUserEvent(e){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),e?(this.actions.Transition.forEach(e=>e.reverseFromCurrent()),this.actions.Particles.forEach(e=>e.reverseFromCurrent()),this.actions.Animation.forEach(e=>e.reverseFromCurrent()),this.actions.TimelineAnimation.forEach(e=>e.reverseFromCurrent()),this.actions.SwitchCamera.forEach(e=>e.reverseFromCurrent())):(this.actions.Transition.forEach(e=>e.playFromCurrent()),this.actions.Animation.forEach(e=>e.playFromCurrent()),this.actions.TimelineAnimation.forEach(e=>e.playFromCurrent()),this.actions.Create.forEach(e=>e.dispatch()),this.actions.Particles.forEach(e=>e.dispatchBasic()),this.actions.Destroy.forEach(e=>e.dispatch()),this.actions.SwitchCamera.forEach(e=>e.playFromCurrent())),this.actions.SceneTransition.forEach(e=>e.dispatch()),this.actions.SetVariable.forEach(e=>e.checkConditions()),this.actions.SetVariable.forEach(e=>e.dispatch()),this.actions.DynamicVariablePlay.forEach(e=>e.dispatch()),this.actions.ClearLocalStorage.forEach(e=>e.dispatch()),this.actions.UserAPI.forEach(e=>e.dispatch())}},Bn=class extends Lc{constructor(e,t){super(e),this.eventManager=t,this.eventsPerObjects={},this.objects=[],this.objects2D=[],this._prevObjects=[],this.onMouseDown=e=>{pp.length>1||(this.eventContext.updateRaycaster(e),this.handleMouseHoverEvent())},this.onMouseUp=e=>{pp.length>1||this.handleMouseHoverEvent(!0)},this.onMouseMove=e=>{pp.length>1||(this.eventContext.updateRaycaster(e),this.handleMouseHoverEvent())},this.onUserEvent=({eventName:e,target:t,reverse:i})=>{if(!e||!t)return;let r=Lp(e);r&&"MouseHover"===r&&(t.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[t.uuid]?.forEach(e=>e.dispatchUserEvent(i)))}}connect(){let{page:e,sharedAssets:t}=this.eventContext,i=(i,r)=>{if(!(!i.visible||!i.data?.events.length)){for(let{id:r,data:a}of i.data.events)if(!a.disabled&&"MouseHover"===a.type)try{let o=new Ba(r,a,i,e,t,this.eventManager);this.eventsPerObjects[i.uuid]?this.eventsPerObjects[i.uuid].push(o):this.eventsPerObjects[i.uuid]=[o]}catch(e){}this.eventsPerObjects[i.uuid]?.length&&this.objects.push(i instanceof Du?r:i)}};if(e.traverseEntity(e=>{(e instanceof Os||e instanceof D5)&&e.frame?.traverse(t=>{i(t,e)}),i(e)}),!this.objects.length)return;let{domElement:r}=this.eventContext;this.domEventsNeeded.clear(),po&&(this.domEventsNeeded.add("pointerdown"),r.addEventListener("pointerdown",this.onMouseDown),this.domEventsNeeded.add("pointerup"),r.addEventListener("pointerup",this.onMouseUp)),this.domEventsNeeded.add("pointermove"),r.addEventListener("pointermove",this.onMouseMove),this.objects.forEach(e=>{e.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if(!this.objects.length)return;let{domElement:e}=this.eventContext;this.domEventsNeeded.clear(),po&&(e.removeEventListener("pointerdown",this.onMouseDown),e.removeEventListener("pointerup",this.onMouseUp)),e.removeEventListener("pointermove",this.onMouseMove),Object.values(this.eventsPerObjects).forEach(e=>{e.forEach(e=>{e.disconnect()})}),this.objects.forEach(e=>{e.removeEventListener("userEvent",this.onUserEvent)})}handleMouseHoverEvent(e=!1){let t=[];if(!e){let{stopRaycast:e,raycaster:i,page:r,pointerScreen:a}=this.eventContext,o=!1;if(r.uiCanvas&&(o=Lo(r,[a.x,a.y],Object.keys(this.eventsPerObjects),e=>{t.push(e)})),e&&!o){let e=La(i,r,this.objects);t=Ln(e),e.forEach(e=>{e.object instanceof Os&&Lo(e.object,[e?.uv?.x??0,e?.uv?.y??0],Object.keys(this.eventsPerObjects),e=>{t.push(e)})})}else this.objects.forEach(e=>{let r=Ll(i,e);r&&(t.push(e),e instanceof Os&&Lo(e,[r?.uv?.x??0,r?.uv?.y??0],Object.keys(this.eventsPerObjects),e=>{t.push(e)}))})}this._prevObjects.length&&this._prevObjects.forEach(e=>{t.includes(e)||(e.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[e.uuid]?.forEach(e=>e.dispatchLeave()))}),t.length&&t.forEach(e=>{e.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[e.uuid]?.forEach(e=>e.dispatchEnter())}),this._prevObjects=t}},Bo=class{constructor(e,t,i,r,a,o){this.id=e,this.data=t,this.object=i,this.scrollCounter=0,this.actions=RA(t,t.actions,r,a,o,i)}connect(){this.scrollCounter=0}disconnect(){RM(this.actions)}dispatch(e){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())});let t=e>0?1:-1;this.scrollCounter+=t,this.scrollCounter=Math.min(Math.max(this.scrollCounter,0),this.data.steps);let i=this.scrollCounter/this.data.steps;this.actions.Transition.forEach(e=>e.seek(i)),this.actions.Animation.forEach(e=>e.seek(t)),this.actions.TimelineAnimation.forEach(e=>e.seek(i)),this.actions.Create.forEach(e=>e.dispatchThrottled()),this.actions.SetVariable.forEach(e=>e.checkConditions()),this.actions.SetVariable.forEach(e=>e.dispatch()),this.actions.DynamicVariablePlay.forEach(e=>e.dispatch()),this.actions.ClearLocalStorage.forEach(e=>
8106e.dispatch()),this.actions.UserAPI.forEach(e=>e.dispatch())}dispatchUserEvent(e){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),e?(this.actions.Transition.forEach(e=>e.reverseFromCurrent()),this.actions.Animation.forEach(e=>e.reverseFromCurrent()),this.actions.TimelineAnimation.forEach(e=>e.reverseFromCurrent())):(this.actions.Transition.forEach(e=>{e.playFromCurrent()}),this.actions.Animation.forEach(e=>{e.playFromCurrent()}),this.actions.TimelineAnimation.forEach(e=>{e.playFromCurrent()})),this.actions.Create.forEach(e=>e.dispatchThrottled()),this.actions.SetVariable.forEach(e=>e.checkConditions()),this.actions.SetVariable.forEach(e=>e.dispatch()),this.actions.DynamicVariablePlay.forEach(e=>e.dispatch()),this.actions.ClearLocalStorage.forEach(e=>e.dispatch()),this.actions.UserAPI.forEach(e=>e.dispatch())}},Bl=class{constructor(e,t,i,r,a,o,h){this.id=e,this.data=t,this.object=i,this.domElement=o,this.eventManager=h,this.scrollStart=0,this.scrollEnd=0,this.actions=RA(t,t.actions,r,a,h,i)}getStickyParentElement(){let e=this.domElement;for(;e;){if("sticky"===window.getComputedStyle(e).position)return e;e=e.parentElement}return null}computeScrollBounds(){let e=this.getStickyParentElement(),t=e?.parentElement,i=this.domElement.getBoundingClientRect(),r={top:i.top,bottom:i.bottom,left:i.left,right:i.right,width:i.width,height:i.height};if(t){let a=t.getBoundingClientRect(),o=window.getComputedStyle(e),h=parseFloat(o.marginTop)+parseFloat(o.marginBottom),c=parseFloat(o.top),d=parseFloat(o.bottom),u=a.height-h;if(isNaN(c)){if(!isNaN(d)){let e=document.body.clientHeight??window.innerHeight,t=window.innerWidth-(document.documentElement.clientWidth??window.innerWidth);i.bottom===e-d?(r.top+=a.top-i.height+d+t,r.bottom+=a.top-i.height+d+t):i.bottom<e-d&&(r.top-=u-i.height,r.bottom-=u-i.height)}}else i.top===c?(r.top+=a.top-c,r.bottom+=a.top-c):i.top<0&&(r.top-=u-i.height,r.bottom-=u-i.height)}let a=document.body,o=document.documentElement,h=window.pageYOffset||o.scrollTop||a.scrollTop,c=o.clientTop||a.clientTop||0,d=Math.round(r.top+h-c);if("enter"===this.data.startFrom){let e=window.innerHeight,t=r.height,i=this.data.enterAnchor;this.scrollStart=d-("top"===i?e:"bottom"===i?e-t:e-.5*t)}else this.scrollStart=0;this.scrollStart+=this.data.startOffset??0,this.scrollEnd=this.scrollStart+(this.data.endAfter??400),this.box=r,this.computeScroll({x:window.scrollX,y:window.scrollY})}connect(){this.computeScrollBounds()}disconnect(){RM(this.actions)}handleResize(){this.computeScrollBounds()}get isInvalidBox(){return void 0===this.box||0===this.box.width&&0===this.box.height&&0===this.box.top&&0===this.box.bottom}computeScroll({x:e,y:t}){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())});let i=this.scrollEnd-this.scrollStart,r=Math.min(1,Math.max(0,(t-this.scrollStart)/i));this.actions.Transition.forEach(e=>e.seek(r)),this.actions.Animation.forEach(e=>e.seek(r)),this.actions.TimelineAnimation.forEach(e=>e.seek(r)),this.actions.Create.forEach(e=>e.dispatchThrottled()),this.actions.SetVariable.forEach(e=>e.checkConditions()),this.actions.SetVariable.forEach(e=>e.dispatch()),this.actions.DynamicVariablePlay.forEach(e=>e.dispatch()),this.actions.ClearLocalStorage.forEach(e=>e.dispatch()),this.actions.UserAPI.forEach(e=>e.dispatch())}dispatch(e){this.isInvalidBox&&this.computeScrollBounds(),this.computeScroll(e)}dispatchUserEvent(e){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),e?(this.actions.Transition.forEach(e=>e.reverseFromCurrent()),this.actions.Animation.forEach(e=>e.reverseFromCurrent()),this.actions.TimelineAnimation.forEach(e=>e.reverseFromCurrent())):(this.actions.Transition.forEach(e=>{e.playFromCurrent()}),this.actions.Animation.forEach(e=>{e.playFromCurrent()}),this.actions.TimelineAnimation.forEach(e=>{e.playFromCurrent()})),this.actions.Create.forEach(e=>
vendor: 4,022 bytes, line 8106
8106e.dispatchThrottled()),this.actions.SetVariable.forEach(e=>e.checkConditions()),this.actions.SetVariable.forEach(e=>e.dispatch()),this.actions.DynamicVariablePlay.forEach(e=>e.dispatch()),this.actions.ClearLocalStorage.forEach(e=>e.dispatch()),this.actions.UserAPI.forEach(e=>e.dispatch())}},Bh=class extends Lc{constructor(e,t){super(e),this.managers=t,this.wheelEventsPerObject=new Map,this.scrollEventsPerObject=new Map,this.isInview=!0,this.handleResize=()=>{[...this.scrollEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(e=>e.handleResize())})},this.onScroll=e=>{if(!this.isInview)return;let t={y:window.scrollY,x:window.scrollX};[...this.scrollEventsPerObject.entries()].forEach(([e,i])=>{e.dispatchEvent({type:"beginEvent",eventName:"Scroll",scroll:t}),i.forEach(e=>e.dispatch(t))})},this.onWheel=e=>{!this.isInview||e.ctrlKey||[...this.wheelEventsPerObject.entries()].forEach(([t,i])=>{t.dispatchEvent({type:"beginEvent",eventName:"Scroll",deltaY:e.deltaY}),i.forEach(t=>t.dispatch(e.deltaY))})},this.onUserEvent=({eventName:e,target:t,reverse:i})=>{if(!e||!t)return;let r=Lp(e);r&&"Scroll"===r&&(t.dispatchEvent({type:"beginEvent",eventName:"Scroll"}),this.wheelEventsPerObject.get(t)?.forEach(e=>{e.dispatchUserEvent(i)}))}}connect(){let{page:e,sharedAssets:t,domElement:i,isExport:r}=this.eventContext,a=a=>{if(a.data?.events.length){for(let{id:o,data:h}of a.data.events)if(!h.disabled&&"Scroll"===h.type){if("load"!==h.trigger&&r){let r=new Bl(o,h,a,e,t,i,this.managers);this.scrollEventsPerObject.has(a)?this.scrollEventsPerObject.get(a)?.push(r):this.scrollEventsPerObject.set(a,[r])}else{let i=new Bo(o,h,a,e,t,this.managers);this.wheelEventsPerObject.has(a)?this.wheelEventsPerObject.get(a)?.push(i):this.wheelEventsPerObject.set(a,[i])}}}};e.traverseEntity(e=>{(e instanceof Os||e instanceof D5)&&e.frame?.traverse(e=>{a(e)}),a(e)}),this.intersectionObserver=new IntersectionObserver(e=>{let t=e[0];t&&(this.isInview=t.isIntersecting)},{root:null}),this.intersectionObserver.observe(this.eventContext.domElement),[...this.wheelEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(e=>e.connect()),e.addEventListener("userEvent",this.onUserEvent)}),[...this.scrollEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(e=>e.connect()),e.addEventListener("userEvent",this.onUserEvent)}),[...this.wheelEventsPerObject.values()].some(e=>e.length)&&(this.domEventsNeeded.add("wheel"),window.addEventListener("wheel",this.onWheel)),[...this.scrollEventsPerObject.values()].some(e=>e.length)&&(this.domEventsNeeded.add("scroll"),window.addEventListener("scroll",this.onScroll),window.addEventListener("resize",this.handleResize))}disconnect(){window.removeEventListener("wheel",this.onWheel),window.removeEventListener("scroll",this.onScroll),window.removeEventListener("resize",this.handleResize),this.intersectionObserver.unobserve(this.eventContext.domElement),this.domEventsNeeded.clear(),[...this.wheelEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(e=>e.disconnect()),e.removeEventListener("userEvent",this.onUserEvent)}),[...this.scrollEventsPerObject.entries()].forEach(([e,t])=>{t.forEach(e=>e.disconnect()),e.removeEventListener("userEvent",this.onUserEvent)})}},Bc=class{constructor(e,t,i,r,a,o){this.id=e,this.data=t,this.object=i,this.actions=RA(t,t.actions,r,a,o,i)}disconnect(){RM(this.actions)}dispatch(){this.actions.Transition.forEach(e=>{e.play()}),this.actions.Animation.forEach(e=>{e.play()}),this.actions.TimelineAnimation.forEach(e=>{e.play()}),this.actions.SwitchCamera.forEach(e=>{e.play()}),this.actions.SceneTransition.forEach(e=>{e.dispatch()}),this.actions.Reset.forEach(e=>e.dispatch()),this.actions.SetVariable.forEach(e=>e.checkConditions()),this.actions.SetVariable.forEach(e=>e.dispatch()),this.actions.DynamicVariablePlay.forEach(e=>e.dispatch()),this.actions.ClearLocalStorage.forEach(e=>e.dispatch()),this.actions.UserAPI.forEach(e=>e.dispatch()),this.actions.Create.forEach(e=>{e.dispatchFromStart()}),this.actions.Destroy.forEach(e=>{e.dispatchFromStart()})}
8106dispatchAfter(e){this.actions.Audio.forEach(t=>{(t.interaction.data.triggerAfter??"any")===e&&(t.interaction instanceof Ij?t.interaction.audioPlayer.play():t.interaction instanceof IG&&t.interaction.dispatch())}),this.actions.Video.forEach(t=>{let i=t.interaction.data.triggerAfter??"autoplay";i===e&&(t.interaction instanceof RT?t.interaction.play("autoplay"===i):t.interaction instanceof RP&&t.interaction.dispatch())}),this.actions.Particles.forEach(t=>{(t.data.triggerAfter??"any")===e&&t.dispatchBasic()})}async seekVideos(e){let t=[];this.actions.Video.forEach(i=>{(i.interaction.data.triggerAfter??"autoplay")==="autoplay"&&i.interaction instanceof RT&&t.push(i.interaction.seek(e))}),await Promise.all(t)}pauseVideos(){this.actions.Video.forEach(e=>{e.interaction instanceof RT&&e.interaction.pause()})}dispatchUserEvent(e){this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),e?(this.actions.Transition.forEach(e=>e.reverseFromCurrent()),this.actions.Animation.forEach(e=>e.reverseFromCurrent()),this.actions.TimelineAnimation.forEach(e=>e.reverseFromCurrent()),this.actions.SwitchCamera.forEach(e=>e.reverseFromCurrent())):(this.actions.Transition.forEach(e=>e.playFromCurrent()),this.actions.Animation.forEach(e=>e.playFromCurrent()),this.actions.TimelineAnimation.forEach(e=>e.playFromCurrent()),this.actions.SwitchCamera.forEach(e=>e.playFromCurrent())),this.actions.SceneTransition.forEach(e=>e.dispatch()),this.actions.Reset.forEach(e=>e.dispatch()),this.actions.SetVariable.forEach(e=>e.checkConditions()),this.actions.SetVariable.forEach(e=>e.dispatch()),this.actions.DynamicVariablePlay.forEach(e=>e.dispatch()),this.actions.ClearLocalStorage.forEach(e=>e.dispatch()),this.actions.UserAPI.forEach(e=>e.dispatch()),this.actions.Create.forEach(e=>{e.dispatch()}),this.actions.Destroy.forEach(e=>{e.dispatch()}
8106),this.actions.Audio.forEach(e=>{e.interaction instanceof Ij?e.interaction.audioPlayer.play():e.interaction instanceof IG&&e.interaction.dispatch()}),this.actions.Video.forEach(e=>{e.interaction instanceof RT?e.interaction.play():e.interaction instanceof RP&&e.interaction.dispatch()}),this.actions.Particles.forEach(e=>{e.dispatchBasic()})}},Bd=class extends Lc{constructor(e,t){super(e),this.eventManager=t,this.eventsPerObject=new Map,this.eventsAfterPerObject=new Map,this.onMouseDown=()=>{[...this.eventsAfterPerObject.entries()].forEach(([e,t])=>{e.dispatchEvent({type:"beginEvent",eventName:"Start"}),t.forEach(e=>{e.dispatchAfter("mouseDown")})})},this.onKeyDown=()=>{[...this.eventsAfterPerObject.entries()].forEach(([e,t])=>{e.dispatchEvent({type:"beginEvent",eventName:"Start"}),t.forEach(e=>{e.dispatchAfter("keyDown")})})},this.onAny=()=>{let{domElement:e,isExport:t}=this.eventContext,i=t?document:e;i.removeEventListener("pointerdown",this.onAny),i.removeEventListener("mousedown",this.onAny),document.removeEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([e,t])=>{e.dispatchEvent({type:"beginEvent",eventName:"Start"}),t.forEach(e=>{e.dispatchAfter("any")})})},this.onSceneTransitionAudioVideoPlay=()=>{[...this.eventsAfterPerObject.entries()].forEach(([e,t])=>{e.dispatchEvent({type:"beginEvent",eventName:"Start"}),t.forEach(e=>
vendor: 4,154 bytes, line 8106
8106{e.actions.Audio.forEach(e=>{e.interaction instanceof Ij&&e.interaction.audioPlayer.play()}),e.actions.Video.forEach(e=>{let t=e.interaction.data.triggerAfter??"autoplay";e.interaction instanceof RT&&e.interaction.play("autoplay"===t)}),e.actions.Particles.forEach(e=>{e.dispatchBasic()})})})},this.onPlay=()=>{[...this.eventsAfterPerObject.entries()].forEach(([e,t])=>{e.dispatchEvent({type:"beginEvent",eventName:"Start"}),t.forEach(e=>{e.dispatchAfter("autoplay")})})},this.seekVideos=async e=>{let t=[];[...this.eventsAfterPerObject.entries()].forEach(([i,r])=>{i.data.visible&&r.forEach(i=>{t.push(i.seekVideos(e))})}),await Promise.all(t)},this.pauseVideos=()=>{[...this.eventsAfterPerObject.entries()].forEach(([e,t])=>{t.forEach(e=>{e.pauseVideos()})})},this.onUserEvent=({eventName:e,target:t,reverse:i})=>{if(!e||!t)return;let r=Lp(e);r&&"Start"===r&&(t instanceof Du||t.dispatchEvent({type:"beginEvent",eventName:"Start"}),this.eventsPerObject.get(t)?.forEach(e=>{e.dispatchUserEvent(i)}),this.eventsAfterPerObject.get(t)?.forEach(e=>{e.dispatchUserEvent(i)}))}}connect(){let{sharedAssets:e,page:t}=this.eventContext,i=i=>{if(i.data?.events.length)for(let{id:r,data:a}of i.data.events){if(a.disabled||"Start"!==a.type)continue;let o=new Bc(r,a,i,t,e,this.eventManager);(o.actions.Transition.length||o.actions.TimelineAnimation.length||o.actions.Animation.length||o.actions.SwitchCamera.length||o.actions.Create.length||o.actions.Destroy.length||o.actions.SceneTransition.length||o.actions.Reset.length||o.actions.SetVariable.length||o.actions.DynamicVariablePlay.length||o.actions.ClearLocalStorage.length||o.actions.UserAPI.length)&&(this.eventsPerObject.has(i)?this.eventsPerObject.get(i)?.push(o):this.eventsPerObject.set(i,[o])),o.actions.Audio.length&&(this.eventsAfterPerObject.has(i)?this.eventsAfterPerObject.get(i)?.push(o):this.eventsAfterPerObject.set(i,[o])),o.actions.Video.length&&(this.hasVideoAction=!0,this.eventsAfterPerObject.has(i)?this.eventsAfterPerObject.get(i)?.push(o):this.eventsAfterPerObject.set(i,[o])),o.actions.Particles.length&&(this.eventsAfterPerObject.has(i)?this.eventsAfterPerObject.get(i)?.push(o):this.eventsAfterPerObject.set(i,[o]))}};if(t.traverseEntity(e=>{(e instanceof Os||e instanceof D5)&&e.frame?.traverse(e=>{i(e)}),i(e)}),[...this.eventsAfterPerObject.values()].some(e=>e.length)){if(0===this.eventManager.activateCount){let{domElement:e,isExport:t}=this.eventContext,i=t?document:e;i.addEventListener("pointerdown",this.onMouseDown,{once:!0}),i.addEventListener("mousedown",this.onMouseDown,{once:!0}),document.addEventListener("keydown",this.onKeyDown,{once:!0}),i.addEventListener("pointerdown",this.onAny),i.addEventListener("mousedown",this.onAny),document.addEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([e,t])=>{e.addEventListener("userEvent",this.onUserEvent)})}else this.onSceneTransitionAudioVideoPlay();this.onPlay()}[...this.eventsPerObject.entries()].forEach(([e,t])=>{e.dispatchEvent({type:"beginEvent",eventName:"Start"}),t.forEach(e=>e.dispatch()),e.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if([...this.eventsAfterPerObject.values()].some(e=>e.length)){let{domElement:e,isExport:t}=this.eventContext,i=t?document:e;i.removeEventListener("pointerdown",this.onMouseDown),i.removeEventListener("mousedown",this.onMouseDown),document.removeEventListener("keydown",this.onKeyDown),i.removeEventListener("pointerdown",this.onAny),i.removeEventListener("mousedown",this.onAny),document.removeEventListener("keydown",this.onAny),[...this.eventsAfterPerObject.entries()].forEach(([e,t])=>{e.removeEventListener("userEvent",this.onUserEvent),t.forEach(e=>e.disconnect())})}[...this.eventsPerObject.entries()].forEach(([e,t])=>{e.removeEventListener("userEvent",this.onUserEvent),t.forEach(e=>e.disconnect())}),this.eventsPerObject.clear(),this.eventsAfterPerObject.clear()}},Bu=class{constructor(e,t,i,r,a,o){this.id=e,this.data=t,this.object=i,this.initialDisabled=!1,this.actions=RA(t,t.actions,r,a,o,i),this.target=t.target}disconnect(){RM(this.actions)}dispatch(e){this.initialDisabled||(this.actions.Transition.forEach(e
8106=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.object.dispatchEvent({type:"beginEvent",eventName:"Collision"}),this.actions.Transition.forEach(e=>{"Toggle"===e.data.runMode?e.toggle():e.play()}),this.actions.Animation.forEach(e=>{"Toggle"===e.data.runMode?e.toggle():e.play()}),this.actions.TimelineAnimation.forEach(e=>{"Toggle"===e.data.runMode?e.toggle():e.play()}),this.actions.Reset.forEach(e=>{e.dispatch()}),this.actions.Link.forEach(e=>{e.dispatch()}),this.actions.Reset.forEach(e=>{e.dispatch()}),this.actions.Create.forEach(e=>{e.dispatch()}),this.actions.Destroy.forEach(t=>{t.dispatch(e??!1)}),this.actions.SetVariable.forEach(e=>e.checkConditions()),this.actions.SetVariable.forEach(e=>e.dispatch()),this.actions.DynamicVariablePlay.forEach(e=>e.dispatch()),this.actions.Audio.forEach(e=>{e.dispatchBasic()}),this.actions.Particles.forEach(e=>{e.dispatchBasic()}),this.actions.Video.forEach(e=>{e.dispatchBasic()}),this.actions.ClearLocalStorage.forEach(e=>e.dispatch()),this.actions.UserAPI.forEach(e=>e.dispatch()))}},Bp=class extends Lc{constructor(e,t,i,r,a){super(e),this.sharedVariables=t,this.eventManager=i,this.needsMouse=r,this.needsRaycast=a,this.dynamicVars=[],this.variablesToWatch=[],this.prevMouseProperty=null,this.prevRaycastProperty=null,this.pauseTime=0,this.isOutOfFocus=!1,this.events=[],this.onFrame=e=>{let t=this.eventContext.sharedAssets;if(this.rafId=window.requestAnimationFrame(this.onFrame),this.isOutOfFocus)return;let i=new Date,r=[],a=[];for(let e=0;e<this.propertiesToWatch.length;e++){let{objectId:t,property:i,prevValue:r}=this.propertiesToWatch[e],o=this.eventContext.scene.find(t),h=gi.propertyPaths[i];if("width"===h[0]||"height"===h[0]||"depth"===h[0])o=o.geometry.userData.parameters[h[0]];else for(let e=0;e<h.length;e++)o=o[h[e]];null===r?this.propertiesToWatch[e].prevValue=o instanceof ib?o.clone():o:(o instanceof ib?o.equals(r):r===o)||(a.push({objId:t,property:i}),o instanceof ib?this.propertiesToWatch[e].prevValue.copy(o):this.propertiesToWatch[e].prevValue=o)}for(let e=0;e<this.variablesToWatch.length;e++){let{id:i,prevValue:a}=this.variablesToWatch[e],o=t.getVariable(i);o!==a&&(r.push(i),this.variablesToWatch[e].prevValue=o)}for(let a=0;a<this.dynamicVars.length;a++){let{id:o,expectedTime:h,last:c,data:d,timerSeconds:u,startValue:p}=this.dynamicVars[a],f=1e3;if(("timer"===d.dynamicVariableType||"stopwatch"===d.dynamicVariableType)&&"number3decimal"===d.format?f=1:"counter"===d.dynamicVariableType?f=d.updateInterval:"random"===d.dynamicVariableType&&(f=d.isStatic?1/0:d.updateInterval),-1===h){this.dynamicVars[a].last=e,this.dynamicVars[a].expectedTime=e+f;continue}if(!(("Stopped"===t.getDynamicVariablePlayState(o)||"Restarted"===t.getDynamicVariablePlayState(o))&&(this.dynamicVars[a].last=e,this.dynamicVars[a].expectedTime=e+f,"counter"===d.dynamicVariableType&&t.getVariable(o)!==p&&(t.updateVariable(o,p),this.eventManager.requestRender()),("timer"===d.dynamicVariableType||"stopwatch"===d.dynamicVariableType)&&this.dynamicVars[a].timerSeconds!==p&&(this.dynamicVars[a].timerSeconds=p,t.updateVariable(o,y$.getFormattedTimerTime(p,d)),this.eventManager.requestRender()),"Restarted"===t.getDynamicVariablePlayState(o)&&t.setDynamicVariablePlayState(o,"Playing"),"Stopped"===t.getDynamicVariablePlayState(o)))){if("Paused"===t.getDynamicVariablePlayState(o)){void 0===this.dynamicVars[a].deltaToExpectedTime&&(this.dynamicVars[a].deltaToExpectedTime=Math.max(this.dynamicVars[a].expectedTime-e,0)),this.dynamicVars[a].last=e-(f-this.dynamicVars[a].deltaToExpectedTime),this.dynamicVars[a].expectedTime=e+this.dynamicVars[a].deltaToExpectedTime;continue}if(this.dynamicVars[a].deltaToExpectedTime=void 0,e>=h){if(this.dynamicVars[a].last=e,this.dynamicVars[a].expectedTime+=f,"random"===d.dynamicVariableType){let e=d.min+Math.random()*(d.max-d.min),i=d.decimals;e=Math.round(e*Math.pow(10,i))/Math.pow(10,i),t.updateVariable(o,e),r.push(o),this.eventManager.requestRender()}else if("counter"===d.dynamicVariableType){let e=t.getVariable(o),i=t.getDynamicVariableToggleIsForward(o)??!0,a=t.getVariable(o)+d.increment*(i?1:-1);d.hasEnd&&((a=d.increment>0?tK.clamp(a,p,d.endValue):tK.clamp(a,d.endValue,p))===p&&t.setDynamicVariableToggleIsForward(o,void 0),d.repeat?a===d.endValue&&(a=p):(a===p||a===d.endValue)&&t.setDynamicVariablePlayState(o,"Paused")),a!==e&&(r.push(o),t.updateVariable(o,a),this.eventManager.requestRender())}else if("time"===d.dynamicVariableType){let e=t.getVariable(o),a=MQ(i,d);if("object"==typeof e&&"textValue"in e&&"object"==typeof a&&"textValue"in a){if(Array.isArray(e.textValue)&&Array.isArray(a.textValue)){if(e.textValue.every((e,t)=>e===a.textValue[t]))continue}else if(e.textValue===a.textValue)continue}else if(e===a)continue;t.updateVariable(o,a),r.push(o),this.eventManager.requestRender()}else{let i=yY.isTextValue(d.endValue)?Bm(d.endValue.textValue):d.endValue,h=t.getDynamicVariableToggleIsForward(o)??!0,f=u+(e-c)/1e3*("timer"===d.dynamicVariableType?-1:1)*(h?1:-1);f=Math.max(f,0),d.hasEnd&&((f="stopwatch"===d.dynamicVariableType?tK.clamp(f,p,i):tK.clamp(f,i,p))===p&&t.setDynamicVariableToggleIsForward(o,void 0),d.repeat?Math.abs(f-i)<("number3decimal"===d.format?1e-4:.1)&&(f=p):(Math.abs(f-p)<("number3decimal"===d.format?1e-4:.1)||Math.abs(f-i)<("number3decimal"===d.format?1e-4:.1))&&t.setDynamicVariablePlayState(o,"Paused")),f!==u&&(r.push(o),this.dynamicVars[a].timerSeconds=f,t.updateVariable(o,y$.getFormattedTimerTime(f,d)),this.eventManager.requestRender())}}}}let o=!1;t.mouseProperty!==this.prevMouseProperty&&(this.prevMouseProperty=t.mouseProperty,o=!0);let h=!1;t.raycastProperty!==this.prevRaycastProperty&&(this.prevRaycastProperty=t.raycastProperty,h=!0),this.events.forEac
vendor: 1,054 bytes, line 8106
8106h(e=>{(r.includes(e.data.variableId)||a.find(t=>t.objId===e.data.objectId&&t.property===e.data.property)||"mouseProperty"===e.data.variableId&&o||"raycastProperty"===e.data.variableId&&h)&&(e.dispatch(),this.eventManager.requestRender())})},this.onBlur=()=>{this.pause()},this.onFocus=()=>{this.resume()}}pause(){this.isOutOfFocus||(this.isOutOfFocus=!0,this.pauseTime=Date.now())}resume(){if(!this.isOutOfFocus)return;this.isOutOfFocus=!1;let e=Date.now()-this.pauseTime;for(let t=0;t<this.dynamicVars.length;t++)this.dynamicVars[t].last+=e,this.dynamicVars[t].expectedTime+=e}connect(){this.eventContext.page.traverseEntity(e=>{e.data?.events.filter(e=>"VariableChange"===e.data.type&&!e.data.disabled).forEach(t=>{this.events.push(new Bf(t.id,t.data,e,this.eventContext.page,this.eventContext.sharedAssets,this.eventManager))})}),this.propertiesToWatch=this.events.filter(e=>"objectProperty"===e.data.variableId&&null!==e.data.objectId).map(e=>({objectId:e.data.objectId,property:e.data.property,prevValue:null}));let e=this.eventContext.sharedAssets;
8106this.sharedVariables.forEach(({id:t,data:i})=>{let r;if(!("dynamicVariableType"in i)){this.events.find(e=>e.data.variableId===t)&&this.variablesToWatch.push({id:t,prevValue:e.getVariable(t)});return}if("timer"===i.dynamicVariableType||"stopwatch"===i.dynamicVariableType){let e;if(yY.isTextValue(i.value)&&Array.isArray(i.value.textValue)){let t=i.value.textValue;e=3===t.length?t[2]+60*t[1]+3600*t[0]:t[1]+60*t[0]}else e=i.value;r=e,this.dynamicVars.push({id:t,last:-1,expectedTime:-1,data:i,timerSeconds:e,startValue:r})}else"time"===i.dynamicVariableType&&e.updateVariable(t,MQ(new Date,i)),"counter"===i.dynamicVariableType&&(r=yY.isTextValue(i.value)?Bm(i.value.textValue):i.value),this.dynamicVars.push({id:t,last:-1,expectedTime:-1,data:i,startValue:r})}),this.rafId=window.requestAnimationFrame(this.onFrame),window.addEventListener("blur",this.onBlur),window.addEventListener("focus",this.onFocus)}disconnect(){window.removeEventListener("blur",this.onBlur),window.removeEventListener("focus",this.onFocus),this.rafId&&(window.cancelAnimationFrame(this.rafId),this.rafId=void 0),this.events.forEach(e=>e.dispose())}},Bf=class{constructor(e,t,i,r,a,o){this.id=e,this.data=t,this.object=i,this.actions=RA(t,t.actions,r,a,o,i)}dispatch(){let e=this.actions;
vendor: 4,186 bytes, lines 8106-8167
8106e.Audio.forEach(e=>e.dispatchConditional()),e.Particles.forEach(e=>e.dispatchConditional()),e.Video.forEach(e=>e.dispatchConditional()),e.Create.forEach(e=>e.dispatch()),e.Destroy.forEach(e=>e.dispatch()),e.Reset.forEach(e=>e.dispatch()),e.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this),e.init()}),e.Transition.forEach(e=>e.play()),e.Animation.forEach(e=>e.play()),e.SwitchCamera.forEach(e=>e.play()),e.SceneTransition.forEach(e=>e.dispatch()),e.SetVariable.forEach(e=>e.checkConditions()),e.SetVariable.forEach(e=>e.dispatch()),e.DynamicVariablePlay.forEach(e=>e.dispatch()),e.ClearLocalStorage.forEach(e=>e.dispatch()),e.UserAPI.forEach(e=>e.dispatch())}dispose(){RM(this.actions)}};function Bm(e){return 3===e.length?e[2]+60*e[1]+3600*e[0]:e[1]+60*e[0]}var Bg,Bv,By,Bx=`
8107(async function() {
8108	const [wasmImport, wasmBinary] = await Promise.all([
8109		import('https://unpkg.com/@splinetool/[email protected]/build/' + 'navmesh.js'),
8110		fetch('https://unpkg.com/@splinetool/[email protected]/build/' + 'navmesh.wasm').then((res) => res.arrayBuffer()),
8111	]);
8112	const wasmModule = wasmImport.default;
8113	self.module = await wasmModule({ wasmBinary });
8114	postMessage('ready');
8115})();
8116`,Bb=`
8117(async function() {
8118	const [wasmImport, wasmBinary] = await Promise.all([
8119		import(self.location.origin + '/_libraries/navmesh.js'),
8120		fetch(self.location.origin + '/_libraries/navmesh.wasm').then((res) => res.arrayBuffer()),
8121	]);
8122	const wasmModule = wasmImport.default;
8123	self.module = await wasmModule({ wasmBinary });
8124	postMessage('ready');
8125})();
8126`,Bw=`
8127
8128onmessage = function(messageEvent) {
8129	const meshData = messageEvent.data;
8130	const positions = meshData[0];
8131	const offset = meshData[1];
8132	const indices = meshData[2];
8133	const indicesLength = meshData[3];
8134	const parameters = meshData[4];
8135
8136	const module = self.module;
8137	const rc = new module.rcConfig();
8138	rc.cs = parameters.cs;
8139	rc.ch = parameters.ch;
8140	rc.borderSize = parameters.borderSize ? parameters.borderSize : 0;
8141	rc.tileSize = parameters.tileSize ? parameters.tileSize : 0;
8142	rc.walkableSlopeAngle = parameters.walkableSlopeAngle;
8143	rc.walkableHeight = parameters.walkableHeight;
8144	rc.walkableClimb = parameters.walkableClimb;
8145	rc.walkableRadius = parameters.walkableRadius;
8146	rc.maxEdgeLen = parameters.maxEdgeLen;
8147	rc.maxSimplificationError = parameters.maxSimplificationError;
8148	rc.minRegionArea = parameters.minRegionArea;
8149	rc.mergeRegionArea = parameters.mergeRegionArea;
8150	rc.maxVertsPerPoly = parameters.maxVertsPerPoly;
8151	rc.detailSampleDist = parameters.detailSampleDist;
8152	rc.detailSampleMaxError = parameters.detailSampleMaxError;
8153
8154	if (!self.navMesh) {
8155		self.navMesh = new module.NavMesh();
8156	}
8157	self.navMesh.build(positions, offset, indices, indicesLength, rc);
8158
8159	const navmeshData = navMesh.getNavmeshData();
8160	const arrView = new Uint8Array(module.HEAPU8.buffer, navmeshData.dataPointer, navmeshData.size);
8161	const ret = new Uint8Array(navmeshData.size);
8162	ret.set(arrView);
8163	navMesh.freeNavmeshData(navmeshData);
8164
8165	postMessage(ret);
8166}
8167`,BS={cs:6,ch:2,walkableSlopeAngle:90,walkableHeight:20,walkableClimb:5,walkableRadius:0,maxEdgeLen:12,maxSimplificationError:1.3,minRegionArea:8,mergeRegionArea:20,maxVertsPerPoly:6,detailSampleDist:6,detailSampleMaxError:1};pI.then(e=>{Bg=e,Bv=new e.Vec3,By=new e.Vec3});var B_=new ib,BA=class{constructor(e=!1,t=!1){this.usePhysics=e,this.isExport=t,this.onPointerDown=e=>{if(1!==pp.length)return;let{raycaster:t,page:i}=this.eventContext;this.eventContext.updateRaycaster(e);let r=i.raycastWithClones(t);if(0!==r.length){if(this.gameControl){let e=B_.copy(this.gameControl.colliderWorldPosition);e.y-=this.gameControl.colliderHeight/2,this.gameControl.path=this.computePath(e,r[0].point)}this.eventContext.requestRender()}},this.traverseWithPhysics=(e,t)=>i=>{let r;if(i instanceof CT){if(!i.objectForSample)return!0===i.object.dataPatched.physics.fusedBody&&"dynamic"===i.object.dataPatched.physics.rigidBody||void 0;if(i.objectForSample.dataPatched.physics.fusedBody)return;r=i.object}else if(i instanceof b3)r=i.object;else if(r=i,r.dataPatched.cloner?.disabled===!1&&r.dataPatched.cloner?.hideBase&&r.dataPatched.physics?.fusedBody!==!0)return!0;
8167if(t&&!r.userData.navmesh)return;let a=r.dataPatched;if(!a.visible&&a.physics?.enabled!==!0)return!0;i.updateMatrixWorldSVD();let o=B9(a),h=r.userData.hasDestroy,c=r.userData.hasDrag,d=!1,u=!1;for(let e of a.events)!0!==e.data.disabled&&("GameControl"===e.data.type?d=!0:"Follow"===e.data.type&&(u=!0));if(d||o||u||h||c)return!0;if(this.usePhysics&&a.physics?.rigidBody==="dynamic"){if(this.usePhysics&&a.physics?.fusedBody)return!0}else if("geometry"in i&&i.geometry&&e.push(R8(i.geometry,i.matrixWorld)),this.usePhysics&&a.physics?.fusedBody)return i.traverseObject((t,i)=>{let r;if(0===i)return;if(t instanceof CT){if(!t.objectForSample)return!0===t.object.dataPatched.physics.fusedBody&&"dynamic"===t.object.dataPatched.physics.rigidBody||void 0;if(t.objectForSample.dataPatched.physics.fusedBody)return;r=t.object}else if(t instanceof b3)r=t.object;else if(r=t,t.dataPatched.cloner?.hideBase)return!0;let a=r.dataPatched;if(!a.visible&&a.physics?.enabled!==!0)return!0;"geometry"in t&&t.geometry&&e.push(R8(t.geometry,t.matrixWorld))}),!0},this.traverseNoPhysics=(e,t)=>i=>{let r;if(i instanceof CT)return;let a=(r=i instanceof b3?i.object:i).dataPatched;if("visibility"===a.physics.enabled?!a.visible:!a.physics.enabled)return!0;if(t&&!r.userData.navmesh)return;let o=i.geometry,h=!0===r.userData.hasDestroy,c=!0===r.userData.hasDrag;if(B9(a)||h||c||r.dataPatched.events.some(e=>!0!==e.data.disabled&&"GameControl"===e.data.type))return!0;o&&e.push(R8(o,i.matrixWorld))},this.navmeshWasm=Bg,this.navMesh=new this.navmeshWasm.NavMesh,this._workerURL=URL.createObjectURL(new Blob([(t?Bx:Bb)+Bw])),this._worker=new Worker(this._workerURL)}init(e,t,i){this.gameControl=t,this.eventContext=i,this.setDefaultQueryExtent(new ib().setScalar(e.ch*e.walkableRadius*1.2)),this._worker.onmessage=()=>{this.createNavMesh(i.page,e,e=>{this.buildFromNavmeshData(e.data)})},this.eventContext.renderer.domElement.addEventListener("pointerdown",this.onPointerDown)}createNavMesh(e,t,i){t.objects.forEach(t=>{let i=e.scene.find(t);i.traverseEntity(e=>{e.userData.navmesh=!0}),i.cloner?.traverseObject(e=>{e.userData.navmesh=!0})});let r=[],a=(this.usePhysics?this.traverseWithPhysics:this.traverseNoPhysics)(r,"custom"===t.zones);if(e.traverseChildren(a),t.objects.forEach(t=>{let i=e.scene.find(t);i.traverseEntity(e=>{e.userData.navmesh=void 0}),i.cloner?.traverseObject(e=>{e.userData.navmesh=void 0})}),0===r.length)return!1;let o=vB(r),{positions:h,triIndices:c}=_G(o.getAttribute("position"),o.getIndex());return this._worker.postMessage([h,h.length/3,c,c.length,{...BS,...t}]),this._worker.onmessage=i,!0}createDebugNavGeometry(){let e,t,i=this.navMesh.getDebugNavMesh(),r=i.getTriangleCount(),a=new Uint32Array(3*r),o=new Float32Array(9*r);for(e=0;e<3*r;e++)a[e]=e;for(e=0;e<r;e++)for(t=0;t<3;t++){let r=i.getTriangle(e).getPoint(t);o[9*e+3*t+0]=r.x,o[9*e+3*t+1]=r.y,o[9*e+3*t+2]=r.z}let h=new rU;return h.setIndex(new rT(a,1)),h.setAttribute("position",new rT(o,3)),h}getClosestPoint(e){return Bv.x=e.x,Bv.y=e.y,Bv.z=e.z,this.navMesh.getClosestPoint(Bv)}getClosestPointToRef(e,t){Bv.x=e.x,Bv.y=e.y,Bv.z=e.z;let i=this.navMesh.getClosestPoint(Bv);t.set(i.x,i.y,i.z)}getRandomPointAround(e,t){return Bv.x=e.x,Bv.y=e.y,Bv.z=e.z,this.navMesh.getRandomPointAround(Bv,t)}getRandomPointAroundToRef(e,t,i){Bv.x=e.x,Bv.y=e.y,Bv.z=e.z;let r=this.navMesh.getRandomPointAround(Bv,t);i.set(r.x,r.y,r.z)}moveAlong(e,t){return Bv.x=e.x,Bv.y=e.y,Bv.z=e.z,By.x=t.x,By.y=t.y,By.z=t.z,this.navMesh.moveAlong(Bv,By)}moveAlongToRef(e,t,i){return Bv.x=e.x,Bv.y=e.y,Bv.z=e.z,By.x=t.x,By.y=t.y,By.z=t.z,this.navMesh.moveAlong(Bv,By)}computePath(e,t){let i=this.getClosestPoint(t);if(By.x=i.x,By.y=i.y,By.z=i.z,Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)+Math.pow(t.z-i.z,2))>this.getDefaultQueryExtent().y)return[];this.getClosestPoint(e);let r=this.navMesh.computePath(Bv,By),a=r.getPointCount(),o=[];for(let e=0;e<a;e++){let t=r.getPoint(e);o.push(new ib(t.x,t.y,t.z))}return o}createCrowd(e,t){return new BM(this,e,t)}setDefaultQueryExtent(e){Bv.x=e.x,Bv.y=e.y,Bv.z=e.z,this.navMesh.setDefaultQueryExtent(Bv)}getDefaultQueryExtent(){return this.navMesh.getDefaultQueryExtent()}buildFromNavmeshData(e){let t=e.length*e.BYTES_PER_ELEMENT,i=this.navmeshWasm._malloc(t),r=new Uint8Array(this.navmeshWasm.HEAPU8.buffer,i,t);r.set(e);let a=new this.navmeshWasm.NavmeshData;a.dataPointer=r.byteOffset,a.size=e.length,this.navMesh.buildFromNavmeshData(a),this.navmeshWasm._free(r.byteOffset)}getNavmeshData(){let e=this.navMesh.getNavmeshData(),t=new Uint8Array(this.navmeshWasm.HEAPU8.buffer,e.dataPointer,e.size),i=new Uint8Array(e.size);return i.set(t),this.navMesh.freeNavmeshData(e),i}getDefaultQueryExtentToRef(e){let t=this.navMesh.getDefaultQueryExtent();e.set(t.x,t.y,t.z)}dispose(){this.navMesh.destroy(),this._worker.terminate(),URL.revokeObjectURL(this._workerURL),this.eventContext?.renderer.domElement.removeEventListener("pointerdown",this.onPointerDown)}addCylinderObstacle(e,t,i){return Bv.x=e.x,Bv.y=e.y,Bv.z=e.z,this.navMesh.addCylinderObstacle(Bv,t,i)}addBoxObstacle(e,t,i){return Bv.x=e.x,Bv.y=e.y,Bv.z=e.z,By.x=t.x,By.y=t.y,By.z=t.z,this.navMesh.addB
vendor: 4,790 bytes, line 8167
8167oxObstacle(Bv,By,i)}removeObstacle(e){this.navMesh.removeObstacle(e)}isSupported(){return void 0!==this.navmeshWasm}},BM=class{constructor(e,t,i){this.navmeshWasmWrapper=e,this.transforms=[],this.agents=[],this.reachRadii=[],this._agentDestinationArmed=[],this._agentDestination=[],this.crowd=new this.navmeshWasmWrapper.navmeshWasm.Crowd(t,i,this.navmeshWasmWrapper.navMesh.getNavMesh())}onReachTarget(e,t){}addAgent(e,t,i){let r=new this.navmeshWasmWrapper.navmeshWasm.dtCrowdAgentParams;r.radius=t.radius,r.height=t.height,r.maxAcceleration=t.maxAcceleration,r.maxSpeed=t.maxSpeed,r.collisionQueryRange=t.collisionQueryRange,r.pathOptimizationRange=t.pathOptimizationRange,r.separationWeight=t.separationWeight,r.updateFlags=7,r.obstacleAvoidanceType=0,r.queryFilterType=0,r.userData=0;let a=this.crowd.addAgent(new this.navmeshWasmWrapper.navmeshWasm.Vec3(e.x,e.y,e.z),r);return this.transforms.push(i),this.agents.push(a),this.reachRadii.push(t.reachRadius?t.reachRadius:t.radius),this._agentDestinationArmed.push(!1),this._agentDestination.push(new ib(0,0,0)),a}getAgentPosition(e){return this.crowd.getAgentPosition(e)}getAgentPositionToRef(e,t){let i=this.crowd.getAgentPosition(e);t.set(i.x,i.y,i.z)}getAgentVelocity(e){return this.crowd.getAgentVelocity(e)}getAgentVelocityToRef(e,t){let i=this.crowd.getAgentVelocity(e);t.set(i.x,i.y,i.z)}getAgentNextTargetPath(e){return this.crowd.getAgentNextTargetPath(e)}getAgentNextTargetPathToRef(e,t){let i=this.crowd.getAgentNextTargetPath(e);t.set(i.x,i.y,i.z)}getAgentState(e){return this.crowd.getAgentState(e)}overOffmeshConnection(e){return this.crowd.overOffmeshConnection(e)}agentGoto(e,t){this.crowd.agentGoto(e,new this.navmeshWasmWrapper.navmeshWasm.Vec3(t.x,t.y,t.z));let i=this.agents.indexOf(e);i>-1&&(this._agentDestinationArmed[i]=!0,this._agentDestination[i].set(t.x,t.y,t.z))}agentTeleport(e,t){this.crowd.agentTeleport(e,new this.navmeshWasmWrapper.navmeshWasm.Vec3(t.x,t.y,t.z))}updateAgentParameters(e,t){let i=this.crowd.getAgentParameters(e);void 0!==t.radius&&(i.radius=t.radius),void 0!==t.height&&(i.height=t.height),void 0!==t.maxAcceleration&&(i.maxAcceleration=t.maxAcceleration),void 0!==t.maxSpeed&&(i.maxSpeed=t.maxSpeed),void 0!==t.collisionQueryRange&&(i.collisionQueryRange=t.collisionQueryRange),void 0!==t.pathOptimizationRange&&(i.pathOptimizationRange=t.pathOptimizationRange),void 0!==t.separationWeight&&(i.separationWeight=t.separationWeight),this.crowd.setAgentParameters(e,i)}removeAgent(e){this.crowd.removeAgent(e);let t=this.agents.indexOf(e);t>-1&&(this.agents.splice(t,1),this.transforms.splice(t,1),this.reachRadii.splice(t,1),this._agentDestinationArmed.splice(t,1),this._agentDestination.splice(t,1))}getAgents(){return this.agents}update(e){if(this.navmeshWasmWrapper.navMesh.update(),!(e<=.001)){if(1/60<=.001)this.crowd.update(e);else{let t=Math.floor(e/(1/60));t>10&&(t=10),t<1&&(t=1);let i=e/t;for(let e=0;e<t;e++)this.crowd.update(i)}for(let e=0;e<this.agents.length;e++){let t=this.agents[e],i=this.getAgentPosition(t);if(this.transforms[e].copy(i),this._agentDestinationArmed[e]){let r=i.x-this._agentDestination[e].x,a=i.z-this._agentDestination[e].z,o=this.reachRadii[e],h=this._agentDestination[e].y-this.reachRadii[e],c=this._agentDestination[e].y+this.reachRadii[e],d=r*r+a*a;i.y>h&&i.y<c&&d<o*o&&(this.onReachTarget(t,this._agentDestination[e]),this._agentDestinationArmed[e]=!1)}}}}setDefaultQueryExtent(e){let t=new this.navmeshWasmWrapper.navmeshWasm.Vec3(e.x,e.y,e.z);this.crowd.setDefaultQueryExtent(t)}getDefaultQueryExtent(){return this.crowd.getDefaultQueryExtent()}getDefaultQueryExtentToRef(e){let t=this.crowd.getDefaultQueryExtent();e.set(t.x,t.y,t.z)}getCorners(e){let t,i=this.crowd.getCorners(e),r=i.getPointCount(),a=[];for(t=0;t<r;t++){let e=i.getPoint(t);a.push(new ib(e.x,e.y,e.z))}return a}dispose(){this.crowd.destroy()}},BE={type:"change"},BC={type:"start"},BT={type:"end",nonOrbit:!0},BP={type:"end",nonOrbit:!1},BD={type:"end",isZoom:!0,nonOrbit:!0},BO={type:"end",changed:!1},BI={type:"cameraAnimatingInTimeline"},BR=new ix,BL=new tJ,BB=2*Math.PI,Bz=new ib,BF=new tJ,BN=new ib,BU=new ix,Bk=new iZ,BV={type:"requestRender"},Bj=class extends tF{constructor(e,t,i={isPlayMode:!1,isExport:!1},r){super(),this.object=e,this.domElement=t,this.options=i,this.timelineState=r,this.enabled=!0,this.useKeyEvents=!0,this.enableDamping=!1,this.enableZoom=!0,this.enableRotate=!0,this.enablePan=!0,this.autoRotate=!1,this.rotationLimitsMode=0,this.panLimitsMode=0,this.rotationSoftLimit=2,this.panSoftLimit=2,this.hoverRotatePanMode=0,this.zoomLimitsEnabled=!1,this.mouseButtons=[0,5],this.mouseButtonsPlay=[3,4,5],this.touches=[null,tR.DOLLY_ROTATE,tR.PAN],this.offset=new ib,this.eye=new ib,this.lastPosition=new ib,this.lastQuaternion=new ix,this.current=ne
vendor: 4,319 bytes, line 8167
8167w tJ,this.overShoot=new tJ,this.overRatio=new tJ,this.spherical=new lF,this.sphericalDelta=new lF,this.panOffset=new ib,this.panLeftV=new ib,this.panUpV=new ib,this.panV=new ib,this.rotateStart=new tJ,this.rotateEnd=new tJ,this.rotateDelta=new tJ,this.panStart=new tJ,this.panEnd=new tJ,this.panDelta=new tJ,this.dollyStart=new tJ,this.dollyEnd=new tJ,this.dollyDelta=new tJ,this.rotationRangeFactor=new tJ,this.panRangeFactor=new tJ,this.state=-1,this.zoomChanged=!1,this.isPointerDown=!1,this.isThetaFlipped=!1,this.prevScale=0,this.scale=1,this.gesture=!1,this.timer=-1,this.timerHover=-1,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minPhi=0,this.maxPhi=Math.PI,this.minTheta=-1/0,this.maxTheta=1/0,this.minH=0,this.maxH=Math.PI,this.minV=-1/0,this.maxV=1/0,this.autoRotateClockwise=!0,this.isPanOverShoot=!1,this.isRotateOverShoot=!1,this.resetHoverEffectOnPointerLeave=!1,this.hasChange=!1,this.useWindowEvents=!1,this.isTouchZoom=!0,this.autoRotateSpeed=2,this.dampingFactor=.125,this.zoomSpeed=2,this.rotateSpeed=1,this.panSpeed=1,this.hoverRotatePanStrength=.1,this.hoverRotateDamping=this.dampingFactor,this.isCurrentlyDamping=!1,this.thetaIsFree=!1,this.phiIsFree=!1,this.needsUpdate=!0,this.onCameraChange=e=>{this.object.removeEventListener("beginState",this.onBeginState),this.object.removeEventListener("completeState",this.onCompleteState),this.object.removeEventListener("cameraChange",this.onCameraChange),this.object=e.camera,this.object.addEventListener("beginState",this.onBeginState),this.object.addEventListener("completeState",this.onCompleteState),this.object.addEventListener("cameraChange",this.onCameraChange)},this.update=()=>{this.object.updateWorldMatrix(!0,!1),this.object.matrixWorld.decompose(BN,BU,Bz),this.offset.copy(BN).sub(this.target),this.spherical.setFromVector3(this.offset),this.object.isUpVectorFlipped&&(this.spherical.phi*=-1,this.spherical.theta-=Math.PI),this.autoRotate&&-1===this.state&&this.rotateLeft((!0===this.autoRotateClockwise?1:-1)*this.getAutoRotationAngle()),0!==this.rotationLimitsMode&&this.applyLimits(this.sphericalDelta,this.rotationLimitsMode,this.rotationSoftLimit,this.maxTheta,this.minTheta,this.maxPhi,this.minPhi,this.rotationRangeFactor),2!==this.rotationLimitsMode&&(this.spherical.phi+=this.sphericalDelta.phi),(1!==this.rotationLimitsMode||!0===this.autoRotate)&&(this.spherical.theta+=this.sphericalDelta.theta),this.spherical.radius*=this.scale,this.zoomLimitsEnabled&&this.object.isPerspectiveCamera&&(this.spherical.radius=Math.max(this.minDistance,Math.min(this.maxDistance,this.spherical.radius))),0!==this.panLimitsMode&&(this.target.applyQuaternion(BR.copy(BU).invert()),this.panOffset.applyQuaternion(BR),this.applyLimits(this.panOffset,this.panLimitsMode,this.panSoftLimit,this.maxH,this.minH,this.maxV,this.minV,this.panRangeFactor),this.target.applyQuaternion(BU),this.panOffset.applyQuaternion(BU)),2===this.panLimitsMode&&(this.panOffset.y=0),1===this.panLimitsMode&&(this.panOffset.x=0),-1!==this.state||this.gesture?(this.target.add(this.panOffset),this.panOffset.set(0,0,0)):(this.panOffset.multiplyScalar(1-this.dampingFactor),this.target.add(this.panOffset)),this.offset.setFromSpherical(this.spherical),BN.copy(this.target).add(this.offset),this.object.position.copy(this.target).add(this.offset),this.object.parent&&(Bk.copy(this.object.parent.matrixWorld).invert(),this.object.position.applyMatrix4(Bk));let e=this.spherical.phi%BB;if(this.eye.copy(this.offset).normalize(),this.object.up.copy(rd.DEFAULT_UP).applyAxisAngle(this.eye,this.object.angleOffsetFromUp),e>0&&e>Math.PI||e<0&&e>-Math.PI?(this.object.up.negate(),this.object.lookAt(this.target),this.object.isUpVectorFlipped=!0):(this.object.lookAt(this.target),this.object.isUpVectorFlipped=!1),-1===this.state||!0===this.enableDamping){let e=1===this.hoverRotatePanMode?this.hoverRotateDamping:this.dampingFactor;this.sphericalDelta.theta*=1-e,this.sphericalDelta.phi*=1-e}else this.sphericalDelta.set(0,0,0);if(this.scale=1,this.lastPosition.distanceToSquared(this.object.position)>.01||8*(1-this.lastQuaternion.dot(this.object.quaternion))>1e-8){this.dispatchEvent(BE),this.object.dispatchEvent(BV),this.lastPosition.copy(this.object.position),this.lastQuaternion.copy(this.object.quaternion),this.isCurrentlyDamping=!0;return}
vendor: 5,234 bytes, line 8167
8167this.isPanOverShoot=!1,this.isRotateOverShoot=!1,this.object.wasMovedBySwitchCameraAction=!1,this.sphericalDelta.set(0,0,0),this.panOffset.set(0,0,0),this.isCurrentlyDamping=!1},this.onPointerDown=e=>{!1!==this.enabled&&("touch"===e.pointerType||"pen"===e.pointerType&&po?this.onPointerDownTouch(e):this.onPointerDownMouse(e),-1!==this.state&&(this.isPointerDown=!0,this.dispatchEvent(BC),this.domElement.addEventListener("pointermove",this.onPointerMove),this.domElement.addEventListener("pointerup",this.onPointerUp),e.stopPropagation(),"touch"===e.pointerType||"pen"===e.pointerType&&po||this.domElement.setPointerCapture(e.pointerId)))},this.onPointerLeave=e=>{this.resetHoverEffectOnPointerLeave&&!this.useWindowEvents?(1===this.hoverRotatePanMode?(this.sphericalDelta.theta=-this.spherical.theta,this.sphericalDelta.phi=-this.spherical.phi,Bz.subVectors(this.position0,this.target0),this.spherical.setFromVector3(Bz),this.sphericalDelta.theta+=this.spherical.theta,this.sphericalDelta.phi+=this.spherical.phi,this.sphericalDelta.theta/=8,this.sphericalDelta.phi/=8):2===this.hoverRotatePanMode&&this.panOffset.subVectors(this.target0,this.target).divideScalar(8),this.update()):this.pointerLeaveEvent=e},this.onPointerEnter=e=>{this.resetHoverEffectOnPointerLeave||void 0===this.pointerLeaveEvent?BF.set(e.clientX-this.domElement.clientWidth/2,e.clientY-this.domElement.clientHeight/2):BF.set(e.clientX-this.pointerLeaveEvent.clientX,e.clientY-this.pointerLeaveEvent.clientY),1===this.hoverRotatePanMode?(this.rotateDelta.copy(BF).multiplyScalar(this.rotateSpeed*this.hoverRotatePanStrength).rotateAround(BL,-this.object.angleOffsetFromUp),this.rotateLeft(2*Math.PI*this.rotateDelta.x/this.domElement.clientHeight),this.rotateUp(2*Math.PI*this.rotateDelta.y/this.domElement.clientHeight),this.rotateStart.set(e.clientX,e.clientY)):2===this.hoverRotatePanMode&&(this.panDelta.copy(BF).multiplyScalar(this.panSpeed*this.hoverRotatePanStrength),this.pan(this.panDelta.x,this.panDelta.y),this.panStart.set(e.clientX,e.clientY)),this.update()},this.onPointerMove=e=>{if(this.timelineState?.isPlayingCameraAnimation){this.dispatchEvent(BI);return}!1!==this.enabled&&(this.checkRaycastLock()||("touch"===e.pointerType||"pen"===e.pointerType&&po?this.onPointerMoveTouch(e):this.onPointerMoveMouse(e),e.stopPropagation()))},this.onPointerUp=e=>{this.isPointerDown=!1,0===pp.length&&(this.domElement.removeEventListener("pointermove",this.onPointerMove),this.domElement.removeEventListener("pointerup",this.onPointerUp)),pp.length>1&&e.preventDefault(),this.hasChange?this.dispatchEvent(0===this.state?BP:BT):this.dispatchEvent(BO),this.state=-1,e&&(e.stopPropagation(),"touch"===e.pointerType||"pen"===e.pointerType&&po||this.domElement.releasePointerCapture(e.pointerId))},this.onPointerDownMouse=e=>{switch(this.useKeyEvents?this.mouseButtons[e.button]:this.mouseButtonsPlay[e.button]){case 0:if(!0!==e.altKey||e.shiftKey||pu(e)){if(" "===this.key){if(!1===this.enablePan)return;this.handleMouseDownPan(e),this.state=2}}else{if(!1===this.enableRotate)return;this.handleMouseDownRotate(e),this.state=0}break;case 4:if(!1===this.enablePan)return;this.handleMouseDownPan(e),this.state=2;break;case 3:if(pu(e)||e.shiftKey){if(!1===this.enablePan)return;this.handleMouseDownPan(e),this.state=2}else{if(!1===this.enableRotate)return;this.handleMouseDownRotate(e),this.state=0}break;case 5:if(pu(e)||e.shiftKey){if(!1===this.enableRotate)return;this.handleMouseDownRotate(e),this.state=0}else{if(!1===this.enablePan)return;this.handleMouseDownPan(e),this.state=2}break;default:this.state=-1}},this.onPointerMoveMouse=e=>{switch(this.state){case 0:if(!1===this.enableRotate)return;this.handleMouseMoveRotate(e);break;case 1:if(!1===this.enableZoom)return;this.handleMouseMoveDolly(e);break;case 2:if(!1===this.enablePan)return;this.handleMouseMovePan(e)}this.object.wasMovedByUser=!0},this.onPointerDownTouch=e=>{switch(pp.length>1&&e.preventDefault(),this.touches[pp.length-1]){case tR.ROTATE:if(!1===this.enableRotate){this.state=-1;return}this.handleTouchStartRotate(),this.state=3;break;case tR.PAN:if(!1===this.enablePan){this.state=-1;return}this.handleTouchStartPan(),this.state=4;break;case tR.DOLLY_PAN:if(!1===this.enableZoom&&!1===this.enablePan)return;this.handleTouchStartDollyPan(),this.state=5;break;case tR.DOLLY_ROTATE:if(!1===this.enableZoom&&!1===this.enableRotate)return;this.handleTouchStartDollyRotate(),this.state=6;break;default:this.state=-1}},this.onPointerMoveTouch=e=>{switch(pp.length>1&&e.preventDefault(),this.state){case 3:if(!1===this.enableRotate)return;this.handleTouchMoveRotate(e),this.update();break;case 4:if(!1===this.enablePan)return;this.handleTouchMovePan(e),this.update();break;case 5:if(!1===this.enableZoom&&!1===this.enablePan)return;this.handleTouchMoveDollyPan(e),this.update();break;case 6:if(!1===this.enableZoom&&!1===this.enableRotate)return;this.handleTouchMoveDollyRotate(e),this.update();break;default:this.state=-1}this.object.wasMovedByUser=!0},this.dispatchEndDebounced=uK(()=>{this.zoomChanged?this.dispatchEvent(BD):this.dispatchEvent(BT),this.zoomChanged=!1},33),this.onMouseWheel=e=>{if(!(!1===this.enabled||!1===this.enableZoom&&!1===this.enablePan)&&!this.checkRaycastLock()){if
8167(this.options.isExport||this.domElement.clientHeight!==document.body.clientHeight||this.domElement.clientWidth!==document.body.clientWidth||e.preventDefault(),this.dispatchEvent(BC),this.timelineState?.isPlayingCameraAnimation){this.dispatchEvent(BI);return}this.handleMouseWheel(e),this.dispatchEndDebounced(),this.object.wasMovedByUser=!0}},this.onGesture=e=>{if(e.preventDefault(),!1!==this.enabled&&!this.checkRaycastLock()&&!pa){if(this.timelineState?.isPlayingCameraAnimation){this.dispatchEvent(BI);return}if("gesturechange"===e.type){if(!1===this.enableZoom||!1===this.isTouchZoom)return;this.dispatchEvent(BC),e.scale>this.prevScale?this.dollyIn(this.getZoomScale()):e.scale<this.prevScale&&this.dollyOut(this.getZoomScale()),this.prevScale=e.scale,this.update(),this.object.wasMovedByUser=!0}else this.dispatchEvent(BT)}},this.onContextMenu=e=>{e.preventDefault()},this.onTouchEnd=e=>{e.preventDefault()},this.onKeyDown=e=>{!1!==this.enabled&&(this.key=e.key," "===e.key&&this.dispatchEvent(BC))},this.onKeyUp=e=>{!1!==this.enabled&&(this.key=void 0,-1!==this.state&&"Alt"===e.key&&this.onPointerUp(pp[0])," "===e.key&&this.dispatchEvent(BT))},this.onPointerHover=e=>{"mouse"!==e.pointerType||!1===this.enabled||-1!==this.state||2===this.hoverRotatePanMode&&this.isPanOverShoot||1===this.hoverRotatePanMode&&this.isRotateOverSho
vendor: 8,259 bytes, line 8167
8167ot||(this.isPointerDown=!0,2===this.hoverRotatePanMode?this.handleMouseMovePan(e,this.hoverRotatePanStrength):1===this.hoverRotatePanMode&&this.handleMouseMoveRotate(e,this.hoverRotatePanStrength))},this.onBeginState=()=>{this.enabled=!1,this.needsUpdate=!1},this.onCompleteState=e=>{e.isfromEntity&&this.options.isPlayMode||(this.enabled=!0,this.needsUpdate=!0,this.object.updateUp(),this.object.getTarget(this.target))},this.target=this.object.getTarget(),this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.quat0=this.object.quaternion.clone(),this.isUpVectorFlipped0=this.object.isUpVectorFlipped,this.offset.copy(this.object.position).sub(this.target),this.spherical.setFromVector3(this.offset),this.object.isUpVectorFlipped&&(this.spherical.phi*=-1,this.spherical.theta-=Math.PI),this.initialSphericalRadius=this.spherical.radius,this.addEventListenersToCamera()}dispatchEvent(e){"start"===e.type?this.hasChange=!1:this.hasChange=!0,super.dispatchEvent(e)}addEventListenersToCamera(){this.object.addEventListener("beginState",this.onBeginState),this.object.addEventListener("completeState",this.onCompleteState),this.object.addEventListener("cameraChange",this.onCameraChange)}removeEventListenersFromCamera(){this.object.removeEventListener("beginState",this.onBeginState),this.object.removeEventListener("completeState",this.onCompleteState),this.object.removeEventListener("cameraChange",this.onCameraChange)}updateUseWindowEvents(e){if(window.removeEventListener("pointermove",this.onPointerHover),this.domElement.removeEventListener("pointermove",this.onPointerHover),this.useWindowEvents=e,0!==this.hoverRotatePanMode&&(this.useWindowEvents?window.addEventListener("pointermove",this.onPointerHover):this.domElement.addEventListener("pointermove",this.onPointerHover)),this.domElement.removeEventListener("pointerleave",this.onPointerLeave),this.domElement.removeEventListener("pointerenter",this.onPointerEnter),window.removeEventListener("pointerleave",this.onPointerLeave),window.removeEventListener("pointerenter",this.onPointerEnter),0!==this.hoverRotatePanMode&&!this.useWindowEvents){let e=this.useWindowEvents?window:this.domElement;e.addEventListener("pointerleave",this.onPointerLeave),e.addEventListener("pointerenter",this.onPointerEnter)}}fromJSON(e,t){this.setEnableDampingSpeed(e.enableDamping),this.enablePan=e.enablePan,this.enableZoom=e.enableZoom,this.enableRotate=e.enableRotate,this.rotationLimitsMode=e.rotationLimitsMode,this.thetaIsFree=e.rotationHorizontalOffset.min===e.rotationHorizontalOffset.max&&e.rotationHorizontalOffset.min===Math.PI,this.phiIsFree=e.rotationVerticalOffset.min===e.rotationVerticalOffset.max&&e.rotationVerticalOffset.min===Math.PI,this.panLimitsMode=e.panLimitsMode,this.panSoftLimit=e.panSoftLimit,this.rotationSoftLimit=e.rotationSoftLimit,this.hoverRotatePanMode=e.hoverRotatePanMode,this.hoverRotateDamping=e.hoverRotateDamping??this.dampingFactor,this.useWindowEvents="window"===t,0!==this.hoverRotatePanMode&&(this.useWindowEvents?window.addEventListener("pointermove",this.onPointerHover):this.domElement.addEventListener("pointermove",this.onPointerHover));let i=e.hoverRotatePanStrength/100;this.hoverRotatePanStrength=i**2,this.zoomLimitsEnabled=e.zoomLimitsEnabled,this.minZoom=e.zoomLimits.min,this.maxZoom=Math.max(e.zoomLimits.min,e.zoomLimits.max),this.minDistance=1e3/this.maxZoom,this.maxDistance=Math.max(this.minDistance,1e3/e.zoomLimits.min),this.autoRotate=e.autoRotate,this.autoRotateSpeed=e.autoRotateSpeed,this.autoRotateClockwise=e.autoRotateClockwise;let r=this.object.getTarget().applyQuaternion(BR.copy(this.object.quaternion).invert());this.minV=-e.panVerticalOffset.min+r.y,this.maxV=e.panVerticalOffset.max+r.y,this.minH=-e.panHorizontalOffset.min+r.x,this.maxH=e.panHorizontalOffset.max+r.x,this.panRangeFactor.set(this.maxH-this.minH,this.maxV-this.minV).divideScalar(2),this.rotationRangeFactor.setScalar(Math.PI).divideScalar(4),this.minPhi=BG(this.spherical.phi-e.rotationVerticalOffset.min),this.maxPhi=BG(this.spherical.phi+e.rotationVerticalOffset.max),this.minTheta=BG(BG(this.spherical.theta)-e.rotationHorizontalOffset.min),this.maxTheta=BG(BG(this.spherical.theta)+e.rotationHorizontalOffset.max),this.isThetaFlipped=this.minTheta>this.maxTheta,1===e.orbitTouches&&(this.touches[0]=tR.ROTATE),1===e.panTouches&&(this.touches[0]=tR.PAN),2===e.orbitTouches&&(this.touches[1]=tR.DOLLY_ROTATE),2===e.panTouches&&(this.touches[1]=tR.DOLLY_PAN),3===e.orbitTouches&&(this.touches[2]=tR.ROTATE),3===e.panTouches&&(this.touches[2]=tR.PAN),this.isTouchZoom=e.isTouchZoom,this.resetHoverEffectOnPointerLeave=e.resetHoverEffectOnPointerLeave??!1}connect(){if(this.domElement.addEventListener("contextmenu",this.onContextMenu),this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("wheel",this.onMouseWheel),window.addEventListener("keydown",this.onKeyDown,!1),window.addEventListener("keyup",this.onKeyUp,!1),this.domElement.addEventListener("gesturestart",this.onGesture),this.domElement.addEventListener("gesturechange",this.onGesture),this.domElement.addEventListener("gestureend",this.onGesture),this.domElement.addEventListener("touchend",this.onTouchEnd),0!==this.hoverRotatePanMode&&!this.useWindowEvents){let e=this.useWindowEvents?window:this.domElement;e.addEventListener("pointerleave",this.onPointerLeave),e.addEventListener("pointerenter",this.onPointerEnter)}this.pointerLeaveEvent=void 0}dispose(){this.removeEventListenersFromCamera(),this.domElement.removeEventListener("contextmenu",this.onContextMenu),this.domElement.removeEventListener("pointerdown",this.onPointerDown),this.domElement.removeEventListener("wheel",this.onMouseWheel),window.removeEventListener("keydown",this.onKeyDown,!1),window.removeEventListener("keyup",this.onKeyUp,!1),this.domElement.removeEventListener("pointermove",this.onPointerHover),window.removeEventListener("pointermove",this.onPointerHover),this.domElement.removeEventListener("gesturestart",this.onGesture),this.domElement.removeEventListener("gesturechange",this.onGesture),this.domElement.removeEventListener("gestureend",this.onGesture),this.domElement.removeEventListener("touchend",this.onTouchEnd),this.domElement.removeEventListener("pointerleave",this.onPointerLeave),this.domElement.removeEventListener("pointerenter",this.onPointerEnter),window.removeEventListener("pointerleave",this.onPointerLeave),window.removeEventListener("pointerenter",this.onPointerEnter),this.domElement.removeEventListener("pointermove",this.onPointerMove),this.domElement.removeEventListener("pointerup",this.onPointerUp)}applyLimits(e,t,i,r,a,o,h,c){let d,u,p;this.overShoot.set(0,0),e instanceof ib?(d=e.x,u=e.y,this.current.set(this.target.x,this.target.y),p=!0):(d=e.theta,u=e.phi,this.current.set(BG(this.spherical.theta),BG(this.spherical.phi)),p=!1),0===i&&(this.current.x+=d,this.current.y+=u),(3===t||2===t)&&(!p&&this.isThetaFlipped?this.current.x>r&&this.current.x<0?this.overShoot.x=r-this.current.x:this.current.x<a&&this.current.x>0&&(this.overShoot.x=a-this.current.x):this.current.x>r?this.overShoot.x=r-this.current.x:this.current.x<a&&(this.overShoot.x=a-this.current.x)),(3===t||1===t)&&(this.current.y>o?this.overShoot.y=o-this.current.y:this.current.y<h&&(this.overShoot.y=h-this.current.y)),p||(this.overShoot.x=BG(this.overShoot.x),this.overShoot.y=BG(this.overShoot.y)),0!==i?(this.overRatio.copy(this.overShoot).divide(c),this.overRatio.x=Math.min(Math.abs(this.overRatio.x),1),this.overRatio.y=Math.min(Math.abs(this.overRatio.y),1),1===i&&(this.overRatio.x=BH(Math.abs(this.overRatio.x)),this.overRatio.y=BH(Math.abs(this.overRatio.y))),this.isPointerDown||1===i?2===i&&(this.overRatio.x>.9&&!this.thetaIsFree||this.overRatio.y>.9&&!this.phiIsFree)?this.isPointerDown=!1:(d*this.overShoot.x<0&&!this.thetaIsFree&&(d*=1-this.overRatio.x),u*this.overShoot.y<0&&!this.phiIsFree&&(u*=1-this.overRatio.y)):2===i&&(!p&&(this.overRatio.x>.002&&!this.thetaIsFree||this.overRatio.y>.002&&!this.phiIsFree)||p&&(Math.abs(this.overShoot.x)>2||Math.abs(this.overShoot.y)>2)?(this.thetaIsFree||(d=.05*this.overShoot.x),this.phiIsFree||(u=.05*this.overShoot.y),p?this.isPanOverShoot=!0:this.isRotateOverSho
8167ot=!0):p?this.isPanOverShoot=!1:this.isRotateOverShoot=!1)):(d+=this.overShoot.x,u+=this.overShoot.y),e instanceof ib?(e.x=d,e.y=u):(this.thetaIsFree||(e.theta=d),this.phiIsFree||(e.phi=u))}setEnableDampingSpeed(e){this.enableDamping=e,this.rotateSpeed=!0===e?.2:1}stopDamping(){this.sphericalDelta.theta=0,this.sphericalDelta.phi=0}getAutoRotationAngle(){return 2*Math.PI/60/60*this.autoRotateSpeed}getZoomScale(){return Math.pow(.95,this.zoomSpeed)}rotateLeft(e){this.sphericalDelta.theta-=e}rotateUp(e){this.sphericalDelta.phi-=e}panLeft(e,t){this.panLeftV.setFromMatrixColumn(t,0),this.panLeftV.multiplyScalar(-e),this.panOffset.add(this.panLeftV)}panUp(e,t){this.panUpV.setFromMatrixColumn(t,1),this.panUpV.multiplyScalar(e),this.panOffset.add(this.panUpV)}pan(e,t){let i=this.domElement;if(i&&this.object.isPerspectiveCamera){let r=this.object.position;this.panV.copy(r).sub(this.target);let a=this.panV.length();a*=Math.tan(this.object.fov/2*Math.PI/180),this.panLeft(2*e*a/i.clientHeight,this.object.matrixWorld),this.panUp(2*t*a/i.clientHeight,this.object.matrixWorld)}else i&&this.object.isOrthographicCamera&&(this.panLeft(e*(this.object.right-this.object.left)/this.object.zoom/i.clientWidth,this.object.matrixWorld),this.panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/i.clientHeight,this.object.matrixWorld));this.dispatchEvent(BE)}dollyOut(e){this.object.isPerspectiveCamera?this.scale/=e:this.object.isOrthographicCamera&&(this.object.zoom*=e,this.zoomLimitsEnabled&&(this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom))),this.object.updateProjectionMatrix(),this.zoomChanged=!0),this.dispatchEvent(BE)}dollyIn(e){this.object.isPerspectiveCamera?this.scale*=e:this.object.isOrthographicCamera&&(this.object.zoom/=e,this.zoomLimitsEnabled&&(this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom))),this.object.updateProjectionMatrix(),this.zoomChanged=!0),this.dispatchEvent(BE)}setZoom(e){if(this.dispatchEvent(BC),this.object.isPerspectiveCamera){let t=this.initialSphericalRadius/e/this.spherical.radius;this.scale=t}else this.object.isOrthographicCamera&&(this.object.zoom=e,this.zoomLimitsEnabled&&(this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom))),this.object.updateProjectionMatrix(),this.zoomChanged=!0);this.dispatchEvent(BT)}handleMouseDownRotate(e){this.rotateStart.set(e.clientX,e.clientY)}handleMouseDownDolly(e){this.dollyStart.set(e.clientX,e.clientY)}handleMouseDownPan(e){this.panStart.set(e.clientX,e.clientY)}handleMouseMoveRotate(e,t=1){void 0!==e.movementX?this.rotateDelta.set(e.movementX,e.movementY):(this.rotateEnd.set(e.clientX,e.clientY),this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart),this.rotateStart.copy(this.rotateEnd)),this.rotateDelta.multiplyScalar(this.rotateSpeed*t).rotateAround(BL,-this.object.angleOffsetFromUp);let i=this.domElement,r=this.useWindowEvents?window.innerHeight:i.clientHeight,a=2*Math.PI*this.rotateDelta.x/r,o=2*Math.PI*this.rotateDelta.y/r;this.rotateLeft(a),this.rotateUp(o),this.update()}handleMouseMoveDolly(e){this.dollyEnd.set(e.clientX,e.clientY),this.dollyDelta.subVectors(this.dollyEnd,this.dollyStart),this.dollyDelta.y>0?this.dollyOut(this.getZoomScale()):this.dollyDelta.y<0&&this.dollyIn(this.getZoomScale()),this.dollyStart.copy(this.dollyEnd),this.update()}handleMouseMovePan(e,t=1){void 0!==e.movementX?this.panDelta.set(e.movementX,e.movementY):(this.panEnd.set(e.clientX,e.clientY),this.panDelta.subVectors(this.panEnd,this.panStart),this.panStart.copy(this.panEnd)),this.panDelta.multiplyScalar(this.panSpeed*t),this.pan(this.panDelta.x,this.panDelta.y),this.update()}handleMouseWheel(e){if(!1===pn&&!1===pu(e)&&!0==(0===e.wheelDeltaY||0===e.deltaY?!(ps&&e.shiftKey&&Math.abs(e.wheelDeltaX)>=120)&&(e.wheelDeltaX?e.wheelDeltaX===-3*e.deltaX||e.wheelDeltaX===-3*window.devicePixelRatio*e.deltaX:0===e.deltaMode):e.wheelDeltaY?e.wheelDeltaY===-3*e.deltaY||e.wheelDeltaY===-3*window.devicePixelRatio*e.deltaY:0===e.deltaMode))!1!==this.enablePan&&(this.gesture?(this.panDelta.set(-e.deltaX,-e.deltaY).multiplyScalar(this.panSpeed),this.panDelta.x=Math.min(Math.abs(this.panDelta.x),100)*(this.panDelta.x<0?-1:1),this.panDelta.y=Math.min(Math.abs(this.panDelta.y),100)*(this.panDelta.y<0?-1:1),e.altKey?this.pan(0,this.panDelta.y):e.shiftKey?this.pan(this.panDelta.x,0):this.pan(this.panDelta.x,this.panDelta.y),this.update()):(this.gesture=!0,this.isPointerDown=!0),window.clearTimeout(this.timer),this.timer=window.setTimeout(()=>{this.gesture=!1,this.isPointerDown=!1,this.dispatchEvent(BT)},30));else{if(!1===this.enableZoom||this.gesture)return;0===e.deltaY?e.deltaX<0?this.dollyIn(this.getZoomScale()):e.deltaX>0&&this.dollyOut(this.getZoomScale()):e.deltaY<0?this.dollyIn(this.getZoomScale()):e.deltaY>0&&this.dollyOut(this.getZoomScale()),this.update(),this.gesture=!1,this.isPointerDown=!1}}handleTouchStartRotate(){if(2===pp.length){let e=.5*(pp[0].pageX+pp[1].pageX),t=.5*(pp[0].pageY+pp[1].pageY);this.rotateStart.set(e,t)}else this.rotateStart.set(pp[0].pageX,pp[0].pageY)}handleTouchStartPan(){if(2===pp.length){let e=.5*(pp[0].pageX+pp[1].pageX),t=.5*(pp[0].pageY+pp[1].pageY);this.panStart.set(e,t)}else this.panStart.set(pp[0].pageX,pp[0].pageY)}handleTouchStartDolly(){let e=pp[0].pageX-pp[1].pageX,t=pp[0].pageY-pp[1].pageY,
8167i=Math.sqrt(e*e+t*t);this.dollyStart.set(0,i)}handleTouchStartDollyPan(){this.enableZoom&&!0===this.isTouchZoom&&this.handleTouchStartDolly(),this.enablePan&&this.handleTouchStartPan()}handleTouchStartDollyRotate(){this.enableZoom&&!0===this.isTouchZoom&&this.handleTouchStartDolly(),this.enableRotate&&this.handleTouchStartRotate()}handleTouchMoveRotate(e){if(2===pp.length){let t=pb(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this.rotateEnd.set(i,r)}else{if(e.pointerId!==pp[0].pointerId)return;this.rotateEnd.set(e.pageX,e.pageY)}this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;t&&(this.rotateLeft(2*Math.PI*this.rotateDelta.x/t.clientHeight),this.rotateUp(2*Math.PI*this.rotateDelta.y/t.clientHeight)),this.rotateStart.copy(this.rotateEnd)}handleTouchMovePan(e){if(2===pp.length){let t=pb(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this.panEnd.set(i,r)}else{if(e.pointerId!==pp[0].pointerId)return;this.panEnd.set(e.pageX,e.pageY)}this.panDelta.subVectors(this.panEnd,this.panStart).multiplyScalar(this.panSpeed),this.pan(this.panDelta.x,this.panDelta.y),this.panStart.copy(this.panEnd)}handleTouchMoveDolly(e){let t=pb(e),i=e.pageX-t.x,r=e.pageY-t.y,a=Math.sqrt(i*i+r*r);this.dollyEnd.set(0,a),this.dollyDelta.set(0,Math.pow(this.dollyEnd.y/this.dollyStart.y,this.zoomSpeed)),this.dollyOut(this.dollyDelta.y),this.dollyStart.copy(this.dollyEnd)}handleTouchMoveDollyPan(e){this.enableZoom&&!0===this.isTouchZoom&&this.handleTouchMoveDolly(e),this.enablePan&&this.handleTouchMovePan(e)}handleTouchMoveDollyRotate(e){this.enableZoom&&!0===this.isTouchZoom&&this.handleTouchMoveDolly(e),this.enableRotate&&this.handleTouchMoveRotate(e)}checkRaycastLock(){if(!this.object.data.raycastLock||this.options.isPlayMode)return!1;{let e=this.options?.showCameraLock;return e&&e(),!0}}};function BG(e){let t=2*Math.PI;for(;e<=-Math.PI;)e+=t;for(;e>Math.PI;)e-=t;return e}function BH(e){return 1-Math.pow(1-e,4)}var BW=class{constructor(e,t,i,r,a,o){for(let h of(this.id=e,this.data=t,this.object=i,this.page=r,this.currentIntersectedObjects=[],this.actions=RA(t,t.actions,r,a,o,i),this.target=t.target,this.triggeringObjects=[],t.triggeringObjects)){let e=r.scene.find(h);e&&this.triggeringObjects.push(e)}}isValidTriggeringObject(e){return"all"===this.target||this.triggeringObjects.some(t=>t===e||t.isAncestorOf(e.uuid)||e.isAncestorOf(t.uuid))}disconnect(){RM(this.actions)}dispatch(){this.object.destroyedInAction||(this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.object.dispatchEvent({type:"beginEvent",eventName:"Trigger"}),this.actions.Transition.forEach(e=>{"Toggle"===e.data.runMode?e.toggle():e.play()}),this.actions.SwitchCamera.forEach(e=>{"Toggle"===e.data.runMode?e.toggle():e.play()}),this.actions.TimelineAnimation.forEach(e=>{"Toggle"===e.data.runMode?e.toggle():e.play()}),this.actions.Link.forEach(e=>{e.dispatch()}),this.actions.Reset.forEach(e=>{e.dispatch()}),this.actions.Create.forEach(e=>{e.dispatch()}),this.actions.Destroy.forEach(e=>{e.dispatch(!1)}
8167),this.actions.Audio.forEach(e=>{e.dispatchBasic()}),this.actions.Particles.forEach(e=>{e.dispatchBasic()}),this.actions.Video.forEach(e=>{e.dispatchBasic()}),this.actions.SceneTransition.forEach(e=>{e.dispatch()}),this.actions.SetVariable.forEach(e=>e.checkConditions()),this.actions.SetVariable.forEach(e=>e.dispatch()),this.actions.DynamicVariablePlay.forEach(e=>e.dispatch()),this.actions.ClearLocalStorage.forEach(e=>e.dispatch()),this.actions.UserAPI.forEach(e=>e.dispatch()))}};pR.then(e=>td=e);var Bq=new ib,BX=new ix,BY=new ib,BQ=new i6(0,0,0,"YXZ"),BZ=new i6(0,0,0,"XYZ"),BK=new ib,BJ=new ib,B$=new ib(1,1,1),B0=new ix,B1=new iZ,B2=new iZ,B3={type:"updateMatrix"},B4=new ix,B5=new iV,B6={type:"beginEvent",eventName:"Collision"},B8={type:"beginEvent",eventName:"Trigger"},B9=e=>e.states.some(e=>void 0!==e.data.position||void 0!==e.data.rotation||void 0!==e.data.hiddenMatrix||void 0!==e.data.cloner||void 0!==e.data.pathSnapping),B7=class{constructor(e){this.eventContext=e,this.isEnabled=!1,this.gameControl=null,this.joysticks=[],this.joystickToGameControls=[],this.sharedGameControlGlobals={entitiesWithTransformAnim:[],entityToCollisionEvents:{},colliderToEntity:new Map,triggers:[],gamePads:[],createdObjects:[],nCreatedPerAction:{}},this.sensorToTriggerEvent={},this.eventManager=void 0,this.needsCollisionDetection=!1,this.initializationCounter=-1,this.rigidBodyToMesh=new Map,this.nActiveRigidBodies=0,this.collisionEvents=[],this.isExport=!1,this.skipRender=!0,this.processRigidBody=e=>{if(e.bodyType()!==td.RigidBodyType.Dynamic)return;e.isSleeping()||this.nActiveRigidBodies++;let[t,i,r]=this.rigidBodyToMesh.get(e.handle);if(Bq.copy(e.translation()).multiplyScalar(this.pixelsPerMeter),BX.copy(e.rotation()),t.matrixWorld.compose(Bq,BX,i),t.hasNonUniformScale&&t.matrixWorld.multiply(t.shearScale),t.dispatchEvent(B3),r){let e=t.cloner;if(e&&void 0===e.objectForSample)for(let i of(e.matrixWorld.copy(t.matrixWorld),e.children))i.updateMatrixWorld(!0);for(let e of t.children)e.updateMatrixWorld(!0)}},this.accumulator=0,this.handleCollisionEvents=(e,t,i)=>{let r,a;if(!1!==i){if(this.sensorToTriggerEvent[e]?(r=this.sensorToTriggerEvent[e],a=this.sharedGameControlGlobals.colliderToEntity.get(t)):this.sensorToTriggerEvent[t]&&(r=this.sensorToTriggerEvent[t],a=this.sharedGameControlGlobals.colliderToEntity.get(e)),r&&a&&r.isValidTriggeringObject(a)){r.dispatch();return}for(let i=this.sharedGameControlGlobals.createdObjects.length-1;i>=0;i--){let r=this.sharedGameControlGlobals.createdObjects[i];if(r.userData.hasCollisionDestroy&&(r.rigidBody?.collider(0).handle===e||r.rigidBody?.collider(0).handle===t)){this.sharedGameControlGlobals.createdObjects.splice(i,1),r.removeFromParent(),requestAnimationFrame(()=>this.sharedGameControlGlobals.rapierWorld?.removeRigidBody(r.rigidBody));break}}if(this.gameControl?.object!==void 0&&this.gameControl.object===this.sharedGameControlGlobals.colliderToEntity.get(e)){let e=this.sharedGameControlGlobals.colliderToEntity.get(t),i=this.sharedGameControlGlobals.entityToCollisionEvents[e.uuid];if(void 0===i)return;for(let r of i)"character"===r.data.target&&this.dispatchCollisionEvent(r,e,t)}else if(this.gameControl?.object!==void 0&&this.gameControl.object===this.sharedGameControlGlobals.colliderToEntity.get(t)){let t=this.sharedGameControlGlobals.colliderToEntity.get(e),i=this.sharedGameControlGlobals.entityToCollisionEvents[t.uuid];if(void 0===i)return;for(let r of i)"character"===r.data.target&&this.dispatchCollisionEvent(r,t,e)}else{let i=this.sharedGameControlGlobals.colliderToEntity.get(e),r=this.sharedGameControlGlobals.entityToCollisionEvents[i.uuid];if(void 0!==r)for(let t of r)"scene"===t.data.target&&this.dispatchCollisionEvent(t,i,e);let a=this.sharedGameControlGlobals.colliderToEntity.get(t),o=this.sharedGameControlGlobals.entityToCollisionEvents[a?.uuid];if(void 0!==o)for(let e of o)"scene"===e.data.target&&this.dispatchCollisionEvent(e,a,t)}}},this.isExport=e.isExport,this.sharedAssets=e.sharedAssets,this.renderer=e.renderer,this.requestRender=e.requestRender,this.domElement=this.renderer.domElement,this.pixelsPerMeter=200,this.gravity=this.page.data.globalPhysics.gravity}get page(){return this.eventContext.page}
8167attachVRControllers(e){e.forEach(e=>{e.addEventListener("connected",e=>{"gamepad"in e.data&&"axes"in e.data.gamepad&&this.sharedGameControlGlobals.gamePads.push(e.data.gamepad)})})}markIsDestroyTarget(){this.page.traverseVisibleEntity(e=>{for(let t of e.dataPatched.events){if(!0===t.data.disabled)continue;let e=t.data.actions?.find(e=>"Destroy"===e.data.type)?.data;if(e)for(let t of e.objects){let e=this.page.scene.find(t);e&&(e.userData.hasDestroy=!0)}}})}markIsDragObject(){this.page.traverseVisibleEntity(e=>{for(let t of e.dataPatched.events)if(!(!0===t.data.disabled||"DragDrop"!==t.data.type))for(let e of t.data.objects){let t=this.page.scene.find(e);t&&(t.userData.hasDrag=!0)}})}initBVH(){let e=[];if(this.page.traverseChildren(t=>{let i,r=t instanceof C8,a=t instanceof OC;if(t instanceof CT||r||a)return;let o=(i=t instanceof b3?t.object:t).dataPatched;if(o.physics?.enabled==="visibility"?!o.visible:!o.physics?.enabled)return!0;let h=t.geometry,c=!0===i.userData.hasDestroy,d=!0===i.userData.hasDrag;if(B9(o)||c||d||i.dataPatched.events.some(e=>!0!==e.data.disabled&&("GameControl"===e.data.type||"Follow"===e.data.type)))return t.updateMatrixWorldSVD(),this.addBoundsTree(t),!0;h&&h.getAttribute("position").count>0&&e.push(R8(h,t.matrixWorld))}),e.length>0){let t=vB(e,!1);this.sharedGameControlGlobals.staticMeshBVH=new bF(t)}}addRigidBody(e,t,i){if(R6(e.matrixWorld))return;let r=[],a="geometry"in e?e.geometry:void 0,o=t.dataPatched;if(a?.getAttribute("position")!==void 0&&r.push(R8(a,e.shearScale)),o.physics.fusedBody){let t=this.gatherChildrenGeom(e,r);e.traverseObject(t),e.children.forEach(e=>e.updateMatrixWorld(!0));let i=e.cloner;i&&void 0===i.objectForSample&&"dynamic"===o.physics.rigidBody&&(i.traverseObject(t),i.children.forEach(e=>e.updateMatrixWorld(!0)))}if(r.length>0){let h,c=!i.fromCreate&&"dynamic"===o.physics.rigidBody||i.fromCreate&&i.dynamic;c?(h=td.RigidBodyDesc.dynamic()).setLinearDamping(o.physics.damping).setAngularDamping(o.physics.damping).setAdditionalMass(1e-9).setGravityScale(o.physics.gravityScale).enabledRotations(...o.physics.enabledRotation).enabledTranslations(...o.physics.enabledTranslation):(i.hasTransformAnim||i.hasFollow||i.hasDrag)&&!i.fromCreate?(h=td.RigidBodyDesc.kinematicPositionBased(),this.sharedGameControlGlobals.entitiesWithTransformAnim.push(e)):h=td.RigidBodyDesc.fixed();let d=vB(r);(e.hasNonUniformScale?e.matrixWorldRigid:e.matrixWorld).decompose(Bq,BX,BY),e.position0=Bq.clone().divideScalar(this.pixelsPerMeter),e.rotation0=BX.clone(),Bq.divideScalar(this.pixelsPerMeter),h.setTranslation(Bq.x,Bq.y,Bq.z).setRotation(BX),a?d?.scale(1/this.pixelsPerMeter,1/this.pixelsPerMeter,1/this.pixelsPerMeter):d?.scale(BY.x/this.pixelsPerMeter,BY.y/this.pixelsPerMeter,BY.z/this.pixelsPerMeter);let u=this.sharedGameControlGlobals.rapierWorld.createRigidBody(h);c&&this.rigidBodyToMesh.set(u.handle,[e,BY.clone(),o.physics.fusedBody]);let p=!(void 0===o.geometry||"SubdivGeometry"===o.geometry.type||"NonParametricGeometry"===o.geometry.type||"BooleanGeometry"===o.geometry.type||"VectorGeometry"===o.geometry.type||"StarGeometry"===o.geometry.type||"RectangleGeometry"===o.geometry.type||"EllipseGeometry"===o.geometry.type||"TriangleGeometry"===o.geometry.type||"TorusGeometry"===o.geometry.type||"HelixGeometry"===o.geometry.type);try{this.addCollider(u,o.physics,d,t,p)}catch{try{this.addCollider(u,o.physics,d,t,!1)}catch(e){console.error(e)}}e.rigidBody=u}}addBoundsTree(e){let t=[];if(e.geometry?.getAttribute("position")!==void 0&&e.geometry?.getAttribute("position").count>0&&t.push(R8(e.geometry,e.shearScale)),e.traverseObject(this.gatherChildrenGeom(e,t)),e.children.forEach(e=>e.updateMatrixWorld(!0)),t.length>0){let i=vB(t,!1);e.bvhGeometry=i,i.getAttribute("position").count>0&&(e.bvhGeometry.boundsTree=new bF(i),this.sharedGameControlGlobals.entitiesWithTransformAnim.push(e))}}addCollider(e,t,i,r,a=!0){let o;if(i?.getAttribute("position").count===0||i?.getIndex()?.count===0)return;i&&(o="trimesh"===t.colliderType?td.ColliderDesc.trimesh(i.getAttribute("position").array,i.getIndex().array):td.ColliderDesc.convexMesh(i.getAttribute("position").array,a?i.getIndex().array:void 0)),o.setFrictionCombineRule(td.CoefficientCombineRule.Average).setRestitutionCombineRule(td.CoefficientCombineRule.Average).setDensity(t.density).setFriction(t.friction).setRestitution(t.restitution);let h=this.sharedGameControlGlobals.rapierWorld.createCollider(o,e);this.sharedGameControlGlobals.colliderToEntity.set(h.handle,r),this.sharedGameControlGlobals.entityToCollisionEvents[r.uuid]?.some(e=>"scene"===e.target)&&h.setActiveEvents(td.ActiveEvents.COLLISION_EVENTS)}gatherChildrenGeom(e,t){return(i,r)=>{let a;if(0===r)return;if(i instanceof CT){if(!i.objectForSample)return!0===i.object.dataPatched.physics.fusedBody&&"dynamic"===i.object.dataPatched.physics.rigidBody||void 0;if(i.objectForSample.dataPatched.physics.fusedBody)return;a=i.object}else if(i instanceof b3)a=i.object;else if(a=i,a.dataPatched.cloner?.hideBase)return!0;let o=a.dataPatched;
8167if("visibility"===o.physics.enabled?!o.visible:!o.physics.enabled)return!0;1===r?e.hasNonUniformScale?i.matrixWorld.multiplyMatrices(e.shearScale,i.hiddenMatrix):i.matrixWorld.copy(i.hiddenMatrix):i.matrixWorld.multiplyMatrices(i.parent.matrixWorld,i.hiddenMatrix),i.matrixWorld.multiply(i.matrix);let h=i.geometry;h?.getAttribute("position")!==void 0&&t.push(R8(h,i.matrixWorld))}}activate(e){if(this.isEnabled)return;this.isEnabled=!0,this.eventManager=e,this.usePhysics=this.page.data.globalPhysics.usePhysics;let t=this.page.playCamera,i=!1,r=5,a=8,o=9,h="drag",c=this.page.data.publish.gameControlObject,d=null!==c?this.page.find(c):null,u=null;if(d)for(let e of d.data.events){if(e.data.disabled||"GameControl"!==e.data.type)continue;let t=d;for(;this.usePhysics&&(t=t.parent)?.parent!==null;)t.data.physics?.fusedBody;e.data.collisionEnabled&&(this.needsCollisionDetection=!0),null===u&&(u=e.data)}if(this.page.traverseEntity(e=>{for(let t of e.dataPatched.events)if(!1===t.data.disabled&&"Trigger"===t.data.type)return this.needsCollisionDetection=!0,!0}),d&&u&&(!0===d.data.visible||!0===d.data.physics.enabled)){i=i||u.camera===t.uuid||d.uuid===t.uuid;let e=new R4(d,this.renderer.domElement,u,this.eventContext.page.data.globalPhysics,this,d.uuid!==t.uuid&&u.camera===t.uuid,t,this.page,this.sharedAssets);this.gameControl=e,r=u.joystickPosLoc,a=u.joystickRotLoc,o=u.jumpTouchButtonLoc,h=u.rotByTouch,po&&u.touchControl&&(this.joystickToGameControls[r]="pos","walk"===u.moveMode&&(this.joystickToGameControls[o]="jmp"),"joystick"===h&&(this.joystickToGameControls[a]="rot"))}if(this.gameControl&&this.gameControl.data.navmesh.enabled){let e=this.gameControl.data;if(!this.navigationMeshWrapper){let t;this.navigationMeshWrapper=new BA(this.usePhysics,this.isExport),t=Math.floor((t="sphere"===e.collider.type?2*e.collider.radius:e.collider.height)/e.navmesh.ch-1),this.navigationMeshWrapper.init({...e.navmesh,walkableHeight:t},this.gameControl,this.eventContext)}}if(!1===i){let{enableRotate:e,enablePan:i,enableZoom:r,autoRotate:a,hoverRotatePanMode:o}=this.eventManager.publish.orbitControls;(e||i||r||a||0!==o)&&(this.orbitControls=new Bj(t,this.renderer.domElement,{isExport:this.isExport,isPlayMode:!0}),this.orbitControls.addEventListener("change",this.requestRender),this.orbitControls.addEventListener("end",this.requestRender),this.orbitControls.addEventListener("start",this.requestRender),this.orbitControls.fromJSON(this.eventManager.publish.orbitControls,this.eventManager.publish.mouseEventTarget),this.orbitControls.useKeyEvents=!1,this.orbitControls.addEventListenersToCamera(),this.orbitControls.connect(),this.orbitControls.update())}let p=this.renderer.domElement.width/this.renderer.getPixelRatio(),f=this.renderer.domElement.height/this.renderer.getPixelRatio();this.joystickToGameControls.forEach((e,t)=>{let i=document.body.appendChild(document.createElement("div")),[r,a,o]=this.eventManager.eventContext.publish.joystickSizeAndXYOffset[t],h=(p-5*r)/4+r,c={},d="jmp"===e,u=d?0:r;for(let e in t<10?(t<5?c.top=u/2:c.bottom=u/2,c.left=u/2+t%5*h):(10===t?c.left=u/2:c.right=u/2,c.top=f/2),c.top?c.top-=a[1]:c.bottom+=a[1],c.left?c.left+=a[0]:c.right-=a[0],c)c[e]+="px";if(d){let e=i.appendChild(document.createElement("div"));Object.assign(e.style,c,{position:"absolute",width:r+"px",height:r+"px",backgroundColor:`rgba(255,255,255,${"show"===o?.4:0})`,zIndex:"9999",borderRadius:r+"px",border:"show"===o?"solid 2px rgba(0, 0, 0, .1)":"none",display:"flex",alignItems:"center",justifyContent:"center",touchAction:"none"});let a=r/16*6.4;"show"===o&&(e.innerHTML=`
8168						<svg width="${a}" height="${.4*r}" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
8169							<path d="M2 10L8 4L14 10" stroke="black" stroke-opacity="40%" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
8170						</svg>
8171					`),e.addEventListener("pointerdown",()=>{this.gameControl.movementState.jump=1,this.requestRender()}),e.addEventListener("touchend",e=>e.preventDefault()),this.joysticks[t]=[void 0,i];return}let m={zone:i,mode:"static",position:c,size:r};"hide"===o&&(m.restOpacity=0);let g=IU.create(m);g.on("move",(t,i)=>{let r=this.gameControl;"pos"===e?i.force<.2?r.moveForce=0:(r.movementState.movePosZ=Math.sin(-i.angle.radian),r.movementState.movePosX=Math.cos(-i.angle.radian),i.force>1.2?r.movementState.run=1:r.movementState.run=0,i.force<.3?r.moveForce=(i.force-.2)/.1:r.moveForce=1):"rot"===e&&(i.force<.2?r.rotForce=0:(r.movementState.rotPosX=i.vector.y,r.movementState.rotPosY=-i.vector.x,i.force<.3?r.rotForce=(i.force-.2)/.1:r.rotForce=1)),this.requestRender()}),g.on("end",(t,i)=>{let r=this.gameControl;"pos"===e?(r.movementState.movePosZ=0,r.movementState.movePosX=0,r.moveForce=1):"rot"===e&&(r.movementState.rotPosX=0,r.movementState.rotPosY=0,r.rotForce=1)}),this.joysticks[t]=[g,i]}),this.markIsDestroyTarget(),this.markIsDragObject(),this.rebuildBVH(),this.initializationCounter++,window.setTimeout(()=>
8171{this.collisionEvents.forEach(e=>e.initialDisabled=!1)},80)}initPhysics(){this.sharedGameControlGlobals.rapierWorld?.free(),this.sharedGameControlGlobals.rapierWorld=new td.World(new td.Vector3(0,this.gravity,0)),this.events=new td.EventQueue(!0);let e=[],t=[];if(this.page.traverseChildren(i=>{let r;if(i instanceof CT){if(!i.objectForSample)return!0===i.object.dataPatched.physics.fusedBody&&"dynamic"===i.object.dataPatched.physics.rigidBody||void 0;if(i.objectForSample.dataPatched.physics.fusedBody)return;r=i.object}else if(i instanceof b3)r=i.object;else{if(i instanceof OC||i instanceof C8)return;if(r=i,r.dataPatched.cloner?.disabled===!1&&r.dataPatched.cloner?.hideBase&&r.dataPatched.physics?.fusedBody!==!0)return!0}let a=r.dataPatched,o;for(let e of a.events)!0!==e.data.disabled&&"GameControl"===e.data.type&&(o=e.data);if(!a.physics||("visibility"===a.physics.enabled?!a.visible:!a.physics.enabled))return!0;i.updateMatrixWorldSVD();let h=B9(a),c=!1,d=r.userData.hasDestroy,u=r.userData.hasDrag,p=!1;for(let e of a.events)if(!0!==e.data.disabled){if("Collision"===e.data.type){c=!0;let t=new Bu(e.id,e.data,r,this.page,this.sharedAssets,this.eventManager);t.initialDisabled=!0,this.collisionEvents.push(t),this.sharedGameControlGlobals.entityToCollisionEvents[r.uuid]&&this.sharedGameControlGlobals.entityToCollisionEvents[r.uuid].every(t=>t.id!==e.id)?this.sharedGameControlGlobals.entityToCollisionEvents[r.uuid].push(t):this.sharedGameControlGlobals.entityToCollisionEvents[r.uuid]=[t]}else if("Follow"===e.data.type){p=!0;let t=e.data.target;i.traverseVisible(e=>{e.userData.isFollowingObj=t})}}"dynamic"===a.physics.rigidBody&&!1===a.physics.fusedBody&&(i.matrixWorldFusedFalse=i.matrixWorld.clone());let f=i.geometry;if(void 0!==o){let e,t=td.RigidBodyDesc.kinematicPositionBased();(i.hasNonUniformScale?i.matrixWorldRigid:i.matrixWorld).decompose(Bq,BX,BY),i.position0=Bq.clone().divideScalar(this.pixelsPerMeter),i.rotation0=BX.clone(),Bq.divideScalar(this.pixelsPerMeter),t.setTranslation(Bq.x,Bq.y,Bq.z).setRotation(BX);let h=this.sharedGameControlGlobals.rapierWorld.createRigidBody(t);i.rigidBody=h,(e="sphere"===o.collider.type?td.ColliderDesc.ball(o.collider.radius/this.pixelsPerMeter):"capsule"===o.collider.type?td.ColliderDesc.capsule((o.collider.height/2-o.collider.radius)/this.pixelsPerMeter,o.collider.radius/this.pixelsPerMeter):td.ColliderDesc.cuboid(o.collider.width/this.pixelsPerMeter/2,o.collider.height/this.pixelsPerMeter/2,o.collider.depth/this.pixelsPerMeter/2)).setFrictionCombineRule(td.CoefficientCombineRule.Average).setRestitutionCombineRule(td.CoefficientCombineRule.Average).setDensity(a.physics.density).setFriction(a.physics.friction).setRestitution(a.physics.restitution);let c=this.sharedGameControlGlobals.rapierWorld.createCollider(e,h);this.sharedGameControlGlobals.colliderToEntity.set(c.handle,r),Bq.fromArray(o.collider.position).multiply(BY.setFromMatrixScale(r.matrixWorld)).divideScalar(this.pixelsPerMeter),c.setTranslationWrtParent(Bq);let d=new ix().setFromEuler(new i6().setFromVector3(new ib().fromArray(o.collider.rotation)));c.setRotationWrtParent(d),c.setActiveEvents(td.ActiveEvents.COLLISION_EVENTS),this.generateSensorColliderDescs(r,!0)}else"dynamic"===a.physics.rigidBody||h||p||d||u||c?(this.addRigidBody(i,r,{hasFollow:p,hasTransformAnim:h,hasDrag:u}),this.generateSensorColliderDescs(r,a.physics.fusedBody)):(f&&e.push(R8(f,i.matrixWorld)),a.physics.fusedBody&&i.traverseObject((t,i)=>{let r;if(0===i)return;if(t instanceof CT){if(!t.objectForSample)return!0===t.object.dataPatched.physics.fusedBody&&"dynamic"===t.object.dataPatched.physics.rigidBody||void 0;if(t.objectForSample.dataPatched.physics.fusedBody)return;r=t.object}else{if(t instanceof OC||t instanceof C8)return;if(t instanceof b3)r=t.object;else if(r=t,r.dataPatched.cloner?.hideBase)return!0}let a=r.dataPatched;if("visibility"===a.physics.enabled?!a.visible:!a.physics.enabled)return!0;let o=t.geometry;o?.getAttribute("position")!==void 0&&e.push(R8(o,t.matrixWorld))}),this.generateSensorColliderDescs(r,a.physics.fusedBody,t));if(a.physics?.fusedBody===!0||o)return!0}),0===e.length)return;let i=vB(e);i.scale(1/this.pixelsPerMeter,1/this.pixelsPerMeter,1/this.pixelsPerMeter);let r=td.RigidBodyDesc.fixed(),a=this.sharedGameControlGlobals.rapierWorld.createRigidBody(r),o=td.ColliderDesc.trimesh(i.getAttribute("position").array,i.getIndex().array).setFrictionCombineRule(td.CoefficientCombineRule.Multiply).setRestitutionCombineRule(td.CoefficientCombineRule.Multiply).setFriction(1).setRestitution(1);for(let[e,i]of(this.sharedGameControlGlobals.rapierWorld.createCollider(o,a),t)){let t=this.sharedGameControlGlobals.rapierWorld.createCollider(e,a);this.sensorToTriggerEvent[t.handle]=i}}updatePositions(){return this.nActiveRigidBodies=0,this.sharedGameControlGlobals.rapierWorld.forEachRigidBody(this.processRigidBody),this.nActiveRigidBodies>0}rebuildBVH(){this.usePhysics?this.initPhysics():(this.page.traverseEntity(e=>{for(let t of e.dataPatched.events)if("Trigger"===t.data.type&&!0!==t.data.disabled){let i=new BW(t.id,t.data,e,this.page,this.sharedAssets,this.eventManager),r=new iZ().compose(BK.fromArray(t.data.position),B0.setFromEuler(BZ.fromArray(t.data.rotation)),B$);if("box"===t.data.triggerZone){let a=new i_;a.min.fromArray(t.data.size).multiplyScalar(-.5),a.max.fromArray(t.data.size).multiplyScalar(.5),this.sharedGameControlGlobals.triggers.push([a,r,e,i])}else this.sharedGameControlGlobals.triggers.push([t.data.radius,r,e,i])}}),this.needsCollisionDetection&&this.initBVH())}
8171disconnectEvents(){this.collisionEvents.forEach(e=>e.disconnect()),this.sharedGameControlGlobals.triggers.forEach(e=>e[3].disconnect()),this.sharedGameControlGlobals.triggers.length=0}deactivate(){if(this.isEnabled){for(let e of(this.isEnabled=!1,this.page.traverse(e=>{e.matrixWorldFusedFalse&&(e.matrixWorldFusedFalse=void 0),e.rigidBody&&(e.rigidBody=void 0),e.position0&&(e.position0=void 0),e.rotation0&&(e.rotation0=void 0)}),this.sharedGameControlGlobals.rapierWorld?.free(),this.sharedGameControlGlobals.rapierWorld=void 0,this.sharedGameControlGlobals.staticMeshBVH=void 0,this.accumulator=0,this.sharedGameControlGlobals.entitiesWithTransformAnim=[],this.disconnectEvents(),this.gameControl?.reset(),this.gameControl?.dispose(),this.gameControl=null,this.initializationCounter=-1,this.joysticks.forEach(([e,t])=>{e?.destroy(),t.remove()}),this.joystickToGameControls=[],this.joysticks=[],this.orbitControls&&(this.orbitControls.dispose(),this.orbitControls=void 0),this.navigationMeshWrapper?.dispose(),this.navigationMeshWrapper=void 0,Object.values(this.sharedGameControlGlobals.entityToCollisionEvents)))e.forEach(e=>e.disconnect());this.sharedGameControlGlobals.entityToCollisionEvents={},this.page.updateMatrixWorld(!0)}}update(e,t,i){if(!this.isEnabled)return!0;let r=!0;if(void 0!==this.orbitControls&&this.orbitControls.needsUpdate&&(this.orbitControls.update(),r=!this.orbitControls.isCurrentlyDamping),this.initializationCounter>=0&&this.initializationCounter<2?(this.initializationCounter++,r=!1):2===this.initializationCounter&&this.gameControl&&(r=!this.gameControl.update(e,t,i)&&r),!1===this.usePhysics&&this.checkTrigger(),this.usePhysics){if(0===e)r=this.stepPhysics()&&r;else{let t=e/1e3;t<.016666666666666666&&t>.009166666666666667&&(t=.016666666666666666),this.accumulator+=t;let i=performance.now(),a=0;for(;this.accumulator>=.016666666666666666&&a<6&&(r=this.stepPhysics()&&r,this.accumulator-=.016666666666666666,a++,!(performance.now()-i>16.666666666666668)););this.accumulator=this.accumulator%.016666666666666666}}this.skipRender=r}stepPhysics(){for(let e of this.sharedGameControlGlobals.entitiesWithTransformAnim)(e.hasNonUniformScale?e.matrixWorldRigid:e.matrixWorld).decompose(Bq,BX,BY),BQ.setFromQuaternion(BX),void 0===e.prevR?(e.prevR=BQ.clone(),e.prevT=Bq.clone()):(e.prevR.copy(BQ),e.prevT.copy(Bq)),e.rigidBody&&(e.rigidBody.setNextKinematicTranslation(Bq.divideScalar(this.pixelsPerMeter)),e.rigidBody.setNextKinematicRotation(BX));return this.sharedGameControlGlobals.rapierWorld.step(this.events),this.events?.drainCollisionEvents(this.handleCollisionEvents),!this.updatePositions()}dispatchCollisionEvent(e,t,i){let r=(this.sharedGameControlGlobals.rapierWorld?.getCollider(i))._parent,a;if(t.cloner){for(let e of t.cloner.children)if(e.rigidBody===r){a=e;break}}e.dispatch(a),t.dispatchEvent(B6)}updateUseWindowEvents(e){this.orbitControls?.updateUseWindowEvents(e)}generateSensorColliderDescs(e,t,i){let r=B2.copy(e.matrixWorld).invert();e.traverseEntity((a,o)=>{if(!1===t&&1===o)return!0;for(let t of a.dataPatched.events)if("Trigger"===t.data.type&&!0!==t.data.disabled){let o=new BW(t.id,t.data,a,this.page,this.sharedAssets,this.eventManager),h;if((h="box"===t.data.triggerZone?td.ColliderDesc.cuboid(...t.data.size.map(e=>e/(2*this.pixelsPerMeter))):td.ColliderDesc.ball(t.data.radius/this.pixelsPerMeter)).setDensity(0).setSensor(!0).setActiveEvents(td.ActiveEvents.COLLISION_EVENTS),BK.fromArray(t.data.position),B0.setFromEuler(BZ.fromArray(t.data.rotation)),B1.compose(BK,B0,B$).premultiply(a.matrixWorld),i?(B1.decompose(BK,B0,BJ),h.setActiveCollisionTypes(td.ActiveCollisionTypes.KINEMATIC_FIXED|td.ActiveCollisionTypes.DYNAMIC_FIXED)):(B1.premultiply(r).decompose(BK,B0,BJ),e.rigidBody.bodyType()===td.RigidBodyType.Dynamic||(e.rigidBody.bodyType()===td.RigidBodyType.Fixed?h.setActiveCollisionTypes(td.ActiveCollisionTypes.KINEMATIC_FIXED|td.ActiveCollisionTypes.DYNAMIC_FIXED):h.setActiveCollisionTypes(td.ActiveCollisionTypes.KINEMATIC_KINEMATIC|td.ActiveCollisionTypes.DYNAMIC_KINEMATIC))),BK.divideScalar(this.pixelsPerMeter),h.setTranslation(BK.x,BK.y,BK.z),h.setRotation(B0),i)i.push([h,o]);else{let t=this.sharedGameControlGlobals.rapierWorld.createCollider(h,e.rigidBody);this.sensorToTriggerEvent[t.handle]=o}}})}checkTrigger(){let e;for(let t=0;t<this.sharedGameControlGlobals.triggers.length;t++){let[i,r,a,o]=this.sharedGameControlGlobals.triggers[t];for(let t=0;t<this.sharedGameControlGlobals.entitiesWithTransformAnim.length;t++){let h=this.sharedGameControlGlobals.entitiesWithTransformAnim[t];if(a===h||!1===o.isValidTriggeringObject(_S.is(h)?h:h.object))continue;let c=B2.copy(a.matrixWorld).decompose(BK,B4,BJ).compose(BK,B4,B$).multiply(r),d=B1.copy(h.matrixWorld).invert().multiply(c);i instanceof i_?e=h.bvhGeometry.boundsTree.intersectsBox(i,d):(B5.radius=i,B5.center.setFromMatrixPosition(d),e=h.bvhGeometry.boundsTree.intersectsSphere(B5)),e?-1===o.currentIntersectedObjects.indexOf(h)&&(o.currentIntersectedObjects.push(h),o.dispatch(),a.dispatchEvent(B8)):o.currentIntersectedObjects=o.currentIntersectedObjects.filter(e=>e!==h)}}}};function ze(e){let t=this._clip.duration,i=this._clip.start??0,r=this.loop,a=this.time+e,o=this._loopCount,h=2202===r;if(0===e)return -1===o?a:h&&(1&o)==1?t-(a-i):a;if(2200===r){-1===o&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(a>=t)a=t;else if(a<0)a=0;else{this.time=a;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=a,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(-1===o&&(e>=0?(o=0,this._setEndings(!0,0===this.repetitions,h)):this._setEndings(0===this.repetitions,!0,h)),a>=t||a<i){let r=Math.floor((a-i)/(t-i));a-=(t-i)*r,o+=Math.abs(r);let c=this.repetitions-o;if(c<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,h||(a=e>0?t:i,1===this.repetitions&&(a=t)),this.time=a,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(1===c){let t=e<0;this._setEndings(t,!t,h)}else this._setEndings(!1,!1,h);this._loopCount=o,this.time=a,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:r})}}else this.time=a;if(h&&(1&o)==1)return t-(a-i)}return a}var zt=!1,zi=class{constructor(e,t,i,r){this.scene=e,this.requestRender=t,this.updateDisplayProgress=i,this.animationInspectorState=r,this.clipIdToAction={},this.activeClip=null,this.needsUpdate=!1,this.addClip=e=>{"Empty"===e.data.type&&e.data.animations&&e.data.animations.forEach((t,i)=>{let r=t[0]+"/";if(Array.isArray(e.identity)?r+=e.identity[0]:r+=e.uuid,this.clipIdToAction[r])return;let a=o2.parse(JSON.parse(t[2]));e.animations[i]=a;let o=this.mixer.clipAction(a,e);
8171!1===zt&&(Object.getPrototypeOf(o)._updateTime=ze,zt=!0),o.clampWhenFinished=!0,this.clipIdToAction[r]=o})},this.mixer=new lI(e),this.scene.traverseEntity(this.addClip)}deleteClip(e,t){let i=this.scene.find(t);if(!i)return;let r=i.animations.find(t=>t.uuid===e);if(!r)return;let a=this.clipIdToAction[e];a&&(a.stop(),this.mixer.uncacheClip(r),delete this.clipIdToAction[e],i.animations=i.animations.filter(t=>t.uuid!==e))}get isPlaying(){return Object.values(this.clipIdToAction).some(e=>e.isRunning())}playFromInspector(e){this.mixer.stopAllAction();let t=this.clipIdToAction[e];t&&(t.play(),this.activeClip=t.getClip(),this.requestRender())}onExitPlayMode(){Object.values(this.clipIdToAction).forEach(e=>{e.repetitions=1/0,e.loop=2201}),this.mixer.stopAllAction(),this.requestRender()}play(e){let t=e.clipId+"/"+e.object,i=this.clipIdToAction[t];if(i)return e&&(e.repeat>=0&&(i.repetitions=e.repeat+1),"pingpong"===e.direction&&0!==e.repeat&&(i.loop=2202)),i.play(),i.paused=!1,this.requestRender(),i}resumeFromInspector(e){let t=this.clipIdToAction[e];t&&(t.play(),t.paused=!1,this.requestRender())}pauseFromInspector(e){let t=this.clipIdToAction[e];t&&(t.paused=!0)}stop(){this.mixer.stopAllAction(),this.requestRender()}update(e){if(this.needsUpdate)this.needsUpdate=!1;else if(!1===this.isPlaying||this.animationInspectorState?.isScrubbing)return;this.mixer.update(e/1e3),this.activeClip&&this.updateDisplayProgress(Math.round(this.mixer.time/this.activeClip.duration*(this.maxFrames-1)%(this.maxFrames-1))),this.requestRender()}get maxFrames(){return Rg(this.activeClip??void 0)}setProgressFromInspector(e,t){if(!this.clipIdToAction[t])return;this.activeClip!==this.clipIdToAction[t].getClip()&&this.playFromInspector(t);let i=this.clipIdToAction[t].paused;this.clipIdToAction[t].paused=!1,this.mixer.setTime(Math.min(e/(this.maxFrames-1),.9999)*this.activeClip.duration),this.requestRender(),i&&(this.clipIdToAction[t].paused=!0)}},zr=new WeakMap,zs=class extends o6{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,i,r){let a=new o7(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,e=>{this.decodeDracoFile(e,t).catch(r)},i,r)}decodeDracoFile(e,t,i,r){let a={attributeIDs:i||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!i};return this.decodeGeometry(e,a).then(t)}decodeGeometry(e,t){let i=JSON.stringify(t);if(zr.has(e)){let t=zr.get(e);if(t.key===i)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let r,a=this.workerNextTaskID++,o=e.byteLength,h=this._getWorker(a,o).then(i=>(r=i,new Promise((i,o)=>{r._callbacks[a]={resolve:i,reject:o},r.postMessage({type:"decode",id:a,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return h.catch(()=>!0).then(()=>{r&&a&&this._releaseTask(r,a)}),zr.set(e,{key:i,promise:h}),h}_createGeometry(e){let t=new rU;e.index&&t.setIndex(new rT(e.index.array,1));for(let i=0;i<e.attributes.length;i++){let r=e.attributes[i],a=r.name,o=r.array,h=r.itemSize;t.setAttribute(a,new rT(o,h))}return t}_loadLibrary(e,t){let i=new o7(this.manager);return i.setPath(this.decoderPath),i.setResponseType(t),i.setWithCredentials(this.withCredentials),new Promise((t,r)=>{i.load(e,t,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{let i=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let r=za.toString(),a=["/* draco decoder */",i,"","/* worker */",r.substring(r.indexOf("{")+1,r.lastIndexOf("}"))].join(`
8172`);this.workerSourceURL=URL.createObjectURL(new Blob([a]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>
8172{if(this.workerPool.length<this.workerLimit){let e=new Worker(this.workerSourceURL);e._callbacks={},e._taskCosts={},e._taskLoad=0,e.postMessage({type:"init",decoderConfig:this.decoderConfig}),e.onmessage=function(t){let i=t.data;switch(i.type){case"decode":e._callbacks[i.id].resolve(i);break;case"error":e._callbacks[i.id].reject(i);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+i.type+'"')}},this.workerPool.push(e)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});let i=this.workerPool[this.workerPool.length-1];return i._taskCosts[e]=t,i._taskLoad+=t,i})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,""!==this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),this}};function za(){let e,t;onmessage=function(i){let r=i.data;switch(r.type){case"init":e=r.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case"decode":let a=r.buffer,o=r.taskConfig;t.then(e=>{let t=e.draco,i=new t.Decoder,h=new t.DecoderBuffer;h.Init(new Int8Array(a),a.byteLength);try{let e=function(e,t,i,r){let a=r.attributeIDs,o=r.attributeTypes,h,c,d=t.GetEncodedGeometryType(i);if(d===e.TRIANGULAR_MESH)h=new e.Mesh,c=t.DecodeBufferToMesh(i,h);else if(d===e.POINT_CLOUD)h=new e.PointCloud,c=t.DecodeBufferToPointCloud(i,h);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!c.ok()||0===h.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+c.error_msg());let u={index:null,attributes:[]};for(let i in a){let c=self[o[i]],d,p;if(r.useUniqueIDs)p=a[i],d=t.GetAttributeByUniqueId(h,p);else{if(-1===(p=t.GetAttributeId(h,e[a[i]])))continue;d=t.GetAttribute(h,p)}u.attributes.push(function(e,t,i,r,a,o){let h=o.num_components(),c=i.num_points()*h,d=c*a.BYTES_PER_ELEMENT,u=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,a),p=e._malloc(d);t.GetAttributeDataArrayForAllPoints(i,o,u,d,p);let f=new a(e.HEAPF32.buffer,p,c).slice();return e._free(p),{name:r,array:f,itemSize:h}}(e,t,h,i,c,d))}return d===e.TRIANGULAR_MESH&&(u.index=function(e,t,i){let r=3*i.num_faces(),a=4*r,o=e._malloc(a);t.GetTrianglesUInt32Array(i,a,o);let h=new Uint32Array(e.HEAPF32.buffer,o,r).slice();return e._free(o),{array:h,itemSize:1}}(e,t,h)),e.destroy(h),u}(t,i,h,o),a=e.attributes.map(e=>e.array.buffer);e.index&&a.push(e.index.array.buffer),self.postMessage({type:"decode",id:r.id,geometry:e},a)}catch(e){console.error(e),self.postMessage({type:"error",id:r.id,error:e.message})}finally{t.destroy(h),t.destroy(i)}})}}}function zn(e){return tu||(tu=new zs).setDecoderPath(e?`${e}/`:"https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload(),tu.decoderPending}async function zo(e){if(tu){let t={attributeIDs:tu.defaultAttributeIDs,attributeTypes:tu.defaultAttributeTypes,useUniqueIDs:!1},i;try{i=await tu.decodeGeometry(new Int8Array(e).buffer,t)}catch(e){console.error(e)}if(i)return{index:i.index?{array:i.index.array}:void 0,attributes:Object.entries(i.attributes).map(([e,t])=>({name:e,itemSize:t.itemSize,array:t.array}))}}return null}async function zl(e,t){let[i,r]=fi(mC.deserialize(new Uint8Array(e)));return vL(i),t&&t(i),r.result().data}async function zh(e){for(let t of e){let e=await zo(t.geometry.data.draco);if(e){let i=t.geometry.data;e.index&&(i.index={array:e.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let r={};e.attributes.forEach(({name:e,array:t,itemSize:i})=>{r[e]={array:t,itemSize:i,type:"Float32Array",normalized:!1}}),i.attributes=r,i.draco=void 0}}}var zc=class{constructor(){this._clickCount=0,this._lastTime=0,this._lastPosition=[0,0],this._delay=500,this._distance=2,this._onMouseDown=e=>{let t=[e.clientX,e.clientY],i=new Date().getTime();if(this._clickCount>0){let e=t[0]-this._lastPosition[0],i=t[1]-this._lastPosition[1];Math.sqrt(e*e+i*i)>this._distance&&(this._clickCount=0)}this._lastPosition=t,this._clickCount=i-this._lastTime>this._delay?1:this._clickCount+1,this._lastTime=i},this._onMouseUp=e=>{}}start(e,t=500,i=2){this._target&&this.stop(),this.reset(),this._delay=t,this._distance=i,this._target=e,this._target.addEventListener("pointerdown",this._onMouseDown,!1),this._target.addEventListener("pointerup",this._onMouseUp,!1)}stop(){this._target&&(this._target.removeEventListener("pointerdown",this._onMouseDown,!1),this._target.removeEventListener("pointerup",this._onMouseUp,!1),this._target=void 0)}get clickCount(){return this._clickCount}reset(){this._clickCount=0,this._lastTime=0,this._lastPosition=[0,0]}},zd=class{constructor(e,t,i,r,a,o,h,c){this.eventId=e,this.id=t,this.data=i,this.dataEvent=r,this.object=a,this.stage=!1,this.actions=RA(r,i.actions,o,h,c,a)}disconnect(){RM(this.actions)}
8172dispatchIn(){this.actions.Audio.forEach(e=>e.dispatchBasic()),this.actions.Particles.forEach(e=>e.dispatchBasic()),this.actions.Video.forEach(e=>e.dispatchBasic()),this.actions.Create.forEach(e=>e.dispatch()),this.actions.Destroy.forEach(e=>e.dispatch()),this.actions.Reset.forEach(e=>e.dispatch()),this.actions.Link.forEach(e=>e.dispatch()),this.actions.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this,e.init())}),this.actions.Transition.forEach(e=>e.toggle()),this.actions.Animation.forEach(e=>e.play()),this.actions.SwitchCamera.forEach(e=>e.play()),this.actions.SceneTransition.forEach(e=>e.dispatch()),this.actions.SetVariable.forEach(e=>e.checkConditions()),this.actions.SetVariable.forEach(e=>e.dispatch()),this.actions.DynamicVariablePlay.forEach(e=>e.dispatch()),this.actions.ClearLocalStorage.forEach(e=>e.dispatch()),this.actions.UserAPI.forEach(e=>e.dispatch())}dispatchOut(){this.actions.Transition.forEach(e=>{e.toggle()})}},zu=class extends Lc{constructor(e,t){super(e),this.eventManager=t,this.breakpoints=[],this.resize=(e,t)=>{this.breakpoints.forEach(i=>{let r=gt.deviceToSize(i.data.size),a="horizontal"===i.dataEvent.orientation?e:t,o;switch(i.data.operator){case"<":o=a<r[0];break;case">":o=a>r[0];break;case"<>":o=a>r[0]&&a<r[1]}i.stage!==o&&(i.stage=o,i.stage?i.dispatchIn():i.dispatchOut())})},this.onResizeObserver=new ResizeObserver(e=>{for(let t of e){let{width:e,height:i}=t.contentRect;this.resize(e,i)}})}connect(){let{page:e,sharedAssets:t,domElement:i}=this.eventContext;this.onResizeObserver.observe(i);let r=i=>{if(!(!i.visible||!i.data?.events.length))for(let{data:r,id:a}of i.data.events)r.disabled||"Resize"===r.type&&r.breakpoints.forEach(({data:o,id:h})=>{try{let c=new zd(a,h,o,r,i,e,t,this.eventManager);this.breakpoints.push(c)}catch(e){}})};e.traverseEntity(e=>{(e instanceof Os||e instanceof D5)&&e.frame?.traverse(e=>{r(e)}),r(e)})}disconnect(){this.onResizeObserver.disconnect(),this.breakpoints.forEach(e=>{e.disconnect()}),this.breakpoints=[]}},zp=class extends Lc{constructor(e,t){super(e),this.eventManager=t,this.userAPIs={},this.events=[],this.onSuccess=({userAPIId:e})=>{this.events.forEach(t=>{t.data.userAPIId===e&&t.dispatchSuccess()})},this.onError=({userAPIId:e})=>{this.events.forEach(t=>{t.data.userAPIId===e&&t.dispatchError()})},this.userAPIs=e.sharedAssets.getUserAPIs()}connect(){this.eventContext.page.traverseEntity(e=>{e.data?.events.filter(e=>"API"===e.data.type&&!e.data.disabled).forEach(t=>{this.events.push(new zf(t.id,t.data,e,this.eventContext.page,this.eventContext.sharedAssets,this.eventManager))})}),Object.entries(this.userAPIs).forEach(([e,t])=>{t.on("success",this.onSuccess),t.on("error",this.onError),t.autostart&&t.callUserAPI(this.eventContext.sharedAssets)})}disconnect(){Object.entries(this.userAPIs).forEach(([e,t])=>{t.off("success",this.onSuccess),t.off("error",this.onError)})}},zf=class{constructor(e,t,i,r,a,o){this.id=e,this.data=t,this.object=i,this.successActions=RA(t,t.successActions,r,a,o,i),this.errorActions=RA(t,t.errorActions,r,a,o,i)}dispatchSuccess(){this.dispatchActions(this.successActions)}dispatchError(){this.dispatchActions(this.errorActions)}
vendor: 1,586 bytes, line 8172
8172dispatchActions(e){e.Audio.forEach(e=>e.dispatchConditional()),e.Particles.forEach(e=>e.dispatchConditional()),e.Video.forEach(e=>e.dispatchConditional()),e.Create.forEach(e=>e.dispatch()),e.Destroy.forEach(e=>e.dispatch()),e.Reset.forEach(e=>e.dispatch()),e.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this),e.init()}),e.Transition.forEach(e=>e.play()),e.Animation.forEach(e=>e.play()),e.SwitchCamera.forEach(e=>e.play()),e.SceneTransition.forEach(e=>e.dispatch()),e.SetVariable.forEach(e=>e.checkConditions()),e.SetVariable.forEach(e=>e.dispatch()),e.DynamicVariablePlay.forEach(e=>e.dispatch()),e.ClearLocalStorage.forEach(e=>e.dispatch()),e.UserAPI.forEach(e=>e.dispatch())}},zm=class extends Lc{constructor(e,t){super(e),this.eventManager=t,this.userWebhooks={},this.events=[],this.onMessage=({userWebhookId:e})=>{this.events.forEach(t=>{t.data.userWebhookId===e&&t.dispatch()})},this.userWebhooks=e.sharedAssets.getUserWebhooks()}connect(){this.eventContext.page.traverseEntity(e=>{e.data?.events.filter(e=>"WEBHOOK"===e.data.type&&!e.data.disabled).forEach(t=>{this.events.push(new zg(t.id,t.data,e,this.eventContext.page,this.eventContext.sharedAssets,this.eventManager))})}),Object.entries(this.userWebhooks).forEach(([e,t])=>{t.connect(),t.on("message",this.onMessage)})}disconnect(){Object.entries(this.userWebhooks).forEach(([e,t])=>{t.off("message",this.onMessage),t.disconnect()})}},zg=class{constructor(e,t,i,r,a,o){this.id=e,this.data=t,this.object=i,this.actions=RA(t,t.actions,r,a,o,i)}dispatch(){let e=this.actions;
8172e.Audio.forEach(e=>e.dispatchConditional()),e.Particles.forEach(e=>e.dispatchConditional()),e.Video.forEach(e=>e.dispatchConditional()),e.Create.forEach(e=>e.dispatch()),e.Destroy.forEach(e=>e.dispatch()),e.Reset.forEach(e=>e.dispatch()),e.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this),e.init()}),e.Transition.forEach(e=>e.play()),e.Animation.forEach(e=>e.play()),e.SwitchCamera.forEach(e=>e.play()),e.SceneTransition.forEach(e=>e.dispatch()),e.SetVariable.forEach(e=>e.checkConditions()),e.SetVariable.forEach(e=>e.dispatch()),e.DynamicVariablePlay.forEach(e=>e.dispatch()),e.ClearLocalStorage.forEach(e=>e.dispatch()),e.UserAPI.forEach(e=>e.dispatch())}},zv=new ib(0,0,1),zy=new ib,zx=new ib,zb=new t$,zw=class{constructor(e,t,i,r,a){this.containerScene=e,this.raycaster=t,this.sharedAssets=i,this.requestRender=r,this.onExit=a,this.htmlInput=null,this.virtualInput=null,this.helper=new P8,this.doubleClickHandler=new zc,this.isDragging=!1,this.plane=new so,this.caretInterval=0,this.planeIntersection=new ib,this.projected=new tJ,this._lastIndex=0,this._isFirstDragMove=!1,this.selectionOnDragStart=0,this.onTextMaterialChanged=()=>{let e=this.virtualInput?.data;if(void 0!==this.virtualInput&&e){let t=e.material,i=function(e,t){let i=gu.fromHex(3223857),r=.8;for(let o of e.layers){if("light"===o.data.type||"displace"===o.data.type||"fresnel"===o.data.type||"matcap"===o.data.type||"texture"===o.data.type||"toon"===o.data.type||"outline"===o.data.type||"transmission"===o.data.type||"noise"===o.data.type)continue;let e="string"==typeof o.data.alpha?Number(t.getVariable(o.data.alpha)):o.data.alpha;if("color"===o.data.type&&e>.3){var a;i="string"==typeof(a=o.data.color)?t.data.colors[a]:a,r=e;break}if(("depth"===o.data.type||"gradient"===o.data.type)&&e>.3){let e=o.data.colors[0];i={r:e[0],g:e[1],b:e[2]},r="string"==typeof o.data.alpha?1:o.data.alpha;break}}return{...i,a:r}}("string"==typeof t?this.sharedAssets.data.materials[t]:t,this.sharedAssets);this.helper.setCaretColor(i)}},this.stopAnimateTextCursor=()=>{clearInterval(this.caretInterval),this.helper&&(this.helper.caretMesh.visible=!1)},this.startAnimateTextCursor=()=>{this.stopAnimateTextCursor(),this.helper&&(this.helper.caretMesh.visible=!0,this.caretInterval=setInterval(()=>{this.helper&&(this.helper.caretMesh.visible=!this.helper.caretMesh.visible),this.requestRender()},600))},this.handleCaretUpdate=e=>{if(!this.htmlInput||!this.virtualInput)return;let t=this.helper,i=e?.key==="ArrowLeft"||e?.key==="ArrowRight",r=e?.key==="ArrowUp"||e?.key==="ArrowDown";this.htmlInput.selectionStart===this.htmlInput.selectionEnd?(t.setCaretPosition(this.htmlInput.selectionStart,{horizontalKeyMove:i,verticalKeyMove:r}),this.startAnimateTextCursor()):t.setSelection(this.htmlInput.selectionStart,this.htmlInput.selectionEnd),this.requestRender()},this.containerScene.add(this.helper)}createInput(){let e;return this.htmlInput=((e=document.createElement("textarea")).style.position="fixed",e.style.top="200px",e.style.left="400px",e.style.zIndex="-1",e.style.border="1px solid rgba(255,0,0,0.5)",e.style.width="10px",e.style.height="500px",e.style.color="white",e.style.opacity="0.5",e.style.background="transparent",e.style.display="none",e.style.margin="0px",e.style.padding="0px",e.style.boxSizing="content-box",e.style.pointerEvents="none",e),this.htmlInput}connect(){}disconnect(){this.stopAnimateTextCursor(),this.helper.hide(),this.htmlInput?.remove(),this.doubleClickHandler.stop()}handleMouseDown(){if(!this.htmlInput||!this.virtualInput)return!0;this.getPointOnPlane();let e=this.doubleClickHandler.clickCount,{index:t,lineIndex:i,characterIndex:r}=this.helper.getSelectionFromPosition(this.projected.x,this.projected.y,e>1?"inside":"previous")??{index:0,lineIndex:0,characterIndex:0};this.virtualInput?.wrappedText?.length&&this.virtualInput.wrappedText[i][Math.max(0,r-1)]===`
8173`&&(t--,r--),this._lastIndex=t,this._isFirstDragMove=!0;let a=this.checkClickedObject();if(1===e){if(null===a)return this.onExit(this.virtualInput),!0;this.selectionOnDragStart=t,this.isDragging=!0,this.setInputSelection(t)}else a===this.virtualInput&&(2===e?this.selectClosestWord(i,r):e>2&&(this.setInputSelection(0,this.htmlInput.value.length),this.doubleClickHandler.reset()))}handleMouseUp(){this.applyRangeToTextInput(),this.isDragging=!1,this._isFirstDragMove=!1}handleMouseMove(){this.virtualInput&&(this._isFirstDragMove&&this.doubleClickHandler.clickCount>1&&(this.selectionOnDragStart=this._lastIndex,this.isDragging=!0,this.setInputSelection(this._lastIndex)),this._isFirstDragMove=!1,this.getPointOnPlane(),this.applyRangeToTextInput())}focus(e){if(this.virtualInput=e,this.updateTextInputStyles(),this.htmlInput){if(e){let e=this.data?.geometry.text;this.htmlInput.value="string"==typeof e?"":e?.textValue.toString()??""}else this.htmlInput.value=""}}blur(){}get data(){let{virtualInput:e}=this;if(e)return e.dataPatched}
8173applyRangeToTextInput(){if(!this.isDragging||!this.virtualInput||!this.htmlInput)return;let e=this.selectionOnDragStart,{index:t,lineIndex:i,characterIndex:r}=this.helper.getSelectionFromPosition(this.projected.x,this.projected.y,this.doubleClickHandler.clickCount>2?"inside":"previous")??{index:0};void 0!==i&&void 0!==r&&this.virtualInput?.wrappedText[i][r-1]===`
8174`&&t--,this.htmlInput.setSelectionRange(Math.min(e,t),Math.max(e,t))}checkClickedObject(){if(this.virtualInput){let e=this.raycaster.intersectObject(this.virtualInput,!1);if(e.length>0){let t=e[0];if(t.object instanceof D7)return t.object}}return null}selectClosestWord(e,t){if(!this.virtualInput)return;let i=this.virtualInput.wrappedText,r=i[e],a=t+1,o=t;" "!==r[t]&&(a=this.findNextCharOccurence(r,t,"forward"," "),(o=this.findNextCharOccurence(r,t,"backward"," "))>0&&o++,a>=r.length-1&&e===i.length-1&&a++);let h=this.helper,c=h.getGlobalIndexFromLineAndCharIndexes(i,e,o),d=h.getGlobalIndexFromLineAndCharIndexes(i,e,a);this.setInputSelection(c,d)}findNextCharOccurence(e,t,i,r=" "){let a=Math.max(0,e.length-1),o="forward"===i?a:0,h="forward"===i?1:-1,c=Math.max(Math.min(t,a),0);for(;c!==o;)if(c+=h,e.charAt(c)===r)return c;return o}getPointOnPlane(){let e=this.virtualInput?.data;if(!(!this.virtualInput||!e)&&this.raycaster.ray.intersectsPlane(this.plane)){null===this.planeIntersection&&(this.planeIntersection=new ib);let t=this.raycaster.ray.intersectPlane(this.plane,this.planeIntersection);if(t){this.planeIntersection.copy(this.virtualInput.worldToLocal(t));let i="number"==typeof e.geometry.width?e.geometry.width:1,r="number"==typeof e.geometry.height?e.geometry.height:1;this.projected.set(t.x+.5*i,t.y-.5*r)}}}updatePlane(){let e=this.virtualInput?.data;this.virtualInput&&e&&(zb.getNormalMatrix(this.virtualInput.matrixWorld),zy.copy(zv).applyMatrix3(zb).normalize(),this.virtualInput.localToWorld(zx.set(0,0,e.geometry.depth)),this.plane.setFromNormalAndCoplanarPoint(zy,zx))}setInputSelection(e,t=e){this.htmlInput?.setSelectionRange(e,t),pa&&this.htmlInput?.focus(),setTimeout(()=>{this.htmlInput?.focus()})}updateTextInputStyles(){var e;let t=this.virtualInput?.data;this.virtualInput&&t&&this.htmlInput&&(this.htmlInput.style.fontSize=t.geometry.fontSize+"px",this.htmlInput.style.letterSpacing=t.geometry.letterSpacing*t.geometry.fontSize+"px",this.htmlInput.style.lineHeight=t.geometry.fontSize*t.geometry.lineHeight+"px",this.htmlInput.style.width=t.geometry.width+"px",this.htmlInput.style.height=t.geometry.height+"px",this.htmlInput.style.textAlign=4===(e=t.geometry.horizontalAlign)?"justify":2===e?"right":3===e?"center":"left")}},zS=(e,t)=>{if("string"==typeof e){let i=t.data(e);if(i)return zS(i.value,t)}return yY.getDisplayedValue(e)};function z_(e,t){let i=e.text,r="";if("string"==typeof i){let e=t.variables.data(r);e&&(r=zS(e.value,t.variables))}else r=i.textValue.toString();return r}var zA=class extends Lc{constructor(e,t){super(e),this.eventManager=t,this._textInputs=[],this.sceneHelpers=new n_,this.helper=new P8,this._onMouseDownFocusIn=e=>{if(pp.length>1)return;this.eventContext.updateRaycaster(e);let t=null;if(this.eventContext.raycaster){for(let e of this._textInputs)if(this.eventContext.raycaster.intersectObject(e,!0).length>0){t=e;break}}this.focusOnTextInput(t),this._onCaretUpdate(),this._onMouseUp(),this.textInputManager.doubleClickHandler.start(this.eventContext.domElement),this.textInputManager.doubleClickHandler._onMouseDown(e),this._onMouseDown(e)},this.onExit=()=>{let{virtualInput:e}=this.textInputManager;if(null===e)return;let t=this.textInputManager.htmlInput;this.helper.hide(),t?.setSelectionRange(t.value.length,t.value.length),this.eventManager.controlsManager.orbitControls&&(this.eventManager.controlsManager.orbitControls.enabled=!0);let{domElement:i}=this.eventContext;i.removeEventListener("pointerdown",this._onMouseDown,!1),i.removeEventListener("pointerup",this._onMouseUp,!1),i.removeEventListener("pointermove",this._onMouseMove,!1),window.removeEventListener("keydown",this._onKeyPress),this.textInputManager.doubleClickHandler.reset(),i.addEventListener("pointerdown",this._onMouseDownFocusIn),this.eventContext.renderer.sceneHelpersOnTop=void 0,this.eventContext.renderer.pipeline.disableHelpers()},this._onMouseDown=e=>{this.eventContext.updateRaycaster(e),this.textInputManager.handleMouseDown(),this.textInputManager.virtualInput&&this.eventContext.raycaster.intersectObject(this.textInputManager.virtualInput,!0).length>0&&this.eventManager.controlsManager.orbitControls&&(this.eventManager.controlsManager.orbitControls.enabled=!1)},this._onMouseUp=()=>{this.textInputManager.handleMouseUp(),this.eventManager.controlsManager.orbitControls&&!this.eventManager.controlsManager.orbitControls.enabled&&(this.eventManager.controlsManager.orbitControls.enabled=!0)},this._onMouseMove=e=>{this.eventContext.updateRaycaster(e),this.textInputManager.handleMouseMove()},this._onTextEdit=e=>{let{htmlInput:t,virtualInput:i,helper:r}=this.textInputManager;if(!t||!i)return;let a=t.value;i.textGeometry.setText(a,this.eventContext.sharedAssets).then(()=>{this.eventContext.requestRender()});let o=i.data;
vendor: 3,831 bytes, line 8174
8174r.update();let h=o.geometry.text;"string"==typeof h&&this.eventContext.sharedAssets.updateVariable(h,{textValue:a}),this.textInputManager.updateTextInputStyles(),this._onCaretUpdate()},this._onCaretUpdate=e=>{this.textInputManager.handleCaretUpdate(e)},this._onKeyPress=e=>{"Escape"===e.key&&this.onExit()},this.textInputManager=new zw(this.sceneHelpers,e.raycaster,e.sharedAssets,e.requestRender,this.onExit)}connect(){let e=[];if(this.eventContext.scene.traverseEntity(t=>{t instanceof D7&&e.push(t)}),this._textInputs=e,0===e.length)return;let{domElement:t}=this.eventContext;t.addEventListener("pointerdown",this._onMouseDownFocusIn),this.textInputManager.connect();let i=this.textInputManager.createInput();document.body.appendChild(i),i.style.display="none",i.addEventListener("keyup",this._onCaretUpdate),i.addEventListener("keydown",this._onCaretUpdate),i.addEventListener("beforeinput",this._onCaretUpdate),i.addEventListener("paste",this._onCaretUpdate),i.addEventListener("cut",this._onCaretUpdate),i.addEventListener("select",this._onCaretUpdate),i.addEventListener("selectstart",this._onCaretUpdate)}disconnect(){let e=this.textInputManager.htmlInput,{domElement:t,sharedAssets:i}=this.eventContext;t.removeEventListener("pointerdown",this._onMouseDownFocusIn),e?.removeEventListener("keyup",this._onCaretUpdate),e?.removeEventListener("keydown",this._onCaretUpdate),e?.removeEventListener("beforeinput",this._onCaretUpdate),e?.removeEventListener("paste",this._onCaretUpdate),e?.removeEventListener("cut",this._onCaretUpdate),e?.removeEventListener("select",this._onCaretUpdate),e?.removeEventListener("selectstart",this._onCaretUpdate),this._textInputs.forEach(e=>{let t=z_(e.data.geometry,this.eventContext.sharedAssets.data);e.textGeometry.setText(t,i)}),t.removeEventListener("pointerdown",this._onMouseDown,!1),t.removeEventListener("pointerup",this._onMouseUp,!1),t.removeEventListener("pointermove",this._onMouseMove,!1),window.addEventListener("keydown",this._onKeyPress),this.eventContext.renderer.sceneHelpersOnTop=void 0,this.eventContext.renderer.pipeline.disableHelpers(),this.textInputManager.disconnect()}focusOnTextInput(e){this.textInputManager.focus(e),this.textInputManager.onTextMaterialChanged();let t=this.textInputManager.htmlInput;if(!t||null===e)return;this.textInputManager.updateTextInputStyles(),this.eventContext.renderer.sceneHelpersOnTop=this.sceneHelpers,this.eventContext.renderer.pipeline.enableHelpers(),this.textInputManager.isDragging=!1;let i=z_(e.textGeometry.userData.parameters,this.eventContext.sharedAssets.data);t.value=i,t.setSelectionRange(0,0),this.textInputManager.helper.show(e),t.style.display="block",t.addEventListener("input",this._onTextEdit),this.textInputManager.updatePlane();let{domElement:r}=this.eventContext;r.removeEventListener("pointerdown",this._onMouseDownFocusIn),r.addEventListener("pointerdown",this._onMouseDown,!1),r.addEventListener("pointerup",this._onMouseUp,!1),r.addEventListener("pointermove",this._onMouseMove,!1),window.addEventListener("keydown",this._onKeyPress)}},zM=class extends Lc{constructor(e,t){super(e),this.eventManager=t,this.events=[],this.onVoice=({value:e,frequencies:t})=>{this.events.forEach(e=>{e.dispatch()})}}connect(){this.openAIRealtime=this.eventContext.sharedAssets.openAIRealtime,this.openAIRealtime&&(this.eventContext.page.traverseEntity(e=>{e.data?.events.filter(e=>"AIAssistantListener"===e.data.type&&!e.data.disabled).forEach(t=>{this.events.push(new zE(t.id,t.data,e,this.eventContext.page,this.eventContext.sharedAssets,this.eventManager))})}),this.openAIRealtime.on("voice",this.onVoice))}disconnect(){this.openAIRealtime?.off("voice",this.onVoice)}},zE=class{constructor(e,t,i,r,a,o){this.id=e,this.data=t,this.object=i,this.actions=RA(t,t.actions,r,a,o,i)}dispatch(){this.dispatchActions(this.actions)}
vendor: 1,591 bytes, line 8174
8174dispatchActions(e){e.Audio.forEach(e=>e.dispatchConditional()),e.Particles.forEach(e=>e.dispatchConditional()),e.Video.forEach(e=>e.dispatchConditional()),e.Create.forEach(e=>e.dispatch()),e.Destroy.forEach(e=>e.dispatch()),e.Reset.forEach(e=>e.dispatch()),e.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this),e.init()}),e.Transition.forEach(e=>e.play()),e.Animation.forEach(e=>e.play()),e.SwitchCamera.forEach(e=>e.play()),e.SceneTransition.forEach(e=>e.dispatch()),e.SetVariable.forEach(e=>e.checkConditions()),e.SetVariable.forEach(e=>e.dispatch()),e.DynamicVariablePlay.forEach(e=>e.dispatch()),e.ClearLocalStorage.forEach(e=>e.dispatch()),e.UserAPI.forEach(e=>e.dispatch())}},zC=class extends Lc{constructor(e,t){super(e),this.eventManager=t,this.events=[],this.onTriggerEvent=({description:e,direction:t})=>{let i=this.events.find(t=>t.data.description===e);i&&("backward"===t?i.dispatchReverse():i.dispatch())}}connect(){this.openAIRealtime=this.eventContext.sharedAssets.openAIRealtime,this.openAIRealtime&&(this.eventContext.page.traverseEntity(e=>{e.data?.events.filter(e=>"AIAssistantTrigger"===e.data.type&&!e.data.disabled).forEach(t=>{this.events.push(new zT(t.id,t.data,e,this.eventContext.page,this.eventContext.sharedAssets,this.eventManager))})}),this.openAIRealtime.on("trigger_event",this.onTriggerEvent))}disconnect(){this.openAIRealtime?.off("trigger_event",this.onTriggerEvent)}},zT=class{constructor(e,t,i,r,a,o){this.id=e,this.data=t,this.object=i,this.actions=RA(t,t.actions,r,a,o,i)}dispatch(){let e=this.actions;
8174e.Audio.forEach(e=>e.dispatchConditional()),e.Particles.forEach(e=>e.dispatchConditional()),e.Video.forEach(e=>e.dispatchConditional()),e.Create.forEach(e=>e.dispatch()),e.Destroy.forEach(e=>e.dispatch()),e.Reset.forEach(e=>e.dispatch()),e.Transition.forEach(e=>{e.object.currentTransitionEvent!==this&&(e.object.currentTransitionEvent=this),e.init()}),e.Transition.forEach(e=>e.play()),e.Animation.forEach(e=>e.play()),e.SwitchCamera.forEach(e=>e.play()),e.SceneTransition.forEach(e=>e.dispatch()),e.SetVariable.forEach(e=>e.checkConditions()),e.SetVariable.forEach(e=>e.dispatch()),e.DynamicVariablePlay.forEach(e=>e.dispatch()),e.ClearLocalStorage.forEach(e=>e.dispatch()),e.UserAPI.forEach(e=>e.dispatch())}dispatchReverse(){let e=this.actions;e.Transition.forEach(e=>e.reverseFromCurrent()),e.Particles.forEach(e=>e.reverseFromCurrent()),e.Animation.forEach(e=>e.reverseFromCurrent()),e.SwitchCamera.forEach(e=>e.reverseFromCurrent()),e.Create.forEach(e=>e.dispatchStop())}},zP=class{constructor(e,t,i,r,a){this.publish=e,this.controlsManager=t,this.animationControls=i,this.eventContext=r,this.sharedVariables=a,this.isEnabled=!1,this.activateCount=0,this.needsMouse=!1,this.needsRaycast=!1,this.onTouchMovePreventScroll=e=>{let t=window.parent!==window,i=document.documentElement.scrollHeight>document.documentElement.clientHeight||document.documentElement.scrollWidth>document.documentElement.clientWidth;(e.touches.length>1||this.preventTouchScroll||!1===t&&!1===i)&&e.preventDefault()},this.onMouseWheelPreventScroll=e=>{this.preventScroll&&e.preventDefault()},this.onMouseMove=e=>{this.eventContext.sharedAssets.mouseProperty={...this.getMousePosition(e),pressed:e.buttons>0}},this.onMouseDown=e=>{this.eventContext.sharedAssets.mouseProperty={...this.getMousePosition(e),pressed:!0}},this.onMouseUp=e=>{this.eventContext.sharedAssets.mouseProperty={...this.getMousePosition(e),pressed:!1}},this.getMousePosition=e=>{let{domRect:t}=this.eventContext,{pageX:i,pageY:r}=e.touches?.length>0?e.touches[0]:e;return{x:i-(t.left+window.scrollX),y:r-(t.top+window.scrollY)}},this.stopRaycast=e.stopRaycast,this.preventScroll=e.preventScroll,this.preventTouchScroll=e.preventTouchScroll,this.hideCursor=e.hideCursor,this.requestRender=r.requestRender}activate(e=!1){if(this.isEnabled)return;this.isEnabled=!0,this.initializeActionsDependentStates(),this.needsMouse&&(this.eventContext.domElement.addEventListener("pointermove",this.onMouseMove),this.eventContext.domElement.addEventListener("pointerdown",this.onMouseDown)),this.handlers={Spline:new Lm(this.eventContext),VariableChange:new Bp(this.eventContext,this.sharedVariables,this,this.needsMouse,this.needsRaycast),API:new zp(this.eventContext,this),WEBHOOK:new zm(this.eventContext,this),AIAssistantListener:new zM(this.eventContext,this),AIAssistantTrigger:new zC(this.eventContext,this),Conditional:new L_(this.eventContext,this),Start:new Bd(this.eventContext,this),Basic:new Lv(this.eventContext,this,this.needsRaycast),MouseHover:new Bn(this.eventContext,this),Scroll:ne
8174w Bh(this.eventContext,this),Follow:new LZ(this.eventContext,this),DragDrop:new Lk(this.eventContext,this),LookAt:new Bt(this.eventContext),Resize:new zu(this.eventContext,this),Textfields:new zA(this.eventContext,this)};let{page:t,domElement:i}=this.eventContext;this.hideCursor&&(i.style.cursor="none"),t.traverseEntity(e=>{e.addEventListener("requestRender",this.requestRender)}),Object.values(this.handlers).forEach(e=>e.connect()),i.addEventListener("wheel",this.onMouseWheelPreventScroll),i.addEventListener("touchmove",this.onTouchMovePreventScroll),this.activateCount++,e||this.eventContext.sharedAssets.openAIRealtime?.connect()}deactivate(e=!1){if(!this.isEnabled)return;this.isEnabled=!1,this.eventContext.domElement.removeEventListener("pointermove",this.onMouseMove),this.eventContext.domElement.removeEventListener("pointerdown",this.onMouseDown),this.eventContext.domElement.removeEventListener("pointerup",this.onMouseUp),this.eventContext.sharedAssets.mouseProperty=null,this.eventContext.sharedAssets.raycastProperty=null;let{page:t,domElement:i}=this.eventContext;i.style.cursor="",Object.values(this.handlers).forEach(e=>e.disconnect()),this.controlsManager.gameControl?.disposeActions(),this.controlsManager.disconnectEvents(),t.traverseEntity(e=>{e.removeEventListener("requestRender",this.requestRender),e.destroyedInAction=!1}),i.removeEventListener("touchmove",this.onTouchMovePreventScroll),i.removeEventListener("wheel",this.onMouseWheelPreventScroll),this.animationControls.onExitPlayMode(),e||this.eventContext.sharedAssets.openAIRealtime?.disconnect()}get isPaused(){return this.isEnabled}pause(){this.deactivate()}resume(){this.activate()}reset(){this.deactivate(!0),this.activate(!0),this.controlsManager.deactivate(),this.controlsManager.activate(this),this.controlsManager.page.updateMatrixWorld(!0),this.controlsManager.rebuildBVH()}updateUseWindowEvents(e){let t=this.isEnabled;t&&this.deactivate(),this.eventContext.useWindowEvents=e,t&&this.activate()}initializeActionsDependentStates(){let e=this.eventContext.sharedAssets;e.resetDynamicVariablePlayState();let t=i=>{if("Conditional"===i.data.type&&(i.data.ifActions.forEach(t),i.data.elseActions.forEach(t)),"Conditional"===i.data.type||"SetVariable"===i.data.type)for(let e of"Conditional"===i.data.type?i.data.condition:i.data.expression)"id"in e&&Array.isArray(e.id)&&("mouse"===e.id[0]&&(this.needsMouse=!0),"raycast"===e.id[0]&&(this.needsRaycast=!0));"DynamicVariablePlay"===i.data.type&&""!==i.data.variableId&&("Play"===i.data.mode||"PlayPause"===i.data.mode||"Toggle"===i.data.mode)&&e.setDynamicVariablePlayState(i.data.variableId,"Stopped")};this.eventContext.page.traverseEntity(e=>{if(e.data?.events.length)for(let i of e.data.events)if("VariableChange"===i.data.type&&("mouseProperty"===i.data.variableId&&(this.needsMouse=!0),"raycastProperty"===i.data.variableId&&(this.needsRaycast=!0)),"Conditional"===i.data.type)for(let e of["inActions","outActions"])i.data[e].forEach(t);else if("DragDrop"===i.data.type)for(let e of["drag","drop"])i.data.dragDropActions[e].forEach(t);else if("GameControl"===i.data.type)for(let e of["idle","move","jump","run"])i.data.gameActions[e].forEach(t);else if("Resize"===i.data.type)for(let e of i.data.breakpoints)e.data.actions.forEach(t);else"LookAt"===i.data.type||"API"===i.data.type||i.data.actions.forEach(t)})}},zD=class{constructor(e,t,i,r,a){this._aspect=1,this.enableResponsive=!1,this._renderer=e,this._camera=t,this._frameSize=new tJ().copy(i),this._editorSize=new tJ().copy(r),this._aspect=t.aspect,this._fov=a??t.fov}set frameSize(e){this._frameSize.copy(e)}updateRenderer(){this._renderer&&this._renderer.setSize(this._frameSize.x,this._frameSize.y)}updateViewport(){if(!this._renderer||!this._camera||"PerspectiveCamera"!==this._camera.cameraType)return;let e=this._frameSize.x,t=this._frameSize.y,i=this._editorSize.y;this._aspect=e/t,t<=i&&(this._camera.zoom*=i/t),this._renderer.setViewport(0,0,e,t)}updateCamera(e=!0){if(this._camera){if("PerspectiveCamera"===this._camera.cameraType){let t=this._frameSize.y,i=this._editorSize.y,r=this._fov;if(e&&t>i)r*=t/i*(1-((t-1080)/1080*14+1)/100);this._camera.aspect=this._aspect,this._camera.fov=r,this._camera.updateProjectionMatrix()}else this._camera.setViewplaneSize(this._frameSize.x,this._frameSize.y,this.enableResponsive)}}setCamera(e){this._camera=e,this._aspect=e.aspect,this._fov=e.fov}revert(){let e=window.innerWidth,t=window.innerHeight;this._renderer&&(this._renderer.setViewport(0,0,e,t),this._renderer.setSize(e,t)),this._camera&&(this._camera.aspect=e/t,this._camera.fov=this._fov,this._camera.setViewplaneSize(e,t,this.enableResponsive),this._camera.updateProjectionMatrix())}},zO=class{get sharedAssets(){return this.shared}constructor(e,t={},i=!0){this.shared=new EG(e.shared,t,!0,i),this.scene=new Ia(e.scene,this.sharedAssets),this.shared.setEntityOpContext({scene:this.scene,shared:this.shared})}reset(e,t){this.scene.clearScene(),this.sharedAssets.reset(e.shared),this.scene.resetAfterClear(e.scene,this.sharedAssets)}resetPersonalCameraFromDocumentData(){for(let e of this.scene.children)e instanceof D5&&!e.uiScene&&e.personalCamera.updateState(e.data.camera,{scene:this.scene,shared:this.shared})}dispose(){this.scene.dispose(),this.shared.dispose()}gc(){this.shared.geometryCache.startGc(),this.shared.geometryCache2.startGc(),this.scene.traverseEntity(e=>{e instanceof EZ&&e.markGeometryAsReachable(this.shared)}),this.shared.geometryCache.endGc(),this.shared.geometryCache2.endGc()}},zI=class{constructor({x:e=10,y:t=10}){this._startTime=0;let i=document.getElementById("spe-perfs");i?this.element=i:(this.element=document.createElement("div"),document.body.appendChild(this.element),this.element.style.position="absolute",this.element.style.zIndex="10000",this.element.style.fontFamily="monospace",this.element.style.background="black",this.element.style.color="white",this.element.style.padding="10px",this.element.style.opacity="0.5",this.element.style.fontSize="11px",this.element.setAttribute("id","spe-perfs")),this.element.style.left=`${e}px`,this.element.style.top=`${t}px`}dispose(){this.element.parentElement?.removeChild(this.element)}start(){this._startTime=performance.now()}end(){let e=performance.now()-this._startTime;this.element.innerHTML=e.toFixed(3)+" ms"}};function zR(e){return e instanceof E1?"SubdivObject":"NonParametricGeometry"===e.geometry.type?"NonParametric":"Mesh"}var zL=tA(tI(),1),zB=new tJ;function zz(e){let t=new xx(0,0,0,1);try{t.setStyle(e)}catch(e){console.error(e)}finally{return t}}var zF=class{constructor(e,{renderOnDemand:t,renderMode:i="auto",wasmPath:r}={}){this._viewportMode=1,this._viewportWidth=window.innerWidth,this._viewportHe
8174ight=window.innerHeight,this._proxyObjectCache=new Map,this._variablesCache=new Map,this._isPaused=!1,this._renderRequested=!1,this._skipRender=!1,this.time=performance.now(),this.dt=0,this.currentTAAFrame=0,this.disposed=!1,this._requestRenderAutoMode=()=>{this._skipRender=!1},this.requestRender=()=>{this._renderRequested=!0},this.render=e=>{if(this.time=e,this._lastTime&&(this.dt=this.time-this._lastTime),this._lastTime=this.time,this._perfs?.start(),!this._renderer||!this._isPaused&&("manual"===this.renderMode&&!this._renderRequested||"auto"===this.renderMode&&this._skipRender)){this._perfs?.end();return}if(this._renderRequested=!1,this._skipRender=!0,this._controls&&(this._skipRender=this._controls.update(this.dt)??!1),this._eventManager&&(this._eventManager.handlers?.Start.hasVideoAction||this._eventManager.handlers?.Basic.hasVideoAction||this._eventManager.handlers?.Conditional.hasVideoAction)&&(this._skipRender=!1),this._animationControls?.update(this.dt),this._skipRender?(this.currentTAAFrame++,this.currentTAAFrame<32?this._skipRender=!1:this.currentTAAFrame=0):this.currentTAAFrame=0,this._scene?.traverseVisibleEntity(e=>{"ParticleSystem"===e.type&&(e.update(this.dt),this._skipRender=!1)}),this._scene&&this._scene.activeCamera!==this._camera&&(this._camera=this._scene.activeCamera),this._eventManager?.isEnabled&&((this._eventManager.handlers?.Follow).onAnimationFrameDamping(),(this._eventManager.handlers?.LookAt).onAnimationFrameDamping(),(this._eventManager.handlers?.DragDrop).onAnimationFrameDamping()),this._scene&&this._camera){if(this._scene.pathConstraints.applyConstraints(this._scene),this._renderer.sceneTransitionTimeRemaining>0){this._renderer.sceneTransitionTimeRemaining-=this.dt;let e=1-this._renderer.sceneTransitionTimeRemaining/this._renderer.sceneTransitionDuration;this._renderer.pipeline.sceneTransitionPass.uniforms.mixRatio.value=e,this._skipRender=!1}else this._renderer.pipeline.sceneTransitionFromTexture=null;this._renderer.renderSplineScene(this._scene,this._camera)}this.canvas.dispatchEvent(this._renderedEvent),this._perfs?.end()},this._resize=e=>{if(this._renderer){if(1===this._viewportMode&&this._frameView&&(this._frameView.frameSize=zB.set(this._viewportWidth,this._viewportHeight)),e){let e=this._viewportWidth,t=this._viewportHeight;this._renderer.setSize(e-1,t-1,!1),this._renderer.setSize(e,t,!1)}else this._renderer.setSize(this._viewportWidth,this._viewportHeight,!1);if(this._camera=this._scene?.activeCamera,this._scene?.updateViewPlaneSize(this._frameView?.frameSize?.x??this._viewportWidth,this._frameView?.frameSize?.y??this._viewportHeight,this._frameView?.enableResponsive??!1),this._camera){let e=Object.values(this._data?.frames??{})[0].preset??"fullscreen";this._frameView?.setCamera(this._camera),this._frameView?.updateCamera("fullscreen"!==e),"PerspectiveCamera"===this._camera.cameraType&&(this._camera.aspect=this._viewportWidth/this._viewportHeight),this._camera.updateProjectionMatrix()}this.eventManager&&(this.eventManager.eventContext.domRect=this.canvas.getBoundingClientRect()),this._requestRenderAutoMode()}},this._debouncedResize=uK(this._resize,10),this._onScroll=e=>{this.eventManager&&(this.eventManager.eventContext.domRect=this.canvas.getBoundingClientRect())},this.canvas=e,this.renderMode=t?"auto":i,r&&(this._wasmPath=pe(r,"/")),this._renderedEvent=new CustomEvent("rendered",{bubbles:!0}),Object.defineProperty(this._renderedEvent,"target",{writable:!1,value:this}),window.location.search.includes("perfs")&&(this._perfs=new zI({x:10,y:10})),e.addEventListener("pointerdown",pv,!0),e.addEventListener("pointerdown",px,!0),e.addEventListener("pointermove",px,!0),e.addEventListener("pointerup",py,!0),e.addEventListener("pointercancel",py,!0),e.addEventListener("pointerleave",py,!0),window.addEventListener("keydown",pw,!0),window.addEventListener("keyup",pS,!0)}async load(e,t,i){let r;r="The Spline Runtime only accepts .splinecode files that are generated from Spline export panel.",e.endsWith(".spline")?console.warn(r+" The .spline files are only meant to be used by the Editor."):e.endsWith(".splinecode")||console.warn(r),this.disposed=!1;let a=await (await fetch(e,i)).arrayBuffer();await this.start(a,{variables:t})}async start(e,{interactive:t=!0,variables:r}={}){var a,o;let h,c,d,u,p;if(this.disposed)return;let f=await zl(e);this._data=f;let m=(h=[],f.scene.objects.traverse((e,t)=>
8174{"Mesh"===t.type&&"NonParametricGeometry"===t.geometry.type&&void 0!==t.geometry.data.draco&&h.push(t)}),h);f.version&&(0,zL.default)(f.version,"1.12.0")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/runtime to the latest version."),this._wasmPath&&this.setUIWasmUrl(`${this._wasmPath}/ui.wasm`),await Promise.all([m.length&&zn(this._wasmPath),CQ(f)&&(a=this._wasmPath,Mp||(Mp=async function(){let e=i.e(669).then(i.bind(i,6669)),[t,r]=await Promise.all([e,fetch(`${a??"https://unpkg.com/@splinetool/[email protected]/build"}/boolean.wasm`).then(e=>e.arrayBuffer())]),o=t.default,h=await o({wasmBinary:r});Mu(h)}())),(c=!1,f.scene.objects.traverse((e,t)=>{"Mesh"===t.type&&"SubdivGeometry"===t.geometry.type&&(c=!0)}),c&&function(e){if(!_P)return _L||(_L=t());async function t(){let t=i.e(256).then(i.bind(i,6256)),[r,a]=await Promise.all([t,fetch(`${e??"https://unpkg.com/@splinetool/[email protected]/build"}/process.wasm`).then(e=>e.arrayBuffer())]),o=r.default,h=await o({wasmBinary:a});_M(h),_P=!0}}(this._wasmPath)),yG.physicsEnabled(f.scene.objects)&&(pG||(pG=async function(){let e=await i.e(122).then(i.bind(i,330));await e.init(),pO(e)}())),Cc(f)&&function(){if(Ex=!0,!Ew)return Cd||(Cd=e());async function e(){let e=await i.e(934).then(i.bind(i,856));Eg(e),Ew=!0}}(),O3(f)&&function(){if(!It)return IE||(IE=e());async function e(){let e=await i.e(201).then(i.bind(i,2201));O9(e),It=!0}}(),(d=!1,u=[],f.scene.objects.traverse((e,t)=>{if("Page"===t.type&&void 0!==t.uiScene&&t.uiScene.objects.traverse((e,t)=>{if(void 0===t.events||!1===Array.isArray(t.events))return!0;Ep(t.events,u),d=d||u.some(e=>"Audio"===e.data.type)}),void 0===t.events||!1===Array.isArray(t.events))return!0;Ep(t.events,u),d=d||u.some(e=>"Audio"===e.data.type)}),d&&function(){if(!Eu)return Ef||(Ef=e());async function e(){await i.e(268).then(i.bind(i,8268)),El(void 0!==window?window:global),Eu=!0}}()),Db(f)&&function(){if(!Dx)return DE||(DE=e());async function e(){let e=await i.e(778).then(i.bind(i,4778));Dc(e.default??e),Dx=!0}}(),(p=!1,f.scene.objects.forEach(e=>{"Page"===e.data.type&&!p&&e.data.publish.gameControlObject&&yG.traverseModuleInstances(f,e.id,(e,t,i)=>{for(let e of i)"GameControl"===e.data.type&&e.data.navmesh.enabled&&(p=!0)})}),p&&(o=this._wasmPath,pD||(pD=async function(){let e=i.e(275).then(i.bind(i,2275)),[t,r]=await Promise.all([e,fetch(`${o??"https://unpkg.com/@splinetool/[email protected]/build"}/navmesh.wasm`).then(e=>e.arrayBuffer())]),a=t.default,h=await a({wasmBinary:r});pP(h)}())))].filter(Boolean)),m.length&&await zh(m),this._eventManager?.deactivate(),this._controls?.deactivate(),this._scene?.dispose();let g=new zO(f);if(g.resetPersonalCameraFromDocumentData(),this._scene=g.scene,this._sharedAssetsManager=g.sharedAssets,this._camera=this._scene.activeCamera,window.location.search.includes("merge-geometries")){let e=performance.now();!function(e,t){let i,r;let a=(i={},t.traverseEntity(t=>{if(!t.visible||!(t instanceof Ai)||"Mesh"!==t.type||Array.isArray(t.material)||t.states&&Object.keys(t.states).length)return;let r=t.parent;for(;r;){if(r instanceof Ai&&t.states&&Object.keys(t.states).length)return;r=r.parent}let a=t.material.uuid,o=e.shared.materials[a];if(o){if(!g6.isMergable(o))return}else{let i=e.scene.objects.get(t.uuid)?.data;if(i&&"material"in i&&"string"!=typeof i.material){if(!g6.isMergable(i.material))return;a=g6.getHash(i.material)}}i[a]||(i[a]={});let h=i[a][zR(t)];if(h){if(h.push(t),t.cloner)for(let e of t.cloner.children)h.push(e)}else if(i[a][zR(t)]=[t],t.cloner)for(let e of t.cloner.children)i[a][zR(t)].push(e)}),i),o=(r=0,Object.values(a).forEach(e=>{Object.values(e).forEach(e=>{let t=e.length;t>r&&(r=t)})}),r),h=Array(o),c=0,d=Array(o),u=0,p=Array(o),f=0,m=Array(o),g=0;for(let[e,i]of Object.entries(a))for(let r of Object.values(i)){if(u=0,f=0,r.forEach(e=>{e instanceof Ai&&(d[u++]=e.geometry.clone(),p[f++]=e)}),f<2)continue;for(let e=0;e<f;e++)p[e].updateWorldMatrix(!0,!1),d[e].applyMatrix4(p[e].matrixWorld),0>p[e].matrixWorld.determinant()&&function(e){let t;if(e.index)for(let i=0;i<e.index.array.length;i+=3)t=e.index.array[i],e.index.array[i]=e.index.array[i+2],e.index.array[i+2]=t}(d[e]);let i=vB(d.slice(0,u),!1);if(i){let r;"SubdivObject"===e&&console.warn("Turning subdiv object into mesh"),(r=new r$(i,p[0].material)).castShadow=p[0].castShadow,r.receiveShadow=p[0].receiveShadow,t.add(r);let o=e=>{for(let t of(g=0,e))t.children&&o(t.children),t instanceof Ai&&(Array.isArray(t.material)||a[t.material.uuid]&&a[t.material.uuid][zR(t)]&&a[t.material.uuid][zR(t)].length>1||(m[g++]=t));for(let e=0;e<g;e++)t.attach(m[e])};for(let e=0;e<f;e++){let t=p[e];o(t.children),h[c++]=t}}}for(let e=0;e<c;e++)h[e].removeFromParent()}(f,g.scene),console.log("Merged geometries in ",performance.now()-e," ms")}CQ(f)&&this._scene.traverse(e=>{C$(e)&&e.recomputeBoolean()}),this._sharedAssetsManager.setRequestRender(()=>{this._requestRenderAutoMode(),this._scene?.traverse(e=>
8174{e instanceof CT&&e.pendingMediaLoad&&e.update()})}),this._scene?.traverse(e=>{"ParticleSystem"===e.type&&(e.wakeUp(),e.data.autoPlay?e.start():e.stop())});let v=Object.keys(f.shared.fonts).map(e=>this._sharedAssetsManager.getFont(e).loadingPromise);if(Promise.all(v).then(()=>{g.scene.markNeedsUpdateRendererDirty(),this._requestRenderAutoMode()}),Cc(f)&&function(e){if(yG.physicsEnabled(e.scene.objects))return!0;let t=!1;return e.scene.objects.traverse((e,i)=>{if(i.events){if(Array.isArray(i.events)){for(let e of i.events)if(!0!==e.data.disabled&&"GameControl"===e.data.type&&e.data.collisionEnabled){t=!0;break}}else for(let e of Object.values(i.events))if(!0!==e.disabled&&"GameControl"===e.type&&e.collisionEnabled){t=!0;break}}}),t}(f)&&await Promise.all(v),Db(f)){let e=[];this._scene.traverseEntity(t=>{(t instanceof Os||t instanceof D5)&&t.uiCanvas&&e.push(t.uiCanvas)}),await Promise.all(e.map(e=>e.promise))}if(this._scene.rewriteEventsBeforeGoToPlayMode(),Rt(this._scene.activePage,this._sharedAssetsManager),!this._renderer){this._renderer=new P2({canvas:this.canvas,antialias:!1,alpha:!0,stencil:!1,depth:!1,powerPreference:"high-performance"}),this._renderer.hdTransmission=!0===f.scene.publish.hdTransmission;let e=this._getPixelRatio(/Mobi|Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)?f.scene.publish.settings.web.pixelRatioMobile:f.scene.publish.settings.web.pixelRatioDesktop);if(this._renderer.setPixelRatio(e),this._renderer.pipeline.enableUIOverlay(),this._renderer.pipeline.addEventListener("smaaloaded",this._requestRenderAutoMode),f.shared.images.SplineWatermark){let e=this._sharedAssetsManager.getImage("SplineWatermark");await e.loadPromise;let t=e.getTexture(1001);this._renderer.pipeline.setWatermark(t)}}O3(f)&&this._scene.initializeSplatViewer(),void 0!==f.scene.blueNoiseTextureData&&this._renderer.pipeline.updateBlueNoiseTexture(f.scene.blueNoiseTextureData);let y=Object.values(f.frames)[0];if(this._frameView?this._frameView.setCamera(this._camera):("fullscreen"===y.preset?(this._viewportMode=1,this.canvas.style.display="block",this.canvas.parentElement&&(this._viewportWidth=this.canvas.parentElement.clientWidth||300,this.canvas.style.width="100%"),this.canvas.parentElement&&(this._viewportHeight=this.canvas.parentElement.clientHeight||150,this.canvas.style.height="100%")):(this._viewportMode=2,this._viewportWidth=y.size[0],this._viewportHeight=y.size[1],this.canvas.style.width=`${this._viewportWidth}px`,this.canvas.style.height=`${this._viewportHeight}px`),this._renderer.setSize(this._viewportWidth,this._viewportHeight,!1),this._frameView=new zD(this._renderer,this._camera,new tJ(this._viewportWidth,this._viewportHeight),new tJ(window.innerWidth,window.innerHeight)),this._frameView.enableResponsive=(y.allowResponsive??!1)&&"fullscreen"===y.preset),t){let e=new Lh(this._renderer,this.data.scene.publish,this._scene,()=>this._scene.activeCamera,this._sharedAssetsManager,this._requestRenderAutoMode,!0,y);this._scene.updateMatrixWorld(!0),this._controls=new B7(e),this._animationControls=new zi(this._scene,this._requestRenderAutoMode),this._eventManager=new zP(f.scene.publish,this._controls,this._animationControls,e,f.shared.variables),this._eventManager.activate(),this._controls.activate(this._eventManager)}this._resize(),this._scene.activePage.data.postprocessing.depthOfField.enabled&&Promise.all(this._sharedAssetsManager.getImageLoadPromises()).then(()=>{this._resize(!0)}),void 0!==r&&this.setVariables(r),0===this.dt&&(this.render(performance.now()),setTimeout(()=>{this._renderer?.setAnimationLoop(this.render)},0)),this._resizeObserverTimeout=setTimeout(()=>{!this._resizeObserver&&this.canvas.parentElement&&(this._resizeObserver=new ResizeObserver(()=>{this._viewportWidth=this.canvas.clientWidth,this._viewportHeight=this.canvas.clientHeight,this._debouncedResize()}),this._resizeObserver.observe(this.canvas.parentElement))},300),document.addEventListener("scroll",this._onScroll)}setVariables(e){if(void 0!==this._data)for(let[t,i]of Object.entries(e))this.setVariable(t,i)}setVariable(e,t){let i=this._getVariableByName(e);
8174if(!i||"dynamicVariableType"in i.data)void 0===i?console.warn(`No variable named ${e} was found in your Spline file. Make sure to create it from Spline editor.`):"dynamicVariableType"in i.data&&console.warn(`Dynamic variables like ${e} cannot be updated from code.`);else{let e=t;"number"==typeof i.data.value?e="number"==typeof t?t:"boolean"==typeof t?!0===t?1:0:parseFloat(t):"boolean"==typeof i.data.value?e="number"==typeof t?!!t:"boolean"==typeof t?t:"false"!==t.toLocaleLowerCase()&&!!t:"string"!=typeof i.data.value&&void 0!==i.data.value.textValue&&(e=t.toString());let r="string"==typeof e?{textValue:e}:e;this._sharedAssetsManager?.updateVariable(i.id,r),this.requestRender(),this._requestRenderAutoMode()}}getVariables(){let e={};return this._data&&this._data.shared.variables.forEach(t=>{void 0===e[t.data.name]&&(e[t.data.name]=this._getVariableValue(this._sharedAssetsManager.getVariable(t.id)))}),e}getVariable(e){let t=this._getVariableByName(e);if(t){let e=this._sharedAssetsManager.getVariable(t.id);return this._getVariableValue(e)}}_getVariableValue(e){return"string"!=typeof e&&yY.isTextValue(e)?yY.getDisplayedValue(e):e}_getVariableByName(e){if(this._data){if(this._variablesCache.has(e))return this._variablesCache.get(e);let t=this._data.shared.variables.find(t=>t.data.name===e);return t&&this._variablesCache.set(e,t),t}}_getPixelRatio(e){switch(e){case 0:return window.devicePixelRatio;case 1:return 1;case 2:return 2}}findObjectById(e){let t=this._scene?.getObjectByProperty("uuid",e);return this._createProxyObject(t)}findObjectByName(e){let t=this._scene?.getObjectByName(e);return this._createProxyObject(t)}getAllObjects(){let e=[];return this._scene?.traverseEntity(t=>{if(t.uuid!==mO&&!this._scene.isInvisibleObjects(t)&&!(t instanceof D5)){let i=this._createProxyObject(t);i&&e.push(i)}}),e}getSplineEvents(){return(this._eventManager?.handlers?.Spline).splineEvents}emitEvent(e,t){(this.findObjectById(t)||this.findObjectByName(t))?.emitEvent(e)}emitEventReverse(e,t){(this.findObjectById(t)||this.findObjectByName(t))?.emitEventReverse(e)}addEventListener(e,t){this.canvas.addEventListener(e,t)}removeEventListener(e,t){this.canvas.removeEventListener(e,t)}setZoom(e){this._controls?.orbitControls instanceof Bj&&this._controls?.orbitControls.setZoom(e)}get eventManager(){return this._eventManager}get controls(){return this._controls}setSize(e,t){this._viewportWidth=e,this._viewportHeight=t,this._viewportMode=2,this._resize()}setBackgroundColor(e){let t=zz(e);this._scene?.activePage.setBackgroundColor(t),this._requestRenderAutoMode()}dispose(){var e;this.disposed=!0,this._eventManager?.deactivate(),this._scene?.dispose(),this._sharedAssetsManager?.dispose(),this._proxyObjectCache.forEach(e=>{hC.unsubscribe(e)}),this._variablesCache.clear(),this._renderer?.setAnimationLoop(null),this._renderer?.dispose(),this._renderer=void 0,this._sharedAssetsManager?.dispose(),this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=void 0),void 0!==this._resizeObserverTimeout&&clearTimeout(this._resizeObserverTimeout),this.canvas.style.width="",this.canvas.style.height="",this.canvas.removeAttribute("width"),this.canvas.removeAttribute("height"),this._frameView&&(this._frameView=void 0),this._controls?.deactivate(),this.dt=0,(e=this.canvas).removeEventListener("pointerdown",pv,!0),e.removeEventListener("pointerdown",px,!0),e.removeEventListener("pointermove",px,!0),e.removeEventListener("pointerup",py,!0),e.removeEventListener("pointercancel",py,!0),e.removeEventListener("pointerleave",py,!0),window.removeEventListener("keydown",pw,!0),window.removeEventListener("keyup",pS,!0),document.removeEventListener("scroll",this._onScroll)}get isStopped(){return this._isPaused}stop(){this._isPaused||(this._renderer?.setAnimationLoop(null),this._isPaused=!0,this._eventManager?.pause(),this._controls?.orbitControls&&(this._controls.orbitControls.enabled=!1))}play(){this._isPaused&&(this._isPaused=!1,this._eventManager?.resume(),this._controls?.orbitControls&&(this._controls.orbitControls.enabled=!0),this._renderer?.setAnimationLoop(this.render))}setGlobalEvents(e){this._eventManager?.updateUseWindowEvents(e)}get data(){return this._data}_createProxyObject(e){let t;if(!this._scene||null==e)return;if(this._proxyObjectCache.has(e.uuid))return this._proxyObjectCache.get(e.uuid);e.traverseAncestors(e=>
8174{e instanceof D5&&(t=e.name)});let i=this._sharedAssetsManager,r={shared:i,scene:this._scene},a=t=>{if(null===t||"Base State"===t)return null;if(t&&e.data.states){let i=e.data.states.find(e=>e.data.name===t);return i?i.id:void 0}},o=hC({name:e.name,uuid:e.uuid,visible:e.visible,intensity:e.intensity,position:e.position,rotation:e.rotation,scale:e.scale,type:e.data.type,page:t,parentUuid:e.parent instanceof D5||e instanceof Ia?void 0:e.parent?.uuid,emitEvent(t){e.dispatchEvent({type:"userEvent",eventName:t})},emitEventReverse(t){e.dispatchEvent({type:"userEvent",eventName:t,reverse:!0})},hide(){e.visible&&(e.visible=!1,r.shared.requestRender())},show(){e.visible||(e.visible=!0,r.shared.requestRender())},get state(){let t=e.stateSelection;if(null!==t)return e.data.states.find(({id:e})=>e===t)?.data.name},set state(l){let t;if(void 0!==l){let i="string"==typeof l?e.data.states.find(({id:e})=>e===l):e.data.states[l];if(i)t=i.id;else{let e="string"==typeof l?a(l):void 0;e&&(t=e)}}e.changeSelectedState(t??null,r),e.currentState=t??null,e.dispatchEvent({type:"completeState",state:t??null}),r.shared.requestRender()},transition(t){let r=this,o,h=xv.timeline({autoplay:t.autoPlay??!0}),c={transition({from:t,to:c,duration:d,delay:u,...p}){let f=a(t);void 0===f&&(f=o);let m=a(c);o=m;let g=new Rl(e,f,m,{state:m,repeat:0,delay:u??0,delayDirection:"start-once",direction:"normal",duration:d??1e3,...p,...6===p.easing?gm.defaultData:5===p.easing?gO.defaultData:{}},i,!1);return h.add({...g.params,begin:()=>{(t&&f||"Base State"===t&&!f)&&(r.state=f??void 0)},complete:()=>{r.state=m??void 0}},h.duration),this},play(){return h.play(),this},pause(){return h.pause(),this},reset(){return h.reset(),this},seek(e){return h.seek(e),this}};return c.transition(t),c},set color(l){let t=zz(l);if(Dl.is(e)){e.color=t;return}if("Mesh"!==e.type||!("material"in e)||!(e instanceof EH))return;let i={r:t.r,g:t.g,b:t.b,a:t.a},a=Array.isArray(e.material)?e.material[0]:e.material,o=a.data.layers.find(e=>"color"===e.data.type)?.id;o&&a.updateByOp({type:0,path:["layers",o],props:{color:{...i}}},a.data,r)}},(t,i)=>{"object"!=typeof e[t]&&Object.getOwnPropertyDescriptor(e,t)?.writable&&(e[t]=i),this._requestRenderAutoMode(),e.updateMatrix()});return this._proxyObjectCache.set(e.uuid,o),o}setUIWasmUrl(e){Mv.skiaWasmUrl=e}pauseGameControls(){this._eventManager?.controlsManager.gameControl?.pause()}resumeGameControls(){this._eventManager?.controlsManager.gameControl?.resume()}async swapGeometry(e,t){let i;if("string"==typeof t){if(t.endsWith(".splinegeometry"))i=new Uint8Array(await (await fetch(t)).arrayBuffer());else throw Error("Only .splinegeometry format is supported")}else i=t;let r=mC.deserialize(i),a="data"in r&&void 0!==r.data.draco;a&&await zn(this._wasmPath);let o=this._scene?.getObjectByProperty("uuid",e)??this._scene?.getObjectByName(e);if(!o){console.warn(`Object ${e} not found`);return}if("Mesh"!==o.data.type||!(o instanceof EH)){console.warn(`Object ${e} is not a mesh`);return}let h={...o.data,geometry:r};for(let e of(a&&await zh([h]),o.updateByOp({type:0,path:[],props:{geometry:h.geometry}},h,{shared:this._sharedAssetsManager,scene:this._scene},!1),o.data.states)){let t={...e.data};o.states||(o.states={}),o.states[e.id]=yF.patch(h,t)}return i}}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.