diff --git a/static/pkg/atmosphere/assets/index-BZvypqGP.js b/static/pkg/atmosphere/assets/index-Dw01M2St.js similarity index 98% rename from static/pkg/atmosphere/assets/index-BZvypqGP.js rename to static/pkg/atmosphere/assets/index-Dw01M2St.js index 72672868..ba1d9bc3 100644 --- a/static/pkg/atmosphere/assets/index-BZvypqGP.js +++ b/static/pkg/atmosphere/assets/index-Dw01M2St.js @@ -58,7 +58,7 @@ Error generating stack: `+i.message+` * @license * Copyright 2010-2025 Three.js Authors * SPDX-License-Identifier: MIT - */const $s="181",rh={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},ah={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},G8=0,I3=1,k8=2,BW=3,W8=0,MS=1,Z0=2,Xs=3,eo=0,ki=1,xr=2,Lr=0,Eh=1,U3=2,P3=3,z3=4,AS=5,bo=100,X8=101,q8=102,Y8=103,j8=104,Yw=200,uh=201,Z8=202,Q8=203,Y1=204,j1=205,K8=206,J8=207,$8=208,e9=209,t9=210,n9=211,i9=212,r9=213,a9=214,Z1=0,Eg=1,Q1=2,Ih=3,K1=4,J1=5,$1=6,ey=7,Jg=0,s9=1,o9=2,As=0,l9=1,c9=2,u9=3,jw=4,h9=5,d9=6,f9=7,B3="attached",p9="detached",wS=300,Pl=301,$c=302,bg=303,Mg=304,jp=306,Ir=1e3,Wi=1001,xp=1002,Yn=1003,RS=1004,FW=1004,hh=1005,HW=1005,Bt=1006,np=1007,VW=1007,Ga=1008,m9=1008,Ni=1009,CS=1010,DS=1011,Uh=1012,$g=1013,to=1014,fi=1015,Jn=1016,NS=1017,OS=1018,Ph=1020,Zw=35902,Qw=35899,Kw=1021,Jw=1022,ai=1023,yp=1026,zh=1027,Qs=1028,ev=1029,Mo=1030,LS=1031,GW=1032,IS=1033,Q0=33776,K0=33777,J0=33778,$0=33779,ty=35840,ny=35841,iy=35842,ry=35843,ay=36196,sy=37492,oy=37496,ly=37808,cy=37809,uy=37810,hy=37811,dy=37812,fy=37813,py=37814,my=37815,gy=37816,vy=37817,_y=37818,xy=37819,yy=37820,Sy=37821,Ty=36492,Ey=36494,by=36495,My=36283,Ay=36284,wy=36285,Ry=36286,$w=2200,g9=2201,v9=2202,Sp=2300,Tp=2301,l1=2302,dh=2400,fh=2401,Ag=2402,US=2500,eR=2501,_9=0,tR=1,Cy=2,su=3200,x9=3201,kW=3202,WW=3203,Hl=0,y9=1,Xr="",mn="srgb",Xn="srgb-linear",wg="linear",Dn="srgb",XW=0,sh=7680,qW=7681,YW=7682,jW=7683,ZW=34055,QW=34056,KW=5386,JW=512,$W=513,eX=514,tX=515,nX=516,iX=517,rX=518,F3=519,S9=512,T9=513,E9=514,nR=515,b9=516,M9=517,A9=518,w9=519,Rg=35044,R9=35048,aX=35040,sX=35045,oX=35049,lX=35041,cX=35046,uX=35050,hX=35042,dX="100",No="300 es",ka=2e3,Ep=2001,fX={COMPUTE:"compute",RENDER:"render"},pX={PERSPECTIVE:"perspective",LINEAR:"linear",FLAT:"flat"},mX={NORMAL:"normal",CENTROID:"centroid",SAMPLE:"sample",FIRST:"first",EITHER:"either"};function C9(n){for(let e=n.length-1;e>=0;--e)if(n[e]>=65535)return!0;return!1}const gX={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function Vf(n,e){return new gX[n](e)}function Cg(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function D9(){const n=Cg("canvas");return n.style.display="block",n}const QN={};let eu=null;function vX(n){eu=n}function _X(){return eu}function Dg(...n){const e="THREE."+n.shift();eu?eu("log",e,...n):console.log(e,...n)}function dt(...n){const e="THREE."+n.shift();eu?eu("warn",e,...n):console.warn(e,...n)}function Ht(...n){const e="THREE."+n.shift();eu?eu("error",e,...n):console.error(e,...n)}function bp(...n){const e=n.join(" ");e in QN||(QN[e]=!0,dt(...n))}function xX(n,e,t){return new Promise(function(i,r){function a(){switch(n.clientWaitSync(e,n.SYNC_FLUSH_COMMANDS_BIT,0)){case n.WAIT_FAILED:r();break;case n.TIMEOUT_EXPIRED:setTimeout(a,t);break;default:i()}}setTimeout(a,t)})}let Mi=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){const i=this._listeners;return i===void 0?!1:i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){const i=this._listeners;if(i===void 0)return;const r=i[e];if(r!==void 0){const a=r.indexOf(t);a!==-1&&r.splice(a,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const i=t[e.type];if(i!==void 0){e.target=this;const r=i.slice(0);for(let a=0,s=r.length;a>8&255]+Cr[n>>16&255]+Cr[n>>24&255]+"-"+Cr[e&255]+Cr[e>>8&255]+"-"+Cr[e>>16&15|64]+Cr[e>>24&255]+"-"+Cr[t&63|128]+Cr[t>>8&255]+"-"+Cr[t>>16&255]+Cr[t>>24&255]+Cr[i&255]+Cr[i>>8&255]+Cr[i>>16&255]+Cr[i>>24&255]).toLowerCase()}function It(n,e,t){return Math.max(e,Math.min(t,n))}function iR(n,e){return(n%e+e)%e}function yX(n,e,t,i,r){return i+(n-e)*(r-i)/(t-e)}function SX(n,e,t){return n!==e?(t-n)/(e-n):0}function eg(n,e,t){return(1-t)*n+t*e}function TX(n,e,t,i){return eg(n,e,1-Math.exp(-t*i))}function EX(n,e=1){return e-Math.abs(iR(n,e*2)-e)}function bX(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*(3-2*n))}function MX(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*n*(n*(n*6-15)+10))}function AX(n,e){return n+Math.floor(Math.random()*(e-n+1))}function wX(n,e){return n+Math.random()*(e-n)}function RX(n){return n*(.5-Math.random())}function CX(n){n!==void 0&&(KN=n);let e=KN+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function DX(n){return n*bh}function NX(n){return n*Mp}function OX(n){return(n&n-1)===0&&n!==0}function LX(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function IX(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function UX(n,e,t,i,r){const a=Math.cos,s=Math.sin,o=a(t/2),l=s(t/2),u=a((e+i)/2),d=s((e+i)/2),f=a((e-i)/2),p=s((e-i)/2),m=a((i-e)/2),v=s((i-e)/2);switch(r){case"XYX":n.set(o*d,l*f,l*p,o*u);break;case"YZY":n.set(l*p,o*d,l*f,o*u);break;case"ZXZ":n.set(l*f,l*p,o*d,o*u);break;case"XZX":n.set(o*d,l*v,l*m,o*u);break;case"YXY":n.set(l*m,o*d,l*v,o*u);break;case"ZYZ":n.set(l*v,l*m,o*d,o*u);break;default:dt("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function qr(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return n/4294967295;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int32Array:return Math.max(n/2147483647,-1);case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function Zt(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return Math.round(n*4294967295);case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int32Array:return Math.round(n*2147483647);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}const lt={DEG2RAD:bh,RAD2DEG:Mp,generateUUID:ja,clamp:It,euclideanModulo:iR,mapLinear:yX,inverseLerp:SX,lerp:eg,damp:TX,pingpong:EX,smoothstep:bX,smootherstep:MX,randInt:AX,randFloat:wX,randFloatSpread:RX,seededRandom:CX,degToRad:DX,radToDeg:NX,isPowerOfTwo:OX,ceilPowerOfTwo:LX,floorPowerOfTwo:IX,setQuaternionFromProperEuler:UX,normalize:Zt,denormalize:qr};class re{constructor(e=0,t=0){re.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 new 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 new 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}sub(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){const 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=It(this.x,e.x,t.x),this.y=It(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=It(this.x,e,t),this.y=It(this.y,e,t),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(It(i,e,t))}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=Math.trunc(this.x),this.y=Math.trunc(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}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(It(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const 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){const i=Math.cos(t),r=Math.sin(t),a=this.x-e.x,s=this.y-e.y;return this.x=a*i-s*r+e.x,this.y=a*r+s*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class ft{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,s,o){let l=i[r+0],u=i[r+1],d=i[r+2],f=i[r+3],p=a[s+0],m=a[s+1],v=a[s+2],x=a[s+3];if(o<=0){e[t+0]=l,e[t+1]=u,e[t+2]=d,e[t+3]=f;return}if(o>=1){e[t+0]=p,e[t+1]=m,e[t+2]=v,e[t+3]=x;return}if(f!==x||l!==p||u!==m||d!==v){let S=l*p+u*m+d*v+f*x;S<0&&(p=-p,m=-m,v=-v,x=-x,S=-S);let _=1-o;if(S<.9995){const T=Math.acos(S),E=Math.sin(T);_=Math.sin(_*T)/E,o=Math.sin(o*T)/E,l=l*_+p*o,u=u*_+m*o,d=d*_+v*o,f=f*_+x*o}else{l=l*_+p*o,u=u*_+m*o,d=d*_+v*o,f=f*_+x*o;const T=1/Math.sqrt(l*l+u*u+d*d+f*f);l*=T,u*=T,d*=T,f*=T}}e[t]=l,e[t+1]=u,e[t+2]=d,e[t+3]=f}static multiplyQuaternionsFlat(e,t,i,r,a,s){const o=i[r],l=i[r+1],u=i[r+2],d=i[r+3],f=a[s],p=a[s+1],m=a[s+2],v=a[s+3];return e[t]=o*v+d*f+l*m-u*p,e[t+1]=l*v+d*p+u*f-o*m,e[t+2]=u*v+d*m+o*p-l*f,e[t+3]=d*v-o*f-l*p-u*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=!0){const i=e._x,r=e._y,a=e._z,s=e._order,o=Math.cos,l=Math.sin,u=o(i/2),d=o(r/2),f=o(a/2),p=l(i/2),m=l(r/2),v=l(a/2);switch(s){case"XYZ":this._x=p*d*f+u*m*v,this._y=u*m*f-p*d*v,this._z=u*d*v+p*m*f,this._w=u*d*f-p*m*v;break;case"YXZ":this._x=p*d*f+u*m*v,this._y=u*m*f-p*d*v,this._z=u*d*v-p*m*f,this._w=u*d*f+p*m*v;break;case"ZXY":this._x=p*d*f-u*m*v,this._y=u*m*f+p*d*v,this._z=u*d*v+p*m*f,this._w=u*d*f-p*m*v;break;case"ZYX":this._x=p*d*f-u*m*v,this._y=u*m*f+p*d*v,this._z=u*d*v-p*m*f,this._w=u*d*f+p*m*v;break;case"YZX":this._x=p*d*f+u*m*v,this._y=u*m*f+p*d*v,this._z=u*d*v-p*m*f,this._w=u*d*f-p*m*v;break;case"XZY":this._x=p*d*f-u*m*v,this._y=u*m*f-p*d*v,this._z=u*d*v+p*m*f,this._w=u*d*f+p*m*v;break;default:dt("Quaternion: .setFromEuler() encountered an unknown order: "+s)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const 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){const t=e.elements,i=t[0],r=t[4],a=t[8],s=t[1],o=t[5],l=t[9],u=t[2],d=t[6],f=t[10],p=i+o+f;if(p>0){const m=.5/Math.sqrt(p+1);this._w=.25/m,this._x=(d-l)*m,this._y=(a-u)*m,this._z=(s-r)*m}else if(i>o&&i>f){const m=2*Math.sqrt(1+i-o-f);this._w=(d-l)/m,this._x=.25*m,this._y=(r+s)/m,this._z=(a+u)/m}else if(o>f){const m=2*Math.sqrt(1+o-i-f);this._w=(a-u)/m,this._x=(r+s)/m,this._y=.25*m,this._z=(l+d)/m}else{const m=2*Math.sqrt(1+f-i-o);this._w=(s-r)/m,this._x=(a+u)/m,this._y=(l+d)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return i<1e-8?(i=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(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(It(this.dot(e),-1,1)))}rotateTowards(e,t){const i=this.angleTo(e);if(i===0)return this;const 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 e===0?(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){const i=e._x,r=e._y,a=e._z,s=e._w,o=t._x,l=t._y,u=t._z,d=t._w;return this._x=i*d+s*o+r*u-a*l,this._y=r*d+s*l+a*o-i*u,this._z=a*d+s*u+i*l-r*o,this._w=s*d-i*o-r*l-a*u,this._onChangeCallback(),this}slerp(e,t){if(t<=0)return this;if(t>=1)return this.copy(e);let i=e._x,r=e._y,a=e._z,s=e._w,o=this.dot(e);o<0&&(i=-i,r=-r,a=-a,s=-s,o=-o);let l=1-t;if(o<.9995){const u=Math.acos(o),d=Math.sin(u);l=Math.sin(l*u)/d,t=Math.sin(t*u)/d,this._x=this._x*l+i*t,this._y=this._y*l+r*t,this._z=this._z*l+a*t,this._w=this._w*l+s*t,this._onChangeCallback()}else this._x=this._x*l+i*t,this._y=this._y*l+r*t,this._z=this._z*l+a*t,this._w=this._w*l+s*t,this.normalize();return this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),i=Math.random(),r=Math.sqrt(1-i),a=Math.sqrt(i);return this.set(r*Math.sin(e),r*Math.cos(e),a*Math.sin(t),a*Math.cos(t))}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._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class D{constructor(e=0,t=0,i=0){D.prototype.isVector3=!0,this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(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 new 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 new 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(JN.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(JN.setFromAxisAngle(e,t))}applyMatrix3(e){const 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){const t=this.x,i=this.y,r=this.z,a=e.elements,s=1/(a[3]*t+a[7]*i+a[11]*r+a[15]);return this.x=(a[0]*t+a[4]*i+a[8]*r+a[12])*s,this.y=(a[1]*t+a[5]*i+a[9]*r+a[13])*s,this.z=(a[2]*t+a[6]*i+a[10]*r+a[14])*s,this}applyQuaternion(e){const t=this.x,i=this.y,r=this.z,a=e.x,s=e.y,o=e.z,l=e.w,u=2*(s*r-o*i),d=2*(o*t-a*r),f=2*(a*i-s*t);return this.x=t+l*u+s*f-o*d,this.y=i+l*d+o*u-a*f,this.z=r+l*f+a*d-s*u,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const 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=It(this.x,e.x,t.x),this.y=It(this.y,e.y,t.y),this.z=It(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=It(this.x,e,t),this.y=It(this.y,e,t),this.z=It(this.z,e,t),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(It(i,e,t))}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=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(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){const i=e.x,r=e.y,a=e.z,s=t.x,o=t.y,l=t.z;return this.x=r*l-a*o,this.y=a*s-i*l,this.z=i*o-r*s,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return LE.copy(this).projectOnVector(e),this.sub(LE)}reflect(e){return this.sub(LE.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(It(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const 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){const 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){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const 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,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,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(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,i=Math.sqrt(1-t*t);return this.x=i*Math.cos(e),this.y=t,this.z=i*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const LE=new D,JN=new ft;class Mt{constructor(e,t,i,r,a,s,o,l,u){Mt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,i,r,a,s,o,l,u)}set(e,t,i,r,a,s,o,l,u){const d=this.elements;return d[0]=e,d[1]=r,d[2]=o,d[3]=t,d[4]=a,d[5]=l,d[6]=i,d[7]=s,d[8]=u,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const 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){const 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){const i=e.elements,r=t.elements,a=this.elements,s=i[0],o=i[3],l=i[6],u=i[1],d=i[4],f=i[7],p=i[2],m=i[5],v=i[8],x=r[0],S=r[3],_=r[6],T=r[1],E=r[4],b=r[7],R=r[2],w=r[5],L=r[8];return a[0]=s*x+o*T+l*R,a[3]=s*S+o*E+l*w,a[6]=s*_+o*b+l*L,a[1]=u*x+d*T+f*R,a[4]=u*S+d*E+f*w,a[7]=u*_+d*b+f*L,a[2]=p*x+m*T+v*R,a[5]=p*S+m*E+v*w,a[8]=p*_+m*b+v*L,this}multiplyScalar(e){const 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(){const e=this.elements,t=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],l=e[6],u=e[7],d=e[8];return t*s*d-t*o*u-i*a*d+i*o*l+r*a*u-r*s*l}invert(){const e=this.elements,t=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],l=e[6],u=e[7],d=e[8],f=d*s-o*u,p=o*l-d*a,m=u*a-s*l,v=t*f+i*p+r*m;if(v===0)return this.set(0,0,0,0,0,0,0,0,0);const x=1/v;return e[0]=f*x,e[1]=(r*u-d*i)*x,e[2]=(o*i-r*s)*x,e[3]=p*x,e[4]=(d*t-r*l)*x,e[5]=(r*a-o*t)*x,e[6]=m*x,e[7]=(i*l-u*t)*x,e[8]=(s*t-i*a)*x,this}transpose(){let e;const 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){const 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,s,o){const l=Math.cos(a),u=Math.sin(a);return this.set(i*l,i*u,-i*(l*s+u*o)+s+e,-r*u,r*l,-r*(-u*s+l*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(IE.makeScale(e,t)),this}rotate(e){return this.premultiply(IE.makeRotation(-e)),this}translate(e,t){return this.premultiply(IE.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const 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){const t=this.elements,i=e.elements;for(let r=0;r<9;r++)if(t[r]!==i[r])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){const 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)}}const IE=new Mt,$N=new Mt().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),eO=new Mt().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function PX(){const n={enabled:!0,workingColorSpace:Xn,spaces:{},convert:function(r,a,s){return this.enabled===!1||a===s||!a||!s||(this.spaces[a].transfer===Dn&&(r.r=Cl(r.r),r.g=Cl(r.g),r.b=Cl(r.b)),this.spaces[a].primaries!==this.spaces[s].primaries&&(r.applyMatrix3(this.spaces[a].toXYZ),r.applyMatrix3(this.spaces[s].fromXYZ)),this.spaces[s].transfer===Dn&&(r.r=ip(r.r),r.g=ip(r.g),r.b=ip(r.b))),r},workingToColorSpace:function(r,a){return this.convert(r,this.workingColorSpace,a)},colorSpaceToWorking:function(r,a){return this.convert(r,a,this.workingColorSpace)},getPrimaries:function(r){return this.spaces[r].primaries},getTransfer:function(r){return r===Xr?wg:this.spaces[r].transfer},getToneMappingMode:function(r){return this.spaces[r].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(r,a=this.workingColorSpace){return r.fromArray(this.spaces[a].luminanceCoefficients)},define:function(r){Object.assign(this.spaces,r)},_getMatrix:function(r,a,s){return r.copy(this.spaces[a].toXYZ).multiply(this.spaces[s].fromXYZ)},_getDrawingBufferColorSpace:function(r){return this.spaces[r].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(r=this.workingColorSpace){return this.spaces[r].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(r,a){return bp("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),n.workingToColorSpace(r,a)},toWorkingColorSpace:function(r,a){return bp("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),n.colorSpaceToWorking(r,a)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],i=[.3127,.329];return n.define({[Xn]:{primaries:e,whitePoint:i,transfer:wg,toXYZ:$N,fromXYZ:eO,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:mn},outputColorSpaceConfig:{drawingBufferColorSpace:mn}},[mn]:{primaries:e,whitePoint:i,transfer:Dn,toXYZ:$N,fromXYZ:eO,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:mn}}}),n}const tn=PX();function Cl(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function ip(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}let Pd;class N9{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let i;if(e instanceof HTMLCanvasElement)i=e;else{Pd===void 0&&(Pd=Cg("canvas")),Pd.width=e.width,Pd.height=e.height;const r=Pd.getContext("2d");e instanceof ImageData?r.putImageData(e,0,0):r.drawImage(e,0,0,e.width,e.height),i=Pd}return i.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=Cg("canvas");t.width=e.width,t.height=e.height;const i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);const r=i.getImageData(0,0,e.width,e.height),a=r.data;for(let s=0;s1),this.pmremVersion=0}get width(){return this.source.getSize(PE).x}get height(){return this.source.getSize(PE).y}get depth(){return this.source.getSize(PE).z}get image(){return this.source.data}set image(e=null){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)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}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.channel=e.channel,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.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(const t in e){const i=e[t];if(i===void 0){dt(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){dt(`Texture.setValues(): property '${t}' does not exist.`);continue}r&&i&&r.isVector2&&i.isVector2||r&&i&&r.isVector3&&i.isVector3||r&&i&&r.isMatrix3&&i.isMatrix3?r.copy(i):this[t]=i}}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];const i={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,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,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,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(this.mapping!==wS)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case Ir:e.x=e.x-Math.floor(e.x);break;case Wi:e.x=e.x<0?0:1;break;case xp:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Ir:e.y=e.y-Math.floor(e.y);break;case Wi:e.y=e.y<0?0:1;break;case xp:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}In.DEFAULT_IMAGE=null;In.DEFAULT_MAPPING=wS;In.DEFAULT_ANISOTROPY=1;class Pt{constructor(e=0,t=0,i=0,r=1){Pt.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 new 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 new 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=e.w!==void 0?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}sub(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){const t=this.x,i=this.y,r=this.z,a=this.w,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*r+s[12]*a,this.y=s[1]*t+s[5]*i+s[9]*r+s[13]*a,this.z=s[2]*t+s[6]*i+s[10]*r+s[14]*a,this.w=s[3]*t+s[7]*i+s[11]*r+s[15]*a,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const 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;const l=e.elements,u=l[0],d=l[4],f=l[8],p=l[1],m=l[5],v=l[9],x=l[2],S=l[6],_=l[10];if(Math.abs(d-p)<.01&&Math.abs(f-x)<.01&&Math.abs(v-S)<.01){if(Math.abs(d+p)<.1&&Math.abs(f+x)<.1&&Math.abs(v+S)<.1&&Math.abs(u+m+_-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const E=(u+1)/2,b=(m+1)/2,R=(_+1)/2,w=(d+p)/4,L=(f+x)/4,U=(v+S)/4;return E>b&&E>R?E<.01?(i=0,r=.707106781,a=.707106781):(i=Math.sqrt(E),r=w/i,a=L/i):b>R?b<.01?(i=.707106781,r=0,a=.707106781):(r=Math.sqrt(b),i=w/r,a=U/r):R<.01?(i=.707106781,r=.707106781,a=0):(a=Math.sqrt(R),i=L/a,r=U/a),this.set(i,r,a,t),this}let T=Math.sqrt((S-v)*(S-v)+(f-x)*(f-x)+(p-d)*(p-d));return Math.abs(T)<.001&&(T=1),this.x=(S-v)/T,this.y=(f-x)/T,this.z=(p-d)/T,this.w=Math.acos((u+m+_-1)/2),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],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=It(this.x,e.x,t.x),this.y=It(this.y,e.y,t.y),this.z=It(this.z,e.z,t.z),this.w=It(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=It(this.x,e,t),this.y=It(this.y,e,t),this.z=It(this.z,e,t),this.w=It(this.w,e,t),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(It(i,e,t))}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=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(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}}class rR extends Mi{constructor(e=1,t=1,i={}){super(),i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Bt,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},i),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=i.depth,this.scissor=new Pt(0,0,e,t),this.scissorTest=!1,this.viewport=new Pt(0,0,e,t);const r={width:e,height:t,depth:i.depth},a=new In(r);this.textures=[];const s=i.count;for(let o=0;o1);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.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,i=e.textures.length;t=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,zs),zs.distanceToSquared(e.center)<=e.radius*e.radius}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(zm),__.subVectors(this.max,zm),zd.subVectors(e.a,zm),Bd.subVectors(e.b,zm),Fd.subVectors(e.c,zm),rc.subVectors(Bd,zd),ac.subVectors(Fd,Bd),Nu.subVectors(zd,Fd);let t=[0,-rc.z,rc.y,0,-ac.z,ac.y,0,-Nu.z,Nu.y,rc.z,0,-rc.x,ac.z,0,-ac.x,Nu.z,0,-Nu.x,-rc.y,rc.x,0,-ac.y,ac.x,0,-Nu.y,Nu.x,0];return!zE(t,zd,Bd,Fd,__)||(t=[1,0,0,0,1,0,0,0,1],!zE(t,zd,Bd,Fd,__))?!1:(x_.crossVectors(rc,ac),t=[x_.x,x_.y,x_.z],zE(t,zd,Bd,Fd,__))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,zs).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(zs).length()*.5),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()?this:($o[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),$o[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),$o[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),$o[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),$o[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),$o[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),$o[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),$o[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints($o),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)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}}const $o=[new D,new D,new D,new D,new D,new D,new D,new D],zs=new D,v_=new Qi,zd=new D,Bd=new D,Fd=new D,rc=new D,ac=new D,Nu=new D,zm=new D,__=new D,x_=new D,Ou=new D;function zE(n,e,t,i,r){for(let a=0,s=n.length-3;a<=s;a+=3){Ou.fromArray(n,a);const o=r.x*Math.abs(Ou.x)+r.y*Math.abs(Ou.y)+r.z*Math.abs(Ou.z),l=e.dot(Ou),u=t.dot(Ou),d=i.dot(Ou);if(Math.max(-Math.max(l,u,d),Math.min(l,u,d))>o)return!1}return!0}const FX=new Qi,Bm=new D,BE=new D;class qi{constructor(e=new D,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const i=this.center;t!==void 0?i.copy(t):FX.setFromPoints(e).getCenter(i);let r=0;for(let a=0,s=e.length;athis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(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;Bm.subVectors(e,this.center);const t=Bm.lengthSq();if(t>this.radius*this.radius){const i=Math.sqrt(t),r=(i-this.radius)*.5;this.center.addScaledVector(Bm,r/i),this.radius+=r}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(BE.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Bm.copy(e.center).add(BE)),this.expandByPoint(Bm.copy(e.center).sub(BE))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}}const el=new D,FE=new D,y_=new D,sc=new D,HE=new D,S_=new D,VE=new D;class Pr{constructor(e=new D,t=new D(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.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,el)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=el.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(el.copy(this.origin).addScaledVector(this.direction,t),el.distanceToSquared(e))}distanceSqToSegment(e,t,i,r){FE.copy(e).add(t).multiplyScalar(.5),y_.copy(t).sub(e).normalize(),sc.copy(this.origin).sub(FE);const a=e.distanceTo(t)*.5,s=-this.direction.dot(y_),o=sc.dot(this.direction),l=-sc.dot(y_),u=sc.lengthSq(),d=Math.abs(1-s*s);let f,p,m,v;if(d>0)if(f=s*l-o,p=s*o-l,v=a*d,f>=0)if(p>=-v)if(p<=v){const x=1/d;f*=x,p*=x,m=f*(f+s*p+2*o)+p*(s*f+p+2*l)+u}else p=a,f=Math.max(0,-(s*p+o)),m=-f*f+p*(p+2*l)+u;else p=-a,f=Math.max(0,-(s*p+o)),m=-f*f+p*(p+2*l)+u;else p<=-v?(f=Math.max(0,-(-s*a+o)),p=f>0?-a:Math.min(Math.max(-a,-l),a),m=-f*f+p*(p+2*l)+u):p<=v?(f=0,p=Math.min(Math.max(-a,-l),a),m=p*(p+2*l)+u):(f=Math.max(0,-(s*a+o)),p=f>0?a:Math.min(Math.max(-a,-l),a),m=-f*f+p*(p+2*l)+u);else p=s>0?-a:a,f=Math.max(0,-(s*p+o)),m=-f*f+p*(p+2*l)+u;return i&&i.copy(this.origin).addScaledVector(this.direction,f),r&&r.copy(FE).addScaledVector(y_,p),m}intersectSphere(e,t){el.subVectors(e.center,this.origin);const i=el.dot(this.direction),r=el.dot(el)-i*i,a=e.radius*e.radius;if(r>a)return null;const s=Math.sqrt(a-r),o=i-s,l=i+s;return l<0?null:o<0?this.at(l,t):this.at(o,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){const i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,r,a,s,o,l;const u=1/this.direction.x,d=1/this.direction.y,f=1/this.direction.z,p=this.origin;return u>=0?(i=(e.min.x-p.x)*u,r=(e.max.x-p.x)*u):(i=(e.max.x-p.x)*u,r=(e.min.x-p.x)*u),d>=0?(a=(e.min.y-p.y)*d,s=(e.max.y-p.y)*d):(a=(e.max.y-p.y)*d,s=(e.min.y-p.y)*d),i>s||a>r||((a>i||isNaN(i))&&(i=a),(s=0?(o=(e.min.z-p.z)*f,l=(e.max.z-p.z)*f):(o=(e.max.z-p.z)*f,l=(e.min.z-p.z)*f),i>l||o>r)||((o>i||i!==i)&&(i=o),(l=0?i:r,t)}intersectsBox(e){return this.intersectBox(e,el)!==null}intersectTriangle(e,t,i,r,a){HE.subVectors(t,e),S_.subVectors(i,e),VE.crossVectors(HE,S_);let s=this.direction.dot(VE),o;if(s>0){if(r)return null;o=1}else if(s<0)o=-1,s=-s;else return null;sc.subVectors(this.origin,e);const l=o*this.direction.dot(S_.crossVectors(sc,S_));if(l<0)return null;const u=o*this.direction.dot(HE.cross(sc));if(u<0||l+u>s)return null;const d=-o*sc.dot(VE);return d<0?null:this.at(d/s,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)}}class Me{constructor(e,t,i,r,a,s,o,l,u,d,f,p,m,v,x,S){Me.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,i,r,a,s,o,l,u,d,f,p,m,v,x,S)}set(e,t,i,r,a,s,o,l,u,d,f,p,m,v,x,S){const _=this.elements;return _[0]=e,_[4]=t,_[8]=i,_[12]=r,_[1]=a,_[5]=s,_[9]=o,_[13]=l,_[2]=u,_[6]=d,_[10]=f,_[14]=p,_[3]=m,_[7]=v,_[11]=x,_[15]=S,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 Me().fromArray(this.elements)}copy(e){const 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){const t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){const 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){const t=this.elements,i=e.elements,r=1/Hd.setFromMatrixColumn(e,0).length(),a=1/Hd.setFromMatrixColumn(e,1).length(),s=1/Hd.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]*s,t[9]=i[9]*s,t[10]=i[10]*s,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,i=e.x,r=e.y,a=e.z,s=Math.cos(i),o=Math.sin(i),l=Math.cos(r),u=Math.sin(r),d=Math.cos(a),f=Math.sin(a);if(e.order==="XYZ"){const p=s*d,m=s*f,v=o*d,x=o*f;t[0]=l*d,t[4]=-l*f,t[8]=u,t[1]=m+v*u,t[5]=p-x*u,t[9]=-o*l,t[2]=x-p*u,t[6]=v+m*u,t[10]=s*l}else if(e.order==="YXZ"){const p=l*d,m=l*f,v=u*d,x=u*f;t[0]=p+x*o,t[4]=v*o-m,t[8]=s*u,t[1]=s*f,t[5]=s*d,t[9]=-o,t[2]=m*o-v,t[6]=x+p*o,t[10]=s*l}else if(e.order==="ZXY"){const p=l*d,m=l*f,v=u*d,x=u*f;t[0]=p-x*o,t[4]=-s*f,t[8]=v+m*o,t[1]=m+v*o,t[5]=s*d,t[9]=x-p*o,t[2]=-s*u,t[6]=o,t[10]=s*l}else if(e.order==="ZYX"){const p=s*d,m=s*f,v=o*d,x=o*f;t[0]=l*d,t[4]=v*u-m,t[8]=p*u+x,t[1]=l*f,t[5]=x*u+p,t[9]=m*u-v,t[2]=-u,t[6]=o*l,t[10]=s*l}else if(e.order==="YZX"){const p=s*l,m=s*u,v=o*l,x=o*u;t[0]=l*d,t[4]=x-p*f,t[8]=v*f+m,t[1]=f,t[5]=s*d,t[9]=-o*d,t[2]=-u*d,t[6]=m*f+v,t[10]=p-x*f}else if(e.order==="XZY"){const p=s*l,m=s*u,v=o*l,x=o*u;t[0]=l*d,t[4]=-f,t[8]=u*d,t[1]=p*f+x,t[5]=s*d,t[9]=m*f-v,t[2]=v*f-m,t[6]=o*d,t[10]=x*f+p}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(HX,e,VX)}lookAt(e,t,i){const r=this.elements;return Oa.subVectors(e,t),Oa.lengthSq()===0&&(Oa.z=1),Oa.normalize(),oc.crossVectors(i,Oa),oc.lengthSq()===0&&(Math.abs(i.z)===1?Oa.x+=1e-4:Oa.z+=1e-4,Oa.normalize(),oc.crossVectors(i,Oa)),oc.normalize(),T_.crossVectors(Oa,oc),r[0]=oc.x,r[4]=T_.x,r[8]=Oa.x,r[1]=oc.y,r[5]=T_.y,r[9]=Oa.y,r[2]=oc.z,r[6]=T_.z,r[10]=Oa.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,r=t.elements,a=this.elements,s=i[0],o=i[4],l=i[8],u=i[12],d=i[1],f=i[5],p=i[9],m=i[13],v=i[2],x=i[6],S=i[10],_=i[14],T=i[3],E=i[7],b=i[11],R=i[15],w=r[0],L=r[4],U=r[8],N=r[12],C=r[1],z=r[5],W=r[9],K=r[13],oe=r[2],ae=r[6],X=r[10],te=r[14],Q=r[3],ce=r[7],se=r[11],De=r[15];return a[0]=s*w+o*C+l*oe+u*Q,a[4]=s*L+o*z+l*ae+u*ce,a[8]=s*U+o*W+l*X+u*se,a[12]=s*N+o*K+l*te+u*De,a[1]=d*w+f*C+p*oe+m*Q,a[5]=d*L+f*z+p*ae+m*ce,a[9]=d*U+f*W+p*X+m*se,a[13]=d*N+f*K+p*te+m*De,a[2]=v*w+x*C+S*oe+_*Q,a[6]=v*L+x*z+S*ae+_*ce,a[10]=v*U+x*W+S*X+_*se,a[14]=v*N+x*K+S*te+_*De,a[3]=T*w+E*C+b*oe+R*Q,a[7]=T*L+E*z+b*ae+R*ce,a[11]=T*U+E*W+b*X+R*se,a[15]=T*N+E*K+b*te+R*De,this}multiplyScalar(e){const 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(){const e=this.elements,t=e[0],i=e[4],r=e[8],a=e[12],s=e[1],o=e[5],l=e[9],u=e[13],d=e[2],f=e[6],p=e[10],m=e[14],v=e[3],x=e[7],S=e[11],_=e[15];return v*(+a*l*f-r*u*f-a*o*p+i*u*p+r*o*m-i*l*m)+x*(+t*l*m-t*u*p+a*s*p-r*s*m+r*u*d-a*l*d)+S*(+t*u*f-t*o*m-a*s*f+i*s*m+a*o*d-i*u*d)+_*(-r*o*d-t*l*f+t*o*p+r*s*f-i*s*p+i*l*d)}transpose(){const e=this.elements;let 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){const 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(){const e=this.elements,t=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],l=e[6],u=e[7],d=e[8],f=e[9],p=e[10],m=e[11],v=e[12],x=e[13],S=e[14],_=e[15],T=f*S*u-x*p*u+x*l*m-o*S*m-f*l*_+o*p*_,E=v*p*u-d*S*u-v*l*m+s*S*m+d*l*_-s*p*_,b=d*x*u-v*f*u+v*o*m-s*x*m-d*o*_+s*f*_,R=v*f*l-d*x*l-v*o*p+s*x*p+d*o*S-s*f*S,w=t*T+i*E+r*b+a*R;if(w===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const L=1/w;return e[0]=T*L,e[1]=(x*p*a-f*S*a-x*r*m+i*S*m+f*r*_-i*p*_)*L,e[2]=(o*S*a-x*l*a+x*r*u-i*S*u-o*r*_+i*l*_)*L,e[3]=(f*l*a-o*p*a-f*r*u+i*p*u+o*r*m-i*l*m)*L,e[4]=E*L,e[5]=(d*S*a-v*p*a+v*r*m-t*S*m-d*r*_+t*p*_)*L,e[6]=(v*l*a-s*S*a-v*r*u+t*S*u+s*r*_-t*l*_)*L,e[7]=(s*p*a-d*l*a+d*r*u-t*p*u-s*r*m+t*l*m)*L,e[8]=b*L,e[9]=(v*f*a-d*x*a-v*i*m+t*x*m+d*i*_-t*f*_)*L,e[10]=(s*x*a-v*o*a+v*i*u-t*x*u-s*i*_+t*o*_)*L,e[11]=(d*o*a-s*f*a-d*i*u+t*f*u+s*i*m-t*o*m)*L,e[12]=R*L,e[13]=(d*x*r-v*f*r+v*i*p-t*x*p-d*i*S+t*f*S)*L,e[14]=(v*o*r-s*x*r-v*i*l+t*x*l+s*i*S-t*o*S)*L,e[15]=(s*f*r-d*o*r+d*i*l-t*f*l-s*i*p+t*o*p)*L,this}scale(e){const 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(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,r))}makeTranslation(e,t,i){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){const 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){const 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){const 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){const i=Math.cos(t),r=Math.sin(t),a=1-i,s=e.x,o=e.y,l=e.z,u=a*s,d=a*o;return this.set(u*s+i,u*o-r*l,u*l+r*o,0,u*o+r*l,d*o+i,d*l-r*s,0,u*l-r*o,d*l+r*s,a*l*l+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,s){return this.set(1,i,a,0,e,1,s,0,t,r,1,0,0,0,0,1),this}compose(e,t,i){const r=this.elements,a=t._x,s=t._y,o=t._z,l=t._w,u=a+a,d=s+s,f=o+o,p=a*u,m=a*d,v=a*f,x=s*d,S=s*f,_=o*f,T=l*u,E=l*d,b=l*f,R=i.x,w=i.y,L=i.z;return r[0]=(1-(x+_))*R,r[1]=(m+b)*R,r[2]=(v-E)*R,r[3]=0,r[4]=(m-b)*w,r[5]=(1-(p+_))*w,r[6]=(S+T)*w,r[7]=0,r[8]=(v+E)*L,r[9]=(S-T)*L,r[10]=(1-(p+x))*L,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,i){const r=this.elements;let a=Hd.set(r[0],r[1],r[2]).length();const s=Hd.set(r[4],r[5],r[6]).length(),o=Hd.set(r[8],r[9],r[10]).length();this.determinant()<0&&(a=-a),e.x=r[12],e.y=r[13],e.z=r[14],Bs.copy(this);const u=1/a,d=1/s,f=1/o;return Bs.elements[0]*=u,Bs.elements[1]*=u,Bs.elements[2]*=u,Bs.elements[4]*=d,Bs.elements[5]*=d,Bs.elements[6]*=d,Bs.elements[8]*=f,Bs.elements[9]*=f,Bs.elements[10]*=f,t.setFromRotationMatrix(Bs),i.x=a,i.y=s,i.z=o,this}makePerspective(e,t,i,r,a,s,o=ka,l=!1){const u=this.elements,d=2*a/(t-e),f=2*a/(i-r),p=(t+e)/(t-e),m=(i+r)/(i-r);let v,x;if(l)v=a/(s-a),x=s*a/(s-a);else if(o===ka)v=-(s+a)/(s-a),x=-2*s*a/(s-a);else if(o===Ep)v=-s/(s-a),x=-s*a/(s-a);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return u[0]=d,u[4]=0,u[8]=p,u[12]=0,u[1]=0,u[5]=f,u[9]=m,u[13]=0,u[2]=0,u[6]=0,u[10]=v,u[14]=x,u[3]=0,u[7]=0,u[11]=-1,u[15]=0,this}makeOrthographic(e,t,i,r,a,s,o=ka,l=!1){const u=this.elements,d=2/(t-e),f=2/(i-r),p=-(t+e)/(t-e),m=-(i+r)/(i-r);let v,x;if(l)v=1/(s-a),x=s/(s-a);else if(o===ka)v=-2/(s-a),x=-(s+a)/(s-a);else if(o===Ep)v=-1/(s-a),x=-a/(s-a);else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return u[0]=d,u[4]=0,u[8]=0,u[12]=p,u[1]=0,u[5]=f,u[9]=0,u[13]=m,u[2]=0,u[6]=0,u[10]=v,u[14]=x,u[3]=0,u[7]=0,u[11]=0,u[15]=1,this}equals(e){const t=this.elements,i=e.elements;for(let r=0;r<16;r++)if(t[r]!==i[r])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){const 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}}const Hd=new D,Bs=new Me,HX=new D(0,0,0),VX=new D(1,1,1),oc=new D,T_=new D,Oa=new D,tO=new Me,nO=new ft;class Ai{constructor(e=0,t=0,i=0,r=Ai.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){const r=e.elements,a=r[0],s=r[4],o=r[8],l=r[1],u=r[5],d=r[9],f=r[2],p=r[6],m=r[10];switch(t){case"XYZ":this._y=Math.asin(It(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-d,m),this._z=Math.atan2(-s,a)):(this._x=Math.atan2(p,u),this._z=0);break;case"YXZ":this._x=Math.asin(-It(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(o,m),this._z=Math.atan2(l,u)):(this._y=Math.atan2(-f,a),this._z=0);break;case"ZXY":this._x=Math.asin(It(p,-1,1)),Math.abs(p)<.9999999?(this._y=Math.atan2(-f,m),this._z=Math.atan2(-s,u)):(this._y=0,this._z=Math.atan2(l,a));break;case"ZYX":this._y=Math.asin(-It(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(p,m),this._z=Math.atan2(l,a)):(this._x=0,this._z=Math.atan2(-s,u));break;case"YZX":this._z=Math.asin(It(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-d,u),this._y=Math.atan2(-f,a)):(this._x=0,this._y=Math.atan2(o,m));break;case"XZY":this._z=Math.asin(-It(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(p,u),this._y=Math.atan2(o,a)):(this._x=Math.atan2(-d,m),this._y=0);break;default:dt("Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,i===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return tO.makeRotationFromQuaternion(e),this.setFromRotationMatrix(tO,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return nO.setFromEuler(this),this.setFromQuaternion(nO,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],e[3]!==void 0&&(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}}Ai.DEFAULT_ORDER="XYZ";class Ap{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let i=0;i0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.geometryInfo=this._geometryInfo.map(o=>({...o,boundingBox:o.boundingBox?o.boundingBox.toJSON():void 0,boundingSphere:o.boundingSphere?o.boundingSphere.toJSON():void 0})),r.instanceInfo=this._instanceInfo.map(o=>({...o})),r.availableInstanceIds=this._availableInstanceIds.slice(),r.availableGeometryIds=this._availableGeometryIds.slice(),r.nextIndexStart=this._nextIndexStart,r.nextVertexStart=this._nextVertexStart,r.geometryCount=this._geometryCount,r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.matricesTexture=this._matricesTexture.toJSON(e),r.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(r.boundingBox=this.boundingBox.toJSON()));function a(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(e)),l.uuid}if(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&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=a(e.geometries,this.geometry);const o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){const l=o.shapes;if(Array.isArray(l))for(let u=0,d=l.length;u0){r.children=[];for(let o=0;o0){r.animations=[];for(let o=0;o0&&(i.geometries=o),l.length>0&&(i.materials=l),u.length>0&&(i.textures=u),d.length>0&&(i.images=d),f.length>0&&(i.shapes=f),p.length>0&&(i.skeletons=p),m.length>0&&(i.animations=m),v.length>0&&(i.nodes=v)}return i.object=r,i;function s(o){const l=[];for(const u in o){const d=o[u];delete d.metadata,l.push(d)}return l}}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.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;i0?r.multiplyScalar(1/Math.sqrt(a)):r.set(0,0,0)}static getBarycoord(e,t,i,r,a){Fs.subVectors(r,t),nl.subVectors(i,t),kE.subVectors(e,t);const s=Fs.dot(Fs),o=Fs.dot(nl),l=Fs.dot(kE),u=nl.dot(nl),d=nl.dot(kE),f=s*u-o*o;if(f===0)return a.set(0,0,0),null;const p=1/f,m=(u*l-o*d)*p,v=(s*d-o*l)*p;return a.set(1-m-v,v,m)}static containsPoint(e,t,i,r){return this.getBarycoord(e,t,i,r,il)===null?!1:il.x>=0&&il.y>=0&&il.x+il.y<=1}static getInterpolation(e,t,i,r,a,s,o,l){return this.getBarycoord(e,t,i,r,il)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(a,il.x),l.addScaledVector(s,il.y),l.addScaledVector(o,il.z),l)}static getInterpolatedAttribute(e,t,i,r,a,s){return YE.setScalar(0),jE.setScalar(0),ZE.setScalar(0),YE.fromBufferAttribute(e,t),jE.fromBufferAttribute(e,i),ZE.fromBufferAttribute(e,r),s.setScalar(0),s.addScaledVector(YE,a.x),s.addScaledVector(jE,a.y),s.addScaledVector(ZE,a.z),s}static isFrontFacing(e,t,i,r){return Fs.subVectors(i,t),nl.subVectors(e,t),Fs.cross(nl).dot(r)<0}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 Fs.subVectors(this.c,this.b),nl.subVectors(this.a,this.b),Fs.cross(nl).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return fa.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return fa.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,i,r,a){return fa.getInterpolation(e,this.a,this.b,this.c,t,i,r,a)}containsPoint(e){return fa.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return fa.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const i=this.a,r=this.b,a=this.c;let s,o;kd.subVectors(r,i),Wd.subVectors(a,i),WE.subVectors(e,i);const l=kd.dot(WE),u=Wd.dot(WE);if(l<=0&&u<=0)return t.copy(i);XE.subVectors(e,r);const d=kd.dot(XE),f=Wd.dot(XE);if(d>=0&&f<=d)return t.copy(r);const p=l*f-d*u;if(p<=0&&l>=0&&d<=0)return s=l/(l-d),t.copy(i).addScaledVector(kd,s);qE.subVectors(e,a);const m=kd.dot(qE),v=Wd.dot(qE);if(v>=0&&m<=v)return t.copy(a);const x=m*u-l*v;if(x<=0&&u>=0&&v<=0)return o=u/(u-v),t.copy(i).addScaledVector(Wd,o);const S=d*v-m*f;if(S<=0&&f-d>=0&&m-v>=0)return lO.subVectors(a,r),o=(f-d)/(f-d+(m-v)),t.copy(r).addScaledVector(lO,o);const _=1/(S+x+p);return s=x*_,o=p*_,t.copy(i).addScaledVector(kd,s).addScaledVector(Wd,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const I9={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},lc={h:0,s:0,l:0},b_={h:0,s:0,l:0};function QE(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*6*(2/3-t):n}class Ye{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,i)}set(e,t,i){if(t===void 0&&i===void 0){const r=e;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(e,t,i);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=mn){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,tn.colorSpaceToWorking(this,t),this}setRGB(e,t,i,r=tn.workingColorSpace){return this.r=e,this.g=t,this.b=i,tn.colorSpaceToWorking(this,r),this}setHSL(e,t,i,r=tn.workingColorSpace){if(e=iR(e,1),t=It(t,0,1),i=It(i,0,1),t===0)this.r=this.g=this.b=i;else{const a=i<=.5?i*(1+t):i+t-i*t,s=2*i-a;this.r=QE(s,a,e+1/3),this.g=QE(s,a,e),this.b=QE(s,a,e-1/3)}return tn.colorSpaceToWorking(this,r),this}setStyle(e,t=mn){function i(a){a!==void 0&&parseFloat(a)<1&&dt("Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let a;const s=r[1],o=r[2];switch(s){case"rgb":case"rgba":if(a=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(a[4]),this.setRGB(Math.min(255,parseInt(a[1],10))/255,Math.min(255,parseInt(a[2],10))/255,Math.min(255,parseInt(a[3],10))/255,t);if(a=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(a[4]),this.setRGB(Math.min(100,parseInt(a[1],10))/100,Math.min(100,parseInt(a[2],10))/100,Math.min(100,parseInt(a[3],10))/100,t);break;case"hsl":case"hsla":if(a=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(a[4]),this.setHSL(parseFloat(a[1])/360,parseFloat(a[2])/100,parseFloat(a[3])/100,t);break;default:dt("Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){const a=r[1],s=a.length;if(s===3)return this.setRGB(parseInt(a.charAt(0),16)/15,parseInt(a.charAt(1),16)/15,parseInt(a.charAt(2),16)/15,t);if(s===6)return this.setHex(parseInt(a,16),t);dt("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=mn){const i=I9[e.toLowerCase()];return i!==void 0?this.setHex(i,t):dt("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=Cl(e.r),this.g=Cl(e.g),this.b=Cl(e.b),this}copyLinearToSRGB(e){return this.r=ip(e.r),this.g=ip(e.g),this.b=ip(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=mn){return tn.workingToColorSpace(Dr.copy(this),e),Math.round(It(Dr.r*255,0,255))*65536+Math.round(It(Dr.g*255,0,255))*256+Math.round(It(Dr.b*255,0,255))}getHexString(e=mn){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=tn.workingColorSpace){tn.workingToColorSpace(Dr.copy(this),t);const i=Dr.r,r=Dr.g,a=Dr.b,s=Math.max(i,r,a),o=Math.min(i,r,a);let l,u;const d=(o+s)/2;if(o===s)l=0,u=0;else{const f=s-o;switch(u=d<=.5?f/(s+o):f/(2-s-o),s){case i:l=(r-a)/f+(r0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const i=e[t];if(i===void 0){dt(`Material: parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){dt(`Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(i):r&&r.isVector3&&i&&i.isVector3?r.copy(i):this[t]=i}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const i={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(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()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(i.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(i.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),this.dispersion!==void 0&&(i.dispersion=this.dispersion),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(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.anisotropy!==void 0&&(i.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.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,this.combine!==void 0&&(i.combine=this.combine)),this.envMapRotation!==void 0&&(i.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==Eh&&(i.blending=this.blending),this.side!==eo&&(i.side=this.side),this.vertexColors===!0&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=!0),this.blendSrc!==Y1&&(i.blendSrc=this.blendSrc),this.blendDst!==j1&&(i.blendDst=this.blendDst),this.blendEquation!==bo&&(i.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(i.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(i.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==Ih&&(i.depthFunc=this.depthFunc),this.depthTest===!1&&(i.depthTest=this.depthTest),this.depthWrite===!1&&(i.depthWrite=this.depthWrite),this.colorWrite===!1&&(i.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==F3&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==sh&&(i.stencilFail=this.stencilFail),this.stencilZFail!==sh&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==sh&&(i.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(i.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaHash===!0&&(i.alphaHash=!0),this.alphaToCoverage===!0&&(i.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=!0),this.forceSinglePass===!0&&(i.forceSinglePass=!0),this.wireframe===!0&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=!0),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function r(a){const s=[];for(const o in a){const l=a[o];delete l.metadata,s.push(l)}return s}if(t){const a=r(e.textures),s=r(e.images);a.length>0&&(i.textures=a),s.length>0&&(i.images=s)}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.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,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;const t=e.clippingPlanes;let i=null;if(t!==null){const r=t.length;i=new Array(r);for(let a=0;a!==r;++a)i[a]=t[a].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.alphaHash=e.alphaHash,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){e===!0&&this.version++}}class Sr extends ei{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Ye(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.envMapRotation=new Ai,this.combine=Jg,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.envMapRotation.copy(e.envMapRotation),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}}const Sl=YX();function YX(){const n=new ArrayBuffer(4),e=new Float32Array(n),t=new Uint32Array(n),i=new Uint32Array(512),r=new Uint32Array(512);for(let l=0;l<256;++l){const u=l-127;u<-27?(i[l]=0,i[l|256]=32768,r[l]=24,r[l|256]=24):u<-14?(i[l]=1024>>-u-14,i[l|256]=1024>>-u-14|32768,r[l]=-u-1,r[l|256]=-u-1):u<=15?(i[l]=u+15<<10,i[l|256]=u+15<<10|32768,r[l]=13,r[l|256]=13):u<128?(i[l]=31744,i[l|256]=64512,r[l]=24,r[l|256]=24):(i[l]=31744,i[l|256]=64512,r[l]=13,r[l|256]=13)}const a=new Uint32Array(2048),s=new Uint32Array(64),o=new Uint32Array(64);for(let l=1;l<1024;++l){let u=l<<13,d=0;for(;!(u&8388608);)u<<=1,d-=8388608;u&=-8388609,d+=947912704,a[l]=u|d}for(let l=1024;l<2048;++l)a[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)s[l]=l<<23;s[31]=1199570944,s[32]=2147483648;for(let l=33;l<63;++l)s[l]=2147483648+(l-32<<23);s[63]=3347054592;for(let l=1;l<64;++l)l!==32&&(o[l]=1024);return{floatView:e,uint32View:t,baseTable:i,shiftTable:r,mantissaTable:a,exponentTable:s,offsetTable:o}}function la(n){Math.abs(n)>65504&&dt("DataUtils.toHalfFloat(): Value out of range."),n=It(n,-65504,65504),Sl.floatView[0]=n;const e=Sl.uint32View[0],t=e>>23&511;return Sl.baseTable[t]+((e&8388607)>>Sl.shiftTable[t])}function A0(n){const e=n>>10;return Sl.uint32View[0]=Sl.mantissaTable[Sl.offsetTable[e]+(n&1023)]+Sl.exponentTable[e],Sl.floatView[0]}class H3{static toHalfFloat(e){return la(e)}static fromHalfFloat(e){return A0(e)}}const zi=new D,M_=new re;let jX=0;class bt{constructor(e,t,i=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:jX++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i,this.usage=Rg,this.updateRanges=[],this.gpuType=fi,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}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.gpuType=e.gpuType,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let r=0,a=this.itemSize;rt.count&&dt("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Qi);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){Ht("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new D(-1/0,-1/0,-1/0),new D(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let i=0,r=t.length;i0&&(e.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const u in l)l[u]!==void 0&&(e[u]=l[u]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const i=this.attributes;for(const l in i){const u=i[l];e.data.attributes[l]=u.toJSON(e.data)}const r={};let a=!1;for(const l in this.morphAttributes){const u=this.morphAttributes[l],d=[];for(let f=0,p=u.length;f0&&(r[l]=d,a=!0)}a&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);const s=this.groups;s.length>0&&(e.data.groups=JSON.parse(JSON.stringify(s)));const o=this.boundingSphere;return o!==null&&(e.data.boundingSphere=o.toJSON()),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;const t={};this.name=e.name;const i=e.index;i!==null&&this.setIndex(i.clone());const r=e.attributes;for(const u in r){const d=r[u];this.setAttribute(u,d.clone(t))}const a=e.morphAttributes;for(const u in a){const d=[],f=a[u];for(let p=0,m=f.length;p0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let a=0,s=r.length;a(e.far-e.near)**2))&&(cO.copy(a).invert(),Lu.copy(e.ray).applyMatrix4(cO),!(i.boundingBox!==null&&Lu.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(e,t,Lu)))}_computeIntersections(e,t,i){let r;const a=this.geometry,s=this.material,o=a.index,l=a.attributes.position,u=a.attributes.uv,d=a.attributes.uv1,f=a.attributes.normal,p=a.groups,m=a.drawRange;if(o!==null)if(Array.isArray(s))for(let v=0,x=p.length;vt.far?null:{distance:u,point:N_.clone(),object:n}}function O_(n,e,t,i,r,a,s,o,l,u){n.getVertexPosition(o,w_),n.getVertexPosition(l,R_),n.getVertexPosition(u,C_);const d=nq(n,e,t,i,w_,R_,C_,hO);if(d){const f=new D;fa.getBarycoord(hO,w_,R_,C_,f),r&&(d.uv=fa.getInterpolatedAttribute(r,o,l,u,f,new re)),a&&(d.uv1=fa.getInterpolatedAttribute(a,o,l,u,f,new re)),s&&(d.normal=fa.getInterpolatedAttribute(s,o,l,u,f,new D),d.normal.dot(i.direction)>0&&d.normal.multiplyScalar(-1));const p={a:o,b:l,c:u,normal:new D,materialIndex:0};fa.getNormal(w_,R_,C_,p.normal),d.face=p,d.barycoord=f}return d}class $h extends Ct{constructor(e=1,t=1,i=1,r=1,a=1,s=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:r,heightSegments:a,depthSegments:s};const o=this;r=Math.floor(r),a=Math.floor(a),s=Math.floor(s);const l=[],u=[],d=[],f=[];let p=0,m=0;v("z","y","x",-1,-1,i,t,e,s,a,0),v("z","y","x",1,-1,i,t,-e,s,a,1),v("x","z","y",1,1,e,i,t,r,s,2),v("x","z","y",1,-1,e,i,-t,r,s,3),v("x","y","z",1,-1,e,t,i,r,a,4),v("x","y","z",-1,-1,e,t,-i,r,a,5),this.setIndex(l),this.setAttribute("position",new St(u,3)),this.setAttribute("normal",new St(d,3)),this.setAttribute("uv",new St(f,2));function v(x,S,_,T,E,b,R,w,L,U,N){const C=b/L,z=R/U,W=b/2,K=R/2,oe=w/2,ae=L+1,X=U+1;let te=0,Q=0;const ce=new D;for(let se=0;se0?1:-1,d.push(ce.x,ce.y,ce.z),f.push(Xe/L),f.push(1-se/U),te+=1}}for(let se=0;se=0;--e)if(n[e]>=65535)return!0;return!1}const gX={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function Vf(n,e){return new gX[n](e)}function Cg(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function D9(){const n=Cg("canvas");return n.style.display="block",n}const QN={};let eu=null;function vX(n){eu=n}function _X(){return eu}function Dg(...n){const e="THREE."+n.shift();eu?eu("log",e,...n):console.log(e,...n)}function dt(...n){const e="THREE."+n.shift();eu?eu("warn",e,...n):console.warn(e,...n)}function Ht(...n){const e="THREE."+n.shift();eu?eu("error",e,...n):console.error(e,...n)}function bp(...n){const e=n.join(" ");e in QN||(QN[e]=!0,dt(...n))}function xX(n,e,t){return new Promise(function(i,r){function a(){switch(n.clientWaitSync(e,n.SYNC_FLUSH_COMMANDS_BIT,0)){case n.WAIT_FAILED:r();break;case n.TIMEOUT_EXPIRED:setTimeout(a,t);break;default:i()}}setTimeout(a,t)})}let Mi=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){const i=this._listeners;return i===void 0?!1:i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){const i=this._listeners;if(i===void 0)return;const r=i[e];if(r!==void 0){const a=r.indexOf(t);a!==-1&&r.splice(a,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const i=t[e.type];if(i!==void 0){e.target=this;const r=i.slice(0);for(let a=0,s=r.length;a>8&255]+Cr[n>>16&255]+Cr[n>>24&255]+"-"+Cr[e&255]+Cr[e>>8&255]+"-"+Cr[e>>16&15|64]+Cr[e>>24&255]+"-"+Cr[t&63|128]+Cr[t>>8&255]+"-"+Cr[t>>16&255]+Cr[t>>24&255]+Cr[i&255]+Cr[i>>8&255]+Cr[i>>16&255]+Cr[i>>24&255]).toLowerCase()}function It(n,e,t){return Math.max(e,Math.min(t,n))}function iR(n,e){return(n%e+e)%e}function yX(n,e,t,i,r){return i+(n-e)*(r-i)/(t-e)}function SX(n,e,t){return n!==e?(t-n)/(e-n):0}function eg(n,e,t){return(1-t)*n+t*e}function TX(n,e,t,i){return eg(n,e,1-Math.exp(-t*i))}function EX(n,e=1){return e-Math.abs(iR(n,e*2)-e)}function bX(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*(3-2*n))}function MX(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*n*(n*(n*6-15)+10))}function AX(n,e){return n+Math.floor(Math.random()*(e-n+1))}function wX(n,e){return n+Math.random()*(e-n)}function RX(n){return n*(.5-Math.random())}function CX(n){n!==void 0&&(KN=n);let e=KN+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function DX(n){return n*bh}function NX(n){return n*Mp}function OX(n){return(n&n-1)===0&&n!==0}function LX(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function IX(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function UX(n,e,t,i,r){const a=Math.cos,s=Math.sin,o=a(t/2),l=s(t/2),u=a((e+i)/2),d=s((e+i)/2),f=a((e-i)/2),p=s((e-i)/2),m=a((i-e)/2),v=s((i-e)/2);switch(r){case"XYX":n.set(o*d,l*f,l*p,o*u);break;case"YZY":n.set(l*p,o*d,l*f,o*u);break;case"ZXZ":n.set(l*f,l*p,o*d,o*u);break;case"XZX":n.set(o*d,l*v,l*m,o*u);break;case"YXY":n.set(l*m,o*d,l*v,o*u);break;case"ZYZ":n.set(l*v,l*m,o*d,o*u);break;default:dt("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function qr(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return n/4294967295;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int32Array:return Math.max(n/2147483647,-1);case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function Zt(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return Math.round(n*4294967295);case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int32Array:return Math.round(n*2147483647);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}const ht={DEG2RAD:bh,RAD2DEG:Mp,generateUUID:ja,clamp:It,euclideanModulo:iR,mapLinear:yX,inverseLerp:SX,lerp:eg,damp:TX,pingpong:EX,smoothstep:bX,smootherstep:MX,randInt:AX,randFloat:wX,randFloatSpread:RX,seededRandom:CX,degToRad:DX,radToDeg:NX,isPowerOfTwo:OX,ceilPowerOfTwo:LX,floorPowerOfTwo:IX,setQuaternionFromProperEuler:UX,normalize:Zt,denormalize:qr};class re{constructor(e=0,t=0){re.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 new 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 new 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}sub(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){const 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=It(this.x,e.x,t.x),this.y=It(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=It(this.x,e,t),this.y=It(this.y,e,t),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(It(i,e,t))}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=Math.trunc(this.x),this.y=Math.trunc(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}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(It(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const 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){const i=Math.cos(t),r=Math.sin(t),a=this.x-e.x,s=this.y-e.y;return this.x=a*i-s*r+e.x,this.y=a*r+s*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class ft{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,s,o){let l=i[r+0],u=i[r+1],d=i[r+2],f=i[r+3],p=a[s+0],m=a[s+1],v=a[s+2],x=a[s+3];if(o<=0){e[t+0]=l,e[t+1]=u,e[t+2]=d,e[t+3]=f;return}if(o>=1){e[t+0]=p,e[t+1]=m,e[t+2]=v,e[t+3]=x;return}if(f!==x||l!==p||u!==m||d!==v){let S=l*p+u*m+d*v+f*x;S<0&&(p=-p,m=-m,v=-v,x=-x,S=-S);let _=1-o;if(S<.9995){const T=Math.acos(S),E=Math.sin(T);_=Math.sin(_*T)/E,o=Math.sin(o*T)/E,l=l*_+p*o,u=u*_+m*o,d=d*_+v*o,f=f*_+x*o}else{l=l*_+p*o,u=u*_+m*o,d=d*_+v*o,f=f*_+x*o;const T=1/Math.sqrt(l*l+u*u+d*d+f*f);l*=T,u*=T,d*=T,f*=T}}e[t]=l,e[t+1]=u,e[t+2]=d,e[t+3]=f}static multiplyQuaternionsFlat(e,t,i,r,a,s){const o=i[r],l=i[r+1],u=i[r+2],d=i[r+3],f=a[s],p=a[s+1],m=a[s+2],v=a[s+3];return e[t]=o*v+d*f+l*m-u*p,e[t+1]=l*v+d*p+u*f-o*m,e[t+2]=u*v+d*m+o*p-l*f,e[t+3]=d*v-o*f-l*p-u*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=!0){const i=e._x,r=e._y,a=e._z,s=e._order,o=Math.cos,l=Math.sin,u=o(i/2),d=o(r/2),f=o(a/2),p=l(i/2),m=l(r/2),v=l(a/2);switch(s){case"XYZ":this._x=p*d*f+u*m*v,this._y=u*m*f-p*d*v,this._z=u*d*v+p*m*f,this._w=u*d*f-p*m*v;break;case"YXZ":this._x=p*d*f+u*m*v,this._y=u*m*f-p*d*v,this._z=u*d*v-p*m*f,this._w=u*d*f+p*m*v;break;case"ZXY":this._x=p*d*f-u*m*v,this._y=u*m*f+p*d*v,this._z=u*d*v+p*m*f,this._w=u*d*f-p*m*v;break;case"ZYX":this._x=p*d*f-u*m*v,this._y=u*m*f+p*d*v,this._z=u*d*v-p*m*f,this._w=u*d*f+p*m*v;break;case"YZX":this._x=p*d*f+u*m*v,this._y=u*m*f+p*d*v,this._z=u*d*v-p*m*f,this._w=u*d*f-p*m*v;break;case"XZY":this._x=p*d*f-u*m*v,this._y=u*m*f-p*d*v,this._z=u*d*v+p*m*f,this._w=u*d*f+p*m*v;break;default:dt("Quaternion: .setFromEuler() encountered an unknown order: "+s)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const 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){const t=e.elements,i=t[0],r=t[4],a=t[8],s=t[1],o=t[5],l=t[9],u=t[2],d=t[6],f=t[10],p=i+o+f;if(p>0){const m=.5/Math.sqrt(p+1);this._w=.25/m,this._x=(d-l)*m,this._y=(a-u)*m,this._z=(s-r)*m}else if(i>o&&i>f){const m=2*Math.sqrt(1+i-o-f);this._w=(d-l)/m,this._x=.25*m,this._y=(r+s)/m,this._z=(a+u)/m}else if(o>f){const m=2*Math.sqrt(1+o-i-f);this._w=(a-u)/m,this._x=(r+s)/m,this._y=.25*m,this._z=(l+d)/m}else{const m=2*Math.sqrt(1+f-i-o);this._w=(s-r)/m,this._x=(a+u)/m,this._y=(l+d)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return i<1e-8?(i=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(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(It(this.dot(e),-1,1)))}rotateTowards(e,t){const i=this.angleTo(e);if(i===0)return this;const 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 e===0?(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){const i=e._x,r=e._y,a=e._z,s=e._w,o=t._x,l=t._y,u=t._z,d=t._w;return this._x=i*d+s*o+r*u-a*l,this._y=r*d+s*l+a*o-i*u,this._z=a*d+s*u+i*l-r*o,this._w=s*d-i*o-r*l-a*u,this._onChangeCallback(),this}slerp(e,t){if(t<=0)return this;if(t>=1)return this.copy(e);let i=e._x,r=e._y,a=e._z,s=e._w,o=this.dot(e);o<0&&(i=-i,r=-r,a=-a,s=-s,o=-o);let l=1-t;if(o<.9995){const u=Math.acos(o),d=Math.sin(u);l=Math.sin(l*u)/d,t=Math.sin(t*u)/d,this._x=this._x*l+i*t,this._y=this._y*l+r*t,this._z=this._z*l+a*t,this._w=this._w*l+s*t,this._onChangeCallback()}else this._x=this._x*l+i*t,this._y=this._y*l+r*t,this._z=this._z*l+a*t,this._w=this._w*l+s*t,this.normalize();return this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),i=Math.random(),r=Math.sqrt(1-i),a=Math.sqrt(i);return this.set(r*Math.sin(e),r*Math.cos(e),a*Math.sin(t),a*Math.cos(t))}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._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class D{constructor(e=0,t=0,i=0){D.prototype.isVector3=!0,this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(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 new 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 new 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(JN.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(JN.setFromAxisAngle(e,t))}applyMatrix3(e){const 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){const t=this.x,i=this.y,r=this.z,a=e.elements,s=1/(a[3]*t+a[7]*i+a[11]*r+a[15]);return this.x=(a[0]*t+a[4]*i+a[8]*r+a[12])*s,this.y=(a[1]*t+a[5]*i+a[9]*r+a[13])*s,this.z=(a[2]*t+a[6]*i+a[10]*r+a[14])*s,this}applyQuaternion(e){const t=this.x,i=this.y,r=this.z,a=e.x,s=e.y,o=e.z,l=e.w,u=2*(s*r-o*i),d=2*(o*t-a*r),f=2*(a*i-s*t);return this.x=t+l*u+s*f-o*d,this.y=i+l*d+o*u-a*f,this.z=r+l*f+a*d-s*u,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const 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=It(this.x,e.x,t.x),this.y=It(this.y,e.y,t.y),this.z=It(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=It(this.x,e,t),this.y=It(this.y,e,t),this.z=It(this.z,e,t),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(It(i,e,t))}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=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(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){const i=e.x,r=e.y,a=e.z,s=t.x,o=t.y,l=t.z;return this.x=r*l-a*o,this.y=a*s-i*l,this.z=i*o-r*s,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return LE.copy(this).projectOnVector(e),this.sub(LE)}reflect(e){return this.sub(LE.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(It(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const 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){const 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){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const 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,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,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(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,i=Math.sqrt(1-t*t);return this.x=i*Math.cos(e),this.y=t,this.z=i*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const LE=new D,JN=new ft;class Mt{constructor(e,t,i,r,a,s,o,l,u){Mt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,i,r,a,s,o,l,u)}set(e,t,i,r,a,s,o,l,u){const d=this.elements;return d[0]=e,d[1]=r,d[2]=o,d[3]=t,d[4]=a,d[5]=l,d[6]=i,d[7]=s,d[8]=u,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const 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){const 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){const i=e.elements,r=t.elements,a=this.elements,s=i[0],o=i[3],l=i[6],u=i[1],d=i[4],f=i[7],p=i[2],m=i[5],v=i[8],x=r[0],S=r[3],_=r[6],T=r[1],E=r[4],b=r[7],R=r[2],w=r[5],L=r[8];return a[0]=s*x+o*T+l*R,a[3]=s*S+o*E+l*w,a[6]=s*_+o*b+l*L,a[1]=u*x+d*T+f*R,a[4]=u*S+d*E+f*w,a[7]=u*_+d*b+f*L,a[2]=p*x+m*T+v*R,a[5]=p*S+m*E+v*w,a[8]=p*_+m*b+v*L,this}multiplyScalar(e){const 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(){const e=this.elements,t=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],l=e[6],u=e[7],d=e[8];return t*s*d-t*o*u-i*a*d+i*o*l+r*a*u-r*s*l}invert(){const e=this.elements,t=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],l=e[6],u=e[7],d=e[8],f=d*s-o*u,p=o*l-d*a,m=u*a-s*l,v=t*f+i*p+r*m;if(v===0)return this.set(0,0,0,0,0,0,0,0,0);const x=1/v;return e[0]=f*x,e[1]=(r*u-d*i)*x,e[2]=(o*i-r*s)*x,e[3]=p*x,e[4]=(d*t-r*l)*x,e[5]=(r*a-o*t)*x,e[6]=m*x,e[7]=(i*l-u*t)*x,e[8]=(s*t-i*a)*x,this}transpose(){let e;const 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){const 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,s,o){const l=Math.cos(a),u=Math.sin(a);return this.set(i*l,i*u,-i*(l*s+u*o)+s+e,-r*u,r*l,-r*(-u*s+l*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(IE.makeScale(e,t)),this}rotate(e){return this.premultiply(IE.makeRotation(-e)),this}translate(e,t){return this.premultiply(IE.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const 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){const t=this.elements,i=e.elements;for(let r=0;r<9;r++)if(t[r]!==i[r])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){const 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)}}const IE=new Mt,$N=new Mt().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),eO=new Mt().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function PX(){const n={enabled:!0,workingColorSpace:Xn,spaces:{},convert:function(r,a,s){return this.enabled===!1||a===s||!a||!s||(this.spaces[a].transfer===Dn&&(r.r=Cl(r.r),r.g=Cl(r.g),r.b=Cl(r.b)),this.spaces[a].primaries!==this.spaces[s].primaries&&(r.applyMatrix3(this.spaces[a].toXYZ),r.applyMatrix3(this.spaces[s].fromXYZ)),this.spaces[s].transfer===Dn&&(r.r=ip(r.r),r.g=ip(r.g),r.b=ip(r.b))),r},workingToColorSpace:function(r,a){return this.convert(r,this.workingColorSpace,a)},colorSpaceToWorking:function(r,a){return this.convert(r,a,this.workingColorSpace)},getPrimaries:function(r){return this.spaces[r].primaries},getTransfer:function(r){return r===Xr?wg:this.spaces[r].transfer},getToneMappingMode:function(r){return this.spaces[r].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(r,a=this.workingColorSpace){return r.fromArray(this.spaces[a].luminanceCoefficients)},define:function(r){Object.assign(this.spaces,r)},_getMatrix:function(r,a,s){return r.copy(this.spaces[a].toXYZ).multiply(this.spaces[s].fromXYZ)},_getDrawingBufferColorSpace:function(r){return this.spaces[r].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(r=this.workingColorSpace){return this.spaces[r].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(r,a){return bp("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),n.workingToColorSpace(r,a)},toWorkingColorSpace:function(r,a){return bp("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),n.colorSpaceToWorking(r,a)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],i=[.3127,.329];return n.define({[Xn]:{primaries:e,whitePoint:i,transfer:wg,toXYZ:$N,fromXYZ:eO,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:mn},outputColorSpaceConfig:{drawingBufferColorSpace:mn}},[mn]:{primaries:e,whitePoint:i,transfer:Dn,toXYZ:$N,fromXYZ:eO,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:mn}}}),n}const tn=PX();function Cl(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function ip(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}let Pd;class N9{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let i;if(e instanceof HTMLCanvasElement)i=e;else{Pd===void 0&&(Pd=Cg("canvas")),Pd.width=e.width,Pd.height=e.height;const r=Pd.getContext("2d");e instanceof ImageData?r.putImageData(e,0,0):r.drawImage(e,0,0,e.width,e.height),i=Pd}return i.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=Cg("canvas");t.width=e.width,t.height=e.height;const i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);const r=i.getImageData(0,0,e.width,e.height),a=r.data;for(let s=0;s1),this.pmremVersion=0}get width(){return this.source.getSize(PE).x}get height(){return this.source.getSize(PE).y}get depth(){return this.source.getSize(PE).z}get image(){return this.source.data}set image(e=null){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)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}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.channel=e.channel,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.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(const t in e){const i=e[t];if(i===void 0){dt(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){dt(`Texture.setValues(): property '${t}' does not exist.`);continue}r&&i&&r.isVector2&&i.isVector2||r&&i&&r.isVector3&&i.isVector3||r&&i&&r.isMatrix3&&i.isMatrix3?r.copy(i):this[t]=i}}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];const i={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,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,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,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(this.mapping!==wS)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case Ir:e.x=e.x-Math.floor(e.x);break;case Wi:e.x=e.x<0?0:1;break;case xp:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Ir:e.y=e.y-Math.floor(e.y);break;case Wi:e.y=e.y<0?0:1;break;case xp:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}In.DEFAULT_IMAGE=null;In.DEFAULT_MAPPING=wS;In.DEFAULT_ANISOTROPY=1;class Pt{constructor(e=0,t=0,i=0,r=1){Pt.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 new 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 new 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=e.w!==void 0?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}sub(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){const t=this.x,i=this.y,r=this.z,a=this.w,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*r+s[12]*a,this.y=s[1]*t+s[5]*i+s[9]*r+s[13]*a,this.z=s[2]*t+s[6]*i+s[10]*r+s[14]*a,this.w=s[3]*t+s[7]*i+s[11]*r+s[15]*a,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const 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;const l=e.elements,u=l[0],d=l[4],f=l[8],p=l[1],m=l[5],v=l[9],x=l[2],S=l[6],_=l[10];if(Math.abs(d-p)<.01&&Math.abs(f-x)<.01&&Math.abs(v-S)<.01){if(Math.abs(d+p)<.1&&Math.abs(f+x)<.1&&Math.abs(v+S)<.1&&Math.abs(u+m+_-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const E=(u+1)/2,b=(m+1)/2,R=(_+1)/2,w=(d+p)/4,L=(f+x)/4,U=(v+S)/4;return E>b&&E>R?E<.01?(i=0,r=.707106781,a=.707106781):(i=Math.sqrt(E),r=w/i,a=L/i):b>R?b<.01?(i=.707106781,r=0,a=.707106781):(r=Math.sqrt(b),i=w/r,a=U/r):R<.01?(i=.707106781,r=.707106781,a=0):(a=Math.sqrt(R),i=L/a,r=U/a),this.set(i,r,a,t),this}let T=Math.sqrt((S-v)*(S-v)+(f-x)*(f-x)+(p-d)*(p-d));return Math.abs(T)<.001&&(T=1),this.x=(S-v)/T,this.y=(f-x)/T,this.z=(p-d)/T,this.w=Math.acos((u+m+_-1)/2),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],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=It(this.x,e.x,t.x),this.y=It(this.y,e.y,t.y),this.z=It(this.z,e.z,t.z),this.w=It(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=It(this.x,e,t),this.y=It(this.y,e,t),this.z=It(this.z,e,t),this.w=It(this.w,e,t),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(It(i,e,t))}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=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(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}}class rR extends Mi{constructor(e=1,t=1,i={}){super(),i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Bt,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},i),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=i.depth,this.scissor=new Pt(0,0,e,t),this.scissorTest=!1,this.viewport=new Pt(0,0,e,t);const r={width:e,height:t,depth:i.depth},a=new In(r);this.textures=[];const s=i.count;for(let o=0;o1);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.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,i=e.textures.length;t=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,zs),zs.distanceToSquared(e.center)<=e.radius*e.radius}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(zm),__.subVectors(this.max,zm),zd.subVectors(e.a,zm),Bd.subVectors(e.b,zm),Fd.subVectors(e.c,zm),rc.subVectors(Bd,zd),ac.subVectors(Fd,Bd),Nu.subVectors(zd,Fd);let t=[0,-rc.z,rc.y,0,-ac.z,ac.y,0,-Nu.z,Nu.y,rc.z,0,-rc.x,ac.z,0,-ac.x,Nu.z,0,-Nu.x,-rc.y,rc.x,0,-ac.y,ac.x,0,-Nu.y,Nu.x,0];return!zE(t,zd,Bd,Fd,__)||(t=[1,0,0,0,1,0,0,0,1],!zE(t,zd,Bd,Fd,__))?!1:(x_.crossVectors(rc,ac),t=[x_.x,x_.y,x_.z],zE(t,zd,Bd,Fd,__))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,zs).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(zs).length()*.5),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()?this:($o[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),$o[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),$o[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),$o[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),$o[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),$o[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),$o[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),$o[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints($o),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)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}}const $o=[new D,new D,new D,new D,new D,new D,new D,new D],zs=new D,v_=new Qi,zd=new D,Bd=new D,Fd=new D,rc=new D,ac=new D,Nu=new D,zm=new D,__=new D,x_=new D,Ou=new D;function zE(n,e,t,i,r){for(let a=0,s=n.length-3;a<=s;a+=3){Ou.fromArray(n,a);const o=r.x*Math.abs(Ou.x)+r.y*Math.abs(Ou.y)+r.z*Math.abs(Ou.z),l=e.dot(Ou),u=t.dot(Ou),d=i.dot(Ou);if(Math.max(-Math.max(l,u,d),Math.min(l,u,d))>o)return!1}return!0}const FX=new Qi,Bm=new D,BE=new D;class qi{constructor(e=new D,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const i=this.center;t!==void 0?i.copy(t):FX.setFromPoints(e).getCenter(i);let r=0;for(let a=0,s=e.length;athis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(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;Bm.subVectors(e,this.center);const t=Bm.lengthSq();if(t>this.radius*this.radius){const i=Math.sqrt(t),r=(i-this.radius)*.5;this.center.addScaledVector(Bm,r/i),this.radius+=r}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(BE.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Bm.copy(e.center).add(BE)),this.expandByPoint(Bm.copy(e.center).sub(BE))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}}const el=new D,FE=new D,y_=new D,sc=new D,HE=new D,S_=new D,VE=new D;class Pr{constructor(e=new D,t=new D(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.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,el)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=el.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(el.copy(this.origin).addScaledVector(this.direction,t),el.distanceToSquared(e))}distanceSqToSegment(e,t,i,r){FE.copy(e).add(t).multiplyScalar(.5),y_.copy(t).sub(e).normalize(),sc.copy(this.origin).sub(FE);const a=e.distanceTo(t)*.5,s=-this.direction.dot(y_),o=sc.dot(this.direction),l=-sc.dot(y_),u=sc.lengthSq(),d=Math.abs(1-s*s);let f,p,m,v;if(d>0)if(f=s*l-o,p=s*o-l,v=a*d,f>=0)if(p>=-v)if(p<=v){const x=1/d;f*=x,p*=x,m=f*(f+s*p+2*o)+p*(s*f+p+2*l)+u}else p=a,f=Math.max(0,-(s*p+o)),m=-f*f+p*(p+2*l)+u;else p=-a,f=Math.max(0,-(s*p+o)),m=-f*f+p*(p+2*l)+u;else p<=-v?(f=Math.max(0,-(-s*a+o)),p=f>0?-a:Math.min(Math.max(-a,-l),a),m=-f*f+p*(p+2*l)+u):p<=v?(f=0,p=Math.min(Math.max(-a,-l),a),m=p*(p+2*l)+u):(f=Math.max(0,-(s*a+o)),p=f>0?a:Math.min(Math.max(-a,-l),a),m=-f*f+p*(p+2*l)+u);else p=s>0?-a:a,f=Math.max(0,-(s*p+o)),m=-f*f+p*(p+2*l)+u;return i&&i.copy(this.origin).addScaledVector(this.direction,f),r&&r.copy(FE).addScaledVector(y_,p),m}intersectSphere(e,t){el.subVectors(e.center,this.origin);const i=el.dot(this.direction),r=el.dot(el)-i*i,a=e.radius*e.radius;if(r>a)return null;const s=Math.sqrt(a-r),o=i-s,l=i+s;return l<0?null:o<0?this.at(l,t):this.at(o,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){const i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,r,a,s,o,l;const u=1/this.direction.x,d=1/this.direction.y,f=1/this.direction.z,p=this.origin;return u>=0?(i=(e.min.x-p.x)*u,r=(e.max.x-p.x)*u):(i=(e.max.x-p.x)*u,r=(e.min.x-p.x)*u),d>=0?(a=(e.min.y-p.y)*d,s=(e.max.y-p.y)*d):(a=(e.max.y-p.y)*d,s=(e.min.y-p.y)*d),i>s||a>r||((a>i||isNaN(i))&&(i=a),(s=0?(o=(e.min.z-p.z)*f,l=(e.max.z-p.z)*f):(o=(e.max.z-p.z)*f,l=(e.min.z-p.z)*f),i>l||o>r)||((o>i||i!==i)&&(i=o),(l=0?i:r,t)}intersectsBox(e){return this.intersectBox(e,el)!==null}intersectTriangle(e,t,i,r,a){HE.subVectors(t,e),S_.subVectors(i,e),VE.crossVectors(HE,S_);let s=this.direction.dot(VE),o;if(s>0){if(r)return null;o=1}else if(s<0)o=-1,s=-s;else return null;sc.subVectors(this.origin,e);const l=o*this.direction.dot(S_.crossVectors(sc,S_));if(l<0)return null;const u=o*this.direction.dot(HE.cross(sc));if(u<0||l+u>s)return null;const d=-o*sc.dot(VE);return d<0?null:this.at(d/s,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)}}class Me{constructor(e,t,i,r,a,s,o,l,u,d,f,p,m,v,x,S){Me.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,i,r,a,s,o,l,u,d,f,p,m,v,x,S)}set(e,t,i,r,a,s,o,l,u,d,f,p,m,v,x,S){const _=this.elements;return _[0]=e,_[4]=t,_[8]=i,_[12]=r,_[1]=a,_[5]=s,_[9]=o,_[13]=l,_[2]=u,_[6]=d,_[10]=f,_[14]=p,_[3]=m,_[7]=v,_[11]=x,_[15]=S,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 Me().fromArray(this.elements)}copy(e){const 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){const t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){const 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){const t=this.elements,i=e.elements,r=1/Hd.setFromMatrixColumn(e,0).length(),a=1/Hd.setFromMatrixColumn(e,1).length(),s=1/Hd.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]*s,t[9]=i[9]*s,t[10]=i[10]*s,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,i=e.x,r=e.y,a=e.z,s=Math.cos(i),o=Math.sin(i),l=Math.cos(r),u=Math.sin(r),d=Math.cos(a),f=Math.sin(a);if(e.order==="XYZ"){const p=s*d,m=s*f,v=o*d,x=o*f;t[0]=l*d,t[4]=-l*f,t[8]=u,t[1]=m+v*u,t[5]=p-x*u,t[9]=-o*l,t[2]=x-p*u,t[6]=v+m*u,t[10]=s*l}else if(e.order==="YXZ"){const p=l*d,m=l*f,v=u*d,x=u*f;t[0]=p+x*o,t[4]=v*o-m,t[8]=s*u,t[1]=s*f,t[5]=s*d,t[9]=-o,t[2]=m*o-v,t[6]=x+p*o,t[10]=s*l}else if(e.order==="ZXY"){const p=l*d,m=l*f,v=u*d,x=u*f;t[0]=p-x*o,t[4]=-s*f,t[8]=v+m*o,t[1]=m+v*o,t[5]=s*d,t[9]=x-p*o,t[2]=-s*u,t[6]=o,t[10]=s*l}else if(e.order==="ZYX"){const p=s*d,m=s*f,v=o*d,x=o*f;t[0]=l*d,t[4]=v*u-m,t[8]=p*u+x,t[1]=l*f,t[5]=x*u+p,t[9]=m*u-v,t[2]=-u,t[6]=o*l,t[10]=s*l}else if(e.order==="YZX"){const p=s*l,m=s*u,v=o*l,x=o*u;t[0]=l*d,t[4]=x-p*f,t[8]=v*f+m,t[1]=f,t[5]=s*d,t[9]=-o*d,t[2]=-u*d,t[6]=m*f+v,t[10]=p-x*f}else if(e.order==="XZY"){const p=s*l,m=s*u,v=o*l,x=o*u;t[0]=l*d,t[4]=-f,t[8]=u*d,t[1]=p*f+x,t[5]=s*d,t[9]=m*f-v,t[2]=v*f-m,t[6]=o*d,t[10]=x*f+p}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(HX,e,VX)}lookAt(e,t,i){const r=this.elements;return Oa.subVectors(e,t),Oa.lengthSq()===0&&(Oa.z=1),Oa.normalize(),oc.crossVectors(i,Oa),oc.lengthSq()===0&&(Math.abs(i.z)===1?Oa.x+=1e-4:Oa.z+=1e-4,Oa.normalize(),oc.crossVectors(i,Oa)),oc.normalize(),T_.crossVectors(Oa,oc),r[0]=oc.x,r[4]=T_.x,r[8]=Oa.x,r[1]=oc.y,r[5]=T_.y,r[9]=Oa.y,r[2]=oc.z,r[6]=T_.z,r[10]=Oa.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,r=t.elements,a=this.elements,s=i[0],o=i[4],l=i[8],u=i[12],d=i[1],f=i[5],p=i[9],m=i[13],v=i[2],x=i[6],S=i[10],_=i[14],T=i[3],E=i[7],b=i[11],R=i[15],w=r[0],L=r[4],U=r[8],N=r[12],C=r[1],z=r[5],W=r[9],K=r[13],oe=r[2],ae=r[6],X=r[10],te=r[14],Q=r[3],ce=r[7],se=r[11],De=r[15];return a[0]=s*w+o*C+l*oe+u*Q,a[4]=s*L+o*z+l*ae+u*ce,a[8]=s*U+o*W+l*X+u*se,a[12]=s*N+o*K+l*te+u*De,a[1]=d*w+f*C+p*oe+m*Q,a[5]=d*L+f*z+p*ae+m*ce,a[9]=d*U+f*W+p*X+m*se,a[13]=d*N+f*K+p*te+m*De,a[2]=v*w+x*C+S*oe+_*Q,a[6]=v*L+x*z+S*ae+_*ce,a[10]=v*U+x*W+S*X+_*se,a[14]=v*N+x*K+S*te+_*De,a[3]=T*w+E*C+b*oe+R*Q,a[7]=T*L+E*z+b*ae+R*ce,a[11]=T*U+E*W+b*X+R*se,a[15]=T*N+E*K+b*te+R*De,this}multiplyScalar(e){const 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(){const e=this.elements,t=e[0],i=e[4],r=e[8],a=e[12],s=e[1],o=e[5],l=e[9],u=e[13],d=e[2],f=e[6],p=e[10],m=e[14],v=e[3],x=e[7],S=e[11],_=e[15];return v*(+a*l*f-r*u*f-a*o*p+i*u*p+r*o*m-i*l*m)+x*(+t*l*m-t*u*p+a*s*p-r*s*m+r*u*d-a*l*d)+S*(+t*u*f-t*o*m-a*s*f+i*s*m+a*o*d-i*u*d)+_*(-r*o*d-t*l*f+t*o*p+r*s*f-i*s*p+i*l*d)}transpose(){const e=this.elements;let 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){const 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(){const e=this.elements,t=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],l=e[6],u=e[7],d=e[8],f=e[9],p=e[10],m=e[11],v=e[12],x=e[13],S=e[14],_=e[15],T=f*S*u-x*p*u+x*l*m-o*S*m-f*l*_+o*p*_,E=v*p*u-d*S*u-v*l*m+s*S*m+d*l*_-s*p*_,b=d*x*u-v*f*u+v*o*m-s*x*m-d*o*_+s*f*_,R=v*f*l-d*x*l-v*o*p+s*x*p+d*o*S-s*f*S,w=t*T+i*E+r*b+a*R;if(w===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const L=1/w;return e[0]=T*L,e[1]=(x*p*a-f*S*a-x*r*m+i*S*m+f*r*_-i*p*_)*L,e[2]=(o*S*a-x*l*a+x*r*u-i*S*u-o*r*_+i*l*_)*L,e[3]=(f*l*a-o*p*a-f*r*u+i*p*u+o*r*m-i*l*m)*L,e[4]=E*L,e[5]=(d*S*a-v*p*a+v*r*m-t*S*m-d*r*_+t*p*_)*L,e[6]=(v*l*a-s*S*a-v*r*u+t*S*u+s*r*_-t*l*_)*L,e[7]=(s*p*a-d*l*a+d*r*u-t*p*u-s*r*m+t*l*m)*L,e[8]=b*L,e[9]=(v*f*a-d*x*a-v*i*m+t*x*m+d*i*_-t*f*_)*L,e[10]=(s*x*a-v*o*a+v*i*u-t*x*u-s*i*_+t*o*_)*L,e[11]=(d*o*a-s*f*a-d*i*u+t*f*u+s*i*m-t*o*m)*L,e[12]=R*L,e[13]=(d*x*r-v*f*r+v*i*p-t*x*p-d*i*S+t*f*S)*L,e[14]=(v*o*r-s*x*r-v*i*l+t*x*l+s*i*S-t*o*S)*L,e[15]=(s*f*r-d*o*r+d*i*l-t*f*l-s*i*p+t*o*p)*L,this}scale(e){const 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(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,r))}makeTranslation(e,t,i){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){const 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){const 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){const 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){const i=Math.cos(t),r=Math.sin(t),a=1-i,s=e.x,o=e.y,l=e.z,u=a*s,d=a*o;return this.set(u*s+i,u*o-r*l,u*l+r*o,0,u*o+r*l,d*o+i,d*l-r*s,0,u*l-r*o,d*l+r*s,a*l*l+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,s){return this.set(1,i,a,0,e,1,s,0,t,r,1,0,0,0,0,1),this}compose(e,t,i){const r=this.elements,a=t._x,s=t._y,o=t._z,l=t._w,u=a+a,d=s+s,f=o+o,p=a*u,m=a*d,v=a*f,x=s*d,S=s*f,_=o*f,T=l*u,E=l*d,b=l*f,R=i.x,w=i.y,L=i.z;return r[0]=(1-(x+_))*R,r[1]=(m+b)*R,r[2]=(v-E)*R,r[3]=0,r[4]=(m-b)*w,r[5]=(1-(p+_))*w,r[6]=(S+T)*w,r[7]=0,r[8]=(v+E)*L,r[9]=(S-T)*L,r[10]=(1-(p+x))*L,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,i){const r=this.elements;let a=Hd.set(r[0],r[1],r[2]).length();const s=Hd.set(r[4],r[5],r[6]).length(),o=Hd.set(r[8],r[9],r[10]).length();this.determinant()<0&&(a=-a),e.x=r[12],e.y=r[13],e.z=r[14],Bs.copy(this);const u=1/a,d=1/s,f=1/o;return Bs.elements[0]*=u,Bs.elements[1]*=u,Bs.elements[2]*=u,Bs.elements[4]*=d,Bs.elements[5]*=d,Bs.elements[6]*=d,Bs.elements[8]*=f,Bs.elements[9]*=f,Bs.elements[10]*=f,t.setFromRotationMatrix(Bs),i.x=a,i.y=s,i.z=o,this}makePerspective(e,t,i,r,a,s,o=ka,l=!1){const u=this.elements,d=2*a/(t-e),f=2*a/(i-r),p=(t+e)/(t-e),m=(i+r)/(i-r);let v,x;if(l)v=a/(s-a),x=s*a/(s-a);else if(o===ka)v=-(s+a)/(s-a),x=-2*s*a/(s-a);else if(o===Ep)v=-s/(s-a),x=-s*a/(s-a);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return u[0]=d,u[4]=0,u[8]=p,u[12]=0,u[1]=0,u[5]=f,u[9]=m,u[13]=0,u[2]=0,u[6]=0,u[10]=v,u[14]=x,u[3]=0,u[7]=0,u[11]=-1,u[15]=0,this}makeOrthographic(e,t,i,r,a,s,o=ka,l=!1){const u=this.elements,d=2/(t-e),f=2/(i-r),p=-(t+e)/(t-e),m=-(i+r)/(i-r);let v,x;if(l)v=1/(s-a),x=s/(s-a);else if(o===ka)v=-2/(s-a),x=-(s+a)/(s-a);else if(o===Ep)v=-1/(s-a),x=-a/(s-a);else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return u[0]=d,u[4]=0,u[8]=0,u[12]=p,u[1]=0,u[5]=f,u[9]=0,u[13]=m,u[2]=0,u[6]=0,u[10]=v,u[14]=x,u[3]=0,u[7]=0,u[11]=0,u[15]=1,this}equals(e){const t=this.elements,i=e.elements;for(let r=0;r<16;r++)if(t[r]!==i[r])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){const 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}}const Hd=new D,Bs=new Me,HX=new D(0,0,0),VX=new D(1,1,1),oc=new D,T_=new D,Oa=new D,tO=new Me,nO=new ft;class Ai{constructor(e=0,t=0,i=0,r=Ai.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){const r=e.elements,a=r[0],s=r[4],o=r[8],l=r[1],u=r[5],d=r[9],f=r[2],p=r[6],m=r[10];switch(t){case"XYZ":this._y=Math.asin(It(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-d,m),this._z=Math.atan2(-s,a)):(this._x=Math.atan2(p,u),this._z=0);break;case"YXZ":this._x=Math.asin(-It(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(o,m),this._z=Math.atan2(l,u)):(this._y=Math.atan2(-f,a),this._z=0);break;case"ZXY":this._x=Math.asin(It(p,-1,1)),Math.abs(p)<.9999999?(this._y=Math.atan2(-f,m),this._z=Math.atan2(-s,u)):(this._y=0,this._z=Math.atan2(l,a));break;case"ZYX":this._y=Math.asin(-It(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(p,m),this._z=Math.atan2(l,a)):(this._x=0,this._z=Math.atan2(-s,u));break;case"YZX":this._z=Math.asin(It(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-d,u),this._y=Math.atan2(-f,a)):(this._x=0,this._y=Math.atan2(o,m));break;case"XZY":this._z=Math.asin(-It(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(p,u),this._y=Math.atan2(o,a)):(this._x=Math.atan2(-d,m),this._y=0);break;default:dt("Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,i===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return tO.makeRotationFromQuaternion(e),this.setFromRotationMatrix(tO,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return nO.setFromEuler(this),this.setFromQuaternion(nO,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],e[3]!==void 0&&(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}}Ai.DEFAULT_ORDER="XYZ";class Ap{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let i=0;i0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.geometryInfo=this._geometryInfo.map(o=>({...o,boundingBox:o.boundingBox?o.boundingBox.toJSON():void 0,boundingSphere:o.boundingSphere?o.boundingSphere.toJSON():void 0})),r.instanceInfo=this._instanceInfo.map(o=>({...o})),r.availableInstanceIds=this._availableInstanceIds.slice(),r.availableGeometryIds=this._availableGeometryIds.slice(),r.nextIndexStart=this._nextIndexStart,r.nextVertexStart=this._nextVertexStart,r.geometryCount=this._geometryCount,r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.matricesTexture=this._matricesTexture.toJSON(e),r.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(r.boundingBox=this.boundingBox.toJSON()));function a(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(e)),l.uuid}if(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&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=a(e.geometries,this.geometry);const o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){const l=o.shapes;if(Array.isArray(l))for(let u=0,d=l.length;u0){r.children=[];for(let o=0;o0){r.animations=[];for(let o=0;o0&&(i.geometries=o),l.length>0&&(i.materials=l),u.length>0&&(i.textures=u),d.length>0&&(i.images=d),f.length>0&&(i.shapes=f),p.length>0&&(i.skeletons=p),m.length>0&&(i.animations=m),v.length>0&&(i.nodes=v)}return i.object=r,i;function s(o){const l=[];for(const u in o){const d=o[u];delete d.metadata,l.push(d)}return l}}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.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;i0?r.multiplyScalar(1/Math.sqrt(a)):r.set(0,0,0)}static getBarycoord(e,t,i,r,a){Fs.subVectors(r,t),nl.subVectors(i,t),kE.subVectors(e,t);const s=Fs.dot(Fs),o=Fs.dot(nl),l=Fs.dot(kE),u=nl.dot(nl),d=nl.dot(kE),f=s*u-o*o;if(f===0)return a.set(0,0,0),null;const p=1/f,m=(u*l-o*d)*p,v=(s*d-o*l)*p;return a.set(1-m-v,v,m)}static containsPoint(e,t,i,r){return this.getBarycoord(e,t,i,r,il)===null?!1:il.x>=0&&il.y>=0&&il.x+il.y<=1}static getInterpolation(e,t,i,r,a,s,o,l){return this.getBarycoord(e,t,i,r,il)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(a,il.x),l.addScaledVector(s,il.y),l.addScaledVector(o,il.z),l)}static getInterpolatedAttribute(e,t,i,r,a,s){return YE.setScalar(0),jE.setScalar(0),ZE.setScalar(0),YE.fromBufferAttribute(e,t),jE.fromBufferAttribute(e,i),ZE.fromBufferAttribute(e,r),s.setScalar(0),s.addScaledVector(YE,a.x),s.addScaledVector(jE,a.y),s.addScaledVector(ZE,a.z),s}static isFrontFacing(e,t,i,r){return Fs.subVectors(i,t),nl.subVectors(e,t),Fs.cross(nl).dot(r)<0}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 Fs.subVectors(this.c,this.b),nl.subVectors(this.a,this.b),Fs.cross(nl).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return fa.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return fa.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,i,r,a){return fa.getInterpolation(e,this.a,this.b,this.c,t,i,r,a)}containsPoint(e){return fa.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return fa.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const i=this.a,r=this.b,a=this.c;let s,o;kd.subVectors(r,i),Wd.subVectors(a,i),WE.subVectors(e,i);const l=kd.dot(WE),u=Wd.dot(WE);if(l<=0&&u<=0)return t.copy(i);XE.subVectors(e,r);const d=kd.dot(XE),f=Wd.dot(XE);if(d>=0&&f<=d)return t.copy(r);const p=l*f-d*u;if(p<=0&&l>=0&&d<=0)return s=l/(l-d),t.copy(i).addScaledVector(kd,s);qE.subVectors(e,a);const m=kd.dot(qE),v=Wd.dot(qE);if(v>=0&&m<=v)return t.copy(a);const x=m*u-l*v;if(x<=0&&u>=0&&v<=0)return o=u/(u-v),t.copy(i).addScaledVector(Wd,o);const S=d*v-m*f;if(S<=0&&f-d>=0&&m-v>=0)return lO.subVectors(a,r),o=(f-d)/(f-d+(m-v)),t.copy(r).addScaledVector(lO,o);const _=1/(S+x+p);return s=x*_,o=p*_,t.copy(i).addScaledVector(kd,s).addScaledVector(Wd,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const I9={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},lc={h:0,s:0,l:0},b_={h:0,s:0,l:0};function QE(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*6*(2/3-t):n}class Ye{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,i)}set(e,t,i){if(t===void 0&&i===void 0){const r=e;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(e,t,i);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=mn){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,tn.colorSpaceToWorking(this,t),this}setRGB(e,t,i,r=tn.workingColorSpace){return this.r=e,this.g=t,this.b=i,tn.colorSpaceToWorking(this,r),this}setHSL(e,t,i,r=tn.workingColorSpace){if(e=iR(e,1),t=It(t,0,1),i=It(i,0,1),t===0)this.r=this.g=this.b=i;else{const a=i<=.5?i*(1+t):i+t-i*t,s=2*i-a;this.r=QE(s,a,e+1/3),this.g=QE(s,a,e),this.b=QE(s,a,e-1/3)}return tn.colorSpaceToWorking(this,r),this}setStyle(e,t=mn){function i(a){a!==void 0&&parseFloat(a)<1&&dt("Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let a;const s=r[1],o=r[2];switch(s){case"rgb":case"rgba":if(a=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(a[4]),this.setRGB(Math.min(255,parseInt(a[1],10))/255,Math.min(255,parseInt(a[2],10))/255,Math.min(255,parseInt(a[3],10))/255,t);if(a=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(a[4]),this.setRGB(Math.min(100,parseInt(a[1],10))/100,Math.min(100,parseInt(a[2],10))/100,Math.min(100,parseInt(a[3],10))/100,t);break;case"hsl":case"hsla":if(a=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(a[4]),this.setHSL(parseFloat(a[1])/360,parseFloat(a[2])/100,parseFloat(a[3])/100,t);break;default:dt("Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){const a=r[1],s=a.length;if(s===3)return this.setRGB(parseInt(a.charAt(0),16)/15,parseInt(a.charAt(1),16)/15,parseInt(a.charAt(2),16)/15,t);if(s===6)return this.setHex(parseInt(a,16),t);dt("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=mn){const i=I9[e.toLowerCase()];return i!==void 0?this.setHex(i,t):dt("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=Cl(e.r),this.g=Cl(e.g),this.b=Cl(e.b),this}copyLinearToSRGB(e){return this.r=ip(e.r),this.g=ip(e.g),this.b=ip(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=mn){return tn.workingToColorSpace(Dr.copy(this),e),Math.round(It(Dr.r*255,0,255))*65536+Math.round(It(Dr.g*255,0,255))*256+Math.round(It(Dr.b*255,0,255))}getHexString(e=mn){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=tn.workingColorSpace){tn.workingToColorSpace(Dr.copy(this),t);const i=Dr.r,r=Dr.g,a=Dr.b,s=Math.max(i,r,a),o=Math.min(i,r,a);let l,u;const d=(o+s)/2;if(o===s)l=0,u=0;else{const f=s-o;switch(u=d<=.5?f/(s+o):f/(2-s-o),s){case i:l=(r-a)/f+(r0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const i=e[t];if(i===void 0){dt(`Material: parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){dt(`Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(i):r&&r.isVector3&&i&&i.isVector3?r.copy(i):this[t]=i}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const i={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(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()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(i.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(i.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),this.dispersion!==void 0&&(i.dispersion=this.dispersion),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(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.anisotropy!==void 0&&(i.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.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,this.combine!==void 0&&(i.combine=this.combine)),this.envMapRotation!==void 0&&(i.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==Eh&&(i.blending=this.blending),this.side!==eo&&(i.side=this.side),this.vertexColors===!0&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=!0),this.blendSrc!==Y1&&(i.blendSrc=this.blendSrc),this.blendDst!==j1&&(i.blendDst=this.blendDst),this.blendEquation!==bo&&(i.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(i.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(i.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==Ih&&(i.depthFunc=this.depthFunc),this.depthTest===!1&&(i.depthTest=this.depthTest),this.depthWrite===!1&&(i.depthWrite=this.depthWrite),this.colorWrite===!1&&(i.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==F3&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==sh&&(i.stencilFail=this.stencilFail),this.stencilZFail!==sh&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==sh&&(i.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(i.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaHash===!0&&(i.alphaHash=!0),this.alphaToCoverage===!0&&(i.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=!0),this.forceSinglePass===!0&&(i.forceSinglePass=!0),this.wireframe===!0&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=!0),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function r(a){const s=[];for(const o in a){const l=a[o];delete l.metadata,s.push(l)}return s}if(t){const a=r(e.textures),s=r(e.images);a.length>0&&(i.textures=a),s.length>0&&(i.images=s)}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.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,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;const t=e.clippingPlanes;let i=null;if(t!==null){const r=t.length;i=new Array(r);for(let a=0;a!==r;++a)i[a]=t[a].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.alphaHash=e.alphaHash,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){e===!0&&this.version++}}class Sr extends ei{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Ye(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.envMapRotation=new Ai,this.combine=Jg,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.envMapRotation.copy(e.envMapRotation),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}}const Sl=YX();function YX(){const n=new ArrayBuffer(4),e=new Float32Array(n),t=new Uint32Array(n),i=new Uint32Array(512),r=new Uint32Array(512);for(let l=0;l<256;++l){const u=l-127;u<-27?(i[l]=0,i[l|256]=32768,r[l]=24,r[l|256]=24):u<-14?(i[l]=1024>>-u-14,i[l|256]=1024>>-u-14|32768,r[l]=-u-1,r[l|256]=-u-1):u<=15?(i[l]=u+15<<10,i[l|256]=u+15<<10|32768,r[l]=13,r[l|256]=13):u<128?(i[l]=31744,i[l|256]=64512,r[l]=24,r[l|256]=24):(i[l]=31744,i[l|256]=64512,r[l]=13,r[l|256]=13)}const a=new Uint32Array(2048),s=new Uint32Array(64),o=new Uint32Array(64);for(let l=1;l<1024;++l){let u=l<<13,d=0;for(;!(u&8388608);)u<<=1,d-=8388608;u&=-8388609,d+=947912704,a[l]=u|d}for(let l=1024;l<2048;++l)a[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)s[l]=l<<23;s[31]=1199570944,s[32]=2147483648;for(let l=33;l<63;++l)s[l]=2147483648+(l-32<<23);s[63]=3347054592;for(let l=1;l<64;++l)l!==32&&(o[l]=1024);return{floatView:e,uint32View:t,baseTable:i,shiftTable:r,mantissaTable:a,exponentTable:s,offsetTable:o}}function la(n){Math.abs(n)>65504&&dt("DataUtils.toHalfFloat(): Value out of range."),n=It(n,-65504,65504),Sl.floatView[0]=n;const e=Sl.uint32View[0],t=e>>23&511;return Sl.baseTable[t]+((e&8388607)>>Sl.shiftTable[t])}function A0(n){const e=n>>10;return Sl.uint32View[0]=Sl.mantissaTable[Sl.offsetTable[e]+(n&1023)]+Sl.exponentTable[e],Sl.floatView[0]}class H3{static toHalfFloat(e){return la(e)}static fromHalfFloat(e){return A0(e)}}const zi=new D,M_=new re;let jX=0;class bt{constructor(e,t,i=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:jX++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i,this.usage=Rg,this.updateRanges=[],this.gpuType=fi,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}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.gpuType=e.gpuType,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let r=0,a=this.itemSize;rt.count&&dt("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Qi);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){Ht("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new D(-1/0,-1/0,-1/0),new D(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let i=0,r=t.length;i0&&(e.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const u in l)l[u]!==void 0&&(e[u]=l[u]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const i=this.attributes;for(const l in i){const u=i[l];e.data.attributes[l]=u.toJSON(e.data)}const r={};let a=!1;for(const l in this.morphAttributes){const u=this.morphAttributes[l],d=[];for(let f=0,p=u.length;f0&&(r[l]=d,a=!0)}a&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);const s=this.groups;s.length>0&&(e.data.groups=JSON.parse(JSON.stringify(s)));const o=this.boundingSphere;return o!==null&&(e.data.boundingSphere=o.toJSON()),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;const t={};this.name=e.name;const i=e.index;i!==null&&this.setIndex(i.clone());const r=e.attributes;for(const u in r){const d=r[u];this.setAttribute(u,d.clone(t))}const a=e.morphAttributes;for(const u in a){const d=[],f=a[u];for(let p=0,m=f.length;p0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let a=0,s=r.length;a(e.far-e.near)**2))&&(cO.copy(a).invert(),Lu.copy(e.ray).applyMatrix4(cO),!(i.boundingBox!==null&&Lu.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(e,t,Lu)))}_computeIntersections(e,t,i){let r;const a=this.geometry,s=this.material,o=a.index,l=a.attributes.position,u=a.attributes.uv,d=a.attributes.uv1,f=a.attributes.normal,p=a.groups,m=a.drawRange;if(o!==null)if(Array.isArray(s))for(let v=0,x=p.length;vt.far?null:{distance:u,point:N_.clone(),object:n}}function O_(n,e,t,i,r,a,s,o,l,u){n.getVertexPosition(o,w_),n.getVertexPosition(l,R_),n.getVertexPosition(u,C_);const d=nq(n,e,t,i,w_,R_,C_,hO);if(d){const f=new D;fa.getBarycoord(hO,w_,R_,C_,f),r&&(d.uv=fa.getInterpolatedAttribute(r,o,l,u,f,new re)),a&&(d.uv1=fa.getInterpolatedAttribute(a,o,l,u,f,new re)),s&&(d.normal=fa.getInterpolatedAttribute(s,o,l,u,f,new D),d.normal.dot(i.direction)>0&&d.normal.multiplyScalar(-1));const p={a:o,b:l,c:u,normal:new D,materialIndex:0};fa.getNormal(w_,R_,C_,p.normal),d.face=p,d.barycoord=f}return d}class $h extends Ct{constructor(e=1,t=1,i=1,r=1,a=1,s=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:r,heightSegments:a,depthSegments:s};const o=this;r=Math.floor(r),a=Math.floor(a),s=Math.floor(s);const l=[],u=[],d=[],f=[];let p=0,m=0;v("z","y","x",-1,-1,i,t,e,s,a,0),v("z","y","x",1,-1,i,t,-e,s,a,1),v("x","z","y",1,1,e,i,t,r,s,2),v("x","z","y",1,-1,e,i,-t,r,s,3),v("x","y","z",1,-1,e,t,i,r,a,4),v("x","y","z",-1,-1,e,t,-i,r,a,5),this.setIndex(l),this.setAttribute("position",new St(u,3)),this.setAttribute("normal",new St(d,3)),this.setAttribute("uv",new St(f,2));function v(x,S,_,T,E,b,R,w,L,U,N){const C=b/L,z=R/U,W=b/2,K=R/2,oe=w/2,ae=L+1,X=U+1;let te=0,Q=0;const ce=new D;for(let se=0;se0?1:-1,d.push(ce.x,ce.y,ce.z),f.push(Xe/L),f.push(1-se/U),te+=1}}for(let se=0;sem+v?(u.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!u.inputState.pinching&&p<=m-v&&(u.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(a=t.getPose(e.gripSpace,i),a!==null&&(l.matrix.fromArray(a.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,a.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(a.linearVelocity)):l.hasLinearVelocity=!1,a.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(a.angularVelocity)):l.hasAngularVelocity=!1));o!==null&&(r=t.getPose(e.targetRaySpace,i),r===null&&a!==null&&(r=a),r!==null&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(sq)))}return o!==null&&(o.visible=r!==null),l!==null&&(l.visible=a!==null),u!==null&&(u.visible=s!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const i=new Xi;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}}class zS{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new Ye(e),this.density=t}clone(){return new zS(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class BS{constructor(e,t=1,i=1e3){this.isFog=!0,this.name="",this.color=new Ye(e),this.near=t,this.far=i}clone(){return new BS(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class Rp extends Xt{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Ai,this.environmentIntensity=1,this.environmentRotation=new Ai,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class Zp{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=Rg,this.updateRanges=[],this.version=0,this.uuid=ja()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}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;re.far||t.push({distance:l,point:Vm.clone(),uv:fa.getInterpolation(Vm,L_,km,I_,pO,$E,mO,new re),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}function U_(n,e,t,i,r,a){Kd.subVectors(n,t).addScalar(.5).multiply(i),r!==void 0?(Gm.x=a*Kd.x-r*Kd.y,Gm.y=r*Kd.x+a*Kd.y):Gm.copy(Kd),n.copy(e),n.x+=Gm.x,n.y+=Gm.y,n.applyMatrix4(B9)}const P_=new D,gO=new D;class H9 extends Xt{constructor(){super(),this.isLOD=!0,this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let i=0,r=t.length;i0){let i,r;for(i=1,r=t.length;i0){P_.setFromMatrixPosition(this.matrixWorld);const r=e.ray.origin.distanceTo(P_);this.getObjectForDistance(r).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){P_.setFromMatrixPosition(e.matrixWorld),gO.setFromMatrixPosition(this.matrixWorld);const i=P_.distanceTo(gO)/e.zoom;t[0].object.visible=!0;let r,a;for(r=1,a=t.length;r=s)t[r-1].object.visible=!1,t[r].object.visible=!0;else break}for(this._currentLevel=r-1;r1?null:t.copy(e.start).addScaledVector(i,a)}intersectsLine(e){const 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){const i=t||hq.getNormalMatrix(e),r=this.coplanarPoint(nb).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)}}const Iu=new qi,dq=new re(.5,.5),F_=new D;class ed{constructor(e=new xs,t=new xs,i=new xs,r=new xs,a=new xs,s=new xs){this.planes=[e,t,i,r,a,s]}set(e,t,i,r,a,s){const o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(i),o[3].copy(r),o[4].copy(a),o[5].copy(s),this}copy(e){const t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e,t=ka,i=!1){const r=this.planes,a=e.elements,s=a[0],o=a[1],l=a[2],u=a[3],d=a[4],f=a[5],p=a[6],m=a[7],v=a[8],x=a[9],S=a[10],_=a[11],T=a[12],E=a[13],b=a[14],R=a[15];if(r[0].setComponents(u-s,m-d,_-v,R-T).normalize(),r[1].setComponents(u+s,m+d,_+v,R+T).normalize(),r[2].setComponents(u+o,m+f,_+x,R+E).normalize(),r[3].setComponents(u-o,m-f,_-x,R-E).normalize(),i)r[4].setComponents(l,p,S,b).normalize(),r[5].setComponents(u-l,m-p,_-S,R-b).normalize();else if(r[4].setComponents(u-l,m-p,_-S,R-b).normalize(),t===ka)r[5].setComponents(u+l,m+p,_+S,R+b).normalize();else if(t===Ep)r[5].setComponents(l,p,S,b).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Iu.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Iu.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Iu)}intersectsSprite(e){Iu.center.set(0,0,0);const t=dq.distanceTo(e.center);return Iu.radius=.7071067811865476+t,Iu.applyMatrix4(e.matrixWorld),this.intersectsSphere(Iu)}intersectsSphere(e){const t=this.planes,i=e.center,r=-e.radius;for(let a=0;a<6;a++)if(t[a].distanceToPoint(i)0?e.max.x:e.min.x,F_.y=r.normal.y>0?e.max.y:e.min.y,F_.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(F_)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}const po=new Me,mo=new ed;class GS{constructor(){this.coordinateSystem=ka}intersectsObject(e,t){if(!t.isArrayCamera||t.cameras.length===0)return!1;for(let i=0;i=a.length&&a.push({start:-1,count:-1,z:-1,index:-1});const o=a[this.index];s.push(o),this.index++,o.start=e,o.count=t,o.z=i,o.index=r}reset(){this.list.length=0,this.index=0}}const ra=new Me,gq=new Ye(1,1,1),MO=new ed,vq=new GS,H_=new Qi,Uu=new qi,qm=new D,AO=new D,_q=new D,rb=new mq,Nr=new jn,V_=[];function xq(n,e,t=0){const i=e.itemSize;if(n.isInterleavedBufferAttribute||n.array.constructor!==e.array.constructor){const r=n.count;for(let a=0;a65535?new Uint32Array(r):new Uint16Array(r);t.setIndex(new bt(a,1))}this._geometryInitialized=!0}}_validateGeometry(e){const t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw new Error('THREE.BatchedMesh: All geometries must consistently have "index".');for(const i in t.attributes){if(!e.hasAttribute(i))throw new Error(`THREE.BatchedMesh: Added geometry missing "${i}". All geometries must have consistent attributes.`);const r=e.getAttribute(i),a=t.getAttribute(i);if(r.itemSize!==a.itemSize||r.normalized!==a.normalized)throw new Error("THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}validateInstanceId(e){const t=this._instanceInfo;if(e<0||e>=t.length||t[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid instanceId ${e}. Instance is either out of range or has been deleted.`)}validateGeometryId(e){const t=this._geometryInfo;if(e<0||e>=t.length||t[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid geometryId ${e}. Geometry is either out of range or has been deleted.`)}setCustomSort(e){return this.customSort=e,this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Qi);const e=this.boundingBox,t=this._instanceInfo;e.makeEmpty();for(let i=0,r=t.length;i=this.maxInstanceCount&&this._availableInstanceIds.length===0)throw new Error("THREE.BatchedMesh: Maximum item count reached.");const i={visible:!0,active:!0,geometryIndex:e};let r=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(ib),r=this._availableInstanceIds.shift(),this._instanceInfo[r]=i):(r=this._instanceInfo.length,this._instanceInfo.push(i));const a=this._matricesTexture;ra.identity().toArray(a.image.data,r*16),a.needsUpdate=!0;const s=this._colorsTexture;return s&&(gq.toArray(s.image.data,r*4),s.needsUpdate=!0),this._visibilityChanged=!0,r}addGeometry(e,t=-1,i=-1){this._initializeGeometry(e),this._validateGeometry(e);const r={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},a=this._geometryInfo;r.vertexStart=this._nextVertexStart,r.reservedVertexCount=t===-1?e.getAttribute("position").count:t;const s=e.getIndex();if(s!==null&&(r.indexStart=this._nextIndexStart,r.reservedIndexCount=i===-1?s.count:i),r.indexStart!==-1&&r.indexStart+r.reservedIndexCount>this._maxIndexCount||r.vertexStart+r.reservedVertexCount>this._maxVertexCount)throw new Error("THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.");let l;return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(ib),l=this._availableGeometryIds.shift(),a[l]=r):(l=this._geometryCount,this._geometryCount++,a.push(r)),this.setGeometryAt(l,e),this._nextIndexStart=r.indexStart+r.reservedIndexCount,this._nextVertexStart=r.vertexStart+r.reservedVertexCount,l}setGeometryAt(e,t){if(e>=this._geometryCount)throw new Error("THREE.BatchedMesh: Maximum geometry count reached.");this._validateGeometry(t);const i=this.geometry,r=i.getIndex()!==null,a=i.getIndex(),s=t.getIndex(),o=this._geometryInfo[e];if(r&&s.count>o.reservedIndexCount||t.attributes.position.count>o.reservedVertexCount)throw new Error("THREE.BatchedMesh: Reserved space not large enough for provided geometry.");const l=o.vertexStart,u=o.reservedVertexCount;o.vertexCount=t.getAttribute("position").count;for(const d in i.attributes){const f=t.getAttribute(d),p=i.getAttribute(d);xq(f,p,l);const m=f.itemSize;for(let v=f.count,x=u;v=t.length||t[e].active===!1)return this;const i=this._instanceInfo;for(let r=0,a=i.length;ro).sort((s,o)=>i[s].vertexStart-i[o].vertexStart),a=this.geometry;for(let s=0,o=i.length;s=this._geometryCount)return null;const i=this.geometry,r=this._geometryInfo[e];if(r.boundingBox===null){const a=new Qi,s=i.index,o=i.attributes.position;for(let l=r.start,u=r.start+r.count;l=this._geometryCount)return null;const i=this.geometry,r=this._geometryInfo[e];if(r.boundingSphere===null){const a=new qi;this.getBoundingBoxAt(e,H_),H_.getCenter(a.center);const s=i.index,o=i.attributes.position;let l=0;for(let u=r.start,d=r.start+r.count;uo.active);if(Math.max(...i.map(o=>o.vertexStart+o.reservedVertexCount))>e)throw new Error(`BatchedMesh: Geometry vertex values are being used outside the range ${t}. Cannot shrink further.`);if(this.geometry.index&&Math.max(...i.map(l=>l.indexStart+l.reservedIndexCount))>t)throw new Error(`BatchedMesh: Geometry index values are being used outside the range ${t}. Cannot shrink further.`);const a=this.geometry;a.dispose(),this._maxVertexCount=e,this._maxIndexCount=t,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new Ct,this._initializeGeometry(a));const s=this.geometry;a.index&&Pu(a.index.array,s.index.array);for(const o in a.attributes)Pu(a.attributes[o].array,s.attributes[o].array)}raycast(e,t){const i=this._instanceInfo,r=this._geometryInfo,a=this.matrixWorld,s=this.geometry;Nr.material=this.material,Nr.geometry.index=s.index,Nr.geometry.attributes=s.attributes,Nr.geometry.boundingBox===null&&(Nr.geometry.boundingBox=new Qi),Nr.geometry.boundingSphere===null&&(Nr.geometry.boundingSphere=new qi);for(let o=0,l=i.length;o({...t,boundingBox:t.boundingBox!==null?t.boundingBox.clone():null,boundingSphere:t.boundingSphere!==null?t.boundingSphere.clone():null})),this._instanceInfo=e._instanceInfo.map(t=>({...t})),this._availableInstanceIds=e._availableInstanceIds.slice(),this._availableGeometryIds=e._availableGeometryIds.slice(),this._nextIndexStart=e._nextIndexStart,this._nextVertexStart=e._nextVertexStart,this._geometryCount=e._geometryCount,this._maxInstanceCount=e._maxInstanceCount,this._maxVertexCount=e._maxVertexCount,this._maxIndexCount=e._maxIndexCount,this._geometryInitialized=e._geometryInitialized,this._multiDrawCounts=e._multiDrawCounts.slice(),this._multiDrawStarts=e._multiDrawStarts.slice(),this._indirectTexture=e._indirectTexture.clone(),this._indirectTexture.image.data=this._indirectTexture.image.data.slice(),this._matricesTexture=e._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),this._colorsTexture!==null&&(this._colorsTexture=e._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,this._colorsTexture!==null&&(this._colorsTexture.dispose(),this._colorsTexture=null)}onBeforeRender(e,t,i,r,a){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;const s=r.getIndex(),o=s===null?1:s.array.BYTES_PER_ELEMENT,l=this._instanceInfo,u=this._multiDrawStarts,d=this._multiDrawCounts,f=this._geometryInfo,p=this.perObjectFrustumCulled,m=this._indirectTexture,v=m.image.data,x=i.isArrayCamera?vq:MO;p&&!i.isArrayCamera&&(ra.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse).multiply(this.matrixWorld),MO.setFromProjectionMatrix(ra,i.coordinateSystem,i.reversedDepth));let S=0;if(this.sortObjects){ra.copy(this.matrixWorld).invert(),qm.setFromMatrixPosition(i.matrixWorld).applyMatrix4(ra),AO.set(0,0,-1).transformDirection(i.matrixWorld).transformDirection(ra);for(let E=0,b=l.length;E0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let a=0,s=r.length;ai)return;ab.applyMatrix4(n.matrixWorld);const u=e.ray.origin.distanceTo(ab);if(!(ue.far))return{distance:u,point:RO.clone().applyMatrix4(n.matrixWorld),index:s,face:null,faceIndex:null,barycoord:null,object:n}}const CO=new D,DO=new D;class va extends Oo{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,i=[];for(let r=0,a=t.count;r0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let a=0,s=r.length;ar.far)return;a.push({distance:u,distanceToRay:Math.sqrt(o),point:l,index:e,face:null,faceIndex:null,barycoord:null,object:s})}}class G9 extends In{constructor(e,t,i,r,a=Bt,s=Bt,o,l,u){super(e,t,i,r,a,s,o,l,u),this.isVideoTexture=!0,this.generateMipmaps=!1,this._requestVideoFrameCallbackId=0;const d=this;function f(){d.needsUpdate=!0,d._requestVideoFrameCallbackId=e.requestVideoFrameCallback(f)}"requestVideoFrameCallback"in e&&(this._requestVideoFrameCallbackId=e.requestVideoFrameCallback(f))}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;"requestVideoFrameCallback"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}dispose(){this._requestVideoFrameCallbackId!==0&&(this.source.data.cancelVideoFrameCallback(this._requestVideoFrameCallbackId),this._requestVideoFrameCallbackId=0),super.dispose()}}class yq extends G9{constructor(e,t,i,r,a,s,o,l){super({},e,t,i,r,a,s,o,l),this.isVideoFrameTexture=!0}update(){}clone(){return new this.constructor().copy(this)}setFrame(e){this.image=e,this.needsUpdate=!0}}class Sq extends In{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=Yn,this.minFilter=Yn,this.generateMipmaps=!1,this.needsUpdate=!0}}class WS extends In{constructor(e,t,i,r,a,s,o,l,u,d,f,p){super(null,s,o,l,u,d,r,a,f,p),this.isCompressedTexture=!0,this.image={width:t,height:i},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class Tq extends WS{constructor(e,t,i,r,a,s){super(e,t,i,a,s),this.isCompressedArrayTexture=!0,this.image.depth=r,this.wrapR=Wi,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class Eq extends WS{constructor(e,t,i){super(void 0,e[0].width,e[0].height,t,i,Pl),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}}class bq extends In{constructor(e,t,i,r,a,s,o,l,u){super(e,t,i,r,a,s,o,l,u),this.isCanvasTexture=!0,this.needsUpdate=!0}}class iv extends In{constructor(e,t,i=to,r,a,s,o=Yn,l=Yn,u,d=yp,f=1){if(d!==yp&&d!==zh)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");const p={width:e,height:t,depth:f};super(p,r,a,s,o,l,d,i,u),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new Lc(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class uR extends In{constructor(e=null){super(),this.sourceTexture=e,this.isExternalTexture=!0}copy(e){return super.copy(e),this.sourceTexture=e.sourceTexture,this}}class XS extends Ct{constructor(e=1,t=1,i=4,r=8,a=1){super(),this.type="CapsuleGeometry",this.parameters={radius:e,height:t,capSegments:i,radialSegments:r,heightSegments:a},t=Math.max(0,t),i=Math.max(1,Math.floor(i)),r=Math.max(3,Math.floor(r)),a=Math.max(1,Math.floor(a));const s=[],o=[],l=[],u=[],d=t/2,f=Math.PI/2*e,p=t,m=2*f+p,v=i*2+a,x=r+1,S=new D,_=new D;for(let T=0;T<=v;T++){let E=0,b=0,R=0,w=0;if(T<=i){const N=T/i,C=N*Math.PI/2;b=-d-e*Math.cos(C),R=e*Math.sin(C),w=-e*Math.cos(C),E=N*f}else if(T<=i+a){const N=(T-i)/a;b=-d+N*t,R=e,w=0,E=f+N*p}else{const N=(T-i-a)/i,C=N*Math.PI/2;b=d+e*Math.sin(C),R=e*Math.cos(C),w=e*Math.sin(C),E=f+p+N*f}const L=Math.max(0,Math.min(1,E/m));let U=0;T===0?U=.5/r:T===v&&(U=-.5/r);for(let N=0;N<=r;N++){const C=N/r,z=C*Math.PI*2,W=Math.sin(z),K=Math.cos(z);_.x=-R*K,_.y=b,_.z=R*W,o.push(_.x,_.y,_.z),S.set(-R*K,w,R*W),S.normalize(),l.push(S.x,S.y,S.z),u.push(C+U,L)}if(T>0){const N=(T-1)*x;for(let C=0;C0&&E(!0),t>0&&E(!1)),this.setIndex(d),this.setAttribute("position",new St(f,3)),this.setAttribute("normal",new St(p,3)),this.setAttribute("uv",new St(m,2));function T(){const b=new D,R=new D;let w=0;const L=(t-e)/i;for(let U=0;U<=a;U++){const N=[],C=U/a,z=C*(t-e)+e;for(let W=0;W<=r;W++){const K=W/r,oe=K*l+o,ae=Math.sin(oe),X=Math.cos(oe);R.x=z*ae,R.y=-C*i+S,R.z=z*X,f.push(R.x,R.y,R.z),b.set(ae,L,X).normalize(),p.push(b.x,b.y,b.z),m.push(K,1-C),N.push(v++)}x.push(N)}for(let U=0;U0||N!==0)&&(d.push(C,z,K),w+=3),(t>0||N!==a-1)&&(d.push(z,W,K),w+=3)}u.addGroup(_,w,0),_+=w}function E(b){const R=v,w=new re,L=new D;let U=0;const N=b===!0?e:t,C=b===!0?1:-1;for(let W=1;W<=r;W++)f.push(0,S*C,0),p.push(0,C,0),m.push(.5,.5),v++;const z=v;for(let W=0;W<=r;W++){const oe=W/r*l+o,ae=Math.cos(oe),X=Math.sin(oe);L.x=N*X,L.y=S*C,L.z=N*ae,f.push(L.x,L.y,L.z),p.push(0,C,0),w.x=ae*.5+.5,w.y=X*.5*C+.5,m.push(w.x,w.y),v++}for(let W=0;W.9&&L<.1&&(E<.2&&(s[T+0]+=1),b<.2&&(s[T+2]+=1),R<.2&&(s[T+4]+=1))}}function p(T){a.push(T.x,T.y,T.z)}function m(T,E){const b=T*3;E.x=e[b+0],E.y=e[b+1],E.z=e[b+2]}function v(){const T=new D,E=new D,b=new D,R=new D,w=new re,L=new re,U=new re;for(let N=0,C=0;N0)l=r-1;else{l=r;break}if(r=l,i[r]===s)return r/(a-1);const d=i[r],p=i[r+1]-d,m=(s-d)/p;return(r+m)/(a-1)}getTangent(e,t){let r=e-1e-4,a=e+1e-4;r<0&&(r=0),a>1&&(a=1);const s=this.getPoint(r),o=this.getPoint(a),l=t||(s.isVector2?new re:new D);return l.copy(o).sub(s).normalize(),l}getTangentAt(e,t){const i=this.getUtoTmapping(e);return this.getTangent(i,t)}computeFrenetFrames(e,t=!1){const i=new D,r=[],a=[],s=[],o=new D,l=new Me;for(let m=0;m<=e;m++){const v=m/e;r[m]=this.getTangentAt(v,new D)}a[0]=new D,s[0]=new D;let u=Number.MAX_VALUE;const d=Math.abs(r[0].x),f=Math.abs(r[0].y),p=Math.abs(r[0].z);d<=u&&(u=d,i.set(1,0,0)),f<=u&&(u=f,i.set(0,1,0)),p<=u&&i.set(0,0,1),o.crossVectors(r[0],i).normalize(),a[0].crossVectors(r[0],o),s[0].crossVectors(r[0],a[0]);for(let m=1;m<=e;m++){if(a[m]=a[m-1].clone(),s[m]=s[m-1].clone(),o.crossVectors(r[m-1],r[m]),o.length()>Number.EPSILON){o.normalize();const v=Math.acos(It(r[m-1].dot(r[m]),-1,1));a[m].applyMatrix4(l.makeRotationAxis(o,v))}s[m].crossVectors(r[m],a[m])}if(t===!0){let m=Math.acos(It(a[0].dot(a[e]),-1,1));m/=e,r[0].dot(o.crossVectors(a[0],a[e]))>0&&(m=-m);for(let v=1;v<=e;v++)a[v].applyMatrix4(l.makeRotationAxis(r[v],m*v)),s[v].crossVectors(r[v],a[v])}return{tangents:r,normals:a,binormals:s}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.7,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class jS extends io{constructor(e=0,t=0,i=1,r=1,a=0,s=Math.PI*2,o=!1,l=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=s,this.aClockwise=o,this.aRotation=l}getPoint(e,t=new re){const i=t,r=Math.PI*2;let a=this.aEndAngle-this.aStartAngle;const s=Math.abs(a)r;)a-=r;a0?0:(Math.floor(Math.abs(o)/a)+1)*a:l===0&&o===a-1&&(o=a-2,l=1);let u,d;this.closed||o>0?u=r[(o-1)%a]:(Z_.subVectors(r[0],r[1]).add(r[0]),u=Z_);const f=r[o%a],p=r[(o+1)%a];if(this.closed||o+2r.length-2?r.length-1:s+1],f=r[s>r.length-3?r.length-1:s+2];return i.set(LO(o,l.x,u.x,d.x,f.x),LO(o,l.y,u.y,d.y,f.y)),i}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t=i){const s=r[a]-i,o=this.curves[a],l=o.getLength(),u=l===0?0:1-s/l;return o.getPointAt(u,t)}a++}return null}getLength(){const 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;const e=[];let t=0;for(let i=0,r=this.curves.length;i1&&!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;t0){const f=u.getPoint(0);f.equals(this.currentPoint)||this.lineTo(f.x,f.y)}this.curves.push(u);const d=u.getPoint(1);return this.currentPoint.copy(d),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class Mh extends Ly{constructor(e){super(e),this.uuid=ja(),this.type="Shape",this.holes=[]}getPointsHoles(e){const t=[];for(let i=0,r=this.holes.length;i80*t){o=n[0],l=n[1];let d=o,f=l;for(let p=t;pd&&(d=m),v>f&&(f=v)}u=Math.max(d-o,f-l),u=u!==0?32767/u:0}return Ng(a,s,t,o,l,u,0),s}function Z9(n,e,t,i,r){let a;if(r===jq(n,e,t,i)>0)for(let s=e;s=e;s-=i)a=IO(s/i|0,n[s],n[s+1],a);return a&&Cp(a,a.next)&&(Lg(a),a=a.next),a}function Fh(n,e){if(!n)return n;e||(e=n);let t=n,i;do if(i=!1,!t.steiner&&(Cp(t,t.next)||_i(t.prev,t,t.next)===0)){if(Lg(t),t=e=t.prev,t===t.next)break;i=!0}else t=t.next;while(i||t!==e);return e}function Ng(n,e,t,i,r,a,s){if(!n)return;!s&&a&&Gq(n,i,r,a);let o=n;for(;n.prev!==n.next;){const l=n.prev,u=n.next;if(a?Iq(n,i,r,a):Lq(n)){e.push(l.i,n.i,u.i),Lg(n),n=u.next,o=u.next;continue}if(n=u,n===o){s?s===1?(n=Uq(Fh(n),e),Ng(n,e,t,i,r,a,2)):s===2&&Pq(n,e,t,i,r,a):Ng(Fh(n),e,t,i,r,a,1);break}}}function Lq(n){const e=n.prev,t=n,i=n.next;if(_i(e,t,i)>=0)return!1;const r=e.x,a=t.x,s=i.x,o=e.y,l=t.y,u=i.y,d=Math.min(r,a,s),f=Math.min(o,l,u),p=Math.max(r,a,s),m=Math.max(o,l,u);let v=i.next;for(;v!==e;){if(v.x>=d&&v.x<=p&&v.y>=f&&v.y<=m&&w0(r,o,a,l,s,u,v.x,v.y)&&_i(v.prev,v,v.next)>=0)return!1;v=v.next}return!0}function Iq(n,e,t,i){const r=n.prev,a=n,s=n.next;if(_i(r,a,s)>=0)return!1;const o=r.x,l=a.x,u=s.x,d=r.y,f=a.y,p=s.y,m=Math.min(o,l,u),v=Math.min(d,f,p),x=Math.max(o,l,u),S=Math.max(d,f,p),_=G3(m,v,e,t,i),T=G3(x,S,e,t,i);let E=n.prevZ,b=n.nextZ;for(;E&&E.z>=_&&b&&b.z<=T;){if(E.x>=m&&E.x<=x&&E.y>=v&&E.y<=S&&E!==r&&E!==s&&w0(o,d,l,f,u,p,E.x,E.y)&&_i(E.prev,E,E.next)>=0||(E=E.prevZ,b.x>=m&&b.x<=x&&b.y>=v&&b.y<=S&&b!==r&&b!==s&&w0(o,d,l,f,u,p,b.x,b.y)&&_i(b.prev,b,b.next)>=0))return!1;b=b.nextZ}for(;E&&E.z>=_;){if(E.x>=m&&E.x<=x&&E.y>=v&&E.y<=S&&E!==r&&E!==s&&w0(o,d,l,f,u,p,E.x,E.y)&&_i(E.prev,E,E.next)>=0)return!1;E=E.prevZ}for(;b&&b.z<=T;){if(b.x>=m&&b.x<=x&&b.y>=v&&b.y<=S&&b!==r&&b!==s&&w0(o,d,l,f,u,p,b.x,b.y)&&_i(b.prev,b,b.next)>=0)return!1;b=b.nextZ}return!0}function Uq(n,e){let t=n;do{const i=t.prev,r=t.next.next;!Cp(i,r)&&K9(i,t,t.next,r)&&Og(i,r)&&Og(r,i)&&(e.push(i.i,t.i,r.i),Lg(t),Lg(t.next),t=n=r),t=t.next}while(t!==n);return Fh(t)}function Pq(n,e,t,i,r,a){let s=n;do{let o=s.next.next;for(;o!==s.prev;){if(s.i!==o.i&&Xq(s,o)){let l=J9(s,o);s=Fh(s,s.next),l=Fh(l,l.next),Ng(s,e,t,i,r,a,0),Ng(l,e,t,i,r,a,0);return}o=o.next}s=s.next}while(s!==n)}function zq(n,e,t,i){const r=[];for(let a=0,s=e.length;a=t.next.y&&t.next.y!==t.y){const f=t.x+(r-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(f<=i&&f>a&&(a=f,s=t.x=t.x&&t.x>=l&&i!==t.x&&Q9(rs.x||t.x===s.x&&Vq(s,t)))&&(s=t,d=f)}t=t.next}while(t!==o);return s}function Vq(n,e){return _i(n.prev,n,e.prev)<0&&_i(e.next,n,n.next)<0}function Gq(n,e,t,i){let r=n;do r.z===0&&(r.z=G3(r.x,r.y,e,t,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==n);r.prevZ.nextZ=null,r.prevZ=null,kq(r)}function kq(n){let e,t=1;do{let i=n,r;n=null;let a=null;for(e=0;i;){e++;let s=i,o=0;for(let u=0;u0||l>0&&s;)o!==0&&(l===0||!s||i.z<=s.z)?(r=i,i=i.nextZ,o--):(r=s,s=s.nextZ,l--),a?a.nextZ=r:n=r,r.prevZ=a,a=r;i=s}a.nextZ=null,t*=2}while(e>1);return n}function G3(n,e,t,i,r){return n=(n-t)*r|0,e=(e-i)*r|0,n=(n|n<<8)&16711935,n=(n|n<<4)&252645135,n=(n|n<<2)&858993459,n=(n|n<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,n|e<<1}function Wq(n){let e=n,t=n;do(e.x=(n-s)*(a-o)&&(n-s)*(i-o)>=(t-s)*(e-o)&&(t-s)*(a-o)>=(r-s)*(i-o)}function w0(n,e,t,i,r,a,s,o){return!(n===s&&e===o)&&Q9(n,e,t,i,r,a,s,o)}function Xq(n,e){return n.next.i!==e.i&&n.prev.i!==e.i&&!qq(n,e)&&(Og(n,e)&&Og(e,n)&&Yq(n,e)&&(_i(n.prev,n,e.prev)||_i(n,e.prev,e))||Cp(n,e)&&_i(n.prev,n,n.next)>0&&_i(e.prev,e,e.next)>0)}function _i(n,e,t){return(e.y-n.y)*(t.x-e.x)-(e.x-n.x)*(t.y-e.y)}function Cp(n,e){return n.x===e.x&&n.y===e.y}function K9(n,e,t,i){const r=K_(_i(n,e,t)),a=K_(_i(n,e,i)),s=K_(_i(t,i,n)),o=K_(_i(t,i,e));return!!(r!==a&&s!==o||r===0&&Q_(n,t,e)||a===0&&Q_(n,i,e)||s===0&&Q_(t,n,i)||o===0&&Q_(t,e,i))}function Q_(n,e,t){return e.x<=Math.max(n.x,t.x)&&e.x>=Math.min(n.x,t.x)&&e.y<=Math.max(n.y,t.y)&&e.y>=Math.min(n.y,t.y)}function K_(n){return n>0?1:n<0?-1:0}function qq(n,e){let t=n;do{if(t.i!==n.i&&t.next.i!==n.i&&t.i!==e.i&&t.next.i!==e.i&&K9(t,t.next,n,e))return!0;t=t.next}while(t!==n);return!1}function Og(n,e){return _i(n.prev,n,n.next)<0?_i(n,e,n.next)>=0&&_i(n,n.prev,e)>=0:_i(n,e,n.prev)<0||_i(n,n.next,e)<0}function Yq(n,e){let t=n,i=!1;const r=(n.x+e.x)/2,a=(n.y+e.y)/2;do t.y>a!=t.next.y>a&&t.next.y!==t.y&&r<(t.next.x-t.x)*(a-t.y)/(t.next.y-t.y)+t.x&&(i=!i),t=t.next;while(t!==n);return i}function J9(n,e){const t=k3(n.i,n.x,n.y),i=k3(e.i,e.x,e.y),r=n.next,a=e.prev;return n.next=e,e.prev=n,t.next=r,r.prev=t,i.next=t,t.prev=i,a.next=i,i.prev=a,i}function IO(n,e,t,i){const r=k3(n,e,t);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function Lg(n){n.next.prev=n.prev,n.prev.next=n.next,n.prevZ&&(n.prevZ.nextZ=n.nextZ),n.nextZ&&(n.nextZ.prevZ=n.prevZ)}function k3(n,e,t){return{i:n,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function jq(n,e,t,i){let r=0;for(let a=e,s=t-i;a2&&n[e-1].equals(n[0])&&n.pop()}function PO(n,e){for(let t=0;tNumber.EPSILON){const be=Math.sqrt(P),Ie=Math.sqrt(ht*ht+k*k),Se=V.x-Je/be,yt=V.y+$e/be,je=Ae.x-k/Ie,Tt=Ae.y+ht/Ie,vt=((je-Se)*k-(Tt-yt)*ht)/($e*k-Je*ht);Oe=Se+$e*vt-Ee.x,Ve=yt+Je*vt-Ee.y;const Ue=Oe*Oe+Ve*Ve;if(Ue<=2)return new re(Oe,Ve);Fe=Math.sqrt(Ue/2)}else{let be=!1;$e>Number.EPSILON?ht>Number.EPSILON&&(be=!0):$e<-Number.EPSILON?ht<-Number.EPSILON&&(be=!0):Math.sign(Je)===Math.sign(k)&&(be=!0),be?(Oe=-Je,Ve=$e,Fe=Math.sqrt(P)):(Oe=$e,Ve=Je,Fe=Math.sqrt(P/2))}return new re(Oe/Fe,Ve/Fe)}const ce=[];for(let Ee=0,V=ae.length,Ae=V-1,Oe=Ee+1;Ee=0;Ee--){const V=Ee/S,Ae=m*Math.cos(V*Math.PI/2),Oe=v*Math.sin(V*Math.PI/2)+x;for(let Ve=0,Fe=ae.length;Ve=0;){const Oe=Ae;let Ve=Ae-1;Ve<0&&(Ve=Ee.length-1);for(let Fe=0,$e=d+S*2;Fe<$e;Fe++){const Je=te*Fe,ht=te*(Fe+1),k=V+Oe+Je,P=V+Ve+Je,he=V+Ve+ht,be=V+Oe+ht;wt(k,P,he,be)}}}function de(Ee,V,Ae){l.push(Ee),l.push(V),l.push(Ae)}function it(Ee,V,Ae){ct(Ee),ct(V),ct(Ae);const Oe=r.length/3,Ve=T.generateTopUV(i,r,Oe-3,Oe-2,Oe-1);Qe(Ve[0]),Qe(Ve[1]),Qe(Ve[2])}function wt(Ee,V,Ae,Oe){ct(Ee),ct(V),ct(Oe),ct(V),ct(Ae),ct(Oe);const Ve=r.length/3,Fe=T.generateSideWallUV(i,r,Ve-6,Ve-3,Ve-2,Ve-1);Qe(Fe[0]),Qe(Fe[1]),Qe(Fe[3]),Qe(Fe[1]),Qe(Fe[2]),Qe(Fe[3])}function ct(Ee){r.push(l[Ee*3+0]),r.push(l[Ee*3+1]),r.push(l[Ee*3+2])}function Qe(Ee){a.push(Ee.x),a.push(Ee.y)}}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){const e=super.toJSON(),t=this.parameters.shapes,i=this.parameters.options;return Kq(t,i,e)}static fromJSON(e,t){const i=[];for(let a=0,s=e.shapes.length;a0)&&m.push(E,b,w),(_!==i-1||l0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class t7 extends ei{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new Ye(16777215),this.specular=new Ye(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Ye(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Hl,this.normalScale=new re(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ai,this.combine=Jg,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),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.flatShading=e.flatShading,this.fog=e.fog,this}}class n7 extends ei{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new Ye(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Ye(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Hl,this.normalScale=new re(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,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.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class vR extends ei{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Hl,this.normalScale=new re(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class i7 extends ei{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new Ye(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Ye(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Hl,this.normalScale=new re(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ai,this.combine=Jg,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,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.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),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.flatShading=e.flatShading,this.fog=e.fog,this}}class _R extends ei{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=su,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}}class xR extends ei{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",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.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}class r7 extends ei{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new Ye(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Hl,this.normalScale=new re(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this.fog=e.fog,this}}class a7 extends Yi{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function ph(n,e){return!n||n.constructor===e?n:typeof e.BYTES_PER_ELEMENT=="number"?new e(n):Array.prototype.slice.call(n)}function s7(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function o7(n){function e(r,a){return n[r]-n[a]}const t=n.length,i=new Array(t);for(let r=0;r!==t;++r)i[r]=r;return i.sort(e),i}function W3(n,e,t){const i=n.length,r=new n.constructor(i);for(let a=0,s=0;s!==i;++a){const o=t[a]*e;for(let l=0;l!==e;++l)r[s++]=n[o+l]}return r}function yR(n,e,t,i){let r=1,a=n[0];for(;a!==void 0&&a[i]===void 0;)a=n[r++];if(a===void 0)return;let s=a[i];if(s!==void 0)if(Array.isArray(s))do s=a[i],s!==void 0&&(e.push(a.time),t.push(...s)),a=n[r++];while(a!==void 0);else if(s.toArray!==void 0)do s=a[i],s!==void 0&&(e.push(a.time),s.toArray(t,t.length)),a=n[r++];while(a!==void 0);else do s=a[i],s!==void 0&&(e.push(a.time),t.push(s)),a=n[r++];while(a!==void 0)}function $q(n,e,t,i,r=30){const a=n.clone();a.name=e;const s=[];for(let l=0;l=i)){f.push(u.times[m]);for(let x=0;xa.tracks[l].times[0]&&(o=a.tracks[l].times[0]);for(let l=0;l=o.times[v]){const _=v*f+d,T=_+f-d;x=o.values.slice(_,T)}else{const _=o.createInterpolant(),T=d,E=f-d;_.evaluate(a),x=_.resultBuffer.slice(T,E)}l==="quaternion"&&new ft().fromArray(x).normalize().conjugate().toArray(x);const S=u.times.length;for(let _=0;_=a)){const o=t[1];e=a)break t}s=i,i=0;break n}break e}for(;i>>1;et;)--s;if(++s,a!==0||s!==r){a>=s&&(s=Math.max(s,1),a=s-1);const o=this.getValueSize();this.times=i.slice(a,s),this.values=this.values.slice(a*o,s*o)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(Ht("KeyframeTrack: Invalid value size in track.",this),e=!1);const i=this.times,r=this.values,a=i.length;a===0&&(Ht("KeyframeTrack: Track is empty.",this),e=!1);let s=null;for(let o=0;o!==a;o++){const l=i[o];if(typeof l=="number"&&isNaN(l)){Ht("KeyframeTrack: Time is not a valid number.",this,o,l),e=!1;break}if(s!==null&&s>l){Ht("KeyframeTrack: Out of order keys.",this,o,l,s),e=!1;break}s=l}if(r!==void 0&&s7(r))for(let o=0,l=r.length;o!==l;++o){const u=r[o];if(isNaN(u)){Ht("KeyframeTrack: Value is not a valid number.",this,o,u),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),i=this.getValueSize(),r=this.getInterpolation()===l1,a=e.length-1;let s=1;for(let o=1;o0){e[s]=e[a];for(let o=a*i,l=s*i,u=0;u!==i;++u)t[l+u]=t[o+u];++s}return s!==e.length?(this.times=e.slice(0,s),this.values=t.slice(0,s*i)):(this.times=e,this.values=t),this}clone(){const e=this.times.slice(),t=this.values.slice(),i=this.constructor,r=new i(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}}Ns.prototype.ValueTypeName="";Ns.prototype.TimeBufferType=Float32Array;Ns.prototype.ValueBufferType=Float32Array;Ns.prototype.DefaultInterpolation=Tp;class nd extends Ns{constructor(e,t,i){super(e,t,i)}}nd.prototype.ValueTypeName="bool";nd.prototype.ValueBufferType=Array;nd.prototype.DefaultInterpolation=Sp;nd.prototype.InterpolantFactoryMethodLinear=void 0;nd.prototype.InterpolantFactoryMethodSmooth=void 0;class TR extends Ns{constructor(e,t,i,r){super(e,t,i,r)}}TR.prototype.ValueTypeName="color";class tu extends Ns{constructor(e,t,i,r){super(e,t,i,r)}}tu.prototype.ValueTypeName="number";class u7 extends Qp{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){const a=this.resultBuffer,s=this.sampleValues,o=this.valueSize,l=(i-t)/(r-t);let u=e*o;for(let d=u+o;u!==d;u+=4)ft.slerpFlat(a,0,s,u-o,s,u,l);return a}}class nu extends Ns{constructor(e,t,i,r){super(e,t,i,r)}InterpolantFactoryMethodLinear(e){return new u7(this.times,this.values,this.getValueSize(),e)}}nu.prototype.ValueTypeName="quaternion";nu.prototype.InterpolantFactoryMethodSmooth=void 0;class id extends Ns{constructor(e,t,i){super(e,t,i)}}id.prototype.ValueTypeName="string";id.prototype.ValueBufferType=Array;id.prototype.DefaultInterpolation=Sp;id.prototype.InterpolantFactoryMethodLinear=void 0;id.prototype.InterpolantFactoryMethodSmooth=void 0;class Hh extends Ns{constructor(e,t,i,r){super(e,t,i,r)}}Hh.prototype.ValueTypeName="vector";class Vh{constructor(e="",t=-1,i=[],r=US){this.name=e,this.tracks=i,this.duration=t,this.blendMode=r,this.uuid=ja(),this.userData={},this.duration<0&&this.resetDuration()}static parse(e){const t=[],i=e.tracks,r=1/(e.fps||1);for(let s=0,o=i.length;s!==o;++s)t.push(iY(i[s]).scale(r));const a=new this(e.name,e.duration,t,e.blendMode);return a.uuid=e.uuid,a.userData=JSON.parse(e.userData||"{}"),a}static toJSON(e){const t=[],i=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode,userData:JSON.stringify(e.userData)};for(let a=0,s=i.length;a!==s;++a)t.push(Ns.toJSON(i[a]));return r}static CreateFromMorphTargetSequence(e,t,i,r){const a=t.length,s=[];for(let o=0;o1){const f=d[1];let p=r[f];p||(r[f]=p=[]),p.push(u)}}const s=[];for(const o in r)s.push(this.CreateFromMorphTargetSequence(o,r[o],t,i));return s}static parseAnimation(e,t){if(dt("AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return Ht("AnimationClip: No animation in JSONLoader data."),null;const i=function(f,p,m,v,x){if(m.length!==0){const S=[],_=[];yR(m,S,_,v),S.length!==0&&x.push(new f(p,S,_))}},r=[],a=e.name||"default",s=e.fps||30,o=e.blendMode;let l=e.length||-1;const u=e.hierarchy||[];for(let f=0;f{t&&t(a),this.manager.itemEnd(e)},0),a;if(rl[e]!==void 0){rl[e].push({onLoad:t,onProgress:i,onError:r});return}rl[e]=[],rl[e].push({onLoad:t,onProgress:i,onError:r});const s=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),o=this.mimeType,l=this.responseType;fetch(s).then(u=>{if(u.status===200||u.status===0){if(u.status===0&&dt("FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||u.body===void 0||u.body.getReader===void 0)return u;const d=rl[e],f=u.body.getReader(),p=u.headers.get("X-File-Size")||u.headers.get("Content-Length"),m=p?parseInt(p):0,v=m!==0;let x=0;const S=new ReadableStream({start(_){T();function T(){f.read().then(({done:E,value:b})=>{if(E)_.close();else{x+=b.byteLength;const R=new ProgressEvent("progress",{lengthComputable:v,loaded:x,total:m});for(let w=0,L=d.length;w{_.error(E)})}}});return new Response(S)}else throw new rY(`fetch for "${u.url}" responded with ${u.status}: ${u.statusText}`,u)}).then(u=>{switch(l){case"arraybuffer":return u.arrayBuffer();case"blob":return u.blob();case"document":return u.text().then(d=>new DOMParser().parseFromString(d,o));case"json":return u.json();default:if(o==="")return u.text();{const f=/charset="?([^;"\s]*)"?/i.exec(o),p=f&&f[1]?f[1].toLowerCase():void 0,m=new TextDecoder(p);return u.arrayBuffer().then(v=>m.decode(v))}}}).then(u=>{Co.add(`file:${e}`,u);const d=rl[e];delete rl[e];for(let f=0,p=d.length;f{const d=rl[e];if(d===void 0)throw this.manager.itemError(e),u;delete rl[e];for(let f=0,p=d.length;f{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}class aY extends wi{constructor(e){super(e)}load(e,t,i,r){const a=this,s=new jr(this.manager);s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,function(o){try{t(a.parse(JSON.parse(o)))}catch(l){r?r(l):Ht(l),a.manager.itemError(e)}},i,r)}parse(e){const t=[];for(let i=0;i0:r.vertexColors=e.vertexColors),e.uniforms!==void 0)for(const a in e.uniforms){const s=e.uniforms[a];switch(r.uniforms[a]={},s.type){case"t":r.uniforms[a].value=i(s.value);break;case"c":r.uniforms[a].value=new Ye().setHex(s.value);break;case"v2":r.uniforms[a].value=new re().fromArray(s.value);break;case"v3":r.uniforms[a].value=new D().fromArray(s.value);break;case"v4":r.uniforms[a].value=new Pt().fromArray(s.value);break;case"m3":r.uniforms[a].value=new Mt().fromArray(s.value);break;case"m4":r.uniforms[a].value=new Me().fromArray(s.value);break;default:r.uniforms[a].value=s.value}}if(e.defines!==void 0&&(r.defines=e.defines),e.vertexShader!==void 0&&(r.vertexShader=e.vertexShader),e.fragmentShader!==void 0&&(r.fragmentShader=e.fragmentShader),e.glslVersion!==void 0&&(r.glslVersion=e.glslVersion),e.extensions!==void 0)for(const a in e.extensions)r.extensions[a]=e.extensions[a];if(e.lights!==void 0&&(r.lights=e.lights),e.clipping!==void 0&&(r.clipping=e.clipping),e.size!==void 0&&(r.size=e.size),e.sizeAttenuation!==void 0&&(r.sizeAttenuation=e.sizeAttenuation),e.map!==void 0&&(r.map=i(e.map)),e.matcap!==void 0&&(r.matcap=i(e.matcap)),e.alphaMap!==void 0&&(r.alphaMap=i(e.alphaMap)),e.bumpMap!==void 0&&(r.bumpMap=i(e.bumpMap)),e.bumpScale!==void 0&&(r.bumpScale=e.bumpScale),e.normalMap!==void 0&&(r.normalMap=i(e.normalMap)),e.normalMapType!==void 0&&(r.normalMapType=e.normalMapType),e.normalScale!==void 0){let a=e.normalScale;Array.isArray(a)===!1&&(a=[a,a]),r.normalScale=new re().fromArray(a)}return e.displacementMap!==void 0&&(r.displacementMap=i(e.displacementMap)),e.displacementScale!==void 0&&(r.displacementScale=e.displacementScale),e.displacementBias!==void 0&&(r.displacementBias=e.displacementBias),e.roughnessMap!==void 0&&(r.roughnessMap=i(e.roughnessMap)),e.metalnessMap!==void 0&&(r.metalnessMap=i(e.metalnessMap)),e.emissiveMap!==void 0&&(r.emissiveMap=i(e.emissiveMap)),e.emissiveIntensity!==void 0&&(r.emissiveIntensity=e.emissiveIntensity),e.specularMap!==void 0&&(r.specularMap=i(e.specularMap)),e.specularIntensityMap!==void 0&&(r.specularIntensityMap=i(e.specularIntensityMap)),e.specularColorMap!==void 0&&(r.specularColorMap=i(e.specularColorMap)),e.envMap!==void 0&&(r.envMap=i(e.envMap)),e.envMapRotation!==void 0&&r.envMapRotation.fromArray(e.envMapRotation),e.envMapIntensity!==void 0&&(r.envMapIntensity=e.envMapIntensity),e.reflectivity!==void 0&&(r.reflectivity=e.reflectivity),e.refractionRatio!==void 0&&(r.refractionRatio=e.refractionRatio),e.lightMap!==void 0&&(r.lightMap=i(e.lightMap)),e.lightMapIntensity!==void 0&&(r.lightMapIntensity=e.lightMapIntensity),e.aoMap!==void 0&&(r.aoMap=i(e.aoMap)),e.aoMapIntensity!==void 0&&(r.aoMapIntensity=e.aoMapIntensity),e.gradientMap!==void 0&&(r.gradientMap=i(e.gradientMap)),e.clearcoatMap!==void 0&&(r.clearcoatMap=i(e.clearcoatMap)),e.clearcoatRoughnessMap!==void 0&&(r.clearcoatRoughnessMap=i(e.clearcoatRoughnessMap)),e.clearcoatNormalMap!==void 0&&(r.clearcoatNormalMap=i(e.clearcoatNormalMap)),e.clearcoatNormalScale!==void 0&&(r.clearcoatNormalScale=new re().fromArray(e.clearcoatNormalScale)),e.iridescenceMap!==void 0&&(r.iridescenceMap=i(e.iridescenceMap)),e.iridescenceThicknessMap!==void 0&&(r.iridescenceThicknessMap=i(e.iridescenceThicknessMap)),e.transmissionMap!==void 0&&(r.transmissionMap=i(e.transmissionMap)),e.thicknessMap!==void 0&&(r.thicknessMap=i(e.thicknessMap)),e.anisotropyMap!==void 0&&(r.anisotropyMap=i(e.anisotropyMap)),e.sheenColorMap!==void 0&&(r.sheenColorMap=i(e.sheenColorMap)),e.sheenRoughnessMap!==void 0&&(r.sheenRoughnessMap=i(e.sheenRoughnessMap)),r}setTextures(e){return this.textures=e,this}createMaterialFromType(e){return aT.createMaterialFromType(e)}static createMaterialFromType(e){const t={ShadowMaterial:e7,SpriteMaterial:lR,RawShaderMaterial:td,ShaderMaterial:Oi,PointsMaterial:nv,MeshPhysicalMaterial:Ds,MeshStandardMaterial:lv,MeshPhongMaterial:t7,MeshToonMaterial:n7,MeshNormalMaterial:vR,MeshLambertMaterial:i7,MeshDepthMaterial:_R,MeshDistanceMaterial:xR,MeshBasicMaterial:Sr,MeshMatcapMaterial:r7,LineDashedMaterial:a7,LineBasicMaterial:Yi,Material:ei};return new t[e]}}class qc{static extractUrlBase(e){const t=e.lastIndexOf("/");return t===-1?"./":e.slice(0,t+1)}static resolveURL(e,t){return typeof e!="string"||e===""?"":(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}}class v7 extends Ct{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}toJSON(){const e=super.toJSON();return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}class _7 extends wi{constructor(e){super(e)}load(e,t,i,r){const a=this,s=new jr(a.manager);s.setPath(a.path),s.setRequestHeader(a.requestHeader),s.setWithCredentials(a.withCredentials),s.load(e,function(o){try{t(a.parse(JSON.parse(o)))}catch(l){r?r(l):Ht(l),a.manager.itemError(e)}},i,r)}parse(e){const t={},i={};function r(m,v){if(t[v]!==void 0)return t[v];const S=m.interleavedBuffers[v],_=a(m,S.buffer),T=Vf(S.type,_),E=new Zp(T,S.stride);return E.uuid=S.uuid,t[v]=E,E}function a(m,v){if(i[v]!==void 0)return i[v];const S=m.arrayBuffers[v],_=new Uint32Array(S).buffer;return i[v]=_,_}const s=e.isInstancedBufferGeometry?new v7:new Ct,o=e.data.index;if(o!==void 0){const m=Vf(o.type,o.array);s.setIndex(new bt(m,1))}const l=e.data.attributes;for(const m in l){const v=l[m];let x;if(v.isInterleavedBufferAttribute){const S=r(e.data,v.data);x=new zl(S,v.itemSize,v.offset,v.normalized)}else{const S=Vf(v.type,v.array),_=v.isInstancedBufferAttribute?Bh:bt;x=new _(S,v.itemSize,v.normalized)}v.name!==void 0&&(x.name=v.name),v.usage!==void 0&&x.setUsage(v.usage),s.setAttribute(m,x)}const u=e.data.morphAttributes;if(u)for(const m in u){const v=u[m],x=[];for(let S=0,_=v.length;S<_;S++){const T=v[S];let E;if(T.isInterleavedBufferAttribute){const b=r(e.data,T.data);E=new zl(b,T.itemSize,T.offset,T.normalized)}else{const b=Vf(T.type,T.array);E=new bt(b,T.itemSize,T.normalized)}T.name!==void 0&&(E.name=T.name),x.push(E)}s.morphAttributes[m]=x}e.data.morphTargetsRelative&&(s.morphTargetsRelative=!0);const f=e.data.groups||e.data.drawcalls||e.data.offsets;if(f!==void 0)for(let m=0,v=f.length;m!==v;++m){const x=f[m];s.addGroup(x.start,x.count,x.materialIndex)}const p=e.data.boundingSphere;return p!==void 0&&(s.boundingSphere=new qi().fromJSON(p)),e.name&&(s.name=e.name),e.userData&&(s.userData=e.userData),s}}class hY extends wi{constructor(e){super(e)}load(e,t,i,r){const a=this,s=this.path===""?qc.extractUrlBase(e):this.path;this.resourcePath=this.resourcePath||s;const o=new jr(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(l){let u=null;try{u=JSON.parse(l)}catch(f){r!==void 0&&r(f),f("ObjectLoader: Can't parse "+e+".",f.message);return}const d=u.metadata;if(d===void 0||d.type===void 0||d.type.toLowerCase()==="geometry"){r!==void 0&&r(new Error("THREE.ObjectLoader: Can't load "+e)),Ht("ObjectLoader: Can't load "+e);return}a.parse(u,t)},i,r)}async loadAsync(e,t){const i=this,r=this.path===""?qc.extractUrlBase(e):this.path;this.resourcePath=this.resourcePath||r;const a=new jr(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials);const s=await a.loadAsync(e,t),o=JSON.parse(s),l=o.metadata;if(l===void 0||l.type===void 0||l.type.toLowerCase()==="geometry")throw new Error("THREE.ObjectLoader: Can't load "+e);return await i.parseAsync(o)}parse(e,t){const i=this.parseAnimations(e.animations),r=this.parseShapes(e.shapes),a=this.parseGeometries(e.geometries,r),s=this.parseImages(e.images,function(){t!==void 0&&t(u)}),o=this.parseTextures(e.textures,s),l=this.parseMaterials(e.materials,o),u=this.parseObject(e.object,a,l,o,i),d=this.parseSkeletons(e.skeletons,u);if(this.bindSkeletons(u,d),this.bindLightTargets(u),t!==void 0){let f=!1;for(const p in s)if(s[p].data instanceof HTMLImageElement){f=!0;break}f===!1&&t(u)}return u}async parseAsync(e){const t=this.parseAnimations(e.animations),i=this.parseShapes(e.shapes),r=this.parseGeometries(e.geometries,i),a=await this.parseImagesAsync(e.images),s=this.parseTextures(e.textures,a),o=this.parseMaterials(e.materials,s),l=this.parseObject(e.object,r,o,s,t),u=this.parseSkeletons(e.skeletons,l);return this.bindSkeletons(l,u),this.bindLightTargets(l),l}parseShapes(e){const t={};if(e!==void 0)for(let i=0,r=e.length;i0){const l=new rT(t);a=new Dp(l),a.setCrossOrigin(this.crossOrigin);for(let u=0,d=e.length;u0){r=new Dp(this.manager),r.setCrossOrigin(this.crossOrigin);for(let s=0,o=e.length;s{let S=null,_=null;return x.boundingBox!==void 0&&(S=new Qi().fromJSON(x.boundingBox)),x.boundingSphere!==void 0&&(_=new qi().fromJSON(x.boundingSphere)),{...x,boundingBox:S,boundingSphere:_}}),s._instanceInfo=e.instanceInfo,s._availableInstanceIds=e._availableInstanceIds,s._availableGeometryIds=e._availableGeometryIds,s._nextIndexStart=e.nextIndexStart,s._nextVertexStart=e.nextVertexStart,s._geometryCount=e.geometryCount,s._maxInstanceCount=e.maxInstanceCount,s._maxVertexCount=e.maxVertexCount,s._maxIndexCount=e.maxIndexCount,s._geometryInitialized=e.geometryInitialized,s._matricesTexture=u(e.matricesTexture.uuid),s._indirectTexture=u(e.indirectTexture.uuid),e.colorsTexture!==void 0&&(s._colorsTexture=u(e.colorsTexture.uuid)),e.boundingSphere!==void 0&&(s.boundingSphere=new qi().fromJSON(e.boundingSphere)),e.boundingBox!==void 0&&(s.boundingBox=new Qi().fromJSON(e.boundingBox));break;case"LOD":s=new H9;break;case"Line":s=new Oo(o(e.geometry),l(e.material));break;case"LineLoop":s=new cR(o(e.geometry),l(e.material));break;case"LineSegments":s=new va(o(e.geometry),l(e.material));break;case"PointCloud":case"Points":s=new kS(o(e.geometry),l(e.material));break;case"Sprite":s=new F9(l(e.material));break;case"Group":s=new Xi;break;case"Bone":s=new HS;break;default:s=new Xt}if(s.uuid=e.uuid,e.name!==void 0&&(s.name=e.name),e.matrix!==void 0?(s.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(s.matrixAutoUpdate=e.matrixAutoUpdate),s.matrixAutoUpdate&&s.matrix.decompose(s.position,s.quaternion,s.scale)):(e.position!==void 0&&s.position.fromArray(e.position),e.rotation!==void 0&&s.rotation.fromArray(e.rotation),e.quaternion!==void 0&&s.quaternion.fromArray(e.quaternion),e.scale!==void 0&&s.scale.fromArray(e.scale)),e.up!==void 0&&s.up.fromArray(e.up),e.castShadow!==void 0&&(s.castShadow=e.castShadow),e.receiveShadow!==void 0&&(s.receiveShadow=e.receiveShadow),e.shadow&&(e.shadow.intensity!==void 0&&(s.shadow.intensity=e.shadow.intensity),e.shadow.bias!==void 0&&(s.shadow.bias=e.shadow.bias),e.shadow.normalBias!==void 0&&(s.shadow.normalBias=e.shadow.normalBias),e.shadow.radius!==void 0&&(s.shadow.radius=e.shadow.radius),e.shadow.mapSize!==void 0&&s.shadow.mapSize.fromArray(e.shadow.mapSize),e.shadow.camera!==void 0&&(s.shadow.camera=this.parseObject(e.shadow.camera))),e.visible!==void 0&&(s.visible=e.visible),e.frustumCulled!==void 0&&(s.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(s.renderOrder=e.renderOrder),e.userData!==void 0&&(s.userData=e.userData),e.layers!==void 0&&(s.layers.mask=e.layers),e.children!==void 0){const p=e.children;for(let m=0;m"u"&&dt("ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&dt("ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"},this._abortController=new AbortController}setOptions(e){return this.options=e,this}load(e,t,i,r){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const a=this,s=Co.get(`image-bitmap:${e}`);if(s!==void 0){if(a.manager.itemStart(e),s.then){s.then(u=>{if(db.has(s)===!0)r&&r(db.get(s)),a.manager.itemError(e),a.manager.itemEnd(e);else return t&&t(u),a.manager.itemEnd(e),u});return}return setTimeout(function(){t&&t(s),a.manager.itemEnd(e)},0),s}const o={};o.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",o.headers=this.requestHeader,o.signal=typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;const l=fetch(e,o).then(function(u){return u.blob()}).then(function(u){return createImageBitmap(u,Object.assign(a.options,{colorSpaceConversion:"none"}))}).then(function(u){return Co.add(`image-bitmap:${e}`,u),t&&t(u),a.manager.itemEnd(e),u}).catch(function(u){r&&r(u),db.set(l,u),Co.remove(`image-bitmap:${e}`),a.manager.itemError(e),a.manager.itemEnd(e)});Co.add(`image-bitmap:${e}`,l),a.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}let J_;class RR{static getContext(){return J_===void 0&&(J_=new(window.AudioContext||window.webkitAudioContext)),J_}static setContext(e){J_=e}}class fY extends wi{constructor(e){super(e)}load(e,t,i,r){const a=this,s=new jr(this.manager);s.setResponseType("arraybuffer"),s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,function(l){try{const u=l.slice(0);RR.getContext().decodeAudioData(u,function(f){t(f)}).catch(o)}catch(u){o(u)}},i,r);function o(l){r?r(l):Ht(l),a.manager.itemError(e)}}}const WO=new Me,XO=new Me,zu=new Me;class pY{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new si,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new si,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){const t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,zu.copy(e.projectionMatrix);const r=t.eyeSep/2,a=r*t.near/t.focus,s=t.near*Math.tan(bh*t.fov*.5)/t.zoom;let o,l;XO.elements[12]=-r,WO.elements[12]=r,o=-s*t.aspect+a,l=s*t.aspect+a,zu.elements[0]=2*t.near/(l-o),zu.elements[8]=(l+o)/(l-o),this.cameraL.projectionMatrix.copy(zu),o=-s*t.aspect-a,l=s*t.aspect-a,zu.elements[0]=2*t.near/(l-o),zu.elements[8]=(l+o)/(l-o),this.cameraR.projectionMatrix.copy(zu)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(XO),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(WO)}}class y7 extends si{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}}class cv{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=performance.now(),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){const t=performance.now();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}const Bu=new D,fb=new ft,mY=new D,Fu=new D,Hu=new D;class gY extends Xt{constructor(){super(),this.type="AudioListener",this.context=RR.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new cv}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);const t=this.context.listener;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(Bu,fb,mY),Fu.set(0,0,-1).applyQuaternion(fb),Hu.set(0,1,0).applyQuaternion(fb),t.positionX){const i=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(Bu.x,i),t.positionY.linearRampToValueAtTime(Bu.y,i),t.positionZ.linearRampToValueAtTime(Bu.z,i),t.forwardX.linearRampToValueAtTime(Fu.x,i),t.forwardY.linearRampToValueAtTime(Fu.y,i),t.forwardZ.linearRampToValueAtTime(Fu.z,i),t.upX.linearRampToValueAtTime(Hu.x,i),t.upY.linearRampToValueAtTime(Hu.y,i),t.upZ.linearRampToValueAtTime(Hu.z,i)}else t.setPosition(Bu.x,Bu.y,Bu.z),t.setOrientation(Fu.x,Fu.y,Fu.z,Hu.x,Hu.y,Hu.z)}}class S7 extends Xt{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){dt("Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){dt("Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+e;const t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){dt("Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(e=0){if(this.hasPlaybackControl===!1){dt("Audio: this Audio has no playback control.");return}return this._progress=0,this.source!==null&&(this.source.stop(this.context.currentTime+e),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(i,r,this._addIndex*t,1,t);for(let l=t,u=t+t;l!==u;++l)if(i[l]!==i[l+t]){o.setValue(i,r);break}}saveOriginalState(){const e=this.binding,t=this.buffer,i=this.valueSize,r=i*this._origIndex;e.getValue(t,r);for(let a=i,s=r;a!==s;++a)t[a]=t[r+a%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let i=e;i=.5)for(let s=0;s!==a;++s)e[t+s]=e[i+s]}_slerp(e,t,i,r){ft.slerpFlat(e,t,e,t,e,i,r)}_slerpAdditive(e,t,i,r,a){const s=this._workIndex*a;ft.multiplyQuaternionsFlat(e,s,e,t,e,i),ft.slerpFlat(e,t,e,t,e,s,r)}_lerp(e,t,i,r,a){const s=1-r;for(let o=0;o!==a;++o){const l=t+o;e[l]=e[l]*s+e[i+o]*r}}_lerpAdditive(e,t,i,r,a){for(let s=0;s!==a;++s){const o=t+s;e[o]=e[o]+e[i+s]*r}}}const CR="\\[\\]\\.:\\/",yY=new RegExp("["+CR+"]","g"),DR="[^"+CR+"]",SY="[^"+CR.replace("\\.","")+"]",TY=/((?:WC+[\/:])*)/.source.replace("WC",DR),EY=/(WCOD+)?/.source.replace("WCOD",SY),bY=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",DR),MY=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",DR),AY=new RegExp("^"+TY+EY+bY+MY+"$"),wY=["material","materials","bones","map"];class RY{constructor(e,t,i){const r=i||fn.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();const i=this._targetGroup.nCachedObjects_,r=this._bindings[i];r!==void 0&&r.getValue(e,t)}setValue(e,t){const i=this._bindings;for(let r=this._targetGroup.nCachedObjects_,a=i.length;r!==a;++r)i[r].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}}class fn{constructor(e,t,i){this.path=t,this.parsedPath=i||fn.parseTrackName(t),this.node=fn.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new fn.Composite(e,t,i):new fn(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(yY,"")}static parseTrackName(e){const t=AY.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=i.nodeName&&i.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){const a=i.nodeName.substring(r+1);wY.indexOf(a)!==-1&&(i.nodeName=i.nodeName.substring(0,r),i.objectName=a)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const i=e.skeleton.getBoneByName(t);if(i!==void 0)return i}if(e.children){const i=function(a){for(let s=0;s=a){const f=a++,p=e[f];t[p.uuid]=d,e[d]=p,t[u]=f,e[f]=l;for(let m=0,v=r;m!==v;++m){const x=i[m],S=x[f],_=x[d];x[d]=S,x[f]=_}}}this.nCachedObjects_=a}uncache(){const e=this._objects,t=this._indicesByUUID,i=this._bindings,r=i.length;let a=this.nCachedObjects_,s=e.length;for(let o=0,l=arguments.length;o!==l;++o){const u=arguments[o],d=u.uuid,f=t[d];if(f!==void 0)if(delete t[d],f0&&(t[m.uuid]=f),e[f]=m,e.pop();for(let v=0,x=r;v!==x;++v){const S=i[v];S[f]=S[p],S.pop()}}}this.nCachedObjects_=a}subscribe_(e,t){const i=this._bindingsIndicesByPath;let r=i[e];const a=this._bindings;if(r!==void 0)return a[r];const s=this._paths,o=this._parsedPaths,l=this._objects,u=l.length,d=this.nCachedObjects_,f=new Array(u);r=a.length,i[e]=r,s.push(e),o.push(t),a.push(f);for(let p=d,m=l.length;p!==m;++p){const v=l[p];f[p]=new fn(v,e,t)}return f}unsubscribe_(e){const t=this._bindingsIndicesByPath,i=t[e];if(i!==void 0){const r=this._paths,a=this._parsedPaths,s=this._bindings,o=s.length-1,l=s[o],u=e[o];t[u]=i,s[i]=l,s.pop(),a[i]=a[o],a.pop(),r[i]=r[o],r.pop()}}}class E7{constructor(e,t,i=null,r=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=i,this.blendMode=r;const a=t.tracks,s=a.length,o=new Array(s),l={endingStart:dh,endingEnd:dh};for(let u=0;u!==s;++u){const d=a[u].createInterpolant(null);o[u]=d,d.settings=l}this._interpolantSettings=l,this._interpolants=o,this._propertyBindings=new Array(s),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=g9,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&&this.timeScale!==0&&this._startTime===null&&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}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,i=!1){if(e.fadeOut(t),this.fadeIn(t),i===!0){const r=this._clip.duration,a=e._clip.duration,s=a/r,o=r/a;e.warp(1,s,t),this.warp(o,1,t)}return this}crossFadeTo(e,t,i=!1){return e.crossFadeFrom(this,t,i)}stopFading(){const e=this._weightInterpolant;return e!==null&&(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){const r=this._mixer,a=r.time,s=this.timeScale;let o=this._timeScaleInterpolant;o===null&&(o=r._lendControlInterpolant(),this._timeScaleInterpolant=o);const l=o.parameterPositions,u=o.sampleValues;return l[0]=a,l[1]=a+i,u[0]=e/s,u[1]=t/s,this}stopWarping(){const e=this._timeScaleInterpolant;return e!==null&&(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}const a=this._startTime;if(a!==null){const l=(e-a)*i;l<0||i===0?t=0:(this._startTime=null,t=i*l)}t*=this._updateTimeScale(e);const s=this._updateTime(t),o=this._updateWeight(e);if(o>0){const l=this._interpolants,u=this._propertyBindings;switch(this.blendMode){case eR:for(let d=0,f=l.length;d!==f;++d)l[d].evaluate(s),u[d].accumulateAdditive(o);break;case US:default:for(let d=0,f=l.length;d!==f;++d)l[d].evaluate(s),u[d].accumulate(r,o)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const i=this._weightInterpolant;if(i!==null){const r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopFading(),r===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const i=this._timeScaleInterpolant;if(i!==null){const r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,i=this.loop;let r=this.time+e,a=this._loopCount;const s=i===v9;if(e===0)return a===-1?r:s&&(a&1)===1?t-r:r;if(i===$w){a===-1&&(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(a===-1&&(e>=0?(a=0,this._setEndings(!0,this.repetitions===0,s)):this._setEndings(this.repetitions===0,!0,s)),r>=t||r<0){const o=Math.floor(r/t);r-=t*o,a+=Math.abs(o);const l=this.repetitions-a;if(l<=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(l===1){const u=e<0;this._setEndings(u,!u,s)}else this._setEndings(!1,!1,s);this._loopCount=a,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:o})}}else this.time=r;if(s&&(a&1)===1)return t-r}return r}_setEndings(e,t,i){const r=this._interpolantSettings;i?(r.endingStart=fh,r.endingEnd=fh):(e?r.endingStart=this.zeroSlopeAtStart?fh:dh:r.endingStart=Ag,t?r.endingEnd=this.zeroSlopeAtEnd?fh:dh:r.endingEnd=Ag)}_scheduleFading(e,t,i){const r=this._mixer,a=r.time;let s=this._weightInterpolant;s===null&&(s=r._lendControlInterpolant(),this._weightInterpolant=s);const o=s.parameterPositions,l=s.sampleValues;return o[0]=a,l[0]=t,o[1]=a+e,l[1]=i,this}}const DY=new Float32Array(1);class b7 extends Mi{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const i=e._localRoot||this._root,r=e._clip.tracks,a=r.length,s=e._propertyBindings,o=e._interpolants,l=i.uuid,u=this._bindingsByRootAndName;let d=u[l];d===void 0&&(d={},u[l]=d);for(let f=0;f!==a;++f){const p=r[f],m=p.name;let v=d[m];if(v!==void 0)++v.referenceCount,s[f]=v;else{if(v=s[f],v!==void 0){v._cacheIndex===null&&(++v.referenceCount,this._addInactiveBinding(v,l,m));continue}const x=t&&t._propertyBindings[f].binding.parsedPath;v=new T7(fn.create(i,m,x),p.ValueTypeName,p.getValueSize()),++v.referenceCount,this._addInactiveBinding(v,l,m),s[f]=v}o[f].resultBuffer=v.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){const i=(e._localRoot||this._root).uuid,r=e._clip.uuid,a=this._actionsByClip[r];this._bindAction(e,a&&a.knownActions[0]),this._addInactiveAction(e,r,i)}const t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){const a=t[i];a.useCount++===0&&(this._lendBinding(a),a.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){const a=t[i];--a.useCount===0&&(a.restoreOriginalState(),this._takeBackBinding(a))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const 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){const t=e._cacheIndex;return t!==null&&t=0;--i)e[i].stop();return this}update(e){e*=this.timeScale;const t=this._actions,i=this._nActiveActions,r=this.time+=e,a=Math.sign(e),s=this._accuIndex^=1;for(let u=0;u!==i;++u)t[u]._update(r,e,a,s);const o=this._bindings,l=this._nActiveBindings;for(let u=0;u!==l;++u)o[u].apply(s);return this}setTime(e){this.time=0;for(let t=0;t=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 this.clampPoint(e,ZO).distanceTo(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}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)}}const QO=new D,$_=new D,ef=new D,tf=new D,pb=new D,BY=new D,FY=new D;class NR{constructor(e=new D,t=new D){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){QO.subVectors(e,this.start),$_.subVectors(this.end,this.start);const i=$_.dot($_);let a=$_.dot(QO)/i;return t&&(a=It(a,0,1)),a}closestPointToPoint(e,t,i){const r=this.closestPointToPointParameter(e,t);return this.delta(i).multiplyScalar(r).add(this.start)}distanceSqToLine3(e,t=BY,i=FY){const r=10000000000000001e-32;let a,s;const o=this.start,l=e.start,u=this.end,d=e.end;ef.subVectors(u,o),tf.subVectors(d,l),pb.subVectors(o,l);const f=ef.dot(ef),p=tf.dot(tf),m=tf.dot(pb);if(f<=r&&p<=r)return t.copy(o),i.copy(l),t.sub(i),t.dot(t);if(f<=r)a=0,s=m/p,s=It(s,0,1);else{const v=ef.dot(pb);if(p<=r)s=0,a=It(-v/f,0,1);else{const x=ef.dot(tf),S=f*p-x*x;S!==0?a=It((x*m-v*p)/S,0,1):a=0,s=(x*a+m)/p,s<0?(s=0,a=It(-v/f,0,1)):s>1&&(s=1,a=It((x-v)/f,0,1))}}return t.copy(o).add(ef.multiplyScalar(a)),i.copy(l).add(tf.multiplyScalar(s)),t.sub(i),t.dot(t)}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)}}const KO=new D;class HY extends Xt{constructor(e,t){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const i=new Ct,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 s=0,o=1,l=32;s1)for(let f=0;f.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{nL.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(nL,t)}}setLength(e,t=e*.2,i=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(i,t,i),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class w7 extends va{constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],i=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],r=new Ct;r.setAttribute("position",new St(t,3)),r.setAttribute("color",new St(i,3));const a=new Yi({vertexColors:!0,toneMapped:!1});super(r,a),this.type="AxesHelper"}setColors(e,t,i){const r=new Ye,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()}}class $Y{constructor(){this.type="ShapePath",this.color=new Ye,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new Ly,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,s){return this.currentPath.bezierCurveTo(e,t,i,r,a,s),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(_){const T=[];for(let E=0,b=_.length;ENumber.EPSILON){if(C<0&&(L=T[w],N=-N,U=T[R],C=-C),_.yU.y)continue;if(_.y===L.y){if(_.x===L.x)return!0}else{const z=C*(_.x-L.x)-N*(_.y-L.y);if(z===0)return!0;if(z<0)continue;b=!b}}else{if(_.y!==L.y)continue;if(U.x<=_.x&&_.x<=L.x||L.x<=_.x&&_.x<=U.x)return!0}}return b}const r=Ks.isClockWise,a=this.subPaths;if(a.length===0)return[];let s,o,l;const u=[];if(a.length===1)return o=a[0],l=new Mh,l.curves=o.curves,u.push(l),u;let d=!r(a[0].getPoints());d=e?!d:d;const f=[],p=[];let m=[],v=0,x;p[v]=void 0,m[v]=[];for(let _=0,T=a.length;_1){let _=!1,T=0;for(let E=0,b=p.length;E0&&_===!1&&(m=f)}let S;for(let _=0,T=p.length;_e?(n.repeat.x=1,n.repeat.y=t/e,n.offset.x=0,n.offset.y=(1-n.repeat.y)/2):(n.repeat.x=e/t,n.repeat.y=1,n.offset.x=(1-n.repeat.x)/2,n.offset.y=0),n}function nj(n,e){const t=n.image&&n.image.width?n.image.width/n.image.height:1;return t>e?(n.repeat.x=e/t,n.repeat.y=1,n.offset.x=(1-n.repeat.x)/2,n.offset.y=0):(n.repeat.x=1,n.repeat.y=t/e,n.offset.x=0,n.offset.y=(1-n.repeat.y)/2),n}function ij(n){return n.repeat.x=1,n.repeat.y=1,n.offset.x=0,n.offset.y=0,n}function Y3(n,e,t,i){const r=rj(i);switch(t){case Kw:return n*e;case Qs:return n*e/r.components*r.byteLength;case ev:return n*e/r.components*r.byteLength;case Mo:return n*e*2/r.components*r.byteLength;case LS:return n*e*2/r.components*r.byteLength;case Jw:return n*e*3/r.components*r.byteLength;case ai:return n*e*4/r.components*r.byteLength;case IS:return n*e*4/r.components*r.byteLength;case Q0:case K0:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*8;case J0:case $0:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*16;case ny:case ry:return Math.max(n,16)*Math.max(e,8)/4;case ty:case iy:return Math.max(n,8)*Math.max(e,8)/2;case ay:case sy:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*8;case oy:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*16;case ly:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*16;case cy:return Math.floor((n+4)/5)*Math.floor((e+3)/4)*16;case uy:return Math.floor((n+4)/5)*Math.floor((e+4)/5)*16;case hy:return Math.floor((n+5)/6)*Math.floor((e+4)/5)*16;case dy:return Math.floor((n+5)/6)*Math.floor((e+5)/6)*16;case fy:return Math.floor((n+7)/8)*Math.floor((e+4)/5)*16;case py:return Math.floor((n+7)/8)*Math.floor((e+5)/6)*16;case my:return Math.floor((n+7)/8)*Math.floor((e+7)/8)*16;case gy:return Math.floor((n+9)/10)*Math.floor((e+4)/5)*16;case vy:return Math.floor((n+9)/10)*Math.floor((e+5)/6)*16;case _y:return Math.floor((n+9)/10)*Math.floor((e+7)/8)*16;case xy:return Math.floor((n+9)/10)*Math.floor((e+9)/10)*16;case yy:return Math.floor((n+11)/12)*Math.floor((e+9)/10)*16;case Sy:return Math.floor((n+11)/12)*Math.floor((e+11)/12)*16;case Ty:case Ey:case by:return Math.ceil(n/4)*Math.ceil(e/4)*16;case My:case Ay:return Math.ceil(n/4)*Math.ceil(e/4)*8;case wy:case Ry:return Math.ceil(n/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${t} format.`)}function rj(n){switch(n){case Ni:case CS:return{byteLength:1,components:1};case Uh:case DS:case Jn:return{byteLength:2,components:1};case NS:case OS:return{byteLength:2,components:4};case to:case $g:case fi:return{byteLength:4,components:1};case Zw:case Qw:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${n}.`)}class R7{static contain(e,t){return tj(e,t)}static cover(e,t){return nj(e,t)}static fill(e){return ij(e)}static getByteLength(e,t,i,r){return Y3(e,t,i,r)}}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:$s}}));typeof window<"u"&&(window.__THREE__?dt("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=$s);/** + `},r=new $h(5,5,5),a=new Oi({name:"CubemapFromEquirect",uniforms:wp(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:ki,blending:Lr});a.uniforms.tEquirect.value=t;const s=new jn(r,a),o=t.minFilter;return t.minFilter===Ga&&(t.minFilter=Bt),new P9(1,10,this).update(e,s),t.minFilter=o,s.geometry.dispose(),s.material.dispose(),this}clear(e,t=!0,i=!0,r=!0){const a=e.getRenderTarget();for(let s=0;s<6;s++)e.setRenderTarget(this,s),e.clear(t,i,r);e.setRenderTarget(a)}}class Xi extends Xt{constructor(){super(),this.isGroup=!0,this.type="Group"}}const sq={type:"move"};class c1{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Xi,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Xi,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new D,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new D),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Xi,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new D,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new D),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const 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}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,i){let r=null,a=null,s=null;const o=this._targetRay,l=this._grip,u=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(u&&e.hand){s=!0;for(const x of e.hand.values()){const S=t.getJointPose(x,i),_=this._getHandJoint(u,x);S!==null&&(_.matrix.fromArray(S.transform.matrix),_.matrix.decompose(_.position,_.rotation,_.scale),_.matrixWorldNeedsUpdate=!0,_.jointRadius=S.radius),_.visible=S!==null}const d=u.joints["index-finger-tip"],f=u.joints["thumb-tip"],p=d.position.distanceTo(f.position),m=.02,v=.005;u.inputState.pinching&&p>m+v?(u.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!u.inputState.pinching&&p<=m-v&&(u.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(a=t.getPose(e.gripSpace,i),a!==null&&(l.matrix.fromArray(a.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,a.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(a.linearVelocity)):l.hasLinearVelocity=!1,a.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(a.angularVelocity)):l.hasAngularVelocity=!1));o!==null&&(r=t.getPose(e.targetRaySpace,i),r===null&&a!==null&&(r=a),r!==null&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(sq)))}return o!==null&&(o.visible=r!==null),l!==null&&(l.visible=a!==null),u!==null&&(u.visible=s!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const i=new Xi;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}}class zS{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new Ye(e),this.density=t}clone(){return new zS(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class BS{constructor(e,t=1,i=1e3){this.isFog=!0,this.name="",this.color=new Ye(e),this.near=t,this.far=i}clone(){return new BS(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class Rp extends Xt{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Ai,this.environmentIntensity=1,this.environmentRotation=new Ai,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class Zp{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=Rg,this.updateRanges=[],this.version=0,this.uuid=ja()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}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;re.far||t.push({distance:l,point:Vm.clone(),uv:fa.getInterpolation(Vm,L_,km,I_,pO,$E,mO,new re),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}function U_(n,e,t,i,r,a){Kd.subVectors(n,t).addScalar(.5).multiply(i),r!==void 0?(Gm.x=a*Kd.x-r*Kd.y,Gm.y=r*Kd.x+a*Kd.y):Gm.copy(Kd),n.copy(e),n.x+=Gm.x,n.y+=Gm.y,n.applyMatrix4(B9)}const P_=new D,gO=new D;class H9 extends Xt{constructor(){super(),this.isLOD=!0,this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let i=0,r=t.length;i0){let i,r;for(i=1,r=t.length;i0){P_.setFromMatrixPosition(this.matrixWorld);const r=e.ray.origin.distanceTo(P_);this.getObjectForDistance(r).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){P_.setFromMatrixPosition(e.matrixWorld),gO.setFromMatrixPosition(this.matrixWorld);const i=P_.distanceTo(gO)/e.zoom;t[0].object.visible=!0;let r,a;for(r=1,a=t.length;r=s)t[r-1].object.visible=!1,t[r].object.visible=!0;else break}for(this._currentLevel=r-1;r1?null:t.copy(e.start).addScaledVector(i,a)}intersectsLine(e){const 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){const i=t||hq.getNormalMatrix(e),r=this.coplanarPoint(nb).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)}}const Iu=new qi,dq=new re(.5,.5),F_=new D;class ed{constructor(e=new xs,t=new xs,i=new xs,r=new xs,a=new xs,s=new xs){this.planes=[e,t,i,r,a,s]}set(e,t,i,r,a,s){const o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(i),o[3].copy(r),o[4].copy(a),o[5].copy(s),this}copy(e){const t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e,t=ka,i=!1){const r=this.planes,a=e.elements,s=a[0],o=a[1],l=a[2],u=a[3],d=a[4],f=a[5],p=a[6],m=a[7],v=a[8],x=a[9],S=a[10],_=a[11],T=a[12],E=a[13],b=a[14],R=a[15];if(r[0].setComponents(u-s,m-d,_-v,R-T).normalize(),r[1].setComponents(u+s,m+d,_+v,R+T).normalize(),r[2].setComponents(u+o,m+f,_+x,R+E).normalize(),r[3].setComponents(u-o,m-f,_-x,R-E).normalize(),i)r[4].setComponents(l,p,S,b).normalize(),r[5].setComponents(u-l,m-p,_-S,R-b).normalize();else if(r[4].setComponents(u-l,m-p,_-S,R-b).normalize(),t===ka)r[5].setComponents(u+l,m+p,_+S,R+b).normalize();else if(t===Ep)r[5].setComponents(l,p,S,b).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Iu.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Iu.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Iu)}intersectsSprite(e){Iu.center.set(0,0,0);const t=dq.distanceTo(e.center);return Iu.radius=.7071067811865476+t,Iu.applyMatrix4(e.matrixWorld),this.intersectsSphere(Iu)}intersectsSphere(e){const t=this.planes,i=e.center,r=-e.radius;for(let a=0;a<6;a++)if(t[a].distanceToPoint(i)0?e.max.x:e.min.x,F_.y=r.normal.y>0?e.max.y:e.min.y,F_.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(F_)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}const po=new Me,mo=new ed;class GS{constructor(){this.coordinateSystem=ka}intersectsObject(e,t){if(!t.isArrayCamera||t.cameras.length===0)return!1;for(let i=0;i=a.length&&a.push({start:-1,count:-1,z:-1,index:-1});const o=a[this.index];s.push(o),this.index++,o.start=e,o.count=t,o.z=i,o.index=r}reset(){this.list.length=0,this.index=0}}const ra=new Me,gq=new Ye(1,1,1),MO=new ed,vq=new GS,H_=new Qi,Uu=new qi,qm=new D,AO=new D,_q=new D,rb=new mq,Nr=new jn,V_=[];function xq(n,e,t=0){const i=e.itemSize;if(n.isInterleavedBufferAttribute||n.array.constructor!==e.array.constructor){const r=n.count;for(let a=0;a65535?new Uint32Array(r):new Uint16Array(r);t.setIndex(new bt(a,1))}this._geometryInitialized=!0}}_validateGeometry(e){const t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw new Error('THREE.BatchedMesh: All geometries must consistently have "index".');for(const i in t.attributes){if(!e.hasAttribute(i))throw new Error(`THREE.BatchedMesh: Added geometry missing "${i}". All geometries must have consistent attributes.`);const r=e.getAttribute(i),a=t.getAttribute(i);if(r.itemSize!==a.itemSize||r.normalized!==a.normalized)throw new Error("THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}validateInstanceId(e){const t=this._instanceInfo;if(e<0||e>=t.length||t[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid instanceId ${e}. Instance is either out of range or has been deleted.`)}validateGeometryId(e){const t=this._geometryInfo;if(e<0||e>=t.length||t[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid geometryId ${e}. Geometry is either out of range or has been deleted.`)}setCustomSort(e){return this.customSort=e,this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Qi);const e=this.boundingBox,t=this._instanceInfo;e.makeEmpty();for(let i=0,r=t.length;i=this.maxInstanceCount&&this._availableInstanceIds.length===0)throw new Error("THREE.BatchedMesh: Maximum item count reached.");const i={visible:!0,active:!0,geometryIndex:e};let r=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(ib),r=this._availableInstanceIds.shift(),this._instanceInfo[r]=i):(r=this._instanceInfo.length,this._instanceInfo.push(i));const a=this._matricesTexture;ra.identity().toArray(a.image.data,r*16),a.needsUpdate=!0;const s=this._colorsTexture;return s&&(gq.toArray(s.image.data,r*4),s.needsUpdate=!0),this._visibilityChanged=!0,r}addGeometry(e,t=-1,i=-1){this._initializeGeometry(e),this._validateGeometry(e);const r={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},a=this._geometryInfo;r.vertexStart=this._nextVertexStart,r.reservedVertexCount=t===-1?e.getAttribute("position").count:t;const s=e.getIndex();if(s!==null&&(r.indexStart=this._nextIndexStart,r.reservedIndexCount=i===-1?s.count:i),r.indexStart!==-1&&r.indexStart+r.reservedIndexCount>this._maxIndexCount||r.vertexStart+r.reservedVertexCount>this._maxVertexCount)throw new Error("THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.");let l;return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(ib),l=this._availableGeometryIds.shift(),a[l]=r):(l=this._geometryCount,this._geometryCount++,a.push(r)),this.setGeometryAt(l,e),this._nextIndexStart=r.indexStart+r.reservedIndexCount,this._nextVertexStart=r.vertexStart+r.reservedVertexCount,l}setGeometryAt(e,t){if(e>=this._geometryCount)throw new Error("THREE.BatchedMesh: Maximum geometry count reached.");this._validateGeometry(t);const i=this.geometry,r=i.getIndex()!==null,a=i.getIndex(),s=t.getIndex(),o=this._geometryInfo[e];if(r&&s.count>o.reservedIndexCount||t.attributes.position.count>o.reservedVertexCount)throw new Error("THREE.BatchedMesh: Reserved space not large enough for provided geometry.");const l=o.vertexStart,u=o.reservedVertexCount;o.vertexCount=t.getAttribute("position").count;for(const d in i.attributes){const f=t.getAttribute(d),p=i.getAttribute(d);xq(f,p,l);const m=f.itemSize;for(let v=f.count,x=u;v=t.length||t[e].active===!1)return this;const i=this._instanceInfo;for(let r=0,a=i.length;ro).sort((s,o)=>i[s].vertexStart-i[o].vertexStart),a=this.geometry;for(let s=0,o=i.length;s=this._geometryCount)return null;const i=this.geometry,r=this._geometryInfo[e];if(r.boundingBox===null){const a=new Qi,s=i.index,o=i.attributes.position;for(let l=r.start,u=r.start+r.count;l=this._geometryCount)return null;const i=this.geometry,r=this._geometryInfo[e];if(r.boundingSphere===null){const a=new qi;this.getBoundingBoxAt(e,H_),H_.getCenter(a.center);const s=i.index,o=i.attributes.position;let l=0;for(let u=r.start,d=r.start+r.count;uo.active);if(Math.max(...i.map(o=>o.vertexStart+o.reservedVertexCount))>e)throw new Error(`BatchedMesh: Geometry vertex values are being used outside the range ${t}. Cannot shrink further.`);if(this.geometry.index&&Math.max(...i.map(l=>l.indexStart+l.reservedIndexCount))>t)throw new Error(`BatchedMesh: Geometry index values are being used outside the range ${t}. Cannot shrink further.`);const a=this.geometry;a.dispose(),this._maxVertexCount=e,this._maxIndexCount=t,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new Ct,this._initializeGeometry(a));const s=this.geometry;a.index&&Pu(a.index.array,s.index.array);for(const o in a.attributes)Pu(a.attributes[o].array,s.attributes[o].array)}raycast(e,t){const i=this._instanceInfo,r=this._geometryInfo,a=this.matrixWorld,s=this.geometry;Nr.material=this.material,Nr.geometry.index=s.index,Nr.geometry.attributes=s.attributes,Nr.geometry.boundingBox===null&&(Nr.geometry.boundingBox=new Qi),Nr.geometry.boundingSphere===null&&(Nr.geometry.boundingSphere=new qi);for(let o=0,l=i.length;o({...t,boundingBox:t.boundingBox!==null?t.boundingBox.clone():null,boundingSphere:t.boundingSphere!==null?t.boundingSphere.clone():null})),this._instanceInfo=e._instanceInfo.map(t=>({...t})),this._availableInstanceIds=e._availableInstanceIds.slice(),this._availableGeometryIds=e._availableGeometryIds.slice(),this._nextIndexStart=e._nextIndexStart,this._nextVertexStart=e._nextVertexStart,this._geometryCount=e._geometryCount,this._maxInstanceCount=e._maxInstanceCount,this._maxVertexCount=e._maxVertexCount,this._maxIndexCount=e._maxIndexCount,this._geometryInitialized=e._geometryInitialized,this._multiDrawCounts=e._multiDrawCounts.slice(),this._multiDrawStarts=e._multiDrawStarts.slice(),this._indirectTexture=e._indirectTexture.clone(),this._indirectTexture.image.data=this._indirectTexture.image.data.slice(),this._matricesTexture=e._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),this._colorsTexture!==null&&(this._colorsTexture=e._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,this._colorsTexture!==null&&(this._colorsTexture.dispose(),this._colorsTexture=null)}onBeforeRender(e,t,i,r,a){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;const s=r.getIndex(),o=s===null?1:s.array.BYTES_PER_ELEMENT,l=this._instanceInfo,u=this._multiDrawStarts,d=this._multiDrawCounts,f=this._geometryInfo,p=this.perObjectFrustumCulled,m=this._indirectTexture,v=m.image.data,x=i.isArrayCamera?vq:MO;p&&!i.isArrayCamera&&(ra.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse).multiply(this.matrixWorld),MO.setFromProjectionMatrix(ra,i.coordinateSystem,i.reversedDepth));let S=0;if(this.sortObjects){ra.copy(this.matrixWorld).invert(),qm.setFromMatrixPosition(i.matrixWorld).applyMatrix4(ra),AO.set(0,0,-1).transformDirection(i.matrixWorld).transformDirection(ra);for(let E=0,b=l.length;E0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let a=0,s=r.length;ai)return;ab.applyMatrix4(n.matrixWorld);const u=e.ray.origin.distanceTo(ab);if(!(ue.far))return{distance:u,point:RO.clone().applyMatrix4(n.matrixWorld),index:s,face:null,faceIndex:null,barycoord:null,object:n}}const CO=new D,DO=new D;class va extends Oo{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,i=[];for(let r=0,a=t.count;r0){const r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let a=0,s=r.length;ar.far)return;a.push({distance:u,distanceToRay:Math.sqrt(o),point:l,index:e,face:null,faceIndex:null,barycoord:null,object:s})}}class G9 extends In{constructor(e,t,i,r,a=Bt,s=Bt,o,l,u){super(e,t,i,r,a,s,o,l,u),this.isVideoTexture=!0,this.generateMipmaps=!1,this._requestVideoFrameCallbackId=0;const d=this;function f(){d.needsUpdate=!0,d._requestVideoFrameCallbackId=e.requestVideoFrameCallback(f)}"requestVideoFrameCallback"in e&&(this._requestVideoFrameCallbackId=e.requestVideoFrameCallback(f))}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;"requestVideoFrameCallback"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}dispose(){this._requestVideoFrameCallbackId!==0&&(this.source.data.cancelVideoFrameCallback(this._requestVideoFrameCallbackId),this._requestVideoFrameCallbackId=0),super.dispose()}}class yq extends G9{constructor(e,t,i,r,a,s,o,l){super({},e,t,i,r,a,s,o,l),this.isVideoFrameTexture=!0}update(){}clone(){return new this.constructor().copy(this)}setFrame(e){this.image=e,this.needsUpdate=!0}}class Sq extends In{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=Yn,this.minFilter=Yn,this.generateMipmaps=!1,this.needsUpdate=!0}}class WS extends In{constructor(e,t,i,r,a,s,o,l,u,d,f,p){super(null,s,o,l,u,d,r,a,f,p),this.isCompressedTexture=!0,this.image={width:t,height:i},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class Tq extends WS{constructor(e,t,i,r,a,s){super(e,t,i,a,s),this.isCompressedArrayTexture=!0,this.image.depth=r,this.wrapR=Wi,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class Eq extends WS{constructor(e,t,i){super(void 0,e[0].width,e[0].height,t,i,Pl),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}}class bq extends In{constructor(e,t,i,r,a,s,o,l,u){super(e,t,i,r,a,s,o,l,u),this.isCanvasTexture=!0,this.needsUpdate=!0}}class iv extends In{constructor(e,t,i=to,r,a,s,o=Yn,l=Yn,u,d=yp,f=1){if(d!==yp&&d!==zh)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");const p={width:e,height:t,depth:f};super(p,r,a,s,o,l,d,i,u),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new Lc(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class uR extends In{constructor(e=null){super(),this.sourceTexture=e,this.isExternalTexture=!0}copy(e){return super.copy(e),this.sourceTexture=e.sourceTexture,this}}class XS extends Ct{constructor(e=1,t=1,i=4,r=8,a=1){super(),this.type="CapsuleGeometry",this.parameters={radius:e,height:t,capSegments:i,radialSegments:r,heightSegments:a},t=Math.max(0,t),i=Math.max(1,Math.floor(i)),r=Math.max(3,Math.floor(r)),a=Math.max(1,Math.floor(a));const s=[],o=[],l=[],u=[],d=t/2,f=Math.PI/2*e,p=t,m=2*f+p,v=i*2+a,x=r+1,S=new D,_=new D;for(let T=0;T<=v;T++){let E=0,b=0,R=0,w=0;if(T<=i){const N=T/i,C=N*Math.PI/2;b=-d-e*Math.cos(C),R=e*Math.sin(C),w=-e*Math.cos(C),E=N*f}else if(T<=i+a){const N=(T-i)/a;b=-d+N*t,R=e,w=0,E=f+N*p}else{const N=(T-i-a)/i,C=N*Math.PI/2;b=d+e*Math.sin(C),R=e*Math.cos(C),w=e*Math.sin(C),E=f+p+N*f}const L=Math.max(0,Math.min(1,E/m));let U=0;T===0?U=.5/r:T===v&&(U=-.5/r);for(let N=0;N<=r;N++){const C=N/r,z=C*Math.PI*2,W=Math.sin(z),K=Math.cos(z);_.x=-R*K,_.y=b,_.z=R*W,o.push(_.x,_.y,_.z),S.set(-R*K,w,R*W),S.normalize(),l.push(S.x,S.y,S.z),u.push(C+U,L)}if(T>0){const N=(T-1)*x;for(let C=0;C0&&E(!0),t>0&&E(!1)),this.setIndex(d),this.setAttribute("position",new St(f,3)),this.setAttribute("normal",new St(p,3)),this.setAttribute("uv",new St(m,2));function T(){const b=new D,R=new D;let w=0;const L=(t-e)/i;for(let U=0;U<=a;U++){const N=[],C=U/a,z=C*(t-e)+e;for(let W=0;W<=r;W++){const K=W/r,oe=K*l+o,ae=Math.sin(oe),X=Math.cos(oe);R.x=z*ae,R.y=-C*i+S,R.z=z*X,f.push(R.x,R.y,R.z),b.set(ae,L,X).normalize(),p.push(b.x,b.y,b.z),m.push(K,1-C),N.push(v++)}x.push(N)}for(let U=0;U0||N!==0)&&(d.push(C,z,K),w+=3),(t>0||N!==a-1)&&(d.push(z,W,K),w+=3)}u.addGroup(_,w,0),_+=w}function E(b){const R=v,w=new re,L=new D;let U=0;const N=b===!0?e:t,C=b===!0?1:-1;for(let W=1;W<=r;W++)f.push(0,S*C,0),p.push(0,C,0),m.push(.5,.5),v++;const z=v;for(let W=0;W<=r;W++){const oe=W/r*l+o,ae=Math.cos(oe),X=Math.sin(oe);L.x=N*X,L.y=S*C,L.z=N*ae,f.push(L.x,L.y,L.z),p.push(0,C,0),w.x=ae*.5+.5,w.y=X*.5*C+.5,m.push(w.x,w.y),v++}for(let W=0;W.9&&L<.1&&(E<.2&&(s[T+0]+=1),b<.2&&(s[T+2]+=1),R<.2&&(s[T+4]+=1))}}function p(T){a.push(T.x,T.y,T.z)}function m(T,E){const b=T*3;E.x=e[b+0],E.y=e[b+1],E.z=e[b+2]}function v(){const T=new D,E=new D,b=new D,R=new D,w=new re,L=new re,U=new re;for(let N=0,C=0;N0)l=r-1;else{l=r;break}if(r=l,i[r]===s)return r/(a-1);const d=i[r],p=i[r+1]-d,m=(s-d)/p;return(r+m)/(a-1)}getTangent(e,t){let r=e-1e-4,a=e+1e-4;r<0&&(r=0),a>1&&(a=1);const s=this.getPoint(r),o=this.getPoint(a),l=t||(s.isVector2?new re:new D);return l.copy(o).sub(s).normalize(),l}getTangentAt(e,t){const i=this.getUtoTmapping(e);return this.getTangent(i,t)}computeFrenetFrames(e,t=!1){const i=new D,r=[],a=[],s=[],o=new D,l=new Me;for(let m=0;m<=e;m++){const v=m/e;r[m]=this.getTangentAt(v,new D)}a[0]=new D,s[0]=new D;let u=Number.MAX_VALUE;const d=Math.abs(r[0].x),f=Math.abs(r[0].y),p=Math.abs(r[0].z);d<=u&&(u=d,i.set(1,0,0)),f<=u&&(u=f,i.set(0,1,0)),p<=u&&i.set(0,0,1),o.crossVectors(r[0],i).normalize(),a[0].crossVectors(r[0],o),s[0].crossVectors(r[0],a[0]);for(let m=1;m<=e;m++){if(a[m]=a[m-1].clone(),s[m]=s[m-1].clone(),o.crossVectors(r[m-1],r[m]),o.length()>Number.EPSILON){o.normalize();const v=Math.acos(It(r[m-1].dot(r[m]),-1,1));a[m].applyMatrix4(l.makeRotationAxis(o,v))}s[m].crossVectors(r[m],a[m])}if(t===!0){let m=Math.acos(It(a[0].dot(a[e]),-1,1));m/=e,r[0].dot(o.crossVectors(a[0],a[e]))>0&&(m=-m);for(let v=1;v<=e;v++)a[v].applyMatrix4(l.makeRotationAxis(r[v],m*v)),s[v].crossVectors(r[v],a[v])}return{tangents:r,normals:a,binormals:s}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.7,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class jS extends io{constructor(e=0,t=0,i=1,r=1,a=0,s=Math.PI*2,o=!1,l=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=s,this.aClockwise=o,this.aRotation=l}getPoint(e,t=new re){const i=t,r=Math.PI*2;let a=this.aEndAngle-this.aStartAngle;const s=Math.abs(a)r;)a-=r;a0?0:(Math.floor(Math.abs(o)/a)+1)*a:l===0&&o===a-1&&(o=a-2,l=1);let u,d;this.closed||o>0?u=r[(o-1)%a]:(Z_.subVectors(r[0],r[1]).add(r[0]),u=Z_);const f=r[o%a],p=r[(o+1)%a];if(this.closed||o+2r.length-2?r.length-1:s+1],f=r[s>r.length-3?r.length-1:s+2];return i.set(LO(o,l.x,u.x,d.x,f.x),LO(o,l.y,u.y,d.y,f.y)),i}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t=i){const s=r[a]-i,o=this.curves[a],l=o.getLength(),u=l===0?0:1-s/l;return o.getPointAt(u,t)}a++}return null}getLength(){const 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;const e=[];let t=0;for(let i=0,r=this.curves.length;i1&&!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;t0){const f=u.getPoint(0);f.equals(this.currentPoint)||this.lineTo(f.x,f.y)}this.curves.push(u);const d=u.getPoint(1);return this.currentPoint.copy(d),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class Mh extends Ly{constructor(e){super(e),this.uuid=ja(),this.type="Shape",this.holes=[]}getPointsHoles(e){const t=[];for(let i=0,r=this.holes.length;i80*t){o=n[0],l=n[1];let d=o,f=l;for(let p=t;pd&&(d=m),v>f&&(f=v)}u=Math.max(d-o,f-l),u=u!==0?32767/u:0}return Ng(a,s,t,o,l,u,0),s}function Z9(n,e,t,i,r){let a;if(r===jq(n,e,t,i)>0)for(let s=e;s=e;s-=i)a=IO(s/i|0,n[s],n[s+1],a);return a&&Cp(a,a.next)&&(Lg(a),a=a.next),a}function Fh(n,e){if(!n)return n;e||(e=n);let t=n,i;do if(i=!1,!t.steiner&&(Cp(t,t.next)||_i(t.prev,t,t.next)===0)){if(Lg(t),t=e=t.prev,t===t.next)break;i=!0}else t=t.next;while(i||t!==e);return e}function Ng(n,e,t,i,r,a,s){if(!n)return;!s&&a&&Gq(n,i,r,a);let o=n;for(;n.prev!==n.next;){const l=n.prev,u=n.next;if(a?Iq(n,i,r,a):Lq(n)){e.push(l.i,n.i,u.i),Lg(n),n=u.next,o=u.next;continue}if(n=u,n===o){s?s===1?(n=Uq(Fh(n),e),Ng(n,e,t,i,r,a,2)):s===2&&Pq(n,e,t,i,r,a):Ng(Fh(n),e,t,i,r,a,1);break}}}function Lq(n){const e=n.prev,t=n,i=n.next;if(_i(e,t,i)>=0)return!1;const r=e.x,a=t.x,s=i.x,o=e.y,l=t.y,u=i.y,d=Math.min(r,a,s),f=Math.min(o,l,u),p=Math.max(r,a,s),m=Math.max(o,l,u);let v=i.next;for(;v!==e;){if(v.x>=d&&v.x<=p&&v.y>=f&&v.y<=m&&w0(r,o,a,l,s,u,v.x,v.y)&&_i(v.prev,v,v.next)>=0)return!1;v=v.next}return!0}function Iq(n,e,t,i){const r=n.prev,a=n,s=n.next;if(_i(r,a,s)>=0)return!1;const o=r.x,l=a.x,u=s.x,d=r.y,f=a.y,p=s.y,m=Math.min(o,l,u),v=Math.min(d,f,p),x=Math.max(o,l,u),S=Math.max(d,f,p),_=G3(m,v,e,t,i),T=G3(x,S,e,t,i);let E=n.prevZ,b=n.nextZ;for(;E&&E.z>=_&&b&&b.z<=T;){if(E.x>=m&&E.x<=x&&E.y>=v&&E.y<=S&&E!==r&&E!==s&&w0(o,d,l,f,u,p,E.x,E.y)&&_i(E.prev,E,E.next)>=0||(E=E.prevZ,b.x>=m&&b.x<=x&&b.y>=v&&b.y<=S&&b!==r&&b!==s&&w0(o,d,l,f,u,p,b.x,b.y)&&_i(b.prev,b,b.next)>=0))return!1;b=b.nextZ}for(;E&&E.z>=_;){if(E.x>=m&&E.x<=x&&E.y>=v&&E.y<=S&&E!==r&&E!==s&&w0(o,d,l,f,u,p,E.x,E.y)&&_i(E.prev,E,E.next)>=0)return!1;E=E.prevZ}for(;b&&b.z<=T;){if(b.x>=m&&b.x<=x&&b.y>=v&&b.y<=S&&b!==r&&b!==s&&w0(o,d,l,f,u,p,b.x,b.y)&&_i(b.prev,b,b.next)>=0)return!1;b=b.nextZ}return!0}function Uq(n,e){let t=n;do{const i=t.prev,r=t.next.next;!Cp(i,r)&&K9(i,t,t.next,r)&&Og(i,r)&&Og(r,i)&&(e.push(i.i,t.i,r.i),Lg(t),Lg(t.next),t=n=r),t=t.next}while(t!==n);return Fh(t)}function Pq(n,e,t,i,r,a){let s=n;do{let o=s.next.next;for(;o!==s.prev;){if(s.i!==o.i&&Xq(s,o)){let l=J9(s,o);s=Fh(s,s.next),l=Fh(l,l.next),Ng(s,e,t,i,r,a,0),Ng(l,e,t,i,r,a,0);return}o=o.next}s=s.next}while(s!==n)}function zq(n,e,t,i){const r=[];for(let a=0,s=e.length;a=t.next.y&&t.next.y!==t.y){const f=t.x+(r-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(f<=i&&f>a&&(a=f,s=t.x=t.x&&t.x>=l&&i!==t.x&&Q9(rs.x||t.x===s.x&&Vq(s,t)))&&(s=t,d=f)}t=t.next}while(t!==o);return s}function Vq(n,e){return _i(n.prev,n,e.prev)<0&&_i(e.next,n,n.next)<0}function Gq(n,e,t,i){let r=n;do r.z===0&&(r.z=G3(r.x,r.y,e,t,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==n);r.prevZ.nextZ=null,r.prevZ=null,kq(r)}function kq(n){let e,t=1;do{let i=n,r;n=null;let a=null;for(e=0;i;){e++;let s=i,o=0;for(let u=0;u0||l>0&&s;)o!==0&&(l===0||!s||i.z<=s.z)?(r=i,i=i.nextZ,o--):(r=s,s=s.nextZ,l--),a?a.nextZ=r:n=r,r.prevZ=a,a=r;i=s}a.nextZ=null,t*=2}while(e>1);return n}function G3(n,e,t,i,r){return n=(n-t)*r|0,e=(e-i)*r|0,n=(n|n<<8)&16711935,n=(n|n<<4)&252645135,n=(n|n<<2)&858993459,n=(n|n<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,n|e<<1}function Wq(n){let e=n,t=n;do(e.x=(n-s)*(a-o)&&(n-s)*(i-o)>=(t-s)*(e-o)&&(t-s)*(a-o)>=(r-s)*(i-o)}function w0(n,e,t,i,r,a,s,o){return!(n===s&&e===o)&&Q9(n,e,t,i,r,a,s,o)}function Xq(n,e){return n.next.i!==e.i&&n.prev.i!==e.i&&!qq(n,e)&&(Og(n,e)&&Og(e,n)&&Yq(n,e)&&(_i(n.prev,n,e.prev)||_i(n,e.prev,e))||Cp(n,e)&&_i(n.prev,n,n.next)>0&&_i(e.prev,e,e.next)>0)}function _i(n,e,t){return(e.y-n.y)*(t.x-e.x)-(e.x-n.x)*(t.y-e.y)}function Cp(n,e){return n.x===e.x&&n.y===e.y}function K9(n,e,t,i){const r=K_(_i(n,e,t)),a=K_(_i(n,e,i)),s=K_(_i(t,i,n)),o=K_(_i(t,i,e));return!!(r!==a&&s!==o||r===0&&Q_(n,t,e)||a===0&&Q_(n,i,e)||s===0&&Q_(t,n,i)||o===0&&Q_(t,e,i))}function Q_(n,e,t){return e.x<=Math.max(n.x,t.x)&&e.x>=Math.min(n.x,t.x)&&e.y<=Math.max(n.y,t.y)&&e.y>=Math.min(n.y,t.y)}function K_(n){return n>0?1:n<0?-1:0}function qq(n,e){let t=n;do{if(t.i!==n.i&&t.next.i!==n.i&&t.i!==e.i&&t.next.i!==e.i&&K9(t,t.next,n,e))return!0;t=t.next}while(t!==n);return!1}function Og(n,e){return _i(n.prev,n,n.next)<0?_i(n,e,n.next)>=0&&_i(n,n.prev,e)>=0:_i(n,e,n.prev)<0||_i(n,n.next,e)<0}function Yq(n,e){let t=n,i=!1;const r=(n.x+e.x)/2,a=(n.y+e.y)/2;do t.y>a!=t.next.y>a&&t.next.y!==t.y&&r<(t.next.x-t.x)*(a-t.y)/(t.next.y-t.y)+t.x&&(i=!i),t=t.next;while(t!==n);return i}function J9(n,e){const t=k3(n.i,n.x,n.y),i=k3(e.i,e.x,e.y),r=n.next,a=e.prev;return n.next=e,e.prev=n,t.next=r,r.prev=t,i.next=t,t.prev=i,a.next=i,i.prev=a,i}function IO(n,e,t,i){const r=k3(n,e,t);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function Lg(n){n.next.prev=n.prev,n.prev.next=n.next,n.prevZ&&(n.prevZ.nextZ=n.nextZ),n.nextZ&&(n.nextZ.prevZ=n.prevZ)}function k3(n,e,t){return{i:n,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function jq(n,e,t,i){let r=0;for(let a=e,s=t-i;a2&&n[e-1].equals(n[0])&&n.pop()}function PO(n,e){for(let t=0;tNumber.EPSILON){const be=Math.sqrt(P),Ie=Math.sqrt(ut*ut+k*k),Se=V.x-Je/be,yt=V.y+$e/be,je=Ae.x-k/Ie,Tt=Ae.y+ut/Ie,vt=((je-Se)*k-(Tt-yt)*ut)/($e*k-Je*ut);Oe=Se+$e*vt-Ee.x,Ve=yt+Je*vt-Ee.y;const Ue=Oe*Oe+Ve*Ve;if(Ue<=2)return new re(Oe,Ve);Fe=Math.sqrt(Ue/2)}else{let be=!1;$e>Number.EPSILON?ut>Number.EPSILON&&(be=!0):$e<-Number.EPSILON?ut<-Number.EPSILON&&(be=!0):Math.sign(Je)===Math.sign(k)&&(be=!0),be?(Oe=-Je,Ve=$e,Fe=Math.sqrt(P)):(Oe=$e,Ve=Je,Fe=Math.sqrt(P/2))}return new re(Oe/Fe,Ve/Fe)}const ce=[];for(let Ee=0,V=ae.length,Ae=V-1,Oe=Ee+1;Ee=0;Ee--){const V=Ee/S,Ae=m*Math.cos(V*Math.PI/2),Oe=v*Math.sin(V*Math.PI/2)+x;for(let Ve=0,Fe=ae.length;Ve=0;){const Oe=Ae;let Ve=Ae-1;Ve<0&&(Ve=Ee.length-1);for(let Fe=0,$e=d+S*2;Fe<$e;Fe++){const Je=te*Fe,ut=te*(Fe+1),k=V+Oe+Je,P=V+Ve+Je,he=V+Ve+ut,be=V+Oe+ut;wt(k,P,he,be)}}}function de(Ee,V,Ae){l.push(Ee),l.push(V),l.push(Ae)}function it(Ee,V,Ae){lt(Ee),lt(V),lt(Ae);const Oe=r.length/3,Ve=T.generateTopUV(i,r,Oe-3,Oe-2,Oe-1);Qe(Ve[0]),Qe(Ve[1]),Qe(Ve[2])}function wt(Ee,V,Ae,Oe){lt(Ee),lt(V),lt(Oe),lt(V),lt(Ae),lt(Oe);const Ve=r.length/3,Fe=T.generateSideWallUV(i,r,Ve-6,Ve-3,Ve-2,Ve-1);Qe(Fe[0]),Qe(Fe[1]),Qe(Fe[3]),Qe(Fe[1]),Qe(Fe[2]),Qe(Fe[3])}function lt(Ee){r.push(l[Ee*3+0]),r.push(l[Ee*3+1]),r.push(l[Ee*3+2])}function Qe(Ee){a.push(Ee.x),a.push(Ee.y)}}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){const e=super.toJSON(),t=this.parameters.shapes,i=this.parameters.options;return Kq(t,i,e)}static fromJSON(e,t){const i=[];for(let a=0,s=e.shapes.length;a0)&&m.push(E,b,w),(_!==i-1||l0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class t7 extends ei{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new Ye(16777215),this.specular=new Ye(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Ye(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Hl,this.normalScale=new re(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ai,this.combine=Jg,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),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.flatShading=e.flatShading,this.fog=e.fog,this}}class n7 extends ei{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new Ye(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Ye(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Hl,this.normalScale=new re(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,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.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class vR extends ei{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Hl,this.normalScale=new re(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class i7 extends ei{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new Ye(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Ye(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Hl,this.normalScale=new re(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ai,this.combine=Jg,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,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.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),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.flatShading=e.flatShading,this.fog=e.fog,this}}class _R extends ei{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=su,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}}class xR extends ei{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",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.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}class r7 extends ei{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new Ye(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Hl,this.normalScale=new re(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this.fog=e.fog,this}}class a7 extends Yi{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function ph(n,e){return!n||n.constructor===e?n:typeof e.BYTES_PER_ELEMENT=="number"?new e(n):Array.prototype.slice.call(n)}function s7(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function o7(n){function e(r,a){return n[r]-n[a]}const t=n.length,i=new Array(t);for(let r=0;r!==t;++r)i[r]=r;return i.sort(e),i}function W3(n,e,t){const i=n.length,r=new n.constructor(i);for(let a=0,s=0;s!==i;++a){const o=t[a]*e;for(let l=0;l!==e;++l)r[s++]=n[o+l]}return r}function yR(n,e,t,i){let r=1,a=n[0];for(;a!==void 0&&a[i]===void 0;)a=n[r++];if(a===void 0)return;let s=a[i];if(s!==void 0)if(Array.isArray(s))do s=a[i],s!==void 0&&(e.push(a.time),t.push(...s)),a=n[r++];while(a!==void 0);else if(s.toArray!==void 0)do s=a[i],s!==void 0&&(e.push(a.time),s.toArray(t,t.length)),a=n[r++];while(a!==void 0);else do s=a[i],s!==void 0&&(e.push(a.time),t.push(s)),a=n[r++];while(a!==void 0)}function $q(n,e,t,i,r=30){const a=n.clone();a.name=e;const s=[];for(let l=0;l=i)){f.push(u.times[m]);for(let x=0;xa.tracks[l].times[0]&&(o=a.tracks[l].times[0]);for(let l=0;l=o.times[v]){const _=v*f+d,T=_+f-d;x=o.values.slice(_,T)}else{const _=o.createInterpolant(),T=d,E=f-d;_.evaluate(a),x=_.resultBuffer.slice(T,E)}l==="quaternion"&&new ft().fromArray(x).normalize().conjugate().toArray(x);const S=u.times.length;for(let _=0;_=a)){const o=t[1];e=a)break t}s=i,i=0;break n}break e}for(;i>>1;et;)--s;if(++s,a!==0||s!==r){a>=s&&(s=Math.max(s,1),a=s-1);const o=this.getValueSize();this.times=i.slice(a,s),this.values=this.values.slice(a*o,s*o)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(Ht("KeyframeTrack: Invalid value size in track.",this),e=!1);const i=this.times,r=this.values,a=i.length;a===0&&(Ht("KeyframeTrack: Track is empty.",this),e=!1);let s=null;for(let o=0;o!==a;o++){const l=i[o];if(typeof l=="number"&&isNaN(l)){Ht("KeyframeTrack: Time is not a valid number.",this,o,l),e=!1;break}if(s!==null&&s>l){Ht("KeyframeTrack: Out of order keys.",this,o,l,s),e=!1;break}s=l}if(r!==void 0&&s7(r))for(let o=0,l=r.length;o!==l;++o){const u=r[o];if(isNaN(u)){Ht("KeyframeTrack: Value is not a valid number.",this,o,u),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),i=this.getValueSize(),r=this.getInterpolation()===l1,a=e.length-1;let s=1;for(let o=1;o0){e[s]=e[a];for(let o=a*i,l=s*i,u=0;u!==i;++u)t[l+u]=t[o+u];++s}return s!==e.length?(this.times=e.slice(0,s),this.values=t.slice(0,s*i)):(this.times=e,this.values=t),this}clone(){const e=this.times.slice(),t=this.values.slice(),i=this.constructor,r=new i(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}}Ns.prototype.ValueTypeName="";Ns.prototype.TimeBufferType=Float32Array;Ns.prototype.ValueBufferType=Float32Array;Ns.prototype.DefaultInterpolation=Tp;class nd extends Ns{constructor(e,t,i){super(e,t,i)}}nd.prototype.ValueTypeName="bool";nd.prototype.ValueBufferType=Array;nd.prototype.DefaultInterpolation=Sp;nd.prototype.InterpolantFactoryMethodLinear=void 0;nd.prototype.InterpolantFactoryMethodSmooth=void 0;class TR extends Ns{constructor(e,t,i,r){super(e,t,i,r)}}TR.prototype.ValueTypeName="color";class tu extends Ns{constructor(e,t,i,r){super(e,t,i,r)}}tu.prototype.ValueTypeName="number";class u7 extends Qp{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){const a=this.resultBuffer,s=this.sampleValues,o=this.valueSize,l=(i-t)/(r-t);let u=e*o;for(let d=u+o;u!==d;u+=4)ft.slerpFlat(a,0,s,u-o,s,u,l);return a}}class nu extends Ns{constructor(e,t,i,r){super(e,t,i,r)}InterpolantFactoryMethodLinear(e){return new u7(this.times,this.values,this.getValueSize(),e)}}nu.prototype.ValueTypeName="quaternion";nu.prototype.InterpolantFactoryMethodSmooth=void 0;class id extends Ns{constructor(e,t,i){super(e,t,i)}}id.prototype.ValueTypeName="string";id.prototype.ValueBufferType=Array;id.prototype.DefaultInterpolation=Sp;id.prototype.InterpolantFactoryMethodLinear=void 0;id.prototype.InterpolantFactoryMethodSmooth=void 0;class Hh extends Ns{constructor(e,t,i,r){super(e,t,i,r)}}Hh.prototype.ValueTypeName="vector";class Vh{constructor(e="",t=-1,i=[],r=US){this.name=e,this.tracks=i,this.duration=t,this.blendMode=r,this.uuid=ja(),this.userData={},this.duration<0&&this.resetDuration()}static parse(e){const t=[],i=e.tracks,r=1/(e.fps||1);for(let s=0,o=i.length;s!==o;++s)t.push(iY(i[s]).scale(r));const a=new this(e.name,e.duration,t,e.blendMode);return a.uuid=e.uuid,a.userData=JSON.parse(e.userData||"{}"),a}static toJSON(e){const t=[],i=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode,userData:JSON.stringify(e.userData)};for(let a=0,s=i.length;a!==s;++a)t.push(Ns.toJSON(i[a]));return r}static CreateFromMorphTargetSequence(e,t,i,r){const a=t.length,s=[];for(let o=0;o1){const f=d[1];let p=r[f];p||(r[f]=p=[]),p.push(u)}}const s=[];for(const o in r)s.push(this.CreateFromMorphTargetSequence(o,r[o],t,i));return s}static parseAnimation(e,t){if(dt("AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return Ht("AnimationClip: No animation in JSONLoader data."),null;const i=function(f,p,m,v,x){if(m.length!==0){const S=[],_=[];yR(m,S,_,v),S.length!==0&&x.push(new f(p,S,_))}},r=[],a=e.name||"default",s=e.fps||30,o=e.blendMode;let l=e.length||-1;const u=e.hierarchy||[];for(let f=0;f{t&&t(a),this.manager.itemEnd(e)},0),a;if(rl[e]!==void 0){rl[e].push({onLoad:t,onProgress:i,onError:r});return}rl[e]=[],rl[e].push({onLoad:t,onProgress:i,onError:r});const s=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),o=this.mimeType,l=this.responseType;fetch(s).then(u=>{if(u.status===200||u.status===0){if(u.status===0&&dt("FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||u.body===void 0||u.body.getReader===void 0)return u;const d=rl[e],f=u.body.getReader(),p=u.headers.get("X-File-Size")||u.headers.get("Content-Length"),m=p?parseInt(p):0,v=m!==0;let x=0;const S=new ReadableStream({start(_){T();function T(){f.read().then(({done:E,value:b})=>{if(E)_.close();else{x+=b.byteLength;const R=new ProgressEvent("progress",{lengthComputable:v,loaded:x,total:m});for(let w=0,L=d.length;w{_.error(E)})}}});return new Response(S)}else throw new rY(`fetch for "${u.url}" responded with ${u.status}: ${u.statusText}`,u)}).then(u=>{switch(l){case"arraybuffer":return u.arrayBuffer();case"blob":return u.blob();case"document":return u.text().then(d=>new DOMParser().parseFromString(d,o));case"json":return u.json();default:if(o==="")return u.text();{const f=/charset="?([^;"\s]*)"?/i.exec(o),p=f&&f[1]?f[1].toLowerCase():void 0,m=new TextDecoder(p);return u.arrayBuffer().then(v=>m.decode(v))}}}).then(u=>{Co.add(`file:${e}`,u);const d=rl[e];delete rl[e];for(let f=0,p=d.length;f{const d=rl[e];if(d===void 0)throw this.manager.itemError(e),u;delete rl[e];for(let f=0,p=d.length;f{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}class aY extends wi{constructor(e){super(e)}load(e,t,i,r){const a=this,s=new jr(this.manager);s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,function(o){try{t(a.parse(JSON.parse(o)))}catch(l){r?r(l):Ht(l),a.manager.itemError(e)}},i,r)}parse(e){const t=[];for(let i=0;i0:r.vertexColors=e.vertexColors),e.uniforms!==void 0)for(const a in e.uniforms){const s=e.uniforms[a];switch(r.uniforms[a]={},s.type){case"t":r.uniforms[a].value=i(s.value);break;case"c":r.uniforms[a].value=new Ye().setHex(s.value);break;case"v2":r.uniforms[a].value=new re().fromArray(s.value);break;case"v3":r.uniforms[a].value=new D().fromArray(s.value);break;case"v4":r.uniforms[a].value=new Pt().fromArray(s.value);break;case"m3":r.uniforms[a].value=new Mt().fromArray(s.value);break;case"m4":r.uniforms[a].value=new Me().fromArray(s.value);break;default:r.uniforms[a].value=s.value}}if(e.defines!==void 0&&(r.defines=e.defines),e.vertexShader!==void 0&&(r.vertexShader=e.vertexShader),e.fragmentShader!==void 0&&(r.fragmentShader=e.fragmentShader),e.glslVersion!==void 0&&(r.glslVersion=e.glslVersion),e.extensions!==void 0)for(const a in e.extensions)r.extensions[a]=e.extensions[a];if(e.lights!==void 0&&(r.lights=e.lights),e.clipping!==void 0&&(r.clipping=e.clipping),e.size!==void 0&&(r.size=e.size),e.sizeAttenuation!==void 0&&(r.sizeAttenuation=e.sizeAttenuation),e.map!==void 0&&(r.map=i(e.map)),e.matcap!==void 0&&(r.matcap=i(e.matcap)),e.alphaMap!==void 0&&(r.alphaMap=i(e.alphaMap)),e.bumpMap!==void 0&&(r.bumpMap=i(e.bumpMap)),e.bumpScale!==void 0&&(r.bumpScale=e.bumpScale),e.normalMap!==void 0&&(r.normalMap=i(e.normalMap)),e.normalMapType!==void 0&&(r.normalMapType=e.normalMapType),e.normalScale!==void 0){let a=e.normalScale;Array.isArray(a)===!1&&(a=[a,a]),r.normalScale=new re().fromArray(a)}return e.displacementMap!==void 0&&(r.displacementMap=i(e.displacementMap)),e.displacementScale!==void 0&&(r.displacementScale=e.displacementScale),e.displacementBias!==void 0&&(r.displacementBias=e.displacementBias),e.roughnessMap!==void 0&&(r.roughnessMap=i(e.roughnessMap)),e.metalnessMap!==void 0&&(r.metalnessMap=i(e.metalnessMap)),e.emissiveMap!==void 0&&(r.emissiveMap=i(e.emissiveMap)),e.emissiveIntensity!==void 0&&(r.emissiveIntensity=e.emissiveIntensity),e.specularMap!==void 0&&(r.specularMap=i(e.specularMap)),e.specularIntensityMap!==void 0&&(r.specularIntensityMap=i(e.specularIntensityMap)),e.specularColorMap!==void 0&&(r.specularColorMap=i(e.specularColorMap)),e.envMap!==void 0&&(r.envMap=i(e.envMap)),e.envMapRotation!==void 0&&r.envMapRotation.fromArray(e.envMapRotation),e.envMapIntensity!==void 0&&(r.envMapIntensity=e.envMapIntensity),e.reflectivity!==void 0&&(r.reflectivity=e.reflectivity),e.refractionRatio!==void 0&&(r.refractionRatio=e.refractionRatio),e.lightMap!==void 0&&(r.lightMap=i(e.lightMap)),e.lightMapIntensity!==void 0&&(r.lightMapIntensity=e.lightMapIntensity),e.aoMap!==void 0&&(r.aoMap=i(e.aoMap)),e.aoMapIntensity!==void 0&&(r.aoMapIntensity=e.aoMapIntensity),e.gradientMap!==void 0&&(r.gradientMap=i(e.gradientMap)),e.clearcoatMap!==void 0&&(r.clearcoatMap=i(e.clearcoatMap)),e.clearcoatRoughnessMap!==void 0&&(r.clearcoatRoughnessMap=i(e.clearcoatRoughnessMap)),e.clearcoatNormalMap!==void 0&&(r.clearcoatNormalMap=i(e.clearcoatNormalMap)),e.clearcoatNormalScale!==void 0&&(r.clearcoatNormalScale=new re().fromArray(e.clearcoatNormalScale)),e.iridescenceMap!==void 0&&(r.iridescenceMap=i(e.iridescenceMap)),e.iridescenceThicknessMap!==void 0&&(r.iridescenceThicknessMap=i(e.iridescenceThicknessMap)),e.transmissionMap!==void 0&&(r.transmissionMap=i(e.transmissionMap)),e.thicknessMap!==void 0&&(r.thicknessMap=i(e.thicknessMap)),e.anisotropyMap!==void 0&&(r.anisotropyMap=i(e.anisotropyMap)),e.sheenColorMap!==void 0&&(r.sheenColorMap=i(e.sheenColorMap)),e.sheenRoughnessMap!==void 0&&(r.sheenRoughnessMap=i(e.sheenRoughnessMap)),r}setTextures(e){return this.textures=e,this}createMaterialFromType(e){return aT.createMaterialFromType(e)}static createMaterialFromType(e){const t={ShadowMaterial:e7,SpriteMaterial:lR,RawShaderMaterial:td,ShaderMaterial:Oi,PointsMaterial:nv,MeshPhysicalMaterial:Ds,MeshStandardMaterial:lv,MeshPhongMaterial:t7,MeshToonMaterial:n7,MeshNormalMaterial:vR,MeshLambertMaterial:i7,MeshDepthMaterial:_R,MeshDistanceMaterial:xR,MeshBasicMaterial:Sr,MeshMatcapMaterial:r7,LineDashedMaterial:a7,LineBasicMaterial:Yi,Material:ei};return new t[e]}}class qc{static extractUrlBase(e){const t=e.lastIndexOf("/");return t===-1?"./":e.slice(0,t+1)}static resolveURL(e,t){return typeof e!="string"||e===""?"":(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}}class v7 extends Ct{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}toJSON(){const e=super.toJSON();return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}class _7 extends wi{constructor(e){super(e)}load(e,t,i,r){const a=this,s=new jr(a.manager);s.setPath(a.path),s.setRequestHeader(a.requestHeader),s.setWithCredentials(a.withCredentials),s.load(e,function(o){try{t(a.parse(JSON.parse(o)))}catch(l){r?r(l):Ht(l),a.manager.itemError(e)}},i,r)}parse(e){const t={},i={};function r(m,v){if(t[v]!==void 0)return t[v];const S=m.interleavedBuffers[v],_=a(m,S.buffer),T=Vf(S.type,_),E=new Zp(T,S.stride);return E.uuid=S.uuid,t[v]=E,E}function a(m,v){if(i[v]!==void 0)return i[v];const S=m.arrayBuffers[v],_=new Uint32Array(S).buffer;return i[v]=_,_}const s=e.isInstancedBufferGeometry?new v7:new Ct,o=e.data.index;if(o!==void 0){const m=Vf(o.type,o.array);s.setIndex(new bt(m,1))}const l=e.data.attributes;for(const m in l){const v=l[m];let x;if(v.isInterleavedBufferAttribute){const S=r(e.data,v.data);x=new zl(S,v.itemSize,v.offset,v.normalized)}else{const S=Vf(v.type,v.array),_=v.isInstancedBufferAttribute?Bh:bt;x=new _(S,v.itemSize,v.normalized)}v.name!==void 0&&(x.name=v.name),v.usage!==void 0&&x.setUsage(v.usage),s.setAttribute(m,x)}const u=e.data.morphAttributes;if(u)for(const m in u){const v=u[m],x=[];for(let S=0,_=v.length;S<_;S++){const T=v[S];let E;if(T.isInterleavedBufferAttribute){const b=r(e.data,T.data);E=new zl(b,T.itemSize,T.offset,T.normalized)}else{const b=Vf(T.type,T.array);E=new bt(b,T.itemSize,T.normalized)}T.name!==void 0&&(E.name=T.name),x.push(E)}s.morphAttributes[m]=x}e.data.morphTargetsRelative&&(s.morphTargetsRelative=!0);const f=e.data.groups||e.data.drawcalls||e.data.offsets;if(f!==void 0)for(let m=0,v=f.length;m!==v;++m){const x=f[m];s.addGroup(x.start,x.count,x.materialIndex)}const p=e.data.boundingSphere;return p!==void 0&&(s.boundingSphere=new qi().fromJSON(p)),e.name&&(s.name=e.name),e.userData&&(s.userData=e.userData),s}}class hY extends wi{constructor(e){super(e)}load(e,t,i,r){const a=this,s=this.path===""?qc.extractUrlBase(e):this.path;this.resourcePath=this.resourcePath||s;const o=new jr(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(l){let u=null;try{u=JSON.parse(l)}catch(f){r!==void 0&&r(f),f("ObjectLoader: Can't parse "+e+".",f.message);return}const d=u.metadata;if(d===void 0||d.type===void 0||d.type.toLowerCase()==="geometry"){r!==void 0&&r(new Error("THREE.ObjectLoader: Can't load "+e)),Ht("ObjectLoader: Can't load "+e);return}a.parse(u,t)},i,r)}async loadAsync(e,t){const i=this,r=this.path===""?qc.extractUrlBase(e):this.path;this.resourcePath=this.resourcePath||r;const a=new jr(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials);const s=await a.loadAsync(e,t),o=JSON.parse(s),l=o.metadata;if(l===void 0||l.type===void 0||l.type.toLowerCase()==="geometry")throw new Error("THREE.ObjectLoader: Can't load "+e);return await i.parseAsync(o)}parse(e,t){const i=this.parseAnimations(e.animations),r=this.parseShapes(e.shapes),a=this.parseGeometries(e.geometries,r),s=this.parseImages(e.images,function(){t!==void 0&&t(u)}),o=this.parseTextures(e.textures,s),l=this.parseMaterials(e.materials,o),u=this.parseObject(e.object,a,l,o,i),d=this.parseSkeletons(e.skeletons,u);if(this.bindSkeletons(u,d),this.bindLightTargets(u),t!==void 0){let f=!1;for(const p in s)if(s[p].data instanceof HTMLImageElement){f=!0;break}f===!1&&t(u)}return u}async parseAsync(e){const t=this.parseAnimations(e.animations),i=this.parseShapes(e.shapes),r=this.parseGeometries(e.geometries,i),a=await this.parseImagesAsync(e.images),s=this.parseTextures(e.textures,a),o=this.parseMaterials(e.materials,s),l=this.parseObject(e.object,r,o,s,t),u=this.parseSkeletons(e.skeletons,l);return this.bindSkeletons(l,u),this.bindLightTargets(l),l}parseShapes(e){const t={};if(e!==void 0)for(let i=0,r=e.length;i0){const l=new rT(t);a=new Dp(l),a.setCrossOrigin(this.crossOrigin);for(let u=0,d=e.length;u0){r=new Dp(this.manager),r.setCrossOrigin(this.crossOrigin);for(let s=0,o=e.length;s{let S=null,_=null;return x.boundingBox!==void 0&&(S=new Qi().fromJSON(x.boundingBox)),x.boundingSphere!==void 0&&(_=new qi().fromJSON(x.boundingSphere)),{...x,boundingBox:S,boundingSphere:_}}),s._instanceInfo=e.instanceInfo,s._availableInstanceIds=e._availableInstanceIds,s._availableGeometryIds=e._availableGeometryIds,s._nextIndexStart=e.nextIndexStart,s._nextVertexStart=e.nextVertexStart,s._geometryCount=e.geometryCount,s._maxInstanceCount=e.maxInstanceCount,s._maxVertexCount=e.maxVertexCount,s._maxIndexCount=e.maxIndexCount,s._geometryInitialized=e.geometryInitialized,s._matricesTexture=u(e.matricesTexture.uuid),s._indirectTexture=u(e.indirectTexture.uuid),e.colorsTexture!==void 0&&(s._colorsTexture=u(e.colorsTexture.uuid)),e.boundingSphere!==void 0&&(s.boundingSphere=new qi().fromJSON(e.boundingSphere)),e.boundingBox!==void 0&&(s.boundingBox=new Qi().fromJSON(e.boundingBox));break;case"LOD":s=new H9;break;case"Line":s=new Oo(o(e.geometry),l(e.material));break;case"LineLoop":s=new cR(o(e.geometry),l(e.material));break;case"LineSegments":s=new va(o(e.geometry),l(e.material));break;case"PointCloud":case"Points":s=new kS(o(e.geometry),l(e.material));break;case"Sprite":s=new F9(l(e.material));break;case"Group":s=new Xi;break;case"Bone":s=new HS;break;default:s=new Xt}if(s.uuid=e.uuid,e.name!==void 0&&(s.name=e.name),e.matrix!==void 0?(s.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(s.matrixAutoUpdate=e.matrixAutoUpdate),s.matrixAutoUpdate&&s.matrix.decompose(s.position,s.quaternion,s.scale)):(e.position!==void 0&&s.position.fromArray(e.position),e.rotation!==void 0&&s.rotation.fromArray(e.rotation),e.quaternion!==void 0&&s.quaternion.fromArray(e.quaternion),e.scale!==void 0&&s.scale.fromArray(e.scale)),e.up!==void 0&&s.up.fromArray(e.up),e.castShadow!==void 0&&(s.castShadow=e.castShadow),e.receiveShadow!==void 0&&(s.receiveShadow=e.receiveShadow),e.shadow&&(e.shadow.intensity!==void 0&&(s.shadow.intensity=e.shadow.intensity),e.shadow.bias!==void 0&&(s.shadow.bias=e.shadow.bias),e.shadow.normalBias!==void 0&&(s.shadow.normalBias=e.shadow.normalBias),e.shadow.radius!==void 0&&(s.shadow.radius=e.shadow.radius),e.shadow.mapSize!==void 0&&s.shadow.mapSize.fromArray(e.shadow.mapSize),e.shadow.camera!==void 0&&(s.shadow.camera=this.parseObject(e.shadow.camera))),e.visible!==void 0&&(s.visible=e.visible),e.frustumCulled!==void 0&&(s.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(s.renderOrder=e.renderOrder),e.userData!==void 0&&(s.userData=e.userData),e.layers!==void 0&&(s.layers.mask=e.layers),e.children!==void 0){const p=e.children;for(let m=0;m"u"&&dt("ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&dt("ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"},this._abortController=new AbortController}setOptions(e){return this.options=e,this}load(e,t,i,r){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const a=this,s=Co.get(`image-bitmap:${e}`);if(s!==void 0){if(a.manager.itemStart(e),s.then){s.then(u=>{if(db.has(s)===!0)r&&r(db.get(s)),a.manager.itemError(e),a.manager.itemEnd(e);else return t&&t(u),a.manager.itemEnd(e),u});return}return setTimeout(function(){t&&t(s),a.manager.itemEnd(e)},0),s}const o={};o.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",o.headers=this.requestHeader,o.signal=typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;const l=fetch(e,o).then(function(u){return u.blob()}).then(function(u){return createImageBitmap(u,Object.assign(a.options,{colorSpaceConversion:"none"}))}).then(function(u){return Co.add(`image-bitmap:${e}`,u),t&&t(u),a.manager.itemEnd(e),u}).catch(function(u){r&&r(u),db.set(l,u),Co.remove(`image-bitmap:${e}`),a.manager.itemError(e),a.manager.itemEnd(e)});Co.add(`image-bitmap:${e}`,l),a.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}let J_;class RR{static getContext(){return J_===void 0&&(J_=new(window.AudioContext||window.webkitAudioContext)),J_}static setContext(e){J_=e}}class fY extends wi{constructor(e){super(e)}load(e,t,i,r){const a=this,s=new jr(this.manager);s.setResponseType("arraybuffer"),s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,function(l){try{const u=l.slice(0);RR.getContext().decodeAudioData(u,function(f){t(f)}).catch(o)}catch(u){o(u)}},i,r);function o(l){r?r(l):Ht(l),a.manager.itemError(e)}}}const WO=new Me,XO=new Me,zu=new Me;class pY{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new si,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new si,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){const t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,zu.copy(e.projectionMatrix);const r=t.eyeSep/2,a=r*t.near/t.focus,s=t.near*Math.tan(bh*t.fov*.5)/t.zoom;let o,l;XO.elements[12]=-r,WO.elements[12]=r,o=-s*t.aspect+a,l=s*t.aspect+a,zu.elements[0]=2*t.near/(l-o),zu.elements[8]=(l+o)/(l-o),this.cameraL.projectionMatrix.copy(zu),o=-s*t.aspect-a,l=s*t.aspect-a,zu.elements[0]=2*t.near/(l-o),zu.elements[8]=(l+o)/(l-o),this.cameraR.projectionMatrix.copy(zu)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(XO),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(WO)}}class y7 extends si{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}}class cv{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=performance.now(),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){const t=performance.now();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}const Bu=new D,fb=new ft,mY=new D,Fu=new D,Hu=new D;class gY extends Xt{constructor(){super(),this.type="AudioListener",this.context=RR.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new cv}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);const t=this.context.listener;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(Bu,fb,mY),Fu.set(0,0,-1).applyQuaternion(fb),Hu.set(0,1,0).applyQuaternion(fb),t.positionX){const i=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(Bu.x,i),t.positionY.linearRampToValueAtTime(Bu.y,i),t.positionZ.linearRampToValueAtTime(Bu.z,i),t.forwardX.linearRampToValueAtTime(Fu.x,i),t.forwardY.linearRampToValueAtTime(Fu.y,i),t.forwardZ.linearRampToValueAtTime(Fu.z,i),t.upX.linearRampToValueAtTime(Hu.x,i),t.upY.linearRampToValueAtTime(Hu.y,i),t.upZ.linearRampToValueAtTime(Hu.z,i)}else t.setPosition(Bu.x,Bu.y,Bu.z),t.setOrientation(Fu.x,Fu.y,Fu.z,Hu.x,Hu.y,Hu.z)}}class S7 extends Xt{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){dt("Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){dt("Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+e;const t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){dt("Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(e=0){if(this.hasPlaybackControl===!1){dt("Audio: this Audio has no playback control.");return}return this._progress=0,this.source!==null&&(this.source.stop(this.context.currentTime+e),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(i,r,this._addIndex*t,1,t);for(let l=t,u=t+t;l!==u;++l)if(i[l]!==i[l+t]){o.setValue(i,r);break}}saveOriginalState(){const e=this.binding,t=this.buffer,i=this.valueSize,r=i*this._origIndex;e.getValue(t,r);for(let a=i,s=r;a!==s;++a)t[a]=t[r+a%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let i=e;i=.5)for(let s=0;s!==a;++s)e[t+s]=e[i+s]}_slerp(e,t,i,r){ft.slerpFlat(e,t,e,t,e,i,r)}_slerpAdditive(e,t,i,r,a){const s=this._workIndex*a;ft.multiplyQuaternionsFlat(e,s,e,t,e,i),ft.slerpFlat(e,t,e,t,e,s,r)}_lerp(e,t,i,r,a){const s=1-r;for(let o=0;o!==a;++o){const l=t+o;e[l]=e[l]*s+e[i+o]*r}}_lerpAdditive(e,t,i,r,a){for(let s=0;s!==a;++s){const o=t+s;e[o]=e[o]+e[i+s]*r}}}const CR="\\[\\]\\.:\\/",yY=new RegExp("["+CR+"]","g"),DR="[^"+CR+"]",SY="[^"+CR.replace("\\.","")+"]",TY=/((?:WC+[\/:])*)/.source.replace("WC",DR),EY=/(WCOD+)?/.source.replace("WCOD",SY),bY=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",DR),MY=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",DR),AY=new RegExp("^"+TY+EY+bY+MY+"$"),wY=["material","materials","bones","map"];class RY{constructor(e,t,i){const r=i||fn.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();const i=this._targetGroup.nCachedObjects_,r=this._bindings[i];r!==void 0&&r.getValue(e,t)}setValue(e,t){const i=this._bindings;for(let r=this._targetGroup.nCachedObjects_,a=i.length;r!==a;++r)i[r].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}}class fn{constructor(e,t,i){this.path=t,this.parsedPath=i||fn.parseTrackName(t),this.node=fn.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new fn.Composite(e,t,i):new fn(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(yY,"")}static parseTrackName(e){const t=AY.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=i.nodeName&&i.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){const a=i.nodeName.substring(r+1);wY.indexOf(a)!==-1&&(i.nodeName=i.nodeName.substring(0,r),i.objectName=a)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const i=e.skeleton.getBoneByName(t);if(i!==void 0)return i}if(e.children){const i=function(a){for(let s=0;s=a){const f=a++,p=e[f];t[p.uuid]=d,e[d]=p,t[u]=f,e[f]=l;for(let m=0,v=r;m!==v;++m){const x=i[m],S=x[f],_=x[d];x[d]=S,x[f]=_}}}this.nCachedObjects_=a}uncache(){const e=this._objects,t=this._indicesByUUID,i=this._bindings,r=i.length;let a=this.nCachedObjects_,s=e.length;for(let o=0,l=arguments.length;o!==l;++o){const u=arguments[o],d=u.uuid,f=t[d];if(f!==void 0)if(delete t[d],f0&&(t[m.uuid]=f),e[f]=m,e.pop();for(let v=0,x=r;v!==x;++v){const S=i[v];S[f]=S[p],S.pop()}}}this.nCachedObjects_=a}subscribe_(e,t){const i=this._bindingsIndicesByPath;let r=i[e];const a=this._bindings;if(r!==void 0)return a[r];const s=this._paths,o=this._parsedPaths,l=this._objects,u=l.length,d=this.nCachedObjects_,f=new Array(u);r=a.length,i[e]=r,s.push(e),o.push(t),a.push(f);for(let p=d,m=l.length;p!==m;++p){const v=l[p];f[p]=new fn(v,e,t)}return f}unsubscribe_(e){const t=this._bindingsIndicesByPath,i=t[e];if(i!==void 0){const r=this._paths,a=this._parsedPaths,s=this._bindings,o=s.length-1,l=s[o],u=e[o];t[u]=i,s[i]=l,s.pop(),a[i]=a[o],a.pop(),r[i]=r[o],r.pop()}}}class E7{constructor(e,t,i=null,r=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=i,this.blendMode=r;const a=t.tracks,s=a.length,o=new Array(s),l={endingStart:dh,endingEnd:dh};for(let u=0;u!==s;++u){const d=a[u].createInterpolant(null);o[u]=d,d.settings=l}this._interpolantSettings=l,this._interpolants=o,this._propertyBindings=new Array(s),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=g9,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&&this.timeScale!==0&&this._startTime===null&&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}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,i=!1){if(e.fadeOut(t),this.fadeIn(t),i===!0){const r=this._clip.duration,a=e._clip.duration,s=a/r,o=r/a;e.warp(1,s,t),this.warp(o,1,t)}return this}crossFadeTo(e,t,i=!1){return e.crossFadeFrom(this,t,i)}stopFading(){const e=this._weightInterpolant;return e!==null&&(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){const r=this._mixer,a=r.time,s=this.timeScale;let o=this._timeScaleInterpolant;o===null&&(o=r._lendControlInterpolant(),this._timeScaleInterpolant=o);const l=o.parameterPositions,u=o.sampleValues;return l[0]=a,l[1]=a+i,u[0]=e/s,u[1]=t/s,this}stopWarping(){const e=this._timeScaleInterpolant;return e!==null&&(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}const a=this._startTime;if(a!==null){const l=(e-a)*i;l<0||i===0?t=0:(this._startTime=null,t=i*l)}t*=this._updateTimeScale(e);const s=this._updateTime(t),o=this._updateWeight(e);if(o>0){const l=this._interpolants,u=this._propertyBindings;switch(this.blendMode){case eR:for(let d=0,f=l.length;d!==f;++d)l[d].evaluate(s),u[d].accumulateAdditive(o);break;case US:default:for(let d=0,f=l.length;d!==f;++d)l[d].evaluate(s),u[d].accumulate(r,o)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const i=this._weightInterpolant;if(i!==null){const r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopFading(),r===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const i=this._timeScaleInterpolant;if(i!==null){const r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,i=this.loop;let r=this.time+e,a=this._loopCount;const s=i===v9;if(e===0)return a===-1?r:s&&(a&1)===1?t-r:r;if(i===$w){a===-1&&(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(a===-1&&(e>=0?(a=0,this._setEndings(!0,this.repetitions===0,s)):this._setEndings(this.repetitions===0,!0,s)),r>=t||r<0){const o=Math.floor(r/t);r-=t*o,a+=Math.abs(o);const l=this.repetitions-a;if(l<=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(l===1){const u=e<0;this._setEndings(u,!u,s)}else this._setEndings(!1,!1,s);this._loopCount=a,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:o})}}else this.time=r;if(s&&(a&1)===1)return t-r}return r}_setEndings(e,t,i){const r=this._interpolantSettings;i?(r.endingStart=fh,r.endingEnd=fh):(e?r.endingStart=this.zeroSlopeAtStart?fh:dh:r.endingStart=Ag,t?r.endingEnd=this.zeroSlopeAtEnd?fh:dh:r.endingEnd=Ag)}_scheduleFading(e,t,i){const r=this._mixer,a=r.time;let s=this._weightInterpolant;s===null&&(s=r._lendControlInterpolant(),this._weightInterpolant=s);const o=s.parameterPositions,l=s.sampleValues;return o[0]=a,l[0]=t,o[1]=a+e,l[1]=i,this}}const DY=new Float32Array(1);class b7 extends Mi{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const i=e._localRoot||this._root,r=e._clip.tracks,a=r.length,s=e._propertyBindings,o=e._interpolants,l=i.uuid,u=this._bindingsByRootAndName;let d=u[l];d===void 0&&(d={},u[l]=d);for(let f=0;f!==a;++f){const p=r[f],m=p.name;let v=d[m];if(v!==void 0)++v.referenceCount,s[f]=v;else{if(v=s[f],v!==void 0){v._cacheIndex===null&&(++v.referenceCount,this._addInactiveBinding(v,l,m));continue}const x=t&&t._propertyBindings[f].binding.parsedPath;v=new T7(fn.create(i,m,x),p.ValueTypeName,p.getValueSize()),++v.referenceCount,this._addInactiveBinding(v,l,m),s[f]=v}o[f].resultBuffer=v.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){const i=(e._localRoot||this._root).uuid,r=e._clip.uuid,a=this._actionsByClip[r];this._bindAction(e,a&&a.knownActions[0]),this._addInactiveAction(e,r,i)}const t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){const a=t[i];a.useCount++===0&&(this._lendBinding(a),a.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){const a=t[i];--a.useCount===0&&(a.restoreOriginalState(),this._takeBackBinding(a))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const 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){const t=e._cacheIndex;return t!==null&&t=0;--i)e[i].stop();return this}update(e){e*=this.timeScale;const t=this._actions,i=this._nActiveActions,r=this.time+=e,a=Math.sign(e),s=this._accuIndex^=1;for(let u=0;u!==i;++u)t[u]._update(r,e,a,s);const o=this._bindings,l=this._nActiveBindings;for(let u=0;u!==l;++u)o[u].apply(s);return this}setTime(e){this.time=0;for(let t=0;t=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 this.clampPoint(e,ZO).distanceTo(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}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)}}const QO=new D,$_=new D,ef=new D,tf=new D,pb=new D,BY=new D,FY=new D;class NR{constructor(e=new D,t=new D){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){QO.subVectors(e,this.start),$_.subVectors(this.end,this.start);const i=$_.dot($_);let a=$_.dot(QO)/i;return t&&(a=It(a,0,1)),a}closestPointToPoint(e,t,i){const r=this.closestPointToPointParameter(e,t);return this.delta(i).multiplyScalar(r).add(this.start)}distanceSqToLine3(e,t=BY,i=FY){const r=10000000000000001e-32;let a,s;const o=this.start,l=e.start,u=this.end,d=e.end;ef.subVectors(u,o),tf.subVectors(d,l),pb.subVectors(o,l);const f=ef.dot(ef),p=tf.dot(tf),m=tf.dot(pb);if(f<=r&&p<=r)return t.copy(o),i.copy(l),t.sub(i),t.dot(t);if(f<=r)a=0,s=m/p,s=It(s,0,1);else{const v=ef.dot(pb);if(p<=r)s=0,a=It(-v/f,0,1);else{const x=ef.dot(tf),S=f*p-x*x;S!==0?a=It((x*m-v*p)/S,0,1):a=0,s=(x*a+m)/p,s<0?(s=0,a=It(-v/f,0,1)):s>1&&(s=1,a=It((x-v)/f,0,1))}}return t.copy(o).add(ef.multiplyScalar(a)),i.copy(l).add(tf.multiplyScalar(s)),t.sub(i),t.dot(t)}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)}}const KO=new D;class HY extends Xt{constructor(e,t){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const i=new Ct,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 s=0,o=1,l=32;s1)for(let f=0;f.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{nL.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(nL,t)}}setLength(e,t=e*.2,i=t*.2){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(i,t,i),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class w7 extends va{constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],i=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],r=new Ct;r.setAttribute("position",new St(t,3)),r.setAttribute("color",new St(i,3));const a=new Yi({vertexColors:!0,toneMapped:!1});super(r,a),this.type="AxesHelper"}setColors(e,t,i){const r=new Ye,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()}}class $Y{constructor(){this.type="ShapePath",this.color=new Ye,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new Ly,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,s){return this.currentPath.bezierCurveTo(e,t,i,r,a,s),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(_){const T=[];for(let E=0,b=_.length;ENumber.EPSILON){if(C<0&&(L=T[w],N=-N,U=T[R],C=-C),_.yU.y)continue;if(_.y===L.y){if(_.x===L.x)return!0}else{const z=C*(_.x-L.x)-N*(_.y-L.y);if(z===0)return!0;if(z<0)continue;b=!b}}else{if(_.y!==L.y)continue;if(U.x<=_.x&&_.x<=L.x||L.x<=_.x&&_.x<=U.x)return!0}}return b}const r=Ks.isClockWise,a=this.subPaths;if(a.length===0)return[];let s,o,l;const u=[];if(a.length===1)return o=a[0],l=new Mh,l.curves=o.curves,u.push(l),u;let d=!r(a[0].getPoints());d=e?!d:d;const f=[],p=[];let m=[],v=0,x;p[v]=void 0,m[v]=[];for(let _=0,T=a.length;_1){let _=!1,T=0;for(let E=0,b=p.length;E0&&_===!1&&(m=f)}let S;for(let _=0,T=p.length;_e?(n.repeat.x=1,n.repeat.y=t/e,n.offset.x=0,n.offset.y=(1-n.repeat.y)/2):(n.repeat.x=e/t,n.repeat.y=1,n.offset.x=(1-n.repeat.x)/2,n.offset.y=0),n}function nj(n,e){const t=n.image&&n.image.width?n.image.width/n.image.height:1;return t>e?(n.repeat.x=e/t,n.repeat.y=1,n.offset.x=(1-n.repeat.x)/2,n.offset.y=0):(n.repeat.x=1,n.repeat.y=t/e,n.offset.x=0,n.offset.y=(1-n.repeat.y)/2),n}function ij(n){return n.repeat.x=1,n.repeat.y=1,n.offset.x=0,n.offset.y=0,n}function Y3(n,e,t,i){const r=rj(i);switch(t){case Kw:return n*e;case Qs:return n*e/r.components*r.byteLength;case ev:return n*e/r.components*r.byteLength;case Mo:return n*e*2/r.components*r.byteLength;case LS:return n*e*2/r.components*r.byteLength;case Jw:return n*e*3/r.components*r.byteLength;case ai:return n*e*4/r.components*r.byteLength;case IS:return n*e*4/r.components*r.byteLength;case Q0:case K0:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*8;case J0:case $0:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*16;case ny:case ry:return Math.max(n,16)*Math.max(e,8)/4;case ty:case iy:return Math.max(n,8)*Math.max(e,8)/2;case ay:case sy:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*8;case oy:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*16;case ly:return Math.floor((n+3)/4)*Math.floor((e+3)/4)*16;case cy:return Math.floor((n+4)/5)*Math.floor((e+3)/4)*16;case uy:return Math.floor((n+4)/5)*Math.floor((e+4)/5)*16;case hy:return Math.floor((n+5)/6)*Math.floor((e+4)/5)*16;case dy:return Math.floor((n+5)/6)*Math.floor((e+5)/6)*16;case fy:return Math.floor((n+7)/8)*Math.floor((e+4)/5)*16;case py:return Math.floor((n+7)/8)*Math.floor((e+5)/6)*16;case my:return Math.floor((n+7)/8)*Math.floor((e+7)/8)*16;case gy:return Math.floor((n+9)/10)*Math.floor((e+4)/5)*16;case vy:return Math.floor((n+9)/10)*Math.floor((e+5)/6)*16;case _y:return Math.floor((n+9)/10)*Math.floor((e+7)/8)*16;case xy:return Math.floor((n+9)/10)*Math.floor((e+9)/10)*16;case yy:return Math.floor((n+11)/12)*Math.floor((e+9)/10)*16;case Sy:return Math.floor((n+11)/12)*Math.floor((e+11)/12)*16;case Ty:case Ey:case by:return Math.ceil(n/4)*Math.ceil(e/4)*16;case My:case Ay:return Math.ceil(n/4)*Math.ceil(e/4)*8;case wy:case Ry:return Math.ceil(n/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${t} format.`)}function rj(n){switch(n){case Ni:case CS:return{byteLength:1,components:1};case Uh:case DS:case Jn:return{byteLength:2,components:1};case NS:case OS:return{byteLength:2,components:4};case to:case $g:case fi:return{byteLength:4,components:1};case Zw:case Qw:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${n}.`)}class R7{static contain(e,t){return tj(e,t)}static cover(e,t){return nj(e,t)}static fill(e){return ij(e)}static getByteLength(e,t,i,r){return Y3(e,t,i,r)}}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:$s}}));typeof window<"u"&&(window.__THREE__?dt("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=$s);/** * @license * Copyright 2010-2025 Three.js Authors * SPDX-License-Identifier: MIT @@ -3956,7 +3956,7 @@ Material Type: `+z.type+` Program Info Log: `+ae+` `+se+` -`+De)}else ae!==""?dt("WebGLProgram: Program Info Log:",ae):(X===""||te==="")&&(ce=!1);ce&&(z.diagnostics={runnable:Q,programLog:ae,vertexShader:{log:X,prefix:S},fragmentShader:{log:te,prefix:_}})}r.deleteShader(R),r.deleteShader(w),U=new u1(r,x),N=iJ(r,x)}let U;this.getUniforms=function(){return U===void 0&&L(this),U};let N;this.getAttributes=function(){return N===void 0&&L(this),N};let C=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return C===!1&&(C=r.getProgramParameter(x,jK)),C},this.destroy=function(){i.releaseStatesOfProgram(this),r.deleteProgram(x),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=ZK++,this.cacheKey=e,this.usedTimes=1,this.program=x,this.vertexShader=R,this.fragmentShader=w,this}let mJ=0;class gJ{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,i=e.fragmentShader,r=this._getShaderStage(t),a=this._getShaderStage(i),s=this._getShaderCacheForMaterial(e);return s.has(r)===!1&&(s.add(r),r.usedTimes++),s.has(a)===!1&&(s.add(a),a.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const i of t)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.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){const t=this.materialCache;let i=t.get(e);return i===void 0&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){const t=this.shaderCache;let i=t.get(e);return i===void 0&&(i=new vJ(e),t.set(e,i)),i}}class vJ{constructor(e){this.id=mJ++,this.code=e,this.usedTimes=0}}function _J(n,e,t,i,r,a,s){const o=new Ap,l=new gJ,u=new Set,d=[],f=r.logarithmicDepthBuffer,p=r.vertexTextures;let m=r.precision;const 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"};function x(N){return u.add(N),N===0?"uv":`uv${N}`}function S(N,C,z,W,K){const oe=W.fog,ae=K.geometry,X=N.isMeshStandardMaterial?W.environment:null,te=(N.isMeshStandardMaterial?t:e).get(N.envMap||X),Q=te&&te.mapping===jp?te.image.height:null,ce=v[N.type];N.precision!==null&&(m=r.getMaxPrecision(N.precision),m!==N.precision&&dt("WebGLProgram.getParameters:",N.precision,"not supported, using",m,"instead."));const se=ae.morphAttributes.position||ae.morphAttributes.normal||ae.morphAttributes.color,De=se!==void 0?se.length:0;let Xe=0;ae.morphAttributes.position!==void 0&&(Xe=1),ae.morphAttributes.normal!==void 0&&(Xe=2),ae.morphAttributes.color!==void 0&&(Xe=3);let nt,tt,xt,ve;if(ce){const kt=Zs[ce];nt=kt.vertexShader,tt=kt.fragmentShader}else nt=N.vertexShader,tt=N.fragmentShader,l.update(N),xt=l.getVertexShaderID(N),ve=l.getFragmentShaderID(N);const we=n.getRenderTarget(),Ze=n.state.buffers.depth.getReversed(),de=K.isInstancedMesh===!0,it=K.isBatchedMesh===!0,wt=!!N.map,ct=!!N.matcap,Qe=!!te,Ee=!!N.aoMap,V=!!N.lightMap,Ae=!!N.bumpMap,Oe=!!N.normalMap,Ve=!!N.displacementMap,Fe=!!N.emissiveMap,$e=!!N.metalnessMap,Je=!!N.roughnessMap,ht=N.anisotropy>0,k=N.clearcoat>0,P=N.dispersion>0,he=N.iridescence>0,be=N.sheen>0,Ie=N.transmission>0,Se=ht&&!!N.anisotropyMap,yt=k&&!!N.clearcoatMap,je=k&&!!N.clearcoatNormalMap,Tt=k&&!!N.clearcoatRoughnessMap,vt=he&&!!N.iridescenceMap,Ue=he&&!!N.iridescenceThicknessMap,He=be&&!!N.sheenColorMap,pt=be&&!!N.sheenRoughnessMap,J=!!N.specularMap,me=!!N.specularColorMap,Le=!!N.specularIntensityMap,j=Ie&&!!N.transmissionMap,ke=Ie&&!!N.thicknessMap,ge=!!N.gradientMap,We=!!N.alphaMap,Ge=N.alphaTest>0,Re=!!N.alphaHash,at=!!N.extensions;let Et=As;N.toneMapped&&(we===null||we.isXRRenderTarget===!0)&&(Et=n.toneMapping);const Gt={shaderID:ce,shaderType:N.type,shaderName:N.name,vertexShader:nt,fragmentShader:tt,defines:N.defines,customVertexShaderID:xt,customFragmentShaderID:ve,isRawShaderMaterial:N.isRawShaderMaterial===!0,glslVersion:N.glslVersion,precision:m,batching:it,batchingColor:it&&K._colorsTexture!==null,instancing:de,instancingColor:de&&K.instanceColor!==null,instancingMorph:de&&K.morphTexture!==null,supportsVertexTextures:p,outputColorSpace:we===null?n.outputColorSpace:we.isXRRenderTarget===!0?we.texture.colorSpace:Xn,alphaToCoverage:!!N.alphaToCoverage,map:wt,matcap:ct,envMap:Qe,envMapMode:Qe&&te.mapping,envMapCubeUVHeight:Q,aoMap:Ee,lightMap:V,bumpMap:Ae,normalMap:Oe,displacementMap:p&&Ve,emissiveMap:Fe,normalMapObjectSpace:Oe&&N.normalMapType===y9,normalMapTangentSpace:Oe&&N.normalMapType===Hl,metalnessMap:$e,roughnessMap:Je,anisotropy:ht,anisotropyMap:Se,clearcoat:k,clearcoatMap:yt,clearcoatNormalMap:je,clearcoatRoughnessMap:Tt,dispersion:P,iridescence:he,iridescenceMap:vt,iridescenceThicknessMap:Ue,sheen:be,sheenColorMap:He,sheenRoughnessMap:pt,specularMap:J,specularColorMap:me,specularIntensityMap:Le,transmission:Ie,transmissionMap:j,thicknessMap:ke,gradientMap:ge,opaque:N.transparent===!1&&N.blending===Eh&&N.alphaToCoverage===!1,alphaMap:We,alphaTest:Ge,alphaHash:Re,combine:N.combine,mapUv:wt&&x(N.map.channel),aoMapUv:Ee&&x(N.aoMap.channel),lightMapUv:V&&x(N.lightMap.channel),bumpMapUv:Ae&&x(N.bumpMap.channel),normalMapUv:Oe&&x(N.normalMap.channel),displacementMapUv:Ve&&x(N.displacementMap.channel),emissiveMapUv:Fe&&x(N.emissiveMap.channel),metalnessMapUv:$e&&x(N.metalnessMap.channel),roughnessMapUv:Je&&x(N.roughnessMap.channel),anisotropyMapUv:Se&&x(N.anisotropyMap.channel),clearcoatMapUv:yt&&x(N.clearcoatMap.channel),clearcoatNormalMapUv:je&&x(N.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Tt&&x(N.clearcoatRoughnessMap.channel),iridescenceMapUv:vt&&x(N.iridescenceMap.channel),iridescenceThicknessMapUv:Ue&&x(N.iridescenceThicknessMap.channel),sheenColorMapUv:He&&x(N.sheenColorMap.channel),sheenRoughnessMapUv:pt&&x(N.sheenRoughnessMap.channel),specularMapUv:J&&x(N.specularMap.channel),specularColorMapUv:me&&x(N.specularColorMap.channel),specularIntensityMapUv:Le&&x(N.specularIntensityMap.channel),transmissionMapUv:j&&x(N.transmissionMap.channel),thicknessMapUv:ke&&x(N.thicknessMap.channel),alphaMapUv:We&&x(N.alphaMap.channel),vertexTangents:!!ae.attributes.tangent&&(Oe||ht),vertexColors:N.vertexColors,vertexAlphas:N.vertexColors===!0&&!!ae.attributes.color&&ae.attributes.color.itemSize===4,pointsUvs:K.isPoints===!0&&!!ae.attributes.uv&&(wt||We),fog:!!oe,useFog:N.fog===!0,fogExp2:!!oe&&oe.isFogExp2,flatShading:N.flatShading===!0&&N.wireframe===!1,sizeAttenuation:N.sizeAttenuation===!0,logarithmicDepthBuffer:f,reversedDepthBuffer:Ze,skinning:K.isSkinnedMesh===!0,morphTargets:ae.morphAttributes.position!==void 0,morphNormals:ae.morphAttributes.normal!==void 0,morphColors:ae.morphAttributes.color!==void 0,morphTargetsCount:De,morphTextureStride:Xe,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,numLightProbes:C.numLightProbes,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:N.dithering,shadowMapEnabled:n.shadowMap.enabled&&z.length>0,shadowMapType:n.shadowMap.type,toneMapping:Et,decodeVideoTexture:wt&&N.map.isVideoTexture===!0&&tn.getTransfer(N.map.colorSpace)===Dn,decodeVideoTextureEmissive:Fe&&N.emissiveMap.isVideoTexture===!0&&tn.getTransfer(N.emissiveMap.colorSpace)===Dn,premultipliedAlpha:N.premultipliedAlpha,doubleSided:N.side===xr,flipSided:N.side===ki,useDepthPacking:N.depthPacking>=0,depthPacking:N.depthPacking||0,index0AttributeName:N.index0AttributeName,extensionClipCullDistance:at&&N.extensions.clipCullDistance===!0&&i.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(at&&N.extensions.multiDraw===!0||it)&&i.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:N.customProgramCacheKey()};return Gt.vertexUv1s=u.has(1),Gt.vertexUv2s=u.has(2),Gt.vertexUv3s=u.has(3),u.clear(),Gt}function _(N){const C=[];if(N.shaderID?C.push(N.shaderID):(C.push(N.customVertexShaderID),C.push(N.customFragmentShaderID)),N.defines!==void 0)for(const z in N.defines)C.push(z),C.push(N.defines[z]);return N.isRawShaderMaterial===!1&&(T(C,N),E(C,N),C.push(n.outputColorSpace)),C.push(N.customProgramCacheKey),C.join()}function T(N,C){N.push(C.precision),N.push(C.outputColorSpace),N.push(C.envMapMode),N.push(C.envMapCubeUVHeight),N.push(C.mapUv),N.push(C.alphaMapUv),N.push(C.lightMapUv),N.push(C.aoMapUv),N.push(C.bumpMapUv),N.push(C.normalMapUv),N.push(C.displacementMapUv),N.push(C.emissiveMapUv),N.push(C.metalnessMapUv),N.push(C.roughnessMapUv),N.push(C.anisotropyMapUv),N.push(C.clearcoatMapUv),N.push(C.clearcoatNormalMapUv),N.push(C.clearcoatRoughnessMapUv),N.push(C.iridescenceMapUv),N.push(C.iridescenceThicknessMapUv),N.push(C.sheenColorMapUv),N.push(C.sheenRoughnessMapUv),N.push(C.specularMapUv),N.push(C.specularColorMapUv),N.push(C.specularIntensityMapUv),N.push(C.transmissionMapUv),N.push(C.thicknessMapUv),N.push(C.combine),N.push(C.fogExp2),N.push(C.sizeAttenuation),N.push(C.morphTargetsCount),N.push(C.morphAttributeCount),N.push(C.numDirLights),N.push(C.numPointLights),N.push(C.numSpotLights),N.push(C.numSpotLightMaps),N.push(C.numHemiLights),N.push(C.numRectAreaLights),N.push(C.numDirLightShadows),N.push(C.numPointLightShadows),N.push(C.numSpotLightShadows),N.push(C.numSpotLightShadowsWithMaps),N.push(C.numLightProbes),N.push(C.shadowMapType),N.push(C.toneMapping),N.push(C.numClippingPlanes),N.push(C.numClipIntersection),N.push(C.depthPacking)}function E(N,C){o.disableAll(),C.supportsVertexTextures&&o.enable(0),C.instancing&&o.enable(1),C.instancingColor&&o.enable(2),C.instancingMorph&&o.enable(3),C.matcap&&o.enable(4),C.envMap&&o.enable(5),C.normalMapObjectSpace&&o.enable(6),C.normalMapTangentSpace&&o.enable(7),C.clearcoat&&o.enable(8),C.iridescence&&o.enable(9),C.alphaTest&&o.enable(10),C.vertexColors&&o.enable(11),C.vertexAlphas&&o.enable(12),C.vertexUv1s&&o.enable(13),C.vertexUv2s&&o.enable(14),C.vertexUv3s&&o.enable(15),C.vertexTangents&&o.enable(16),C.anisotropy&&o.enable(17),C.alphaHash&&o.enable(18),C.batching&&o.enable(19),C.dispersion&&o.enable(20),C.batchingColor&&o.enable(21),C.gradientMap&&o.enable(22),N.push(o.mask),o.disableAll(),C.fog&&o.enable(0),C.useFog&&o.enable(1),C.flatShading&&o.enable(2),C.logarithmicDepthBuffer&&o.enable(3),C.reversedDepthBuffer&&o.enable(4),C.skinning&&o.enable(5),C.morphTargets&&o.enable(6),C.morphNormals&&o.enable(7),C.morphColors&&o.enable(8),C.premultipliedAlpha&&o.enable(9),C.shadowMapEnabled&&o.enable(10),C.doubleSided&&o.enable(11),C.flipSided&&o.enable(12),C.useDepthPacking&&o.enable(13),C.dithering&&o.enable(14),C.transmission&&o.enable(15),C.sheen&&o.enable(16),C.opaque&&o.enable(17),C.pointsUvs&&o.enable(18),C.decodeVideoTexture&&o.enable(19),C.decodeVideoTextureEmissive&&o.enable(20),C.alphaToCoverage&&o.enable(21),N.push(o.mask)}function b(N){const C=v[N.type];let z;if(C){const W=Zs[C];z=oR.clone(W.uniforms)}else z=N.uniforms;return z}function R(N,C){let z;for(let W=0,K=d.length;W0?i.push(_):m.transparent===!0?r.push(_):t.push(_)}function l(f,p,m,v,x,S){const _=s(f,p,m,v,x,S);m.transmission>0?i.unshift(_):m.transparent===!0?r.unshift(_):t.unshift(_)}function u(f,p){t.length>1&&t.sort(f||yJ),i.length>1&&i.sort(p||TL),r.length>1&&r.sort(p||TL)}function d(){for(let f=e,p=n.length;f=a.length?(s=new EL,a.push(s)):s=a[r],s}function t(){n=new WeakMap}return{get:e,dispose:t}}function TJ(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new D,color:new Ye};break;case"SpotLight":t={position:new D,direction:new D,color:new Ye,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new D,color:new Ye,distance:0,decay:0};break;case"HemisphereLight":t={direction:new D,skyColor:new Ye,groundColor:new Ye};break;case"RectAreaLight":t={color:new Ye,position:new D,halfWidth:new D,halfHeight:new D};break}return n[e.id]=t,t}}}function EJ(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new re};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new re};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new re,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}let bJ=0;function MJ(n,e){return(e.castShadow?2:0)-(n.castShadow?2:0)+(e.map?1:0)-(n.map?1:0)}function AJ(n){const e=new TJ,t=EJ(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-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,numLightProbes:0};for(let u=0;u<9;u++)i.probe.push(new D);const r=new D,a=new Me,s=new Me;function o(u){let d=0,f=0,p=0;for(let N=0;N<9;N++)i.probe[N].set(0,0,0);let m=0,v=0,x=0,S=0,_=0,T=0,E=0,b=0,R=0,w=0,L=0;u.sort(MJ);for(let N=0,C=u.length;N0&&(n.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=rt.LTC_FLOAT_1,i.rectAreaLTC2=rt.LTC_FLOAT_2):(i.rectAreaLTC1=rt.LTC_HALF_1,i.rectAreaLTC2=rt.LTC_HALF_2)),i.ambient[0]=d,i.ambient[1]=f,i.ambient[2]=p;const U=i.hash;(U.directionalLength!==m||U.pointLength!==v||U.spotLength!==x||U.rectAreaLength!==S||U.hemiLength!==_||U.numDirectionalShadows!==T||U.numPointShadows!==E||U.numSpotShadows!==b||U.numSpotMaps!==R||U.numLightProbes!==L)&&(i.directional.length=m,i.spot.length=x,i.rectArea.length=S,i.point.length=v,i.hemi.length=_,i.directionalShadow.length=T,i.directionalShadowMap.length=T,i.pointShadow.length=E,i.pointShadowMap.length=E,i.spotShadow.length=b,i.spotShadowMap.length=b,i.directionalShadowMatrix.length=T,i.pointShadowMatrix.length=E,i.spotLightMatrix.length=b+R-w,i.spotLightMap.length=R,i.numSpotLightShadowsWithMaps=w,i.numLightProbes=L,U.directionalLength=m,U.pointLength=v,U.spotLength=x,U.rectAreaLength=S,U.hemiLength=_,U.numDirectionalShadows=T,U.numPointShadows=E,U.numSpotShadows=b,U.numSpotMaps=R,U.numLightProbes=L,i.version=bJ++)}function l(u,d){let f=0,p=0,m=0,v=0,x=0;const S=d.matrixWorldInverse;for(let _=0,T=u.length;_=s.length?(o=new bL(n),s.push(o)):o=s[a],o}function i(){e=new WeakMap}return{get:t,dispose:i}}const RJ=`void main() { +`+De)}else ae!==""?dt("WebGLProgram: Program Info Log:",ae):(X===""||te==="")&&(ce=!1);ce&&(z.diagnostics={runnable:Q,programLog:ae,vertexShader:{log:X,prefix:S},fragmentShader:{log:te,prefix:_}})}r.deleteShader(R),r.deleteShader(w),U=new u1(r,x),N=iJ(r,x)}let U;this.getUniforms=function(){return U===void 0&&L(this),U};let N;this.getAttributes=function(){return N===void 0&&L(this),N};let C=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return C===!1&&(C=r.getProgramParameter(x,jK)),C},this.destroy=function(){i.releaseStatesOfProgram(this),r.deleteProgram(x),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=ZK++,this.cacheKey=e,this.usedTimes=1,this.program=x,this.vertexShader=R,this.fragmentShader=w,this}let mJ=0;class gJ{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,i=e.fragmentShader,r=this._getShaderStage(t),a=this._getShaderStage(i),s=this._getShaderCacheForMaterial(e);return s.has(r)===!1&&(s.add(r),r.usedTimes++),s.has(a)===!1&&(s.add(a),a.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const i of t)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.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){const t=this.materialCache;let i=t.get(e);return i===void 0&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){const t=this.shaderCache;let i=t.get(e);return i===void 0&&(i=new vJ(e),t.set(e,i)),i}}class vJ{constructor(e){this.id=mJ++,this.code=e,this.usedTimes=0}}function _J(n,e,t,i,r,a,s){const o=new Ap,l=new gJ,u=new Set,d=[],f=r.logarithmicDepthBuffer,p=r.vertexTextures;let m=r.precision;const 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"};function x(N){return u.add(N),N===0?"uv":`uv${N}`}function S(N,C,z,W,K){const oe=W.fog,ae=K.geometry,X=N.isMeshStandardMaterial?W.environment:null,te=(N.isMeshStandardMaterial?t:e).get(N.envMap||X),Q=te&&te.mapping===jp?te.image.height:null,ce=v[N.type];N.precision!==null&&(m=r.getMaxPrecision(N.precision),m!==N.precision&&dt("WebGLProgram.getParameters:",N.precision,"not supported, using",m,"instead."));const se=ae.morphAttributes.position||ae.morphAttributes.normal||ae.morphAttributes.color,De=se!==void 0?se.length:0;let Xe=0;ae.morphAttributes.position!==void 0&&(Xe=1),ae.morphAttributes.normal!==void 0&&(Xe=2),ae.morphAttributes.color!==void 0&&(Xe=3);let nt,tt,xt,ve;if(ce){const kt=Zs[ce];nt=kt.vertexShader,tt=kt.fragmentShader}else nt=N.vertexShader,tt=N.fragmentShader,l.update(N),xt=l.getVertexShaderID(N),ve=l.getFragmentShaderID(N);const we=n.getRenderTarget(),Ze=n.state.buffers.depth.getReversed(),de=K.isInstancedMesh===!0,it=K.isBatchedMesh===!0,wt=!!N.map,lt=!!N.matcap,Qe=!!te,Ee=!!N.aoMap,V=!!N.lightMap,Ae=!!N.bumpMap,Oe=!!N.normalMap,Ve=!!N.displacementMap,Fe=!!N.emissiveMap,$e=!!N.metalnessMap,Je=!!N.roughnessMap,ut=N.anisotropy>0,k=N.clearcoat>0,P=N.dispersion>0,he=N.iridescence>0,be=N.sheen>0,Ie=N.transmission>0,Se=ut&&!!N.anisotropyMap,yt=k&&!!N.clearcoatMap,je=k&&!!N.clearcoatNormalMap,Tt=k&&!!N.clearcoatRoughnessMap,vt=he&&!!N.iridescenceMap,Ue=he&&!!N.iridescenceThicknessMap,He=be&&!!N.sheenColorMap,pt=be&&!!N.sheenRoughnessMap,J=!!N.specularMap,me=!!N.specularColorMap,Le=!!N.specularIntensityMap,j=Ie&&!!N.transmissionMap,ke=Ie&&!!N.thicknessMap,ge=!!N.gradientMap,We=!!N.alphaMap,Ge=N.alphaTest>0,Re=!!N.alphaHash,at=!!N.extensions;let Et=As;N.toneMapped&&(we===null||we.isXRRenderTarget===!0)&&(Et=n.toneMapping);const Gt={shaderID:ce,shaderType:N.type,shaderName:N.name,vertexShader:nt,fragmentShader:tt,defines:N.defines,customVertexShaderID:xt,customFragmentShaderID:ve,isRawShaderMaterial:N.isRawShaderMaterial===!0,glslVersion:N.glslVersion,precision:m,batching:it,batchingColor:it&&K._colorsTexture!==null,instancing:de,instancingColor:de&&K.instanceColor!==null,instancingMorph:de&&K.morphTexture!==null,supportsVertexTextures:p,outputColorSpace:we===null?n.outputColorSpace:we.isXRRenderTarget===!0?we.texture.colorSpace:Xn,alphaToCoverage:!!N.alphaToCoverage,map:wt,matcap:lt,envMap:Qe,envMapMode:Qe&&te.mapping,envMapCubeUVHeight:Q,aoMap:Ee,lightMap:V,bumpMap:Ae,normalMap:Oe,displacementMap:p&&Ve,emissiveMap:Fe,normalMapObjectSpace:Oe&&N.normalMapType===y9,normalMapTangentSpace:Oe&&N.normalMapType===Hl,metalnessMap:$e,roughnessMap:Je,anisotropy:ut,anisotropyMap:Se,clearcoat:k,clearcoatMap:yt,clearcoatNormalMap:je,clearcoatRoughnessMap:Tt,dispersion:P,iridescence:he,iridescenceMap:vt,iridescenceThicknessMap:Ue,sheen:be,sheenColorMap:He,sheenRoughnessMap:pt,specularMap:J,specularColorMap:me,specularIntensityMap:Le,transmission:Ie,transmissionMap:j,thicknessMap:ke,gradientMap:ge,opaque:N.transparent===!1&&N.blending===Eh&&N.alphaToCoverage===!1,alphaMap:We,alphaTest:Ge,alphaHash:Re,combine:N.combine,mapUv:wt&&x(N.map.channel),aoMapUv:Ee&&x(N.aoMap.channel),lightMapUv:V&&x(N.lightMap.channel),bumpMapUv:Ae&&x(N.bumpMap.channel),normalMapUv:Oe&&x(N.normalMap.channel),displacementMapUv:Ve&&x(N.displacementMap.channel),emissiveMapUv:Fe&&x(N.emissiveMap.channel),metalnessMapUv:$e&&x(N.metalnessMap.channel),roughnessMapUv:Je&&x(N.roughnessMap.channel),anisotropyMapUv:Se&&x(N.anisotropyMap.channel),clearcoatMapUv:yt&&x(N.clearcoatMap.channel),clearcoatNormalMapUv:je&&x(N.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Tt&&x(N.clearcoatRoughnessMap.channel),iridescenceMapUv:vt&&x(N.iridescenceMap.channel),iridescenceThicknessMapUv:Ue&&x(N.iridescenceThicknessMap.channel),sheenColorMapUv:He&&x(N.sheenColorMap.channel),sheenRoughnessMapUv:pt&&x(N.sheenRoughnessMap.channel),specularMapUv:J&&x(N.specularMap.channel),specularColorMapUv:me&&x(N.specularColorMap.channel),specularIntensityMapUv:Le&&x(N.specularIntensityMap.channel),transmissionMapUv:j&&x(N.transmissionMap.channel),thicknessMapUv:ke&&x(N.thicknessMap.channel),alphaMapUv:We&&x(N.alphaMap.channel),vertexTangents:!!ae.attributes.tangent&&(Oe||ut),vertexColors:N.vertexColors,vertexAlphas:N.vertexColors===!0&&!!ae.attributes.color&&ae.attributes.color.itemSize===4,pointsUvs:K.isPoints===!0&&!!ae.attributes.uv&&(wt||We),fog:!!oe,useFog:N.fog===!0,fogExp2:!!oe&&oe.isFogExp2,flatShading:N.flatShading===!0&&N.wireframe===!1,sizeAttenuation:N.sizeAttenuation===!0,logarithmicDepthBuffer:f,reversedDepthBuffer:Ze,skinning:K.isSkinnedMesh===!0,morphTargets:ae.morphAttributes.position!==void 0,morphNormals:ae.morphAttributes.normal!==void 0,morphColors:ae.morphAttributes.color!==void 0,morphTargetsCount:De,morphTextureStride:Xe,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,numLightProbes:C.numLightProbes,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:N.dithering,shadowMapEnabled:n.shadowMap.enabled&&z.length>0,shadowMapType:n.shadowMap.type,toneMapping:Et,decodeVideoTexture:wt&&N.map.isVideoTexture===!0&&tn.getTransfer(N.map.colorSpace)===Dn,decodeVideoTextureEmissive:Fe&&N.emissiveMap.isVideoTexture===!0&&tn.getTransfer(N.emissiveMap.colorSpace)===Dn,premultipliedAlpha:N.premultipliedAlpha,doubleSided:N.side===xr,flipSided:N.side===ki,useDepthPacking:N.depthPacking>=0,depthPacking:N.depthPacking||0,index0AttributeName:N.index0AttributeName,extensionClipCullDistance:at&&N.extensions.clipCullDistance===!0&&i.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(at&&N.extensions.multiDraw===!0||it)&&i.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:N.customProgramCacheKey()};return Gt.vertexUv1s=u.has(1),Gt.vertexUv2s=u.has(2),Gt.vertexUv3s=u.has(3),u.clear(),Gt}function _(N){const C=[];if(N.shaderID?C.push(N.shaderID):(C.push(N.customVertexShaderID),C.push(N.customFragmentShaderID)),N.defines!==void 0)for(const z in N.defines)C.push(z),C.push(N.defines[z]);return N.isRawShaderMaterial===!1&&(T(C,N),E(C,N),C.push(n.outputColorSpace)),C.push(N.customProgramCacheKey),C.join()}function T(N,C){N.push(C.precision),N.push(C.outputColorSpace),N.push(C.envMapMode),N.push(C.envMapCubeUVHeight),N.push(C.mapUv),N.push(C.alphaMapUv),N.push(C.lightMapUv),N.push(C.aoMapUv),N.push(C.bumpMapUv),N.push(C.normalMapUv),N.push(C.displacementMapUv),N.push(C.emissiveMapUv),N.push(C.metalnessMapUv),N.push(C.roughnessMapUv),N.push(C.anisotropyMapUv),N.push(C.clearcoatMapUv),N.push(C.clearcoatNormalMapUv),N.push(C.clearcoatRoughnessMapUv),N.push(C.iridescenceMapUv),N.push(C.iridescenceThicknessMapUv),N.push(C.sheenColorMapUv),N.push(C.sheenRoughnessMapUv),N.push(C.specularMapUv),N.push(C.specularColorMapUv),N.push(C.specularIntensityMapUv),N.push(C.transmissionMapUv),N.push(C.thicknessMapUv),N.push(C.combine),N.push(C.fogExp2),N.push(C.sizeAttenuation),N.push(C.morphTargetsCount),N.push(C.morphAttributeCount),N.push(C.numDirLights),N.push(C.numPointLights),N.push(C.numSpotLights),N.push(C.numSpotLightMaps),N.push(C.numHemiLights),N.push(C.numRectAreaLights),N.push(C.numDirLightShadows),N.push(C.numPointLightShadows),N.push(C.numSpotLightShadows),N.push(C.numSpotLightShadowsWithMaps),N.push(C.numLightProbes),N.push(C.shadowMapType),N.push(C.toneMapping),N.push(C.numClippingPlanes),N.push(C.numClipIntersection),N.push(C.depthPacking)}function E(N,C){o.disableAll(),C.supportsVertexTextures&&o.enable(0),C.instancing&&o.enable(1),C.instancingColor&&o.enable(2),C.instancingMorph&&o.enable(3),C.matcap&&o.enable(4),C.envMap&&o.enable(5),C.normalMapObjectSpace&&o.enable(6),C.normalMapTangentSpace&&o.enable(7),C.clearcoat&&o.enable(8),C.iridescence&&o.enable(9),C.alphaTest&&o.enable(10),C.vertexColors&&o.enable(11),C.vertexAlphas&&o.enable(12),C.vertexUv1s&&o.enable(13),C.vertexUv2s&&o.enable(14),C.vertexUv3s&&o.enable(15),C.vertexTangents&&o.enable(16),C.anisotropy&&o.enable(17),C.alphaHash&&o.enable(18),C.batching&&o.enable(19),C.dispersion&&o.enable(20),C.batchingColor&&o.enable(21),C.gradientMap&&o.enable(22),N.push(o.mask),o.disableAll(),C.fog&&o.enable(0),C.useFog&&o.enable(1),C.flatShading&&o.enable(2),C.logarithmicDepthBuffer&&o.enable(3),C.reversedDepthBuffer&&o.enable(4),C.skinning&&o.enable(5),C.morphTargets&&o.enable(6),C.morphNormals&&o.enable(7),C.morphColors&&o.enable(8),C.premultipliedAlpha&&o.enable(9),C.shadowMapEnabled&&o.enable(10),C.doubleSided&&o.enable(11),C.flipSided&&o.enable(12),C.useDepthPacking&&o.enable(13),C.dithering&&o.enable(14),C.transmission&&o.enable(15),C.sheen&&o.enable(16),C.opaque&&o.enable(17),C.pointsUvs&&o.enable(18),C.decodeVideoTexture&&o.enable(19),C.decodeVideoTextureEmissive&&o.enable(20),C.alphaToCoverage&&o.enable(21),N.push(o.mask)}function b(N){const C=v[N.type];let z;if(C){const W=Zs[C];z=oR.clone(W.uniforms)}else z=N.uniforms;return z}function R(N,C){let z;for(let W=0,K=d.length;W0?i.push(_):m.transparent===!0?r.push(_):t.push(_)}function l(f,p,m,v,x,S){const _=s(f,p,m,v,x,S);m.transmission>0?i.unshift(_):m.transparent===!0?r.unshift(_):t.unshift(_)}function u(f,p){t.length>1&&t.sort(f||yJ),i.length>1&&i.sort(p||TL),r.length>1&&r.sort(p||TL)}function d(){for(let f=e,p=n.length;f=a.length?(s=new EL,a.push(s)):s=a[r],s}function t(){n=new WeakMap}return{get:e,dispose:t}}function TJ(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new D,color:new Ye};break;case"SpotLight":t={position:new D,direction:new D,color:new Ye,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new D,color:new Ye,distance:0,decay:0};break;case"HemisphereLight":t={direction:new D,skyColor:new Ye,groundColor:new Ye};break;case"RectAreaLight":t={color:new Ye,position:new D,halfWidth:new D,halfHeight:new D};break}return n[e.id]=t,t}}}function EJ(){const n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new re};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new re};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new re,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}let bJ=0;function MJ(n,e){return(e.castShadow?2:0)-(n.castShadow?2:0)+(e.map?1:0)-(n.map?1:0)}function AJ(n){const e=new TJ,t=EJ(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-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,numLightProbes:0};for(let u=0;u<9;u++)i.probe.push(new D);const r=new D,a=new Me,s=new Me;function o(u){let d=0,f=0,p=0;for(let N=0;N<9;N++)i.probe[N].set(0,0,0);let m=0,v=0,x=0,S=0,_=0,T=0,E=0,b=0,R=0,w=0,L=0;u.sort(MJ);for(let N=0,C=u.length;N0&&(n.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=rt.LTC_FLOAT_1,i.rectAreaLTC2=rt.LTC_FLOAT_2):(i.rectAreaLTC1=rt.LTC_HALF_1,i.rectAreaLTC2=rt.LTC_HALF_2)),i.ambient[0]=d,i.ambient[1]=f,i.ambient[2]=p;const U=i.hash;(U.directionalLength!==m||U.pointLength!==v||U.spotLength!==x||U.rectAreaLength!==S||U.hemiLength!==_||U.numDirectionalShadows!==T||U.numPointShadows!==E||U.numSpotShadows!==b||U.numSpotMaps!==R||U.numLightProbes!==L)&&(i.directional.length=m,i.spot.length=x,i.rectArea.length=S,i.point.length=v,i.hemi.length=_,i.directionalShadow.length=T,i.directionalShadowMap.length=T,i.pointShadow.length=E,i.pointShadowMap.length=E,i.spotShadow.length=b,i.spotShadowMap.length=b,i.directionalShadowMatrix.length=T,i.pointShadowMatrix.length=E,i.spotLightMatrix.length=b+R-w,i.spotLightMap.length=R,i.numSpotLightShadowsWithMaps=w,i.numLightProbes=L,U.directionalLength=m,U.pointLength=v,U.spotLength=x,U.rectAreaLength=S,U.hemiLength=_,U.numDirectionalShadows=T,U.numPointShadows=E,U.numSpotShadows=b,U.numSpotMaps=R,U.numLightProbes=L,i.version=bJ++)}function l(u,d){let f=0,p=0,m=0,v=0,x=0;const S=d.matrixWorldInverse;for(let _=0,T=u.length;_=s.length?(o=new bL(n),s.push(o)):o=s[a],o}function i(){e=new WeakMap}return{get:t,dispose:i}}const RJ=`void main() { gl_Position = vec4( position, 1.0 ); }`,CJ=`uniform sampler2D shadow_pass; uniform vec2 resolution; @@ -3984,7 +3984,7 @@ void main() { squared_mean = squared_mean / samples; float std_dev = sqrt( squared_mean - mean * mean ); gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); -}`;function DJ(n,e,t){let i=new ed;const r=new re,a=new re,s=new Pt,o=new _R({depthPacking:x9}),l=new xR,u={},d=t.maxTextureSize,f={[eo]:ki,[ki]:eo,[xr]:xr},p=new Oi({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new re},radius:{value:4}},vertexShader:RJ,fragmentShader:CJ}),m=p.clone();m.defines.HORIZONTAL_PASS=1;const v=new Ct;v.setAttribute("position",new bt(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const x=new jn(v,p),S=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=MS;let _=this.type;this.render=function(w,L,U){if(S.enabled===!1||S.autoUpdate===!1&&S.needsUpdate===!1||w.length===0)return;const N=n.getRenderTarget(),C=n.getActiveCubeFace(),z=n.getActiveMipmapLevel(),W=n.state;W.setBlending(Lr),W.buffers.depth.getReversed()===!0?W.buffers.color.setClear(0,0,0,0):W.buffers.color.setClear(1,1,1,1),W.buffers.depth.setTest(!0),W.setScissorTest(!1);const K=_!==Xs&&this.type===Xs,oe=_===Xs&&this.type!==Xs;for(let ae=0,X=w.length;aed||r.y>d)&&(r.x>d&&(a.x=Math.floor(d/ce.x),r.x=a.x*ce.x,Q.mapSize.x=a.x),r.y>d&&(a.y=Math.floor(d/ce.y),r.y=a.y*ce.y,Q.mapSize.y=a.y)),Q.map===null||K===!0||oe===!0){const De=this.type!==Xs?{minFilter:Yn,magFilter:Yn}:{};Q.map!==null&&Q.map.dispose(),Q.map=new pi(r.x,r.y,De),Q.map.texture.name=te.name+".shadowMap",Q.camera.updateProjectionMatrix()}n.setRenderTarget(Q.map),n.clear();const se=Q.getViewportCount();for(let De=0;De0||L.map&&L.alphaTest>0||L.alphaToCoverage===!0){const W=C.uuid,K=L.uuid;let oe=u[W];oe===void 0&&(oe={},u[W]=oe);let ae=oe[K];ae===void 0&&(ae=C.clone(),oe[K]=ae,L.addEventListener("dispose",R)),C=ae}if(C.visible=L.visible,C.wireframe=L.wireframe,N===Xs?C.side=L.shadowSide!==null?L.shadowSide:L.side:C.side=L.shadowSide!==null?L.shadowSide:f[L.side],C.alphaMap=L.alphaMap,C.alphaTest=L.alphaToCoverage===!0?.5:L.alphaTest,C.map=L.map,C.clipShadows=L.clipShadows,C.clippingPlanes=L.clippingPlanes,C.clipIntersection=L.clipIntersection,C.displacementMap=L.displacementMap,C.displacementScale=L.displacementScale,C.displacementBias=L.displacementBias,C.wireframeLinewidth=L.wireframeLinewidth,C.linewidth=L.linewidth,U.isPointLight===!0&&C.isMeshDistanceMaterial===!0){const W=n.properties.get(C);W.light=U}return C}function b(w,L,U,N,C){if(w.visible===!1)return;if(w.layers.test(L.layers)&&(w.isMesh||w.isLine||w.isPoints)&&(w.castShadow||w.receiveShadow&&C===Xs)&&(!w.frustumCulled||i.intersectsObject(w))){w.modelViewMatrix.multiplyMatrices(U.matrixWorldInverse,w.matrixWorld);const K=e.update(w),oe=w.material;if(Array.isArray(oe)){const ae=K.groups;for(let X=0,te=ae.length;X=1):Q.indexOf("OpenGL ES")!==-1&&(te=parseFloat(/^OpenGL ES (\d)/.exec(Q)[1]),X=te>=2);let ce=null,se={};const De=n.getParameter(n.SCISSOR_BOX),Xe=n.getParameter(n.VIEWPORT),nt=new Pt().fromArray(De),tt=new Pt().fromArray(Xe);function xt(j,ke,ge,We){const Ge=new Uint8Array(4),Re=n.createTexture();n.bindTexture(j,Re),n.texParameteri(j,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(j,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let at=0;at"u"?!1:/OculusBrowser/g.test(navigator.userAgent),u=new re,d=new WeakMap;let f;const p=new WeakMap;let m=!1;try{m=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function v(k,P){return m?new OffscreenCanvas(k,P):Cg("canvas")}function x(k,P,he){let be=1;const Ie=ht(k);if((Ie.width>he||Ie.height>he)&&(be=he/Math.max(Ie.width,Ie.height)),be<1)if(typeof HTMLImageElement<"u"&&k instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&k instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&k instanceof ImageBitmap||typeof VideoFrame<"u"&&k instanceof VideoFrame){const Se=Math.floor(be*Ie.width),yt=Math.floor(be*Ie.height);f===void 0&&(f=v(Se,yt));const je=P?v(Se,yt):f;return je.width=Se,je.height=yt,je.getContext("2d").drawImage(k,0,0,Se,yt),dt("WebGLRenderer: Texture has been resized from ("+Ie.width+"x"+Ie.height+") to ("+Se+"x"+yt+")."),je}else return"data"in k&&dt("WebGLRenderer: Image in DataTexture is too big ("+Ie.width+"x"+Ie.height+")."),k;return k}function S(k){return k.generateMipmaps}function _(k){n.generateMipmap(k)}function T(k){return k.isWebGLCubeRenderTarget?n.TEXTURE_CUBE_MAP:k.isWebGL3DRenderTarget?n.TEXTURE_3D:k.isWebGLArrayRenderTarget||k.isCompressedArrayTexture?n.TEXTURE_2D_ARRAY:n.TEXTURE_2D}function E(k,P,he,be,Ie=!1){if(k!==null){if(n[k]!==void 0)return n[k];dt("WebGLRenderer: Attempt to use non-existing WebGL internal format '"+k+"'")}let Se=P;if(P===n.RED&&(he===n.FLOAT&&(Se=n.R32F),he===n.HALF_FLOAT&&(Se=n.R16F),he===n.UNSIGNED_BYTE&&(Se=n.R8)),P===n.RED_INTEGER&&(he===n.UNSIGNED_BYTE&&(Se=n.R8UI),he===n.UNSIGNED_SHORT&&(Se=n.R16UI),he===n.UNSIGNED_INT&&(Se=n.R32UI),he===n.BYTE&&(Se=n.R8I),he===n.SHORT&&(Se=n.R16I),he===n.INT&&(Se=n.R32I)),P===n.RG&&(he===n.FLOAT&&(Se=n.RG32F),he===n.HALF_FLOAT&&(Se=n.RG16F),he===n.UNSIGNED_BYTE&&(Se=n.RG8)),P===n.RG_INTEGER&&(he===n.UNSIGNED_BYTE&&(Se=n.RG8UI),he===n.UNSIGNED_SHORT&&(Se=n.RG16UI),he===n.UNSIGNED_INT&&(Se=n.RG32UI),he===n.BYTE&&(Se=n.RG8I),he===n.SHORT&&(Se=n.RG16I),he===n.INT&&(Se=n.RG32I)),P===n.RGB_INTEGER&&(he===n.UNSIGNED_BYTE&&(Se=n.RGB8UI),he===n.UNSIGNED_SHORT&&(Se=n.RGB16UI),he===n.UNSIGNED_INT&&(Se=n.RGB32UI),he===n.BYTE&&(Se=n.RGB8I),he===n.SHORT&&(Se=n.RGB16I),he===n.INT&&(Se=n.RGB32I)),P===n.RGBA_INTEGER&&(he===n.UNSIGNED_BYTE&&(Se=n.RGBA8UI),he===n.UNSIGNED_SHORT&&(Se=n.RGBA16UI),he===n.UNSIGNED_INT&&(Se=n.RGBA32UI),he===n.BYTE&&(Se=n.RGBA8I),he===n.SHORT&&(Se=n.RGBA16I),he===n.INT&&(Se=n.RGBA32I)),P===n.RGB&&(he===n.UNSIGNED_INT_5_9_9_9_REV&&(Se=n.RGB9_E5),he===n.UNSIGNED_INT_10F_11F_11F_REV&&(Se=n.R11F_G11F_B10F)),P===n.RGBA){const yt=Ie?wg:tn.getTransfer(be);he===n.FLOAT&&(Se=n.RGBA32F),he===n.HALF_FLOAT&&(Se=n.RGBA16F),he===n.UNSIGNED_BYTE&&(Se=yt===Dn?n.SRGB8_ALPHA8:n.RGBA8),he===n.UNSIGNED_SHORT_4_4_4_4&&(Se=n.RGBA4),he===n.UNSIGNED_SHORT_5_5_5_1&&(Se=n.RGB5_A1)}return(Se===n.R16F||Se===n.R32F||Se===n.RG16F||Se===n.RG32F||Se===n.RGBA16F||Se===n.RGBA32F)&&e.get("EXT_color_buffer_float"),Se}function b(k,P){let he;return k?P===null||P===to||P===Ph?he=n.DEPTH24_STENCIL8:P===fi?he=n.DEPTH32F_STENCIL8:P===Uh&&(he=n.DEPTH24_STENCIL8,dt("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):P===null||P===to||P===Ph?he=n.DEPTH_COMPONENT24:P===fi?he=n.DEPTH_COMPONENT32F:P===Uh&&(he=n.DEPTH_COMPONENT16),he}function R(k,P){return S(k)===!0||k.isFramebufferTexture&&k.minFilter!==Yn&&k.minFilter!==Bt?Math.log2(Math.max(P.width,P.height))+1:k.mipmaps!==void 0&&k.mipmaps.length>0?k.mipmaps.length:k.isCompressedTexture&&Array.isArray(k.image)?P.mipmaps.length:1}function w(k){const P=k.target;P.removeEventListener("dispose",w),U(P),P.isVideoTexture&&d.delete(P)}function L(k){const P=k.target;P.removeEventListener("dispose",L),C(P)}function U(k){const P=i.get(k);if(P.__webglInit===void 0)return;const he=k.source,be=p.get(he);if(be){const Ie=be[P.__cacheKey];Ie.usedTimes--,Ie.usedTimes===0&&N(k),Object.keys(be).length===0&&p.delete(he)}i.remove(k)}function N(k){const P=i.get(k);n.deleteTexture(P.__webglTexture);const he=k.source,be=p.get(he);delete be[P.__cacheKey],s.memory.textures--}function C(k){const P=i.get(k);if(k.depthTexture&&(k.depthTexture.dispose(),i.remove(k.depthTexture)),k.isWebGLCubeRenderTarget)for(let be=0;be<6;be++){if(Array.isArray(P.__webglFramebuffer[be]))for(let Ie=0;Ie=r.maxTextures&&dt("WebGLTextures: Trying to use "+k+" texture units while this GPU supports only "+r.maxTextures),z+=1,k}function oe(k){const P=[];return P.push(k.wrapS),P.push(k.wrapT),P.push(k.wrapR||0),P.push(k.magFilter),P.push(k.minFilter),P.push(k.anisotropy),P.push(k.internalFormat),P.push(k.format),P.push(k.type),P.push(k.generateMipmaps),P.push(k.premultiplyAlpha),P.push(k.flipY),P.push(k.unpackAlignment),P.push(k.colorSpace),P.join()}function ae(k,P){const he=i.get(k);if(k.isVideoTexture&&$e(k),k.isRenderTargetTexture===!1&&k.isExternalTexture!==!0&&k.version>0&&he.__version!==k.version){const be=k.image;if(be===null)dt("WebGLRenderer: Texture marked for update but no image data found.");else if(be.complete===!1)dt("WebGLRenderer: Texture marked for update but image is incomplete");else{ve(he,k,P);return}}else k.isExternalTexture&&(he.__webglTexture=k.sourceTexture?k.sourceTexture:null);t.bindTexture(n.TEXTURE_2D,he.__webglTexture,n.TEXTURE0+P)}function X(k,P){const he=i.get(k);if(k.isRenderTargetTexture===!1&&k.version>0&&he.__version!==k.version){ve(he,k,P);return}else k.isExternalTexture&&(he.__webglTexture=k.sourceTexture?k.sourceTexture:null);t.bindTexture(n.TEXTURE_2D_ARRAY,he.__webglTexture,n.TEXTURE0+P)}function te(k,P){const he=i.get(k);if(k.isRenderTargetTexture===!1&&k.version>0&&he.__version!==k.version){ve(he,k,P);return}t.bindTexture(n.TEXTURE_3D,he.__webglTexture,n.TEXTURE0+P)}function Q(k,P){const he=i.get(k);if(k.version>0&&he.__version!==k.version){we(he,k,P);return}t.bindTexture(n.TEXTURE_CUBE_MAP,he.__webglTexture,n.TEXTURE0+P)}const ce={[Ir]:n.REPEAT,[Wi]:n.CLAMP_TO_EDGE,[xp]:n.MIRRORED_REPEAT},se={[Yn]:n.NEAREST,[RS]:n.NEAREST_MIPMAP_NEAREST,[hh]:n.NEAREST_MIPMAP_LINEAR,[Bt]:n.LINEAR,[np]:n.LINEAR_MIPMAP_NEAREST,[Ga]:n.LINEAR_MIPMAP_LINEAR},De={[S9]:n.NEVER,[w9]:n.ALWAYS,[T9]:n.LESS,[nR]:n.LEQUAL,[E9]:n.EQUAL,[A9]:n.GEQUAL,[b9]:n.GREATER,[M9]:n.NOTEQUAL};function Xe(k,P){if(P.type===fi&&e.has("OES_texture_float_linear")===!1&&(P.magFilter===Bt||P.magFilter===np||P.magFilter===hh||P.magFilter===Ga||P.minFilter===Bt||P.minFilter===np||P.minFilter===hh||P.minFilter===Ga)&&dt("WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),n.texParameteri(k,n.TEXTURE_WRAP_S,ce[P.wrapS]),n.texParameteri(k,n.TEXTURE_WRAP_T,ce[P.wrapT]),(k===n.TEXTURE_3D||k===n.TEXTURE_2D_ARRAY)&&n.texParameteri(k,n.TEXTURE_WRAP_R,ce[P.wrapR]),n.texParameteri(k,n.TEXTURE_MAG_FILTER,se[P.magFilter]),n.texParameteri(k,n.TEXTURE_MIN_FILTER,se[P.minFilter]),P.compareFunction&&(n.texParameteri(k,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(k,n.TEXTURE_COMPARE_FUNC,De[P.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(P.magFilter===Yn||P.minFilter!==hh&&P.minFilter!==Ga||P.type===fi&&e.has("OES_texture_float_linear")===!1)return;if(P.anisotropy>1||i.get(P).__currentAnisotropy){const he=e.get("EXT_texture_filter_anisotropic");n.texParameterf(k,he.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(P.anisotropy,r.getMaxAnisotropy())),i.get(P).__currentAnisotropy=P.anisotropy}}}function nt(k,P){let he=!1;k.__webglInit===void 0&&(k.__webglInit=!0,P.addEventListener("dispose",w));const be=P.source;let Ie=p.get(be);Ie===void 0&&(Ie={},p.set(be,Ie));const Se=oe(P);if(Se!==k.__cacheKey){Ie[Se]===void 0&&(Ie[Se]={texture:n.createTexture(),usedTimes:0},s.memory.textures++,he=!0),Ie[Se].usedTimes++;const yt=Ie[k.__cacheKey];yt!==void 0&&(Ie[k.__cacheKey].usedTimes--,yt.usedTimes===0&&N(P)),k.__cacheKey=Se,k.__webglTexture=Ie[Se].texture}return he}function tt(k,P,he){return Math.floor(Math.floor(k/he)/P)}function xt(k,P,he,be){const Se=k.updateRanges;if(Se.length===0)t.texSubImage2D(n.TEXTURE_2D,0,0,0,P.width,P.height,he,be,P.data);else{Se.sort((Ue,He)=>Ue.start-He.start);let yt=0;for(let Ue=1;Ue0){j&&ke&&t.texStorage2D(n.TEXTURE_2D,We,J,Le[0].width,Le[0].height);for(let Ge=0,Re=Le.length;Ge0){const at=Y3(me.width,me.height,P.format,P.type);for(const Et of P.layerUpdates){const Gt=me.data.subarray(Et*at/me.data.BYTES_PER_ELEMENT,(Et+1)*at/me.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Ge,0,0,Et,me.width,me.height,1,He,Gt)}P.clearLayerUpdates()}else t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Ge,0,0,0,me.width,me.height,Ue.depth,He,me.data)}else t.compressedTexImage3D(n.TEXTURE_2D_ARRAY,Ge,J,me.width,me.height,Ue.depth,0,me.data,0,0);else dt("WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else j?ge&&t.texSubImage3D(n.TEXTURE_2D_ARRAY,Ge,0,0,0,me.width,me.height,Ue.depth,He,pt,me.data):t.texImage3D(n.TEXTURE_2D_ARRAY,Ge,J,me.width,me.height,Ue.depth,0,He,pt,me.data)}else{j&&ke&&t.texStorage2D(n.TEXTURE_2D,We,J,Le[0].width,Le[0].height);for(let Ge=0,Re=Le.length;Ge0){const Ge=Y3(Ue.width,Ue.height,P.format,P.type);for(const Re of P.layerUpdates){const at=Ue.data.subarray(Re*Ge/Ue.data.BYTES_PER_ELEMENT,(Re+1)*Ge/Ue.data.BYTES_PER_ELEMENT);t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,Re,Ue.width,Ue.height,1,He,pt,at)}P.clearLayerUpdates()}else t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,Ue.width,Ue.height,Ue.depth,He,pt,Ue.data)}else t.texImage3D(n.TEXTURE_2D_ARRAY,0,J,Ue.width,Ue.height,Ue.depth,0,He,pt,Ue.data);else if(P.isData3DTexture)j?(ke&&t.texStorage3D(n.TEXTURE_3D,We,J,Ue.width,Ue.height,Ue.depth),ge&&t.texSubImage3D(n.TEXTURE_3D,0,0,0,0,Ue.width,Ue.height,Ue.depth,He,pt,Ue.data)):t.texImage3D(n.TEXTURE_3D,0,J,Ue.width,Ue.height,Ue.depth,0,He,pt,Ue.data);else if(P.isFramebufferTexture){if(ke)if(j)t.texStorage2D(n.TEXTURE_2D,We,J,Ue.width,Ue.height);else{let Ge=Ue.width,Re=Ue.height;for(let at=0;at>=1,Re>>=1}}else if(Le.length>0){if(j&&ke){const Ge=ht(Le[0]);t.texStorage2D(n.TEXTURE_2D,We,J,Ge.width,Ge.height)}for(let Ge=0,Re=Le.length;Ge0&&We++;const Re=ht(He[0]);t.texStorage2D(n.TEXTURE_CUBE_MAP,We,Le,Re.width,Re.height)}for(let Re=0;Re<6;Re++)if(Ue){j?ge&&t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Re,0,0,0,He[Re].width,He[Re].height,J,me,He[Re].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Re,0,Le,He[Re].width,He[Re].height,0,J,me,He[Re].data);for(let at=0;at>Se),pt=Math.max(1,P.height>>Se);Ie===n.TEXTURE_3D||Ie===n.TEXTURE_2D_ARRAY?t.texImage3D(Ie,Se,Tt,He,pt,P.depth,0,yt,je,null):t.texImage2D(Ie,Se,Tt,He,pt,0,yt,je,null)}t.bindFramebuffer(n.FRAMEBUFFER,k),Fe(P)?o.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,be,Ie,Ue.__webglTexture,0,Ve(P)):(Ie===n.TEXTURE_2D||Ie>=n.TEXTURE_CUBE_MAP_POSITIVE_X&&Ie<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,be,Ie,Ue.__webglTexture,Se),t.bindFramebuffer(n.FRAMEBUFFER,null)}function de(k,P,he){if(n.bindRenderbuffer(n.RENDERBUFFER,k),P.depthBuffer){const be=P.depthTexture,Ie=be&&be.isDepthTexture?be.type:null,Se=b(P.stencilBuffer,Ie),yt=P.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,je=Ve(P);Fe(P)?o.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,je,Se,P.width,P.height):he?n.renderbufferStorageMultisample(n.RENDERBUFFER,je,Se,P.width,P.height):n.renderbufferStorage(n.RENDERBUFFER,Se,P.width,P.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,yt,n.RENDERBUFFER,k)}else{const be=P.textures;for(let Ie=0;Ie{delete P.__boundDepthTexture,delete P.__depthDisposeCallback,be.removeEventListener("dispose",Ie)};be.addEventListener("dispose",Ie),P.__depthDisposeCallback=Ie}P.__boundDepthTexture=be}if(k.depthTexture&&!P.__autoAllocateDepthBuffer){if(he)throw new Error("target.depthTexture not supported in Cube render targets");const be=k.texture.mipmaps;be&&be.length>0?it(P.__webglFramebuffer[0],k):it(P.__webglFramebuffer,k)}else if(he){P.__webglDepthbuffer=[];for(let be=0;be<6;be++)if(t.bindFramebuffer(n.FRAMEBUFFER,P.__webglFramebuffer[be]),P.__webglDepthbuffer[be]===void 0)P.__webglDepthbuffer[be]=n.createRenderbuffer(),de(P.__webglDepthbuffer[be],k,!1);else{const Ie=k.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Se=P.__webglDepthbuffer[be];n.bindRenderbuffer(n.RENDERBUFFER,Se),n.framebufferRenderbuffer(n.FRAMEBUFFER,Ie,n.RENDERBUFFER,Se)}}else{const be=k.texture.mipmaps;if(be&&be.length>0?t.bindFramebuffer(n.FRAMEBUFFER,P.__webglFramebuffer[0]):t.bindFramebuffer(n.FRAMEBUFFER,P.__webglFramebuffer),P.__webglDepthbuffer===void 0)P.__webglDepthbuffer=n.createRenderbuffer(),de(P.__webglDepthbuffer,k,!1);else{const Ie=k.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Se=P.__webglDepthbuffer;n.bindRenderbuffer(n.RENDERBUFFER,Se),n.framebufferRenderbuffer(n.FRAMEBUFFER,Ie,n.RENDERBUFFER,Se)}}t.bindFramebuffer(n.FRAMEBUFFER,null)}function ct(k,P,he){const be=i.get(k);P!==void 0&&Ze(be.__webglFramebuffer,k,k.texture,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,0),he!==void 0&&wt(k)}function Qe(k){const P=k.texture,he=i.get(k),be=i.get(P);k.addEventListener("dispose",L);const Ie=k.textures,Se=k.isWebGLCubeRenderTarget===!0,yt=Ie.length>1;if(yt||(be.__webglTexture===void 0&&(be.__webglTexture=n.createTexture()),be.__version=P.version,s.memory.textures++),Se){he.__webglFramebuffer=[];for(let je=0;je<6;je++)if(P.mipmaps&&P.mipmaps.length>0){he.__webglFramebuffer[je]=[];for(let Tt=0;Tt0){he.__webglFramebuffer=[];for(let je=0;je0&&Fe(k)===!1){he.__webglMultisampledFramebuffer=n.createFramebuffer(),he.__webglColorRenderbuffer=[],t.bindFramebuffer(n.FRAMEBUFFER,he.__webglMultisampledFramebuffer);for(let je=0;je0)for(let Tt=0;Tt0)for(let Tt=0;Tt0){if(Fe(k)===!1){const P=k.textures,he=k.width,be=k.height;let Ie=n.COLOR_BUFFER_BIT;const Se=k.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,yt=i.get(k),je=P.length>1;if(je)for(let vt=0;vt0?t.bindFramebuffer(n.DRAW_FRAMEBUFFER,yt.__webglFramebuffer[0]):t.bindFramebuffer(n.DRAW_FRAMEBUFFER,yt.__webglFramebuffer);for(let vt=0;vt0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&P.__useRenderToTexture!==!1}function $e(k){const P=s.render.frame;d.get(k)!==P&&(d.set(k,P),k.update())}function Je(k,P){const he=k.colorSpace,be=k.format,Ie=k.type;return k.isCompressedTexture===!0||k.isVideoTexture===!0||he!==Xn&&he!==Xr&&(tn.getTransfer(he)===Dn?(be!==ai||Ie!==Ni)&&dt("WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):Ht("WebGLTextures: Unsupported texture color space:",he)),P}function ht(k){return typeof HTMLImageElement<"u"&&k instanceof HTMLImageElement?(u.width=k.naturalWidth||k.width,u.height=k.naturalHeight||k.height):typeof VideoFrame<"u"&&k instanceof VideoFrame?(u.width=k.displayWidth,u.height=k.displayHeight):(u.width=k.width,u.height=k.height),u}this.allocateTextureUnit=K,this.resetTextureUnits=W,this.setTexture2D=ae,this.setTexture2DArray=X,this.setTexture3D=te,this.setTextureCube=Q,this.rebindTextures=ct,this.setupRenderTarget=Qe,this.updateRenderTargetMipmap=Ee,this.updateMultisampleRenderTarget=Oe,this.setupDepthRenderbuffer=wt,this.setupFrameBufferTexture=Ze,this.useMultisampledRTT=Fe}function I7(n,e){function t(i,r=Xr){let a;const s=tn.getTransfer(r);if(i===Ni)return n.UNSIGNED_BYTE;if(i===NS)return n.UNSIGNED_SHORT_4_4_4_4;if(i===OS)return n.UNSIGNED_SHORT_5_5_5_1;if(i===Zw)return n.UNSIGNED_INT_5_9_9_9_REV;if(i===Qw)return n.UNSIGNED_INT_10F_11F_11F_REV;if(i===CS)return n.BYTE;if(i===DS)return n.SHORT;if(i===Uh)return n.UNSIGNED_SHORT;if(i===$g)return n.INT;if(i===to)return n.UNSIGNED_INT;if(i===fi)return n.FLOAT;if(i===Jn)return n.HALF_FLOAT;if(i===Kw)return n.ALPHA;if(i===Jw)return n.RGB;if(i===ai)return n.RGBA;if(i===yp)return n.DEPTH_COMPONENT;if(i===zh)return n.DEPTH_STENCIL;if(i===Qs)return n.RED;if(i===ev)return n.RED_INTEGER;if(i===Mo)return n.RG;if(i===LS)return n.RG_INTEGER;if(i===IS)return n.RGBA_INTEGER;if(i===Q0||i===K0||i===J0||i===$0)if(s===Dn)if(a=e.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(i===Q0)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(i===K0)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(i===J0)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(i===$0)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get("WEBGL_compressed_texture_s3tc"),a!==null){if(i===Q0)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(i===K0)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(i===J0)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(i===$0)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(i===ty||i===ny||i===iy||i===ry)if(a=e.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(i===ty)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(i===ny)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(i===iy)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(i===ry)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(i===ay||i===sy||i===oy)if(a=e.get("WEBGL_compressed_texture_etc"),a!==null){if(i===ay||i===sy)return s===Dn?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(i===oy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(i===ly||i===cy||i===uy||i===hy||i===dy||i===fy||i===py||i===my||i===gy||i===vy||i===_y||i===xy||i===yy||i===Sy)if(a=e.get("WEBGL_compressed_texture_astc"),a!==null){if(i===ly)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(i===cy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(i===uy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(i===hy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(i===dy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(i===fy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(i===py)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(i===my)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(i===gy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(i===vy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(i===_y)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(i===xy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(i===yy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(i===Sy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(i===Ty||i===Ey||i===by)if(a=e.get("EXT_texture_compression_bptc"),a!==null){if(i===Ty)return s===Dn?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(i===Ey)return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(i===by)return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(i===My||i===Ay||i===wy||i===Ry)if(a=e.get("EXT_texture_compression_rgtc"),a!==null){if(i===My)return a.COMPRESSED_RED_RGTC1_EXT;if(i===Ay)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(i===wy)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(i===Ry)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return i===Ph?n.UNSIGNED_INT_24_8:n[i]!==void 0?n[i]:null}return{convert:t}}const IJ=` +}`;function DJ(n,e,t){let i=new ed;const r=new re,a=new re,s=new Pt,o=new _R({depthPacking:x9}),l=new xR,u={},d=t.maxTextureSize,f={[eo]:ki,[ki]:eo,[xr]:xr},p=new Oi({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new re},radius:{value:4}},vertexShader:RJ,fragmentShader:CJ}),m=p.clone();m.defines.HORIZONTAL_PASS=1;const v=new Ct;v.setAttribute("position",new bt(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const x=new jn(v,p),S=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=MS;let _=this.type;this.render=function(w,L,U){if(S.enabled===!1||S.autoUpdate===!1&&S.needsUpdate===!1||w.length===0)return;const N=n.getRenderTarget(),C=n.getActiveCubeFace(),z=n.getActiveMipmapLevel(),W=n.state;W.setBlending(Lr),W.buffers.depth.getReversed()===!0?W.buffers.color.setClear(0,0,0,0):W.buffers.color.setClear(1,1,1,1),W.buffers.depth.setTest(!0),W.setScissorTest(!1);const K=_!==Xs&&this.type===Xs,oe=_===Xs&&this.type!==Xs;for(let ae=0,X=w.length;aed||r.y>d)&&(r.x>d&&(a.x=Math.floor(d/ce.x),r.x=a.x*ce.x,Q.mapSize.x=a.x),r.y>d&&(a.y=Math.floor(d/ce.y),r.y=a.y*ce.y,Q.mapSize.y=a.y)),Q.map===null||K===!0||oe===!0){const De=this.type!==Xs?{minFilter:Yn,magFilter:Yn}:{};Q.map!==null&&Q.map.dispose(),Q.map=new pi(r.x,r.y,De),Q.map.texture.name=te.name+".shadowMap",Q.camera.updateProjectionMatrix()}n.setRenderTarget(Q.map),n.clear();const se=Q.getViewportCount();for(let De=0;De0||L.map&&L.alphaTest>0||L.alphaToCoverage===!0){const W=C.uuid,K=L.uuid;let oe=u[W];oe===void 0&&(oe={},u[W]=oe);let ae=oe[K];ae===void 0&&(ae=C.clone(),oe[K]=ae,L.addEventListener("dispose",R)),C=ae}if(C.visible=L.visible,C.wireframe=L.wireframe,N===Xs?C.side=L.shadowSide!==null?L.shadowSide:L.side:C.side=L.shadowSide!==null?L.shadowSide:f[L.side],C.alphaMap=L.alphaMap,C.alphaTest=L.alphaToCoverage===!0?.5:L.alphaTest,C.map=L.map,C.clipShadows=L.clipShadows,C.clippingPlanes=L.clippingPlanes,C.clipIntersection=L.clipIntersection,C.displacementMap=L.displacementMap,C.displacementScale=L.displacementScale,C.displacementBias=L.displacementBias,C.wireframeLinewidth=L.wireframeLinewidth,C.linewidth=L.linewidth,U.isPointLight===!0&&C.isMeshDistanceMaterial===!0){const W=n.properties.get(C);W.light=U}return C}function b(w,L,U,N,C){if(w.visible===!1)return;if(w.layers.test(L.layers)&&(w.isMesh||w.isLine||w.isPoints)&&(w.castShadow||w.receiveShadow&&C===Xs)&&(!w.frustumCulled||i.intersectsObject(w))){w.modelViewMatrix.multiplyMatrices(U.matrixWorldInverse,w.matrixWorld);const K=e.update(w),oe=w.material;if(Array.isArray(oe)){const ae=K.groups;for(let X=0,te=ae.length;X=1):Q.indexOf("OpenGL ES")!==-1&&(te=parseFloat(/^OpenGL ES (\d)/.exec(Q)[1]),X=te>=2);let ce=null,se={};const De=n.getParameter(n.SCISSOR_BOX),Xe=n.getParameter(n.VIEWPORT),nt=new Pt().fromArray(De),tt=new Pt().fromArray(Xe);function xt(j,ke,ge,We){const Ge=new Uint8Array(4),Re=n.createTexture();n.bindTexture(j,Re),n.texParameteri(j,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(j,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let at=0;at"u"?!1:/OculusBrowser/g.test(navigator.userAgent),u=new re,d=new WeakMap;let f;const p=new WeakMap;let m=!1;try{m=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function v(k,P){return m?new OffscreenCanvas(k,P):Cg("canvas")}function x(k,P,he){let be=1;const Ie=ut(k);if((Ie.width>he||Ie.height>he)&&(be=he/Math.max(Ie.width,Ie.height)),be<1)if(typeof HTMLImageElement<"u"&&k instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&k instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&k instanceof ImageBitmap||typeof VideoFrame<"u"&&k instanceof VideoFrame){const Se=Math.floor(be*Ie.width),yt=Math.floor(be*Ie.height);f===void 0&&(f=v(Se,yt));const je=P?v(Se,yt):f;return je.width=Se,je.height=yt,je.getContext("2d").drawImage(k,0,0,Se,yt),dt("WebGLRenderer: Texture has been resized from ("+Ie.width+"x"+Ie.height+") to ("+Se+"x"+yt+")."),je}else return"data"in k&&dt("WebGLRenderer: Image in DataTexture is too big ("+Ie.width+"x"+Ie.height+")."),k;return k}function S(k){return k.generateMipmaps}function _(k){n.generateMipmap(k)}function T(k){return k.isWebGLCubeRenderTarget?n.TEXTURE_CUBE_MAP:k.isWebGL3DRenderTarget?n.TEXTURE_3D:k.isWebGLArrayRenderTarget||k.isCompressedArrayTexture?n.TEXTURE_2D_ARRAY:n.TEXTURE_2D}function E(k,P,he,be,Ie=!1){if(k!==null){if(n[k]!==void 0)return n[k];dt("WebGLRenderer: Attempt to use non-existing WebGL internal format '"+k+"'")}let Se=P;if(P===n.RED&&(he===n.FLOAT&&(Se=n.R32F),he===n.HALF_FLOAT&&(Se=n.R16F),he===n.UNSIGNED_BYTE&&(Se=n.R8)),P===n.RED_INTEGER&&(he===n.UNSIGNED_BYTE&&(Se=n.R8UI),he===n.UNSIGNED_SHORT&&(Se=n.R16UI),he===n.UNSIGNED_INT&&(Se=n.R32UI),he===n.BYTE&&(Se=n.R8I),he===n.SHORT&&(Se=n.R16I),he===n.INT&&(Se=n.R32I)),P===n.RG&&(he===n.FLOAT&&(Se=n.RG32F),he===n.HALF_FLOAT&&(Se=n.RG16F),he===n.UNSIGNED_BYTE&&(Se=n.RG8)),P===n.RG_INTEGER&&(he===n.UNSIGNED_BYTE&&(Se=n.RG8UI),he===n.UNSIGNED_SHORT&&(Se=n.RG16UI),he===n.UNSIGNED_INT&&(Se=n.RG32UI),he===n.BYTE&&(Se=n.RG8I),he===n.SHORT&&(Se=n.RG16I),he===n.INT&&(Se=n.RG32I)),P===n.RGB_INTEGER&&(he===n.UNSIGNED_BYTE&&(Se=n.RGB8UI),he===n.UNSIGNED_SHORT&&(Se=n.RGB16UI),he===n.UNSIGNED_INT&&(Se=n.RGB32UI),he===n.BYTE&&(Se=n.RGB8I),he===n.SHORT&&(Se=n.RGB16I),he===n.INT&&(Se=n.RGB32I)),P===n.RGBA_INTEGER&&(he===n.UNSIGNED_BYTE&&(Se=n.RGBA8UI),he===n.UNSIGNED_SHORT&&(Se=n.RGBA16UI),he===n.UNSIGNED_INT&&(Se=n.RGBA32UI),he===n.BYTE&&(Se=n.RGBA8I),he===n.SHORT&&(Se=n.RGBA16I),he===n.INT&&(Se=n.RGBA32I)),P===n.RGB&&(he===n.UNSIGNED_INT_5_9_9_9_REV&&(Se=n.RGB9_E5),he===n.UNSIGNED_INT_10F_11F_11F_REV&&(Se=n.R11F_G11F_B10F)),P===n.RGBA){const yt=Ie?wg:tn.getTransfer(be);he===n.FLOAT&&(Se=n.RGBA32F),he===n.HALF_FLOAT&&(Se=n.RGBA16F),he===n.UNSIGNED_BYTE&&(Se=yt===Dn?n.SRGB8_ALPHA8:n.RGBA8),he===n.UNSIGNED_SHORT_4_4_4_4&&(Se=n.RGBA4),he===n.UNSIGNED_SHORT_5_5_5_1&&(Se=n.RGB5_A1)}return(Se===n.R16F||Se===n.R32F||Se===n.RG16F||Se===n.RG32F||Se===n.RGBA16F||Se===n.RGBA32F)&&e.get("EXT_color_buffer_float"),Se}function b(k,P){let he;return k?P===null||P===to||P===Ph?he=n.DEPTH24_STENCIL8:P===fi?he=n.DEPTH32F_STENCIL8:P===Uh&&(he=n.DEPTH24_STENCIL8,dt("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):P===null||P===to||P===Ph?he=n.DEPTH_COMPONENT24:P===fi?he=n.DEPTH_COMPONENT32F:P===Uh&&(he=n.DEPTH_COMPONENT16),he}function R(k,P){return S(k)===!0||k.isFramebufferTexture&&k.minFilter!==Yn&&k.minFilter!==Bt?Math.log2(Math.max(P.width,P.height))+1:k.mipmaps!==void 0&&k.mipmaps.length>0?k.mipmaps.length:k.isCompressedTexture&&Array.isArray(k.image)?P.mipmaps.length:1}function w(k){const P=k.target;P.removeEventListener("dispose",w),U(P),P.isVideoTexture&&d.delete(P)}function L(k){const P=k.target;P.removeEventListener("dispose",L),C(P)}function U(k){const P=i.get(k);if(P.__webglInit===void 0)return;const he=k.source,be=p.get(he);if(be){const Ie=be[P.__cacheKey];Ie.usedTimes--,Ie.usedTimes===0&&N(k),Object.keys(be).length===0&&p.delete(he)}i.remove(k)}function N(k){const P=i.get(k);n.deleteTexture(P.__webglTexture);const he=k.source,be=p.get(he);delete be[P.__cacheKey],s.memory.textures--}function C(k){const P=i.get(k);if(k.depthTexture&&(k.depthTexture.dispose(),i.remove(k.depthTexture)),k.isWebGLCubeRenderTarget)for(let be=0;be<6;be++){if(Array.isArray(P.__webglFramebuffer[be]))for(let Ie=0;Ie=r.maxTextures&&dt("WebGLTextures: Trying to use "+k+" texture units while this GPU supports only "+r.maxTextures),z+=1,k}function oe(k){const P=[];return P.push(k.wrapS),P.push(k.wrapT),P.push(k.wrapR||0),P.push(k.magFilter),P.push(k.minFilter),P.push(k.anisotropy),P.push(k.internalFormat),P.push(k.format),P.push(k.type),P.push(k.generateMipmaps),P.push(k.premultiplyAlpha),P.push(k.flipY),P.push(k.unpackAlignment),P.push(k.colorSpace),P.join()}function ae(k,P){const he=i.get(k);if(k.isVideoTexture&&$e(k),k.isRenderTargetTexture===!1&&k.isExternalTexture!==!0&&k.version>0&&he.__version!==k.version){const be=k.image;if(be===null)dt("WebGLRenderer: Texture marked for update but no image data found.");else if(be.complete===!1)dt("WebGLRenderer: Texture marked for update but image is incomplete");else{ve(he,k,P);return}}else k.isExternalTexture&&(he.__webglTexture=k.sourceTexture?k.sourceTexture:null);t.bindTexture(n.TEXTURE_2D,he.__webglTexture,n.TEXTURE0+P)}function X(k,P){const he=i.get(k);if(k.isRenderTargetTexture===!1&&k.version>0&&he.__version!==k.version){ve(he,k,P);return}else k.isExternalTexture&&(he.__webglTexture=k.sourceTexture?k.sourceTexture:null);t.bindTexture(n.TEXTURE_2D_ARRAY,he.__webglTexture,n.TEXTURE0+P)}function te(k,P){const he=i.get(k);if(k.isRenderTargetTexture===!1&&k.version>0&&he.__version!==k.version){ve(he,k,P);return}t.bindTexture(n.TEXTURE_3D,he.__webglTexture,n.TEXTURE0+P)}function Q(k,P){const he=i.get(k);if(k.version>0&&he.__version!==k.version){we(he,k,P);return}t.bindTexture(n.TEXTURE_CUBE_MAP,he.__webglTexture,n.TEXTURE0+P)}const ce={[Ir]:n.REPEAT,[Wi]:n.CLAMP_TO_EDGE,[xp]:n.MIRRORED_REPEAT},se={[Yn]:n.NEAREST,[RS]:n.NEAREST_MIPMAP_NEAREST,[hh]:n.NEAREST_MIPMAP_LINEAR,[Bt]:n.LINEAR,[np]:n.LINEAR_MIPMAP_NEAREST,[Ga]:n.LINEAR_MIPMAP_LINEAR},De={[S9]:n.NEVER,[w9]:n.ALWAYS,[T9]:n.LESS,[nR]:n.LEQUAL,[E9]:n.EQUAL,[A9]:n.GEQUAL,[b9]:n.GREATER,[M9]:n.NOTEQUAL};function Xe(k,P){if(P.type===fi&&e.has("OES_texture_float_linear")===!1&&(P.magFilter===Bt||P.magFilter===np||P.magFilter===hh||P.magFilter===Ga||P.minFilter===Bt||P.minFilter===np||P.minFilter===hh||P.minFilter===Ga)&&dt("WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),n.texParameteri(k,n.TEXTURE_WRAP_S,ce[P.wrapS]),n.texParameteri(k,n.TEXTURE_WRAP_T,ce[P.wrapT]),(k===n.TEXTURE_3D||k===n.TEXTURE_2D_ARRAY)&&n.texParameteri(k,n.TEXTURE_WRAP_R,ce[P.wrapR]),n.texParameteri(k,n.TEXTURE_MAG_FILTER,se[P.magFilter]),n.texParameteri(k,n.TEXTURE_MIN_FILTER,se[P.minFilter]),P.compareFunction&&(n.texParameteri(k,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(k,n.TEXTURE_COMPARE_FUNC,De[P.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(P.magFilter===Yn||P.minFilter!==hh&&P.minFilter!==Ga||P.type===fi&&e.has("OES_texture_float_linear")===!1)return;if(P.anisotropy>1||i.get(P).__currentAnisotropy){const he=e.get("EXT_texture_filter_anisotropic");n.texParameterf(k,he.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(P.anisotropy,r.getMaxAnisotropy())),i.get(P).__currentAnisotropy=P.anisotropy}}}function nt(k,P){let he=!1;k.__webglInit===void 0&&(k.__webglInit=!0,P.addEventListener("dispose",w));const be=P.source;let Ie=p.get(be);Ie===void 0&&(Ie={},p.set(be,Ie));const Se=oe(P);if(Se!==k.__cacheKey){Ie[Se]===void 0&&(Ie[Se]={texture:n.createTexture(),usedTimes:0},s.memory.textures++,he=!0),Ie[Se].usedTimes++;const yt=Ie[k.__cacheKey];yt!==void 0&&(Ie[k.__cacheKey].usedTimes--,yt.usedTimes===0&&N(P)),k.__cacheKey=Se,k.__webglTexture=Ie[Se].texture}return he}function tt(k,P,he){return Math.floor(Math.floor(k/he)/P)}function xt(k,P,he,be){const Se=k.updateRanges;if(Se.length===0)t.texSubImage2D(n.TEXTURE_2D,0,0,0,P.width,P.height,he,be,P.data);else{Se.sort((Ue,He)=>Ue.start-He.start);let yt=0;for(let Ue=1;Ue0){j&&ke&&t.texStorage2D(n.TEXTURE_2D,We,J,Le[0].width,Le[0].height);for(let Ge=0,Re=Le.length;Ge0){const at=Y3(me.width,me.height,P.format,P.type);for(const Et of P.layerUpdates){const Gt=me.data.subarray(Et*at/me.data.BYTES_PER_ELEMENT,(Et+1)*at/me.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Ge,0,0,Et,me.width,me.height,1,He,Gt)}P.clearLayerUpdates()}else t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Ge,0,0,0,me.width,me.height,Ue.depth,He,me.data)}else t.compressedTexImage3D(n.TEXTURE_2D_ARRAY,Ge,J,me.width,me.height,Ue.depth,0,me.data,0,0);else dt("WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else j?ge&&t.texSubImage3D(n.TEXTURE_2D_ARRAY,Ge,0,0,0,me.width,me.height,Ue.depth,He,pt,me.data):t.texImage3D(n.TEXTURE_2D_ARRAY,Ge,J,me.width,me.height,Ue.depth,0,He,pt,me.data)}else{j&&ke&&t.texStorage2D(n.TEXTURE_2D,We,J,Le[0].width,Le[0].height);for(let Ge=0,Re=Le.length;Ge0){const Ge=Y3(Ue.width,Ue.height,P.format,P.type);for(const Re of P.layerUpdates){const at=Ue.data.subarray(Re*Ge/Ue.data.BYTES_PER_ELEMENT,(Re+1)*Ge/Ue.data.BYTES_PER_ELEMENT);t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,Re,Ue.width,Ue.height,1,He,pt,at)}P.clearLayerUpdates()}else t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,Ue.width,Ue.height,Ue.depth,He,pt,Ue.data)}else t.texImage3D(n.TEXTURE_2D_ARRAY,0,J,Ue.width,Ue.height,Ue.depth,0,He,pt,Ue.data);else if(P.isData3DTexture)j?(ke&&t.texStorage3D(n.TEXTURE_3D,We,J,Ue.width,Ue.height,Ue.depth),ge&&t.texSubImage3D(n.TEXTURE_3D,0,0,0,0,Ue.width,Ue.height,Ue.depth,He,pt,Ue.data)):t.texImage3D(n.TEXTURE_3D,0,J,Ue.width,Ue.height,Ue.depth,0,He,pt,Ue.data);else if(P.isFramebufferTexture){if(ke)if(j)t.texStorage2D(n.TEXTURE_2D,We,J,Ue.width,Ue.height);else{let Ge=Ue.width,Re=Ue.height;for(let at=0;at>=1,Re>>=1}}else if(Le.length>0){if(j&&ke){const Ge=ut(Le[0]);t.texStorage2D(n.TEXTURE_2D,We,J,Ge.width,Ge.height)}for(let Ge=0,Re=Le.length;Ge0&&We++;const Re=ut(He[0]);t.texStorage2D(n.TEXTURE_CUBE_MAP,We,Le,Re.width,Re.height)}for(let Re=0;Re<6;Re++)if(Ue){j?ge&&t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Re,0,0,0,He[Re].width,He[Re].height,J,me,He[Re].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Re,0,Le,He[Re].width,He[Re].height,0,J,me,He[Re].data);for(let at=0;at>Se),pt=Math.max(1,P.height>>Se);Ie===n.TEXTURE_3D||Ie===n.TEXTURE_2D_ARRAY?t.texImage3D(Ie,Se,Tt,He,pt,P.depth,0,yt,je,null):t.texImage2D(Ie,Se,Tt,He,pt,0,yt,je,null)}t.bindFramebuffer(n.FRAMEBUFFER,k),Fe(P)?o.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,be,Ie,Ue.__webglTexture,0,Ve(P)):(Ie===n.TEXTURE_2D||Ie>=n.TEXTURE_CUBE_MAP_POSITIVE_X&&Ie<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,be,Ie,Ue.__webglTexture,Se),t.bindFramebuffer(n.FRAMEBUFFER,null)}function de(k,P,he){if(n.bindRenderbuffer(n.RENDERBUFFER,k),P.depthBuffer){const be=P.depthTexture,Ie=be&&be.isDepthTexture?be.type:null,Se=b(P.stencilBuffer,Ie),yt=P.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,je=Ve(P);Fe(P)?o.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,je,Se,P.width,P.height):he?n.renderbufferStorageMultisample(n.RENDERBUFFER,je,Se,P.width,P.height):n.renderbufferStorage(n.RENDERBUFFER,Se,P.width,P.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,yt,n.RENDERBUFFER,k)}else{const be=P.textures;for(let Ie=0;Ie{delete P.__boundDepthTexture,delete P.__depthDisposeCallback,be.removeEventListener("dispose",Ie)};be.addEventListener("dispose",Ie),P.__depthDisposeCallback=Ie}P.__boundDepthTexture=be}if(k.depthTexture&&!P.__autoAllocateDepthBuffer){if(he)throw new Error("target.depthTexture not supported in Cube render targets");const be=k.texture.mipmaps;be&&be.length>0?it(P.__webglFramebuffer[0],k):it(P.__webglFramebuffer,k)}else if(he){P.__webglDepthbuffer=[];for(let be=0;be<6;be++)if(t.bindFramebuffer(n.FRAMEBUFFER,P.__webglFramebuffer[be]),P.__webglDepthbuffer[be]===void 0)P.__webglDepthbuffer[be]=n.createRenderbuffer(),de(P.__webglDepthbuffer[be],k,!1);else{const Ie=k.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Se=P.__webglDepthbuffer[be];n.bindRenderbuffer(n.RENDERBUFFER,Se),n.framebufferRenderbuffer(n.FRAMEBUFFER,Ie,n.RENDERBUFFER,Se)}}else{const be=k.texture.mipmaps;if(be&&be.length>0?t.bindFramebuffer(n.FRAMEBUFFER,P.__webglFramebuffer[0]):t.bindFramebuffer(n.FRAMEBUFFER,P.__webglFramebuffer),P.__webglDepthbuffer===void 0)P.__webglDepthbuffer=n.createRenderbuffer(),de(P.__webglDepthbuffer,k,!1);else{const Ie=k.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Se=P.__webglDepthbuffer;n.bindRenderbuffer(n.RENDERBUFFER,Se),n.framebufferRenderbuffer(n.FRAMEBUFFER,Ie,n.RENDERBUFFER,Se)}}t.bindFramebuffer(n.FRAMEBUFFER,null)}function lt(k,P,he){const be=i.get(k);P!==void 0&&Ze(be.__webglFramebuffer,k,k.texture,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,0),he!==void 0&&wt(k)}function Qe(k){const P=k.texture,he=i.get(k),be=i.get(P);k.addEventListener("dispose",L);const Ie=k.textures,Se=k.isWebGLCubeRenderTarget===!0,yt=Ie.length>1;if(yt||(be.__webglTexture===void 0&&(be.__webglTexture=n.createTexture()),be.__version=P.version,s.memory.textures++),Se){he.__webglFramebuffer=[];for(let je=0;je<6;je++)if(P.mipmaps&&P.mipmaps.length>0){he.__webglFramebuffer[je]=[];for(let Tt=0;Tt0){he.__webglFramebuffer=[];for(let je=0;je0&&Fe(k)===!1){he.__webglMultisampledFramebuffer=n.createFramebuffer(),he.__webglColorRenderbuffer=[],t.bindFramebuffer(n.FRAMEBUFFER,he.__webglMultisampledFramebuffer);for(let je=0;je0)for(let Tt=0;Tt0)for(let Tt=0;Tt0){if(Fe(k)===!1){const P=k.textures,he=k.width,be=k.height;let Ie=n.COLOR_BUFFER_BIT;const Se=k.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,yt=i.get(k),je=P.length>1;if(je)for(let vt=0;vt0?t.bindFramebuffer(n.DRAW_FRAMEBUFFER,yt.__webglFramebuffer[0]):t.bindFramebuffer(n.DRAW_FRAMEBUFFER,yt.__webglFramebuffer);for(let vt=0;vt0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&P.__useRenderToTexture!==!1}function $e(k){const P=s.render.frame;d.get(k)!==P&&(d.set(k,P),k.update())}function Je(k,P){const he=k.colorSpace,be=k.format,Ie=k.type;return k.isCompressedTexture===!0||k.isVideoTexture===!0||he!==Xn&&he!==Xr&&(tn.getTransfer(he)===Dn?(be!==ai||Ie!==Ni)&&dt("WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):Ht("WebGLTextures: Unsupported texture color space:",he)),P}function ut(k){return typeof HTMLImageElement<"u"&&k instanceof HTMLImageElement?(u.width=k.naturalWidth||k.width,u.height=k.naturalHeight||k.height):typeof VideoFrame<"u"&&k instanceof VideoFrame?(u.width=k.displayWidth,u.height=k.displayHeight):(u.width=k.width,u.height=k.height),u}this.allocateTextureUnit=K,this.resetTextureUnits=W,this.setTexture2D=ae,this.setTexture2DArray=X,this.setTexture3D=te,this.setTextureCube=Q,this.rebindTextures=lt,this.setupRenderTarget=Qe,this.updateRenderTargetMipmap=Ee,this.updateMultisampleRenderTarget=Oe,this.setupDepthRenderbuffer=wt,this.setupFrameBufferTexture=Ze,this.useMultisampledRTT=Fe}function I7(n,e){function t(i,r=Xr){let a;const s=tn.getTransfer(r);if(i===Ni)return n.UNSIGNED_BYTE;if(i===NS)return n.UNSIGNED_SHORT_4_4_4_4;if(i===OS)return n.UNSIGNED_SHORT_5_5_5_1;if(i===Zw)return n.UNSIGNED_INT_5_9_9_9_REV;if(i===Qw)return n.UNSIGNED_INT_10F_11F_11F_REV;if(i===CS)return n.BYTE;if(i===DS)return n.SHORT;if(i===Uh)return n.UNSIGNED_SHORT;if(i===$g)return n.INT;if(i===to)return n.UNSIGNED_INT;if(i===fi)return n.FLOAT;if(i===Jn)return n.HALF_FLOAT;if(i===Kw)return n.ALPHA;if(i===Jw)return n.RGB;if(i===ai)return n.RGBA;if(i===yp)return n.DEPTH_COMPONENT;if(i===zh)return n.DEPTH_STENCIL;if(i===Qs)return n.RED;if(i===ev)return n.RED_INTEGER;if(i===Mo)return n.RG;if(i===LS)return n.RG_INTEGER;if(i===IS)return n.RGBA_INTEGER;if(i===Q0||i===K0||i===J0||i===$0)if(s===Dn)if(a=e.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(i===Q0)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(i===K0)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(i===J0)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(i===$0)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=e.get("WEBGL_compressed_texture_s3tc"),a!==null){if(i===Q0)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(i===K0)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(i===J0)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(i===$0)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(i===ty||i===ny||i===iy||i===ry)if(a=e.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(i===ty)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(i===ny)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(i===iy)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(i===ry)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(i===ay||i===sy||i===oy)if(a=e.get("WEBGL_compressed_texture_etc"),a!==null){if(i===ay||i===sy)return s===Dn?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(i===oy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(i===ly||i===cy||i===uy||i===hy||i===dy||i===fy||i===py||i===my||i===gy||i===vy||i===_y||i===xy||i===yy||i===Sy)if(a=e.get("WEBGL_compressed_texture_astc"),a!==null){if(i===ly)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(i===cy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(i===uy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(i===hy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(i===dy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(i===fy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(i===py)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(i===my)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(i===gy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(i===vy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(i===_y)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(i===xy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(i===yy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(i===Sy)return s===Dn?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(i===Ty||i===Ey||i===by)if(a=e.get("EXT_texture_compression_bptc"),a!==null){if(i===Ty)return s===Dn?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(i===Ey)return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(i===by)return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(i===My||i===Ay||i===wy||i===Ry)if(a=e.get("EXT_texture_compression_rgtc"),a!==null){if(i===My)return a.COMPRESSED_RED_RGTC1_EXT;if(i===Ay)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(i===wy)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(i===Ry)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return i===Ph?n.UNSIGNED_INT_24_8:n[i]!==void 0?n[i]:null}return{convert:t}}const IJ=` void main() { gl_Position = vec4( position, 1.0 ); @@ -4008,7 +4008,7 @@ void main() { } -}`;class PJ{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){const i=new uR(e.texture);(e.depthNear!==t.depthNear||e.depthFar!==t.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=i}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,i=new Oi({vertexShader:IJ,fragmentShader:UJ,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new jn(new uu(20,20),i)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class zJ extends Mi{constructor(e,t){super();const i=this;let r=null,a=1,s=null,o="local-floor",l=1,u=null,d=null,f=null,p=null,m=null,v=null;const x=typeof XRWebGLBinding<"u",S=new PJ,_={},T=t.getContextAttributes();let E=null,b=null;const R=[],w=[],L=new re;let U=null;const N=new si;N.viewport=new Pt;const C=new si;C.viewport=new Pt;const z=[N,C],W=new y7;let K=null,oe=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(ve){let we=R[ve];return we===void 0&&(we=new c1,R[ve]=we),we.getTargetRaySpace()},this.getControllerGrip=function(ve){let we=R[ve];return we===void 0&&(we=new c1,R[ve]=we),we.getGripSpace()},this.getHand=function(ve){let we=R[ve];return we===void 0&&(we=new c1,R[ve]=we),we.getHandSpace()};function ae(ve){const we=w.indexOf(ve.inputSource);if(we===-1)return;const Ze=R[we];Ze!==void 0&&(Ze.update(ve.inputSource,ve.frame,u||s),Ze.dispatchEvent({type:ve.type,data:ve.inputSource}))}function X(){r.removeEventListener("select",ae),r.removeEventListener("selectstart",ae),r.removeEventListener("selectend",ae),r.removeEventListener("squeeze",ae),r.removeEventListener("squeezestart",ae),r.removeEventListener("squeezeend",ae),r.removeEventListener("end",X),r.removeEventListener("inputsourceschange",te);for(let ve=0;ve=0&&(w[de]=null,R[de].disconnect(Ze))}for(let we=0;we=w.length){w.push(Ze),de=wt;break}else if(w[wt]===null){w[wt]=Ze,de=wt;break}if(de===-1)break}const it=R[de];it&&it.connect(Ze)}}const Q=new D,ce=new D;function se(ve,we,Ze){Q.setFromMatrixPosition(we.matrixWorld),ce.setFromMatrixPosition(Ze.matrixWorld);const de=Q.distanceTo(ce),it=we.projectionMatrix.elements,wt=Ze.projectionMatrix.elements,ct=it[14]/(it[10]-1),Qe=it[14]/(it[10]+1),Ee=(it[9]+1)/it[5],V=(it[9]-1)/it[5],Ae=(it[8]-1)/it[0],Oe=(wt[8]+1)/wt[0],Ve=ct*Ae,Fe=ct*Oe,$e=de/(-Ae+Oe),Je=$e*-Ae;if(we.matrixWorld.decompose(ve.position,ve.quaternion,ve.scale),ve.translateX(Je),ve.translateZ($e),ve.matrixWorld.compose(ve.position,ve.quaternion,ve.scale),ve.matrixWorldInverse.copy(ve.matrixWorld).invert(),it[10]===-1)ve.projectionMatrix.copy(we.projectionMatrix),ve.projectionMatrixInverse.copy(we.projectionMatrixInverse);else{const ht=ct+$e,k=Qe+$e,P=Ve-Je,he=Fe+(de-Je),be=Ee*Qe/k*ht,Ie=V*Qe/k*ht;ve.projectionMatrix.makePerspective(P,he,be,Ie,ht,k),ve.projectionMatrixInverse.copy(ve.projectionMatrix).invert()}}function De(ve,we){we===null?ve.matrixWorld.copy(ve.matrix):ve.matrixWorld.multiplyMatrices(we.matrixWorld,ve.matrix),ve.matrixWorldInverse.copy(ve.matrixWorld).invert()}this.updateCamera=function(ve){if(r===null)return;let we=ve.near,Ze=ve.far;S.texture!==null&&(S.depthNear>0&&(we=S.depthNear),S.depthFar>0&&(Ze=S.depthFar)),W.near=C.near=N.near=we,W.far=C.far=N.far=Ze,(K!==W.near||oe!==W.far)&&(r.updateRenderState({depthNear:W.near,depthFar:W.far}),K=W.near,oe=W.far),W.layers.mask=ve.layers.mask|6,N.layers.mask=W.layers.mask&3,C.layers.mask=W.layers.mask&5;const de=ve.parent,it=W.cameras;De(W,de);for(let wt=0;wt0&&(S.alphaTest.value=_.alphaTest);const T=e.get(_),E=T.envMap,b=T.envMapRotation;E&&(S.envMap.value=E,Wu.copy(b),Wu.x*=-1,Wu.y*=-1,Wu.z*=-1,E.isCubeTexture&&E.isRenderTargetTexture===!1&&(Wu.y*=-1,Wu.z*=-1),S.envMapRotation.value.setFromMatrix4(BJ.makeRotationFromEuler(Wu)),S.flipEnvMap.value=E.isCubeTexture&&E.isRenderTargetTexture===!1?-1:1,S.reflectivity.value=_.reflectivity,S.ior.value=_.ior,S.refractionRatio.value=_.refractionRatio),_.lightMap&&(S.lightMap.value=_.lightMap,S.lightMapIntensity.value=_.lightMapIntensity,t(_.lightMap,S.lightMapTransform)),_.aoMap&&(S.aoMap.value=_.aoMap,S.aoMapIntensity.value=_.aoMapIntensity,t(_.aoMap,S.aoMapTransform))}function s(S,_){S.diffuse.value.copy(_.color),S.opacity.value=_.opacity,_.map&&(S.map.value=_.map,t(_.map,S.mapTransform))}function o(S,_){S.dashSize.value=_.dashSize,S.totalSize.value=_.dashSize+_.gapSize,S.scale.value=_.scale}function l(S,_,T,E){S.diffuse.value.copy(_.color),S.opacity.value=_.opacity,S.size.value=_.size*T,S.scale.value=E*.5,_.map&&(S.map.value=_.map,t(_.map,S.uvTransform)),_.alphaMap&&(S.alphaMap.value=_.alphaMap,t(_.alphaMap,S.alphaMapTransform)),_.alphaTest>0&&(S.alphaTest.value=_.alphaTest)}function u(S,_){S.diffuse.value.copy(_.color),S.opacity.value=_.opacity,S.rotation.value=_.rotation,_.map&&(S.map.value=_.map,t(_.map,S.mapTransform)),_.alphaMap&&(S.alphaMap.value=_.alphaMap,t(_.alphaMap,S.alphaMapTransform)),_.alphaTest>0&&(S.alphaTest.value=_.alphaTest)}function d(S,_){S.specular.value.copy(_.specular),S.shininess.value=Math.max(_.shininess,1e-4)}function f(S,_){_.gradientMap&&(S.gradientMap.value=_.gradientMap)}function p(S,_){S.metalness.value=_.metalness,_.metalnessMap&&(S.metalnessMap.value=_.metalnessMap,t(_.metalnessMap,S.metalnessMapTransform)),S.roughness.value=_.roughness,_.roughnessMap&&(S.roughnessMap.value=_.roughnessMap,t(_.roughnessMap,S.roughnessMapTransform)),_.envMap&&(S.envMapIntensity.value=_.envMapIntensity)}function m(S,_,T){S.ior.value=_.ior,_.sheen>0&&(S.sheenColor.value.copy(_.sheenColor).multiplyScalar(_.sheen),S.sheenRoughness.value=_.sheenRoughness,_.sheenColorMap&&(S.sheenColorMap.value=_.sheenColorMap,t(_.sheenColorMap,S.sheenColorMapTransform)),_.sheenRoughnessMap&&(S.sheenRoughnessMap.value=_.sheenRoughnessMap,t(_.sheenRoughnessMap,S.sheenRoughnessMapTransform))),_.clearcoat>0&&(S.clearcoat.value=_.clearcoat,S.clearcoatRoughness.value=_.clearcoatRoughness,_.clearcoatMap&&(S.clearcoatMap.value=_.clearcoatMap,t(_.clearcoatMap,S.clearcoatMapTransform)),_.clearcoatRoughnessMap&&(S.clearcoatRoughnessMap.value=_.clearcoatRoughnessMap,t(_.clearcoatRoughnessMap,S.clearcoatRoughnessMapTransform)),_.clearcoatNormalMap&&(S.clearcoatNormalMap.value=_.clearcoatNormalMap,t(_.clearcoatNormalMap,S.clearcoatNormalMapTransform),S.clearcoatNormalScale.value.copy(_.clearcoatNormalScale),_.side===ki&&S.clearcoatNormalScale.value.negate())),_.dispersion>0&&(S.dispersion.value=_.dispersion),_.iridescence>0&&(S.iridescence.value=_.iridescence,S.iridescenceIOR.value=_.iridescenceIOR,S.iridescenceThicknessMinimum.value=_.iridescenceThicknessRange[0],S.iridescenceThicknessMaximum.value=_.iridescenceThicknessRange[1],_.iridescenceMap&&(S.iridescenceMap.value=_.iridescenceMap,t(_.iridescenceMap,S.iridescenceMapTransform)),_.iridescenceThicknessMap&&(S.iridescenceThicknessMap.value=_.iridescenceThicknessMap,t(_.iridescenceThicknessMap,S.iridescenceThicknessMapTransform))),_.transmission>0&&(S.transmission.value=_.transmission,S.transmissionSamplerMap.value=T.texture,S.transmissionSamplerSize.value.set(T.width,T.height),_.transmissionMap&&(S.transmissionMap.value=_.transmissionMap,t(_.transmissionMap,S.transmissionMapTransform)),S.thickness.value=_.thickness,_.thicknessMap&&(S.thicknessMap.value=_.thicknessMap,t(_.thicknessMap,S.thicknessMapTransform)),S.attenuationDistance.value=_.attenuationDistance,S.attenuationColor.value.copy(_.attenuationColor)),_.anisotropy>0&&(S.anisotropyVector.value.set(_.anisotropy*Math.cos(_.anisotropyRotation),_.anisotropy*Math.sin(_.anisotropyRotation)),_.anisotropyMap&&(S.anisotropyMap.value=_.anisotropyMap,t(_.anisotropyMap,S.anisotropyMapTransform))),S.specularIntensity.value=_.specularIntensity,S.specularColor.value.copy(_.specularColor),_.specularColorMap&&(S.specularColorMap.value=_.specularColorMap,t(_.specularColorMap,S.specularColorMapTransform)),_.specularIntensityMap&&(S.specularIntensityMap.value=_.specularIntensityMap,t(_.specularIntensityMap,S.specularIntensityMapTransform))}function v(S,_){_.matcap&&(S.matcap.value=_.matcap)}function x(S,_){const T=e.get(_).light;S.referencePosition.value.setFromMatrixPosition(T.matrixWorld),S.nearDistance.value=T.shadow.camera.near,S.farDistance.value=T.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:r}}function HJ(n,e,t,i){let r={},a={},s=[];const o=n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS);function l(T,E){const b=E.program;i.uniformBlockBinding(T,b)}function u(T,E){let b=r[T.id];b===void 0&&(v(T),b=d(T),r[T.id]=b,T.addEventListener("dispose",S));const R=E.program;i.updateUBOMapping(T,R);const w=e.render.frame;a[T.id]!==w&&(p(T),a[T.id]=w)}function d(T){const E=f();T.__bindingPointIndex=E;const b=n.createBuffer(),R=T.__size,w=T.usage;return n.bindBuffer(n.UNIFORM_BUFFER,b),n.bufferData(n.UNIFORM_BUFFER,R,w),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,E,b),b}function f(){for(let T=0;T0&&(b+=R-w),T.__size=b,T.__cache={},this}function x(T){const E={boundary:0,storage:0};return typeof T=="number"||typeof T=="boolean"?(E.boundary=4,E.storage=4):T.isVector2?(E.boundary=8,E.storage=8):T.isVector3||T.isColor?(E.boundary=16,E.storage=12):T.isVector4?(E.boundary=16,E.storage=16):T.isMatrix3?(E.boundary=48,E.storage=48):T.isMatrix4?(E.boundary=64,E.storage=64):T.isTexture?dt("WebGLRenderer: Texture samplers can not be part of an uniforms group."):dt("WebGLRenderer: Unsupported uniform value type.",T),E}function S(T){const E=T.target;E.removeEventListener("dispose",S);const b=s.indexOf(E.__bindingPointIndex);s.splice(b,1),n.deleteBuffer(r[E.id]),delete r[E.id],delete a[E.id]}function _(){for(const T in r)n.deleteBuffer(r[T]);s=[],r={},a={}}return{bind:l,update:u,dispose:_}}const VJ=new Uint16Array([11481,15204,11534,15171,11808,15015,12385,14843,12894,14716,13396,14600,13693,14483,13976,14366,14237,14171,14405,13961,14511,13770,14605,13598,14687,13444,14760,13305,14822,13066,14876,12857,14923,12675,14963,12517,14997,12379,15025,12230,15049,12023,15070,11843,15086,11687,15100,11551,15111,11433,15120,11330,15127,11217,15132,11060,15135,10922,15138,10801,15139,10695,15139,10600,13012,14923,13020,14917,13064,14886,13176,14800,13349,14666,13513,14526,13724,14398,13960,14230,14200,14020,14383,13827,14488,13651,14583,13491,14667,13348,14740,13132,14803,12908,14856,12713,14901,12542,14938,12394,14968,12241,14992,12017,15010,11822,15024,11654,15034,11507,15041,11380,15044,11269,15044,11081,15042,10913,15037,10764,15031,10635,15023,10520,15014,10419,15003,10330,13657,14676,13658,14673,13670,14660,13698,14622,13750,14547,13834,14442,13956,14317,14112,14093,14291,13889,14407,13704,14499,13538,14586,13389,14664,13201,14733,12966,14792,12758,14842,12577,14882,12418,14915,12272,14940,12033,14959,11826,14972,11646,14980,11490,14983,11355,14983,11212,14979,11008,14971,10830,14961,10675,14950,10540,14936,10420,14923,10315,14909,10204,14894,10041,14089,14460,14090,14459,14096,14452,14112,14431,14141,14388,14186,14305,14252,14130,14341,13941,14399,13756,14467,13585,14539,13430,14610,13272,14677,13026,14737,12808,14790,12617,14833,12449,14869,12303,14896,12065,14916,11845,14929,11655,14937,11490,14939,11347,14936,11184,14930,10970,14921,10783,14912,10621,14900,10480,14885,10356,14867,10247,14848,10062,14827,9894,14805,9745,14400,14208,14400,14206,14402,14198,14406,14174,14415,14122,14427,14035,14444,13913,14469,13767,14504,13613,14548,13463,14598,13324,14651,13082,14704,12858,14752,12658,14795,12483,14831,12330,14860,12106,14881,11875,14895,11675,14903,11501,14905,11351,14903,11178,14900,10953,14892,10757,14880,10589,14865,10442,14847,10313,14827,10162,14805,9965,14782,9792,14757,9642,14731,9507,14562,13883,14562,13883,14563,13877,14566,13862,14570,13830,14576,13773,14584,13689,14595,13582,14613,13461,14637,13336,14668,13120,14704,12897,14741,12695,14776,12516,14808,12358,14835,12150,14856,11910,14870,11701,14878,11519,14882,11361,14884,11187,14880,10951,14871,10748,14858,10572,14842,10418,14823,10286,14801,10099,14777,9897,14751,9722,14725,9567,14696,9430,14666,9309,14702,13604,14702,13604,14702,13600,14703,13591,14705,13570,14707,13533,14709,13477,14712,13400,14718,13305,14727,13106,14743,12907,14762,12716,14784,12539,14807,12380,14827,12190,14844,11943,14855,11727,14863,11539,14870,11376,14871,11204,14868,10960,14858,10748,14845,10565,14829,10406,14809,10269,14786,10058,14761,9852,14734,9671,14705,9512,14674,9374,14641,9253,14608,9076,14821,13366,14821,13365,14821,13364,14821,13358,14821,13344,14821,13320,14819,13252,14817,13145,14815,13011,14814,12858,14817,12698,14823,12539,14832,12389,14841,12214,14850,11968,14856,11750,14861,11558,14866,11390,14867,11226,14862,10972,14853,10754,14840,10565,14823,10401,14803,10259,14780,10032,14754,9820,14725,9635,14694,9473,14661,9333,14627,9203,14593,8988,14557,8798,14923,13014,14922,13014,14922,13012,14922,13004,14920,12987,14919,12957,14915,12907,14909,12834,14902,12738,14894,12623,14888,12498,14883,12370,14880,12203,14878,11970,14875,11759,14873,11569,14874,11401,14872,11243,14865,10986,14855,10762,14842,10568,14825,10401,14804,10255,14781,10017,14754,9799,14725,9611,14692,9445,14658,9301,14623,9139,14587,8920,14548,8729,14509,8562,15008,12672,15008,12672,15008,12671,15007,12667,15005,12656,15001,12637,14997,12605,14989,12556,14978,12490,14966,12407,14953,12313,14940,12136,14927,11934,14914,11742,14903,11563,14896,11401,14889,11247,14879,10992,14866,10767,14851,10570,14833,10400,14812,10252,14789,10007,14761,9784,14731,9592,14698,9424,14663,9279,14627,9088,14588,8868,14548,8676,14508,8508,14467,8360,15080,12386,15080,12386,15079,12385,15078,12383,15076,12378,15072,12367,15066,12347,15057,12315,15045,12253,15030,12138,15012,11998,14993,11845,14972,11685,14951,11530,14935,11383,14920,11228,14904,10981,14887,10762,14870,10567,14850,10397,14827,10248,14803,9997,14774,9771,14743,9578,14710,9407,14674,9259,14637,9048,14596,8826,14555,8632,14514,8464,14471,8317,14427,8182,15139,12008,15139,12008,15138,12008,15137,12007,15135,12003,15130,11990,15124,11969,15115,11929,15102,11872,15086,11794,15064,11693,15041,11581,15013,11459,14987,11336,14966,11170,14944,10944,14921,10738,14898,10552,14875,10387,14850,10239,14824,9983,14794,9758,14762,9563,14728,9392,14692,9244,14653,9014,14611,8791,14569,8597,14526,8427,14481,8281,14436,8110,14391,7885,15188,11617,15188,11617,15187,11617,15186,11618,15183,11617,15179,11612,15173,11601,15163,11581,15150,11546,15133,11495,15110,11427,15083,11346,15051,11246,15024,11057,14996,10868,14967,10687,14938,10517,14911,10362,14882,10206,14853,9956,14821,9737,14787,9543,14752,9375,14715,9228,14675,8980,14632,8760,14589,8565,14544,8395,14498,8248,14451,8049,14404,7824,14357,7630,15228,11298,15228,11298,15227,11299,15226,11301,15223,11303,15219,11302,15213,11299,15204,11290,15191,11271,15174,11217,15150,11129,15119,11015,15087,10886,15057,10744,15024,10599,14990,10455,14957,10318,14924,10143,14891,9911,14856,9701,14820,9516,14782,9352,14744,9200,14703,8946,14659,8725,14615,8533,14568,8366,14521,8220,14472,7992,14423,7770,14374,7578,14315,7408,15260,10819,15260,10819,15259,10822,15258,10826,15256,10832,15251,10836,15246,10841,15237,10838,15225,10821,15207,10788,15183,10734,15151,10660,15120,10571,15087,10469,15049,10359,15012,10249,14974,10041,14937,9837,14900,9647,14860,9475,14820,9320,14779,9147,14736,8902,14691,8688,14646,8499,14598,8335,14549,8189,14499,7940,14448,7720,14397,7529,14347,7363,14256,7218,15285,10410,15285,10411,15285,10413,15284,10418,15282,10425,15278,10434,15272,10442,15264,10449,15252,10445,15235,10433,15210,10403,15179,10358,15149,10301,15113,10218,15073,10059,15033,9894,14991,9726,14951,9565,14909,9413,14865,9273,14822,9073,14777,8845,14730,8641,14682,8459,14633,8300,14583,8129,14531,7883,14479,7670,14426,7482,14373,7321,14305,7176,14201,6939,15305,9939,15305,9940,15305,9945,15304,9955,15302,9967,15298,9989,15293,10010,15286,10033,15274,10044,15258,10045,15233,10022,15205,9975,15174,9903,15136,9808,15095,9697,15053,9578,15009,9451,14965,9327,14918,9198,14871,8973,14825,8766,14775,8579,14725,8408,14675,8259,14622,8058,14569,7821,14515,7615,14460,7435,14405,7276,14350,7108,14256,6866,14149,6653,15321,9444,15321,9445,15321,9448,15320,9458,15317,9470,15314,9490,15310,9515,15302,9540,15292,9562,15276,9579,15251,9577,15226,9559,15195,9519,15156,9463,15116,9389,15071,9304,15025,9208,14978,9023,14927,8838,14878,8661,14827,8496,14774,8344,14722,8206,14667,7973,14612,7749,14556,7555,14499,7382,14443,7229,14385,7025,14322,6791,14210,6588,14100,6409,15333,8920,15333,8921,15332,8927,15332,8943,15329,8965,15326,9002,15322,9048,15316,9106,15307,9162,15291,9204,15267,9221,15244,9221,15212,9196,15175,9134,15133,9043,15088,8930,15040,8801,14990,8665,14938,8526,14886,8391,14830,8261,14775,8087,14719,7866,14661,7664,14603,7482,14544,7322,14485,7178,14426,6936,14367,6713,14281,6517,14166,6348,14054,6198,15341,8360,15341,8361,15341,8366,15341,8379,15339,8399,15336,8431,15332,8473,15326,8527,15318,8585,15302,8632,15281,8670,15258,8690,15227,8690,15191,8664,15149,8612,15104,8543,15055,8456,15001,8360,14948,8259,14892,8122,14834,7923,14776,7734,14716,7558,14656,7397,14595,7250,14534,7070,14472,6835,14410,6628,14350,6443,14243,6283,14125,6135,14010,5889,15348,7715,15348,7717,15348,7725,15347,7745,15345,7780,15343,7836,15339,7905,15334,8e3,15326,8103,15310,8193,15293,8239,15270,8270,15240,8287,15204,8283,15163,8260,15118,8223,15067,8143,15014,8014,14958,7873,14899,7723,14839,7573,14778,7430,14715,7293,14652,7164,14588,6931,14524,6720,14460,6531,14396,6362,14330,6210,14207,6015,14086,5781,13969,5576,15352,7114,15352,7116,15352,7128,15352,7159,15350,7195,15348,7237,15345,7299,15340,7374,15332,7457,15317,7544,15301,7633,15280,7703,15251,7754,15216,7775,15176,7767,15131,7733,15079,7670,15026,7588,14967,7492,14906,7387,14844,7278,14779,7171,14714,6965,14648,6770,14581,6587,14515,6420,14448,6269,14382,6123,14299,5881,14172,5665,14049,5477,13929,5310,15355,6329,15355,6330,15355,6339,15355,6362,15353,6410,15351,6472,15349,6572,15344,6688,15337,6835,15323,6985,15309,7142,15287,7220,15260,7277,15226,7310,15188,7326,15142,7318,15090,7285,15036,7239,14976,7177,14914,7045,14849,6892,14782,6736,14714,6581,14645,6433,14576,6293,14506,6164,14438,5946,14369,5733,14270,5540,14140,5369,14014,5216,13892,5043,15357,5483,15357,5484,15357,5496,15357,5528,15356,5597,15354,5692,15351,5835,15347,6011,15339,6195,15328,6317,15314,6446,15293,6566,15268,6668,15235,6746,15197,6796,15152,6811,15101,6790,15046,6748,14985,6673,14921,6583,14854,6479,14785,6371,14714,6259,14643,6149,14571,5946,14499,5750,14428,5567,14358,5401,14242,5250,14109,5111,13980,4870,13856,4657,15359,4555,15359,4557,15358,4573,15358,4633,15357,4715,15355,4841,15353,5061,15349,5216,15342,5391,15331,5577,15318,5770,15299,5967,15274,6150,15243,6223,15206,6280,15161,6310,15111,6317,15055,6300,14994,6262,14928,6208,14860,6141,14788,5994,14715,5838,14641,5684,14566,5529,14492,5384,14418,5247,14346,5121,14216,4892,14079,4682,13948,4496,13822,4330,15359,3498,15359,3501,15359,3520,15359,3598,15358,3719,15356,3860,15355,4137,15351,4305,15344,4563,15334,4809,15321,5116,15303,5273,15280,5418,15250,5547,15214,5653,15170,5722,15120,5761,15064,5763,15002,5733,14935,5673,14865,5597,14792,5504,14716,5400,14640,5294,14563,5185,14486,5041,14410,4841,14335,4655,14191,4482,14051,4325,13918,4183,13790,4012,15360,2282,15360,2285,15360,2306,15360,2401,15359,2547,15357,2748,15355,3103,15352,3349,15345,3675,15336,4020,15324,4272,15307,4496,15285,4716,15255,4908,15220,5086,15178,5170,15128,5214,15072,5234,15010,5231,14943,5206,14871,5166,14796,5102,14718,4971,14639,4833,14559,4687,14480,4541,14402,4401,14315,4268,14167,4142,14025,3958,13888,3747,13759,3556,15360,923,15360,925,15360,946,15360,1052,15359,1214,15357,1494,15356,1892,15352,2274,15346,2663,15338,3099,15326,3393,15309,3679,15288,3980,15260,4183,15226,4325,15185,4437,15136,4517,15080,4570,15018,4591,14950,4581,14877,4545,14800,4485,14720,4411,14638,4325,14556,4231,14475,4136,14395,3988,14297,3803,14145,3628,13999,3465,13861,3314,13729,3177,15360,263,15360,264,15360,272,15360,325,15359,407,15358,548,15356,780,15352,1144,15347,1580,15339,2099,15328,2425,15312,2795,15292,3133,15264,3329,15232,3517,15191,3689,15143,3819,15088,3923,15025,3978,14956,3999,14882,3979,14804,3931,14722,3855,14639,3756,14554,3645,14470,3529,14388,3409,14279,3289,14124,3173,13975,3055,13834,2848,13701,2658,15360,49,15360,49,15360,52,15360,75,15359,111,15358,201,15356,283,15353,519,15348,726,15340,1045,15329,1415,15314,1795,15295,2173,15269,2410,15237,2649,15197,2866,15150,3054,15095,3140,15032,3196,14963,3228,14888,3236,14808,3224,14725,3191,14639,3146,14553,3088,14466,2976,14382,2836,14262,2692,14103,2549,13952,2409,13808,2278,13674,2154,15360,4,15360,4,15360,4,15360,13,15359,33,15358,59,15357,112,15353,199,15348,302,15341,456,15331,628,15316,827,15297,1082,15272,1332,15241,1601,15202,1851,15156,2069,15101,2172,15039,2256,14970,2314,14894,2348,14813,2358,14728,2344,14640,2311,14551,2263,14463,2203,14376,2133,14247,2059,14084,1915,13930,1761,13784,1609,13648,1464,15360,0,15360,0,15360,0,15360,3,15359,18,15358,26,15357,53,15354,80,15348,97,15341,165,15332,238,15318,326,15299,427,15275,529,15245,654,15207,771,15161,885,15108,994,15046,1089,14976,1170,14900,1229,14817,1266,14731,1284,14641,1282,14550,1260,14460,1223,14370,1174,14232,1116,14066,1050,13909,981,13761,910,13623,839]);let al=null;function GJ(){return al===null&&(al=new Ur(VJ,32,32,Mo,Jn),al.minFilter=Bt,al.magFilter=Bt,al.wrapS=Wi,al.wrapT=Wi,al.generateMipmaps=!1,al.needsUpdate=!0),al}class uT{constructor(e={}){const{canvas:t=D9(),context:i=null,depth:r=!0,stencil:a=!1,alpha:s=!1,antialias:o=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:u=!1,powerPreference:d="default",failIfMajorPerformanceCaveat:f=!1,reversedDepthBuffer:p=!1}=e;this.isWebGLRenderer=!0;let m;if(i!==null){if(typeof WebGLRenderingContext<"u"&&i instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");m=i.getContextAttributes().alpha}else m=s;const v=new Set([IS,LS,ev]),x=new Set([Ni,to,Uh,Ph,NS,OS]),S=new Uint32Array(4),_=new Int32Array(4);let T=null,E=null;const b=[],R=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=As,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const w=this;let L=!1;this._outputColorSpace=mn;let U=0,N=0,C=null,z=-1,W=null;const K=new Pt,oe=new Pt;let ae=null;const X=new Ye(0);let te=0,Q=t.width,ce=t.height,se=1,De=null,Xe=null;const nt=new Pt(0,0,Q,ce),tt=new Pt(0,0,Q,ce);let xt=!1;const ve=new ed;let we=!1,Ze=!1;const de=new Me,it=new D,wt=new Pt,ct={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let Qe=!1;function Ee(){return C===null?se:1}let V=i;function Ae(I,G){return t.getContext(I,G)}try{const I={alpha:!0,depth:r,stencil:a,antialias:o,premultipliedAlpha:l,preserveDrawingBuffer:u,powerPreference:d,failIfMajorPerformanceCaveat:f};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${$s}`),t.addEventListener("webglcontextlost",Ge,!1),t.addEventListener("webglcontextrestored",Re,!1),t.addEventListener("webglcontextcreationerror",at,!1),V===null){const G="webgl2";if(V=Ae(G,I),V===null)throw Ae(G)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(I){throw I("WebGLRenderer: "+I.message),I}let Oe,Ve,Fe,$e,Je,ht,k,P,he,be,Ie,Se,yt,je,Tt,vt,Ue,He,pt,J,me,Le,j,ke;function ge(){Oe=new JQ(V),Oe.init(),Le=new I7(V,Oe),Ve=new kQ(V,Oe,e,Le),Fe=new OJ(V,Oe),Ve.reversedDepthBuffer&&p&&Fe.buffers.depth.setReversed(!0),$e=new tK(V),Je=new xJ,ht=new LJ(V,Oe,Fe,Je,Ve,Le,$e),k=new XQ(w),P=new KQ(w),he=new aj(V),j=new VQ(V,he),be=new $Q(V,he,$e,j),Ie=new iK(V,be,he,$e),pt=new nK(V,Ve,ht),vt=new WQ(Je),Se=new _J(w,k,P,Oe,Ve,j,vt),yt=new FJ(w,Je),je=new SJ,Tt=new wJ(Oe),He=new HQ(w,k,P,Fe,Ie,m,l),Ue=new DJ(w,Ie,Ve),ke=new HJ(V,$e,Ve,Fe),J=new GQ(V,Oe,$e),me=new eK(V,Oe,$e),$e.programs=Se.programs,w.capabilities=Ve,w.extensions=Oe,w.properties=Je,w.renderLists=je,w.shadowMap=Ue,w.state=Fe,w.info=$e}ge();const We=new zJ(w,V);this.xr=We,this.getContext=function(){return V},this.getContextAttributes=function(){return V.getContextAttributes()},this.forceContextLoss=function(){const I=Oe.get("WEBGL_lose_context");I&&I.loseContext()},this.forceContextRestore=function(){const I=Oe.get("WEBGL_lose_context");I&&I.restoreContext()},this.getPixelRatio=function(){return se},this.setPixelRatio=function(I){I!==void 0&&(se=I,this.setSize(Q,ce,!1))},this.getSize=function(I){return I.set(Q,ce)},this.setSize=function(I,G,Z=!0){if(We.isPresenting){dt("WebGLRenderer: Can't change size while VR device is presenting.");return}Q=I,ce=G,t.width=Math.floor(I*se),t.height=Math.floor(G*se),Z===!0&&(t.style.width=I+"px",t.style.height=G+"px"),this.setViewport(0,0,I,G)},this.getDrawingBufferSize=function(I){return I.set(Q*se,ce*se).floor()},this.setDrawingBufferSize=function(I,G,Z){Q=I,ce=G,se=Z,t.width=Math.floor(I*Z),t.height=Math.floor(G*Z),this.setViewport(0,0,I,G)},this.getCurrentViewport=function(I){return I.copy(K)},this.getViewport=function(I){return I.copy(nt)},this.setViewport=function(I,G,Z,F){I.isVector4?nt.set(I.x,I.y,I.z,I.w):nt.set(I,G,Z,F),Fe.viewport(K.copy(nt).multiplyScalar(se).round())},this.getScissor=function(I){return I.copy(tt)},this.setScissor=function(I,G,Z,F){I.isVector4?tt.set(I.x,I.y,I.z,I.w):tt.set(I,G,Z,F),Fe.scissor(oe.copy(tt).multiplyScalar(se).round())},this.getScissorTest=function(){return xt},this.setScissorTest=function(I){Fe.setScissorTest(xt=I)},this.setOpaqueSort=function(I){De=I},this.setTransparentSort=function(I){Xe=I},this.getClearColor=function(I){return I.copy(He.getClearColor())},this.setClearColor=function(){He.setClearColor(...arguments)},this.getClearAlpha=function(){return He.getClearAlpha()},this.setClearAlpha=function(){He.setClearAlpha(...arguments)},this.clear=function(I=!0,G=!0,Z=!0){let F=0;if(I){let q=!1;if(C!==null){const ne=C.texture.format;q=v.has(ne)}if(q){const ne=C.texture.type,le=x.has(ne),pe=He.getClearColor(),xe=He.getClearAlpha(),Te=pe.r,Ce=pe.g,ze=pe.b;le?(S[0]=Te,S[1]=Ce,S[2]=ze,S[3]=xe,V.clearBufferuiv(V.COLOR,0,S)):(_[0]=Te,_[1]=Ce,_[2]=ze,_[3]=xe,V.clearBufferiv(V.COLOR,0,_))}else F|=V.COLOR_BUFFER_BIT}G&&(F|=V.DEPTH_BUFFER_BIT),Z&&(F|=V.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),V.clear(F)},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(){t.removeEventListener("webglcontextlost",Ge,!1),t.removeEventListener("webglcontextrestored",Re,!1),t.removeEventListener("webglcontextcreationerror",at,!1),He.dispose(),je.dispose(),Tt.dispose(),Je.dispose(),k.dispose(),P.dispose(),Ie.dispose(),j.dispose(),ke.dispose(),Se.dispose(),We.dispose(),We.removeEventListener("sessionstart",ro),We.removeEventListener("sessionend",ao),Li.stop()};function Ge(I){I.preventDefault(),Dg("WebGLRenderer: Context Lost."),L=!0}function Re(){Dg("WebGLRenderer: Context Restored."),L=!1;const I=$e.autoReset,G=Ue.enabled,Z=Ue.autoUpdate,F=Ue.needsUpdate,q=Ue.type;ge(),$e.autoReset=I,Ue.enabled=G,Ue.autoUpdate=Z,Ue.needsUpdate=F,Ue.type=q}function at(I){Ht("WebGLRenderer: A WebGL context could not be created. Reason: ",I.statusMessage)}function Et(I){const G=I.target;G.removeEventListener("dispose",Et),Gt(G)}function Gt(I){kt(I),Je.remove(I)}function kt(I){const G=Je.get(I).programs;G!==void 0&&(G.forEach(function(Z){Se.releaseProgram(Z)}),I.isShaderMaterial&&Se.releaseShaderCache(I))}this.renderBufferDirect=function(I,G,Z,F,q,ne){G===null&&(G=ct);const le=q.isMesh&&q.matrixWorld.determinant()<0,pe=zo(I,G,Z,F,q);Fe.setMaterial(F,le);let xe=Z.index,Te=1;if(F.wireframe===!0){if(xe=be.getWireframeAttribute(Z),xe===void 0)return;Te=2}const Ce=Z.drawRange,ze=Z.attributes.position;let Be=Ce.start*Te,qe=(Ce.start+Ce.count)*Te;ne!==null&&(Be=Math.max(Be,ne.start*Te),qe=Math.min(qe,(ne.start+ne.count)*Te)),xe!==null?(Be=Math.max(Be,0),qe=Math.min(qe,xe.count)):ze!=null&&(Be=Math.max(Be,0),qe=Math.min(qe,ze.count));const ut=qe-Be;if(ut<0||ut===1/0)return;j.setup(q,F,pe,Z,xe);let At,Rt=J;if(xe!==null&&(At=he.get(xe),Rt=me,Rt.setIndex(At)),q.isMesh)F.wireframe===!0?(Fe.setLineWidth(F.wireframeLinewidth*Ee()),Rt.setMode(V.LINES)):Rt.setMode(V.TRIANGLES);else if(q.isLine){let mt=F.linewidth;mt===void 0&&(mt=1),Fe.setLineWidth(mt*Ee()),q.isLineSegments?Rt.setMode(V.LINES):q.isLineLoop?Rt.setMode(V.LINE_LOOP):Rt.setMode(V.LINE_STRIP)}else q.isPoints?Rt.setMode(V.POINTS):q.isSprite&&Rt.setMode(V.TRIANGLES);if(q.isBatchedMesh)if(q._multiDrawInstances!==null)bp("WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),Rt.renderMultiDrawInstances(q._multiDrawStarts,q._multiDrawCounts,q._multiDrawCount,q._multiDrawInstances);else if(Oe.get("WEBGL_multi_draw"))Rt.renderMultiDraw(q._multiDrawStarts,q._multiDrawCounts,q._multiDrawCount);else{const mt=q._multiDrawStarts,Dt=q._multiDrawCounts,st=q._multiDrawCount,Kt=xe?he.get(xe).bytesPerElement:1,Pn=Je.get(F).currentProgram.getUniforms();for(let Yt=0;Yt{function ne(){if(F.forEach(function(le){Je.get(le).currentProgram.isReady()&&F.delete(le)}),F.size===0){q(I);return}setTimeout(ne,10)}Oe.get("KHR_parallel_shader_compile")!==null?ne():setTimeout(ne,10)})};let gi=null;function Po(I){gi&&gi(I)}function ro(){Li.stop()}function ao(){Li.start()}const Li=new C7;Li.setAnimationLoop(Po),typeof self<"u"&&Li.setContext(self),this.setAnimationLoop=function(I){gi=I,We.setAnimationLoop(I),I===null?Li.stop():Li.start()},We.addEventListener("sessionstart",ro),We.addEventListener("sessionend",ao),this.render=function(I,G){if(G!==void 0&&G.isCamera!==!0){Ht("WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(L===!0)return;if(I.matrixWorldAutoUpdate===!0&&I.updateMatrixWorld(),G.parent===null&&G.matrixWorldAutoUpdate===!0&&G.updateMatrixWorld(),We.enabled===!0&&We.isPresenting===!0&&(We.cameraAutoUpdate===!0&&We.updateCamera(G),G=We.getCamera()),I.isScene===!0&&I.onBeforeRender(w,I,G,C),E=Tt.get(I,R.length),E.init(G),R.push(E),de.multiplyMatrices(G.projectionMatrix,G.matrixWorldInverse),ve.setFromProjectionMatrix(de,ka,G.reversedDepth),Ze=this.localClippingEnabled,we=vt.init(this.clippingPlanes,Ze),T=je.get(I,b.length),T.init(),b.push(T),We.enabled===!0&&We.isPresenting===!0){const ne=w.xr.getDepthSensingMesh();ne!==null&&so(ne,G,-1/0,w.sortObjects)}so(I,G,0,w.sortObjects),T.finish(),w.sortObjects===!0&&T.sort(De,Xe),Qe=We.enabled===!1||We.isPresenting===!1||We.hasDepthSensing()===!1,Qe&&He.addToRenderList(T,I),this.info.render.frame++,we===!0&&vt.beginShadows();const Z=E.state.shadowsArray;Ue.render(Z,I,G),we===!0&&vt.endShadows(),this.info.autoReset===!0&&this.info.reset();const F=T.opaque,q=T.transmissive;if(E.setupLights(),G.isArrayCamera){const ne=G.cameras;if(q.length>0)for(let le=0,pe=ne.length;le0&&er(F,q,I,G),Qe&&He.render(I),Er(T,I,G);C!==null&&N===0&&(ht.updateMultisampleRenderTarget(C),ht.updateRenderTargetMipmap(C)),I.isScene===!0&&I.onAfterRender(w,I,G),j.resetDefaultState(),z=-1,W=null,R.pop(),R.length>0?(E=R[R.length-1],we===!0&&vt.setGlobalState(w.clippingPlanes,E.state.camera)):E=null,b.pop(),b.length>0?T=b[b.length-1]:T=null};function so(I,G,Z,F){if(I.visible===!1)return;if(I.layers.test(G.layers)){if(I.isGroup)Z=I.renderOrder;else if(I.isLOD)I.autoUpdate===!0&&I.update(G);else if(I.isLight)E.pushLight(I),I.castShadow&&E.pushShadow(I);else if(I.isSprite){if(!I.frustumCulled||ve.intersectsSprite(I)){F&&wt.setFromMatrixPosition(I.matrixWorld).applyMatrix4(de);const le=Ie.update(I),pe=I.material;pe.visible&&T.push(I,le,pe,Z,wt.z,null)}}else if((I.isMesh||I.isLine||I.isPoints)&&(!I.frustumCulled||ve.intersectsObject(I))){const le=Ie.update(I),pe=I.material;if(F&&(I.boundingSphere!==void 0?(I.boundingSphere===null&&I.computeBoundingSphere(),wt.copy(I.boundingSphere.center)):(le.boundingSphere===null&&le.computeBoundingSphere(),wt.copy(le.boundingSphere.center)),wt.applyMatrix4(I.matrixWorld).applyMatrix4(de)),Array.isArray(pe)){const xe=le.groups;for(let Te=0,Ce=xe.length;Te0&&$r(q,G,Z),ne.length>0&&$r(ne,G,Z),le.length>0&&$r(le,G,Z),Fe.buffers.depth.setTest(!0),Fe.buffers.depth.setMask(!0),Fe.buffers.color.setMask(!0),Fe.setPolygonOffset(!1)}function er(I,G,Z,F){if((Z.isScene===!0?Z.overrideMaterial:null)!==null)return;E.state.transmissionRenderTarget[F.id]===void 0&&(E.state.transmissionRenderTarget[F.id]=new pi(1,1,{generateMipmaps:!0,type:Oe.has("EXT_color_buffer_half_float")||Oe.has("EXT_color_buffer_float")?Jn:Ni,minFilter:Ga,samples:4,stencilBuffer:a,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:tn.workingColorSpace}));const ne=E.state.transmissionRenderTarget[F.id],le=F.viewport||K;ne.setSize(le.z*w.transmissionResolutionScale,le.w*w.transmissionResolutionScale);const pe=w.getRenderTarget(),xe=w.getActiveCubeFace(),Te=w.getActiveMipmapLevel();w.setRenderTarget(ne),w.getClearColor(X),te=w.getClearAlpha(),te<1&&w.setClearColor(16777215,.5),w.clear(),Qe&&He.render(Z);const Ce=w.toneMapping;w.toneMapping=As;const ze=F.viewport;if(F.viewport!==void 0&&(F.viewport=void 0),E.setupLightsView(F),we===!0&&vt.setGlobalState(w.clippingPlanes,F),$r(I,Z,F),ht.updateMultisampleRenderTarget(ne),ht.updateRenderTargetMipmap(ne),Oe.has("WEBGL_multisampled_render_to_texture")===!1){let Be=!1;for(let qe=0,ut=G.length;qe0),ze=!!Z.morphAttributes.position,Be=!!Z.morphAttributes.normal,qe=!!Z.morphAttributes.color;let ut=As;F.toneMapped&&(C===null||C.isXRRenderTarget===!0)&&(ut=w.toneMapping);const At=Z.morphAttributes.position||Z.morphAttributes.normal||Z.morphAttributes.color,Rt=At!==void 0?At.length:0,mt=Je.get(F),Dt=E.state.lights;if(we===!0&&(Ze===!0||I!==W)){const An=I===W&&F.id===z;vt.setState(F,I,An)}let st=!1;F.version===mt.__version?(mt.needsLights&&mt.lightsStateVersion!==Dt.state.version||mt.outputColorSpace!==pe||q.isBatchedMesh&&mt.batching===!1||!q.isBatchedMesh&&mt.batching===!0||q.isBatchedMesh&&mt.batchingColor===!0&&q.colorTexture===null||q.isBatchedMesh&&mt.batchingColor===!1&&q.colorTexture!==null||q.isInstancedMesh&&mt.instancing===!1||!q.isInstancedMesh&&mt.instancing===!0||q.isSkinnedMesh&&mt.skinning===!1||!q.isSkinnedMesh&&mt.skinning===!0||q.isInstancedMesh&&mt.instancingColor===!0&&q.instanceColor===null||q.isInstancedMesh&&mt.instancingColor===!1&&q.instanceColor!==null||q.isInstancedMesh&&mt.instancingMorph===!0&&q.morphTexture===null||q.isInstancedMesh&&mt.instancingMorph===!1&&q.morphTexture!==null||mt.envMap!==xe||F.fog===!0&&mt.fog!==ne||mt.numClippingPlanes!==void 0&&(mt.numClippingPlanes!==vt.numPlanes||mt.numIntersection!==vt.numIntersection)||mt.vertexAlphas!==Te||mt.vertexTangents!==Ce||mt.morphTargets!==ze||mt.morphNormals!==Be||mt.morphColors!==qe||mt.toneMapping!==ut||mt.morphTargetsCount!==Rt)&&(st=!0):(st=!0,mt.__version=F.version);let Kt=mt.currentProgram;st===!0&&(Kt=Ja(F,G,q));let Pn=!1,Yt=!1,Wt=!1;const Ot=Kt.getUniforms(),Wn=mt.uniforms;if(Fe.useProgram(Kt.program)&&(Pn=!0,Yt=!0,Wt=!0),F.id!==z&&(z=F.id,Yt=!0),Pn||W!==I){Fe.buffers.depth.getReversed()&&I.reversedDepth!==!0&&(I._reversedDepth=!0,I.updateProjectionMatrix()),Ot.setValue(V,"projectionMatrix",I.projectionMatrix),Ot.setValue(V,"viewMatrix",I.matrixWorldInverse);const Zn=Ot.map.cameraPosition;Zn!==void 0&&Zn.setValue(V,it.setFromMatrixPosition(I.matrixWorld)),Ve.logarithmicDepthBuffer&&Ot.setValue(V,"logDepthBufFC",2/(Math.log(I.far+1)/Math.LN2)),(F.isMeshPhongMaterial||F.isMeshToonMaterial||F.isMeshLambertMaterial||F.isMeshBasicMaterial||F.isMeshStandardMaterial||F.isShaderMaterial)&&Ot.setValue(V,"isOrthographic",I.isOrthographicCamera===!0),W!==I&&(W=I,Yt=!0,Wt=!0)}if(q.isSkinnedMesh){Ot.setOptional(V,q,"bindMatrix"),Ot.setOptional(V,q,"bindMatrixInverse");const An=q.skeleton;An&&(An.boneTexture===null&&An.computeBoneTexture(),Ot.setValue(V,"boneTexture",An.boneTexture,ht))}q.isBatchedMesh&&(Ot.setOptional(V,q,"batchingTexture"),Ot.setValue(V,"batchingTexture",q._matricesTexture,ht),Ot.setOptional(V,q,"batchingIdTexture"),Ot.setValue(V,"batchingIdTexture",q._indirectTexture,ht),Ot.setOptional(V,q,"batchingColorTexture"),q._colorsTexture!==null&&Ot.setValue(V,"batchingColorTexture",q._colorsTexture,ht));const Ii=Z.morphAttributes;if((Ii.position!==void 0||Ii.normal!==void 0||Ii.color!==void 0)&&pt.update(q,Z,Kt),(Yt||mt.receiveShadow!==q.receiveShadow)&&(mt.receiveShadow=q.receiveShadow,Ot.setValue(V,"receiveShadow",q.receiveShadow)),F.isMeshGouraudMaterial&&F.envMap!==null&&(Wn.envMap.value=xe,Wn.flipEnvMap.value=xe.isCubeTexture&&xe.isRenderTargetTexture===!1?-1:1),F.isMeshStandardMaterial&&F.envMap===null&&G.environment!==null&&(Wn.envMapIntensity.value=G.environmentIntensity),Wn.dfgLUT!==void 0&&(Wn.dfgLUT.value=GJ()),Yt&&(Ot.setValue(V,"toneMappingExposure",w.toneMappingExposure),mt.needsLights&&Sa(Wn,Wt),ne&&F.fog===!0&&yt.refreshFogUniforms(Wn,ne),yt.refreshMaterialUniforms(Wn,F,se,ce,E.state.transmissionRenderTarget[I.id]),u1.upload(V,oo(mt),Wn,ht)),F.isShaderMaterial&&F.uniformsNeedUpdate===!0&&(u1.upload(V,oo(mt),Wn,ht),F.uniformsNeedUpdate=!1),F.isSpriteMaterial&&Ot.setValue(V,"center",q.center),Ot.setValue(V,"modelViewMatrix",q.modelViewMatrix),Ot.setValue(V,"normalMatrix",q.normalMatrix),Ot.setValue(V,"modelMatrix",q.matrixWorld),F.isShaderMaterial||F.isRawShaderMaterial){const An=F.uniformsGroups;for(let Zn=0,cd=An.length;Zn0&&ht.useMultisampledRTT(I)===!1?q=Je.get(I).__webglMultisampledFramebuffer:Array.isArray(Ce)?q=Ce[Z]:q=Ce,K.copy(I.viewport),oe.copy(I.scissor),ae=I.scissorTest}else K.copy(nt).multiplyScalar(se).floor(),oe.copy(tt).multiplyScalar(se).floor(),ae=xt;if(Z!==0&&(q=O),Fe.bindFramebuffer(V.FRAMEBUFFER,q)&&F&&Fe.drawBuffers(I,q),Fe.viewport(K),Fe.scissor(oe),Fe.setScissorTest(ae),ne){const xe=Je.get(I.texture);V.framebufferTexture2D(V.FRAMEBUFFER,V.COLOR_ATTACHMENT0,V.TEXTURE_CUBE_MAP_POSITIVE_X+G,xe.__webglTexture,Z)}else if(le){const xe=G;for(let Te=0;Te=0&&G<=I.width-F&&Z>=0&&Z<=I.height-q&&(I.textures.length>1&&V.readBuffer(V.COLOR_ATTACHMENT0+pe),V.readPixels(G,Z,F,q,Le.convert(Ce),Le.convert(ze),ne))}finally{const Te=C!==null?Je.get(C).__webglFramebuffer:null;Fe.bindFramebuffer(V.FRAMEBUFFER,Te)}}},this.readRenderTargetPixelsAsync=async function(I,G,Z,F,q,ne,le,pe=0){if(!(I&&I.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let xe=Je.get(I).__webglFramebuffer;if(I.isWebGLCubeRenderTarget&&le!==void 0&&(xe=xe[le]),xe)if(G>=0&&G<=I.width-F&&Z>=0&&Z<=I.height-q){Fe.bindFramebuffer(V.FRAMEBUFFER,xe);const Te=I.textures[pe],Ce=Te.format,ze=Te.type;if(!Ve.textureFormatReadable(Ce))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Ve.textureTypeReadable(ze))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const Be=V.createBuffer();V.bindBuffer(V.PIXEL_PACK_BUFFER,Be),V.bufferData(V.PIXEL_PACK_BUFFER,ne.byteLength,V.STREAM_READ),I.textures.length>1&&V.readBuffer(V.COLOR_ATTACHMENT0+pe),V.readPixels(G,Z,F,q,Le.convert(Ce),Le.convert(ze),0);const qe=C!==null?Je.get(C).__webglFramebuffer:null;Fe.bindFramebuffer(V.FRAMEBUFFER,qe);const ut=V.fenceSync(V.SYNC_GPU_COMMANDS_COMPLETE,0);return V.flush(),await xX(V,ut,4),V.bindBuffer(V.PIXEL_PACK_BUFFER,Be),V.getBufferSubData(V.PIXEL_PACK_BUFFER,0,ne),V.deleteBuffer(Be),V.deleteSync(ut),ne}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(I,G=null,Z=0){const F=Math.pow(2,-Z),q=Math.floor(I.image.width*F),ne=Math.floor(I.image.height*F),le=G!==null?G.x:0,pe=G!==null?G.y:0;ht.setTexture2D(I,0),V.copyTexSubImage2D(V.TEXTURE_2D,Z,0,0,le,pe,q,ne),Fe.unbindTexture()};const B=V.createFramebuffer(),Y=V.createFramebuffer();this.copyTextureToTexture=function(I,G,Z=null,F=null,q=0,ne=null){ne===null&&(q!==0?(bp("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),ne=q,q=0):ne=0);let le,pe,xe,Te,Ce,ze,Be,qe,ut;const At=I.isCompressedTexture?I.mipmaps[ne]:I.image;if(Z!==null)le=Z.max.x-Z.min.x,pe=Z.max.y-Z.min.y,xe=Z.isBox3?Z.max.z-Z.min.z:1,Te=Z.min.x,Ce=Z.min.y,ze=Z.isBox3?Z.min.z:0;else{const Ii=Math.pow(2,-q);le=Math.floor(At.width*Ii),pe=Math.floor(At.height*Ii),I.isDataArrayTexture?xe=At.depth:I.isData3DTexture?xe=Math.floor(At.depth*Ii):xe=1,Te=0,Ce=0,ze=0}F!==null?(Be=F.x,qe=F.y,ut=F.z):(Be=0,qe=0,ut=0);const Rt=Le.convert(G.format),mt=Le.convert(G.type);let Dt;G.isData3DTexture?(ht.setTexture3D(G,0),Dt=V.TEXTURE_3D):G.isDataArrayTexture||G.isCompressedArrayTexture?(ht.setTexture2DArray(G,0),Dt=V.TEXTURE_2D_ARRAY):(ht.setTexture2D(G,0),Dt=V.TEXTURE_2D),V.pixelStorei(V.UNPACK_FLIP_Y_WEBGL,G.flipY),V.pixelStorei(V.UNPACK_PREMULTIPLY_ALPHA_WEBGL,G.premultiplyAlpha),V.pixelStorei(V.UNPACK_ALIGNMENT,G.unpackAlignment);const st=V.getParameter(V.UNPACK_ROW_LENGTH),Kt=V.getParameter(V.UNPACK_IMAGE_HEIGHT),Pn=V.getParameter(V.UNPACK_SKIP_PIXELS),Yt=V.getParameter(V.UNPACK_SKIP_ROWS),Wt=V.getParameter(V.UNPACK_SKIP_IMAGES);V.pixelStorei(V.UNPACK_ROW_LENGTH,At.width),V.pixelStorei(V.UNPACK_IMAGE_HEIGHT,At.height),V.pixelStorei(V.UNPACK_SKIP_PIXELS,Te),V.pixelStorei(V.UNPACK_SKIP_ROWS,Ce),V.pixelStorei(V.UNPACK_SKIP_IMAGES,ze);const Ot=I.isDataArrayTexture||I.isData3DTexture,Wn=G.isDataArrayTexture||G.isData3DTexture;if(I.isDepthTexture){const Ii=Je.get(I),An=Je.get(G),Zn=Je.get(Ii.__renderTarget),cd=Je.get(An.__renderTarget);Fe.bindFramebuffer(V.READ_FRAMEBUFFER,Zn.__webglFramebuffer),Fe.bindFramebuffer(V.DRAW_FRAMEBUFFER,cd.__webglFramebuffer);for(let $a=0;$a=0&&(w[de]=null,R[de].disconnect(Ze))}for(let we=0;we=w.length){w.push(Ze),de=wt;break}else if(w[wt]===null){w[wt]=Ze,de=wt;break}if(de===-1)break}const it=R[de];it&&it.connect(Ze)}}const Q=new D,ce=new D;function se(ve,we,Ze){Q.setFromMatrixPosition(we.matrixWorld),ce.setFromMatrixPosition(Ze.matrixWorld);const de=Q.distanceTo(ce),it=we.projectionMatrix.elements,wt=Ze.projectionMatrix.elements,lt=it[14]/(it[10]-1),Qe=it[14]/(it[10]+1),Ee=(it[9]+1)/it[5],V=(it[9]-1)/it[5],Ae=(it[8]-1)/it[0],Oe=(wt[8]+1)/wt[0],Ve=lt*Ae,Fe=lt*Oe,$e=de/(-Ae+Oe),Je=$e*-Ae;if(we.matrixWorld.decompose(ve.position,ve.quaternion,ve.scale),ve.translateX(Je),ve.translateZ($e),ve.matrixWorld.compose(ve.position,ve.quaternion,ve.scale),ve.matrixWorldInverse.copy(ve.matrixWorld).invert(),it[10]===-1)ve.projectionMatrix.copy(we.projectionMatrix),ve.projectionMatrixInverse.copy(we.projectionMatrixInverse);else{const ut=lt+$e,k=Qe+$e,P=Ve-Je,he=Fe+(de-Je),be=Ee*Qe/k*ut,Ie=V*Qe/k*ut;ve.projectionMatrix.makePerspective(P,he,be,Ie,ut,k),ve.projectionMatrixInverse.copy(ve.projectionMatrix).invert()}}function De(ve,we){we===null?ve.matrixWorld.copy(ve.matrix):ve.matrixWorld.multiplyMatrices(we.matrixWorld,ve.matrix),ve.matrixWorldInverse.copy(ve.matrixWorld).invert()}this.updateCamera=function(ve){if(r===null)return;let we=ve.near,Ze=ve.far;S.texture!==null&&(S.depthNear>0&&(we=S.depthNear),S.depthFar>0&&(Ze=S.depthFar)),W.near=C.near=N.near=we,W.far=C.far=N.far=Ze,(K!==W.near||oe!==W.far)&&(r.updateRenderState({depthNear:W.near,depthFar:W.far}),K=W.near,oe=W.far),W.layers.mask=ve.layers.mask|6,N.layers.mask=W.layers.mask&3,C.layers.mask=W.layers.mask&5;const de=ve.parent,it=W.cameras;De(W,de);for(let wt=0;wt0&&(S.alphaTest.value=_.alphaTest);const T=e.get(_),E=T.envMap,b=T.envMapRotation;E&&(S.envMap.value=E,Wu.copy(b),Wu.x*=-1,Wu.y*=-1,Wu.z*=-1,E.isCubeTexture&&E.isRenderTargetTexture===!1&&(Wu.y*=-1,Wu.z*=-1),S.envMapRotation.value.setFromMatrix4(BJ.makeRotationFromEuler(Wu)),S.flipEnvMap.value=E.isCubeTexture&&E.isRenderTargetTexture===!1?-1:1,S.reflectivity.value=_.reflectivity,S.ior.value=_.ior,S.refractionRatio.value=_.refractionRatio),_.lightMap&&(S.lightMap.value=_.lightMap,S.lightMapIntensity.value=_.lightMapIntensity,t(_.lightMap,S.lightMapTransform)),_.aoMap&&(S.aoMap.value=_.aoMap,S.aoMapIntensity.value=_.aoMapIntensity,t(_.aoMap,S.aoMapTransform))}function s(S,_){S.diffuse.value.copy(_.color),S.opacity.value=_.opacity,_.map&&(S.map.value=_.map,t(_.map,S.mapTransform))}function o(S,_){S.dashSize.value=_.dashSize,S.totalSize.value=_.dashSize+_.gapSize,S.scale.value=_.scale}function l(S,_,T,E){S.diffuse.value.copy(_.color),S.opacity.value=_.opacity,S.size.value=_.size*T,S.scale.value=E*.5,_.map&&(S.map.value=_.map,t(_.map,S.uvTransform)),_.alphaMap&&(S.alphaMap.value=_.alphaMap,t(_.alphaMap,S.alphaMapTransform)),_.alphaTest>0&&(S.alphaTest.value=_.alphaTest)}function u(S,_){S.diffuse.value.copy(_.color),S.opacity.value=_.opacity,S.rotation.value=_.rotation,_.map&&(S.map.value=_.map,t(_.map,S.mapTransform)),_.alphaMap&&(S.alphaMap.value=_.alphaMap,t(_.alphaMap,S.alphaMapTransform)),_.alphaTest>0&&(S.alphaTest.value=_.alphaTest)}function d(S,_){S.specular.value.copy(_.specular),S.shininess.value=Math.max(_.shininess,1e-4)}function f(S,_){_.gradientMap&&(S.gradientMap.value=_.gradientMap)}function p(S,_){S.metalness.value=_.metalness,_.metalnessMap&&(S.metalnessMap.value=_.metalnessMap,t(_.metalnessMap,S.metalnessMapTransform)),S.roughness.value=_.roughness,_.roughnessMap&&(S.roughnessMap.value=_.roughnessMap,t(_.roughnessMap,S.roughnessMapTransform)),_.envMap&&(S.envMapIntensity.value=_.envMapIntensity)}function m(S,_,T){S.ior.value=_.ior,_.sheen>0&&(S.sheenColor.value.copy(_.sheenColor).multiplyScalar(_.sheen),S.sheenRoughness.value=_.sheenRoughness,_.sheenColorMap&&(S.sheenColorMap.value=_.sheenColorMap,t(_.sheenColorMap,S.sheenColorMapTransform)),_.sheenRoughnessMap&&(S.sheenRoughnessMap.value=_.sheenRoughnessMap,t(_.sheenRoughnessMap,S.sheenRoughnessMapTransform))),_.clearcoat>0&&(S.clearcoat.value=_.clearcoat,S.clearcoatRoughness.value=_.clearcoatRoughness,_.clearcoatMap&&(S.clearcoatMap.value=_.clearcoatMap,t(_.clearcoatMap,S.clearcoatMapTransform)),_.clearcoatRoughnessMap&&(S.clearcoatRoughnessMap.value=_.clearcoatRoughnessMap,t(_.clearcoatRoughnessMap,S.clearcoatRoughnessMapTransform)),_.clearcoatNormalMap&&(S.clearcoatNormalMap.value=_.clearcoatNormalMap,t(_.clearcoatNormalMap,S.clearcoatNormalMapTransform),S.clearcoatNormalScale.value.copy(_.clearcoatNormalScale),_.side===ki&&S.clearcoatNormalScale.value.negate())),_.dispersion>0&&(S.dispersion.value=_.dispersion),_.iridescence>0&&(S.iridescence.value=_.iridescence,S.iridescenceIOR.value=_.iridescenceIOR,S.iridescenceThicknessMinimum.value=_.iridescenceThicknessRange[0],S.iridescenceThicknessMaximum.value=_.iridescenceThicknessRange[1],_.iridescenceMap&&(S.iridescenceMap.value=_.iridescenceMap,t(_.iridescenceMap,S.iridescenceMapTransform)),_.iridescenceThicknessMap&&(S.iridescenceThicknessMap.value=_.iridescenceThicknessMap,t(_.iridescenceThicknessMap,S.iridescenceThicknessMapTransform))),_.transmission>0&&(S.transmission.value=_.transmission,S.transmissionSamplerMap.value=T.texture,S.transmissionSamplerSize.value.set(T.width,T.height),_.transmissionMap&&(S.transmissionMap.value=_.transmissionMap,t(_.transmissionMap,S.transmissionMapTransform)),S.thickness.value=_.thickness,_.thicknessMap&&(S.thicknessMap.value=_.thicknessMap,t(_.thicknessMap,S.thicknessMapTransform)),S.attenuationDistance.value=_.attenuationDistance,S.attenuationColor.value.copy(_.attenuationColor)),_.anisotropy>0&&(S.anisotropyVector.value.set(_.anisotropy*Math.cos(_.anisotropyRotation),_.anisotropy*Math.sin(_.anisotropyRotation)),_.anisotropyMap&&(S.anisotropyMap.value=_.anisotropyMap,t(_.anisotropyMap,S.anisotropyMapTransform))),S.specularIntensity.value=_.specularIntensity,S.specularColor.value.copy(_.specularColor),_.specularColorMap&&(S.specularColorMap.value=_.specularColorMap,t(_.specularColorMap,S.specularColorMapTransform)),_.specularIntensityMap&&(S.specularIntensityMap.value=_.specularIntensityMap,t(_.specularIntensityMap,S.specularIntensityMapTransform))}function v(S,_){_.matcap&&(S.matcap.value=_.matcap)}function x(S,_){const T=e.get(_).light;S.referencePosition.value.setFromMatrixPosition(T.matrixWorld),S.nearDistance.value=T.shadow.camera.near,S.farDistance.value=T.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:r}}function HJ(n,e,t,i){let r={},a={},s=[];const o=n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS);function l(T,E){const b=E.program;i.uniformBlockBinding(T,b)}function u(T,E){let b=r[T.id];b===void 0&&(v(T),b=d(T),r[T.id]=b,T.addEventListener("dispose",S));const R=E.program;i.updateUBOMapping(T,R);const w=e.render.frame;a[T.id]!==w&&(p(T),a[T.id]=w)}function d(T){const E=f();T.__bindingPointIndex=E;const b=n.createBuffer(),R=T.__size,w=T.usage;return n.bindBuffer(n.UNIFORM_BUFFER,b),n.bufferData(n.UNIFORM_BUFFER,R,w),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,E,b),b}function f(){for(let T=0;T0&&(b+=R-w),T.__size=b,T.__cache={},this}function x(T){const E={boundary:0,storage:0};return typeof T=="number"||typeof T=="boolean"?(E.boundary=4,E.storage=4):T.isVector2?(E.boundary=8,E.storage=8):T.isVector3||T.isColor?(E.boundary=16,E.storage=12):T.isVector4?(E.boundary=16,E.storage=16):T.isMatrix3?(E.boundary=48,E.storage=48):T.isMatrix4?(E.boundary=64,E.storage=64):T.isTexture?dt("WebGLRenderer: Texture samplers can not be part of an uniforms group."):dt("WebGLRenderer: Unsupported uniform value type.",T),E}function S(T){const E=T.target;E.removeEventListener("dispose",S);const b=s.indexOf(E.__bindingPointIndex);s.splice(b,1),n.deleteBuffer(r[E.id]),delete r[E.id],delete a[E.id]}function _(){for(const T in r)n.deleteBuffer(r[T]);s=[],r={},a={}}return{bind:l,update:u,dispose:_}}const VJ=new Uint16Array([11481,15204,11534,15171,11808,15015,12385,14843,12894,14716,13396,14600,13693,14483,13976,14366,14237,14171,14405,13961,14511,13770,14605,13598,14687,13444,14760,13305,14822,13066,14876,12857,14923,12675,14963,12517,14997,12379,15025,12230,15049,12023,15070,11843,15086,11687,15100,11551,15111,11433,15120,11330,15127,11217,15132,11060,15135,10922,15138,10801,15139,10695,15139,10600,13012,14923,13020,14917,13064,14886,13176,14800,13349,14666,13513,14526,13724,14398,13960,14230,14200,14020,14383,13827,14488,13651,14583,13491,14667,13348,14740,13132,14803,12908,14856,12713,14901,12542,14938,12394,14968,12241,14992,12017,15010,11822,15024,11654,15034,11507,15041,11380,15044,11269,15044,11081,15042,10913,15037,10764,15031,10635,15023,10520,15014,10419,15003,10330,13657,14676,13658,14673,13670,14660,13698,14622,13750,14547,13834,14442,13956,14317,14112,14093,14291,13889,14407,13704,14499,13538,14586,13389,14664,13201,14733,12966,14792,12758,14842,12577,14882,12418,14915,12272,14940,12033,14959,11826,14972,11646,14980,11490,14983,11355,14983,11212,14979,11008,14971,10830,14961,10675,14950,10540,14936,10420,14923,10315,14909,10204,14894,10041,14089,14460,14090,14459,14096,14452,14112,14431,14141,14388,14186,14305,14252,14130,14341,13941,14399,13756,14467,13585,14539,13430,14610,13272,14677,13026,14737,12808,14790,12617,14833,12449,14869,12303,14896,12065,14916,11845,14929,11655,14937,11490,14939,11347,14936,11184,14930,10970,14921,10783,14912,10621,14900,10480,14885,10356,14867,10247,14848,10062,14827,9894,14805,9745,14400,14208,14400,14206,14402,14198,14406,14174,14415,14122,14427,14035,14444,13913,14469,13767,14504,13613,14548,13463,14598,13324,14651,13082,14704,12858,14752,12658,14795,12483,14831,12330,14860,12106,14881,11875,14895,11675,14903,11501,14905,11351,14903,11178,14900,10953,14892,10757,14880,10589,14865,10442,14847,10313,14827,10162,14805,9965,14782,9792,14757,9642,14731,9507,14562,13883,14562,13883,14563,13877,14566,13862,14570,13830,14576,13773,14584,13689,14595,13582,14613,13461,14637,13336,14668,13120,14704,12897,14741,12695,14776,12516,14808,12358,14835,12150,14856,11910,14870,11701,14878,11519,14882,11361,14884,11187,14880,10951,14871,10748,14858,10572,14842,10418,14823,10286,14801,10099,14777,9897,14751,9722,14725,9567,14696,9430,14666,9309,14702,13604,14702,13604,14702,13600,14703,13591,14705,13570,14707,13533,14709,13477,14712,13400,14718,13305,14727,13106,14743,12907,14762,12716,14784,12539,14807,12380,14827,12190,14844,11943,14855,11727,14863,11539,14870,11376,14871,11204,14868,10960,14858,10748,14845,10565,14829,10406,14809,10269,14786,10058,14761,9852,14734,9671,14705,9512,14674,9374,14641,9253,14608,9076,14821,13366,14821,13365,14821,13364,14821,13358,14821,13344,14821,13320,14819,13252,14817,13145,14815,13011,14814,12858,14817,12698,14823,12539,14832,12389,14841,12214,14850,11968,14856,11750,14861,11558,14866,11390,14867,11226,14862,10972,14853,10754,14840,10565,14823,10401,14803,10259,14780,10032,14754,9820,14725,9635,14694,9473,14661,9333,14627,9203,14593,8988,14557,8798,14923,13014,14922,13014,14922,13012,14922,13004,14920,12987,14919,12957,14915,12907,14909,12834,14902,12738,14894,12623,14888,12498,14883,12370,14880,12203,14878,11970,14875,11759,14873,11569,14874,11401,14872,11243,14865,10986,14855,10762,14842,10568,14825,10401,14804,10255,14781,10017,14754,9799,14725,9611,14692,9445,14658,9301,14623,9139,14587,8920,14548,8729,14509,8562,15008,12672,15008,12672,15008,12671,15007,12667,15005,12656,15001,12637,14997,12605,14989,12556,14978,12490,14966,12407,14953,12313,14940,12136,14927,11934,14914,11742,14903,11563,14896,11401,14889,11247,14879,10992,14866,10767,14851,10570,14833,10400,14812,10252,14789,10007,14761,9784,14731,9592,14698,9424,14663,9279,14627,9088,14588,8868,14548,8676,14508,8508,14467,8360,15080,12386,15080,12386,15079,12385,15078,12383,15076,12378,15072,12367,15066,12347,15057,12315,15045,12253,15030,12138,15012,11998,14993,11845,14972,11685,14951,11530,14935,11383,14920,11228,14904,10981,14887,10762,14870,10567,14850,10397,14827,10248,14803,9997,14774,9771,14743,9578,14710,9407,14674,9259,14637,9048,14596,8826,14555,8632,14514,8464,14471,8317,14427,8182,15139,12008,15139,12008,15138,12008,15137,12007,15135,12003,15130,11990,15124,11969,15115,11929,15102,11872,15086,11794,15064,11693,15041,11581,15013,11459,14987,11336,14966,11170,14944,10944,14921,10738,14898,10552,14875,10387,14850,10239,14824,9983,14794,9758,14762,9563,14728,9392,14692,9244,14653,9014,14611,8791,14569,8597,14526,8427,14481,8281,14436,8110,14391,7885,15188,11617,15188,11617,15187,11617,15186,11618,15183,11617,15179,11612,15173,11601,15163,11581,15150,11546,15133,11495,15110,11427,15083,11346,15051,11246,15024,11057,14996,10868,14967,10687,14938,10517,14911,10362,14882,10206,14853,9956,14821,9737,14787,9543,14752,9375,14715,9228,14675,8980,14632,8760,14589,8565,14544,8395,14498,8248,14451,8049,14404,7824,14357,7630,15228,11298,15228,11298,15227,11299,15226,11301,15223,11303,15219,11302,15213,11299,15204,11290,15191,11271,15174,11217,15150,11129,15119,11015,15087,10886,15057,10744,15024,10599,14990,10455,14957,10318,14924,10143,14891,9911,14856,9701,14820,9516,14782,9352,14744,9200,14703,8946,14659,8725,14615,8533,14568,8366,14521,8220,14472,7992,14423,7770,14374,7578,14315,7408,15260,10819,15260,10819,15259,10822,15258,10826,15256,10832,15251,10836,15246,10841,15237,10838,15225,10821,15207,10788,15183,10734,15151,10660,15120,10571,15087,10469,15049,10359,15012,10249,14974,10041,14937,9837,14900,9647,14860,9475,14820,9320,14779,9147,14736,8902,14691,8688,14646,8499,14598,8335,14549,8189,14499,7940,14448,7720,14397,7529,14347,7363,14256,7218,15285,10410,15285,10411,15285,10413,15284,10418,15282,10425,15278,10434,15272,10442,15264,10449,15252,10445,15235,10433,15210,10403,15179,10358,15149,10301,15113,10218,15073,10059,15033,9894,14991,9726,14951,9565,14909,9413,14865,9273,14822,9073,14777,8845,14730,8641,14682,8459,14633,8300,14583,8129,14531,7883,14479,7670,14426,7482,14373,7321,14305,7176,14201,6939,15305,9939,15305,9940,15305,9945,15304,9955,15302,9967,15298,9989,15293,10010,15286,10033,15274,10044,15258,10045,15233,10022,15205,9975,15174,9903,15136,9808,15095,9697,15053,9578,15009,9451,14965,9327,14918,9198,14871,8973,14825,8766,14775,8579,14725,8408,14675,8259,14622,8058,14569,7821,14515,7615,14460,7435,14405,7276,14350,7108,14256,6866,14149,6653,15321,9444,15321,9445,15321,9448,15320,9458,15317,9470,15314,9490,15310,9515,15302,9540,15292,9562,15276,9579,15251,9577,15226,9559,15195,9519,15156,9463,15116,9389,15071,9304,15025,9208,14978,9023,14927,8838,14878,8661,14827,8496,14774,8344,14722,8206,14667,7973,14612,7749,14556,7555,14499,7382,14443,7229,14385,7025,14322,6791,14210,6588,14100,6409,15333,8920,15333,8921,15332,8927,15332,8943,15329,8965,15326,9002,15322,9048,15316,9106,15307,9162,15291,9204,15267,9221,15244,9221,15212,9196,15175,9134,15133,9043,15088,8930,15040,8801,14990,8665,14938,8526,14886,8391,14830,8261,14775,8087,14719,7866,14661,7664,14603,7482,14544,7322,14485,7178,14426,6936,14367,6713,14281,6517,14166,6348,14054,6198,15341,8360,15341,8361,15341,8366,15341,8379,15339,8399,15336,8431,15332,8473,15326,8527,15318,8585,15302,8632,15281,8670,15258,8690,15227,8690,15191,8664,15149,8612,15104,8543,15055,8456,15001,8360,14948,8259,14892,8122,14834,7923,14776,7734,14716,7558,14656,7397,14595,7250,14534,7070,14472,6835,14410,6628,14350,6443,14243,6283,14125,6135,14010,5889,15348,7715,15348,7717,15348,7725,15347,7745,15345,7780,15343,7836,15339,7905,15334,8e3,15326,8103,15310,8193,15293,8239,15270,8270,15240,8287,15204,8283,15163,8260,15118,8223,15067,8143,15014,8014,14958,7873,14899,7723,14839,7573,14778,7430,14715,7293,14652,7164,14588,6931,14524,6720,14460,6531,14396,6362,14330,6210,14207,6015,14086,5781,13969,5576,15352,7114,15352,7116,15352,7128,15352,7159,15350,7195,15348,7237,15345,7299,15340,7374,15332,7457,15317,7544,15301,7633,15280,7703,15251,7754,15216,7775,15176,7767,15131,7733,15079,7670,15026,7588,14967,7492,14906,7387,14844,7278,14779,7171,14714,6965,14648,6770,14581,6587,14515,6420,14448,6269,14382,6123,14299,5881,14172,5665,14049,5477,13929,5310,15355,6329,15355,6330,15355,6339,15355,6362,15353,6410,15351,6472,15349,6572,15344,6688,15337,6835,15323,6985,15309,7142,15287,7220,15260,7277,15226,7310,15188,7326,15142,7318,15090,7285,15036,7239,14976,7177,14914,7045,14849,6892,14782,6736,14714,6581,14645,6433,14576,6293,14506,6164,14438,5946,14369,5733,14270,5540,14140,5369,14014,5216,13892,5043,15357,5483,15357,5484,15357,5496,15357,5528,15356,5597,15354,5692,15351,5835,15347,6011,15339,6195,15328,6317,15314,6446,15293,6566,15268,6668,15235,6746,15197,6796,15152,6811,15101,6790,15046,6748,14985,6673,14921,6583,14854,6479,14785,6371,14714,6259,14643,6149,14571,5946,14499,5750,14428,5567,14358,5401,14242,5250,14109,5111,13980,4870,13856,4657,15359,4555,15359,4557,15358,4573,15358,4633,15357,4715,15355,4841,15353,5061,15349,5216,15342,5391,15331,5577,15318,5770,15299,5967,15274,6150,15243,6223,15206,6280,15161,6310,15111,6317,15055,6300,14994,6262,14928,6208,14860,6141,14788,5994,14715,5838,14641,5684,14566,5529,14492,5384,14418,5247,14346,5121,14216,4892,14079,4682,13948,4496,13822,4330,15359,3498,15359,3501,15359,3520,15359,3598,15358,3719,15356,3860,15355,4137,15351,4305,15344,4563,15334,4809,15321,5116,15303,5273,15280,5418,15250,5547,15214,5653,15170,5722,15120,5761,15064,5763,15002,5733,14935,5673,14865,5597,14792,5504,14716,5400,14640,5294,14563,5185,14486,5041,14410,4841,14335,4655,14191,4482,14051,4325,13918,4183,13790,4012,15360,2282,15360,2285,15360,2306,15360,2401,15359,2547,15357,2748,15355,3103,15352,3349,15345,3675,15336,4020,15324,4272,15307,4496,15285,4716,15255,4908,15220,5086,15178,5170,15128,5214,15072,5234,15010,5231,14943,5206,14871,5166,14796,5102,14718,4971,14639,4833,14559,4687,14480,4541,14402,4401,14315,4268,14167,4142,14025,3958,13888,3747,13759,3556,15360,923,15360,925,15360,946,15360,1052,15359,1214,15357,1494,15356,1892,15352,2274,15346,2663,15338,3099,15326,3393,15309,3679,15288,3980,15260,4183,15226,4325,15185,4437,15136,4517,15080,4570,15018,4591,14950,4581,14877,4545,14800,4485,14720,4411,14638,4325,14556,4231,14475,4136,14395,3988,14297,3803,14145,3628,13999,3465,13861,3314,13729,3177,15360,263,15360,264,15360,272,15360,325,15359,407,15358,548,15356,780,15352,1144,15347,1580,15339,2099,15328,2425,15312,2795,15292,3133,15264,3329,15232,3517,15191,3689,15143,3819,15088,3923,15025,3978,14956,3999,14882,3979,14804,3931,14722,3855,14639,3756,14554,3645,14470,3529,14388,3409,14279,3289,14124,3173,13975,3055,13834,2848,13701,2658,15360,49,15360,49,15360,52,15360,75,15359,111,15358,201,15356,283,15353,519,15348,726,15340,1045,15329,1415,15314,1795,15295,2173,15269,2410,15237,2649,15197,2866,15150,3054,15095,3140,15032,3196,14963,3228,14888,3236,14808,3224,14725,3191,14639,3146,14553,3088,14466,2976,14382,2836,14262,2692,14103,2549,13952,2409,13808,2278,13674,2154,15360,4,15360,4,15360,4,15360,13,15359,33,15358,59,15357,112,15353,199,15348,302,15341,456,15331,628,15316,827,15297,1082,15272,1332,15241,1601,15202,1851,15156,2069,15101,2172,15039,2256,14970,2314,14894,2348,14813,2358,14728,2344,14640,2311,14551,2263,14463,2203,14376,2133,14247,2059,14084,1915,13930,1761,13784,1609,13648,1464,15360,0,15360,0,15360,0,15360,3,15359,18,15358,26,15357,53,15354,80,15348,97,15341,165,15332,238,15318,326,15299,427,15275,529,15245,654,15207,771,15161,885,15108,994,15046,1089,14976,1170,14900,1229,14817,1266,14731,1284,14641,1282,14550,1260,14460,1223,14370,1174,14232,1116,14066,1050,13909,981,13761,910,13623,839]);let al=null;function GJ(){return al===null&&(al=new Ur(VJ,32,32,Mo,Jn),al.minFilter=Bt,al.magFilter=Bt,al.wrapS=Wi,al.wrapT=Wi,al.generateMipmaps=!1,al.needsUpdate=!0),al}class uT{constructor(e={}){const{canvas:t=D9(),context:i=null,depth:r=!0,stencil:a=!1,alpha:s=!1,antialias:o=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:u=!1,powerPreference:d="default",failIfMajorPerformanceCaveat:f=!1,reversedDepthBuffer:p=!1}=e;this.isWebGLRenderer=!0;let m;if(i!==null){if(typeof WebGLRenderingContext<"u"&&i instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");m=i.getContextAttributes().alpha}else m=s;const v=new Set([IS,LS,ev]),x=new Set([Ni,to,Uh,Ph,NS,OS]),S=new Uint32Array(4),_=new Int32Array(4);let T=null,E=null;const b=[],R=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=As,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const w=this;let L=!1;this._outputColorSpace=mn;let U=0,N=0,C=null,z=-1,W=null;const K=new Pt,oe=new Pt;let ae=null;const X=new Ye(0);let te=0,Q=t.width,ce=t.height,se=1,De=null,Xe=null;const nt=new Pt(0,0,Q,ce),tt=new Pt(0,0,Q,ce);let xt=!1;const ve=new ed;let we=!1,Ze=!1;const de=new Me,it=new D,wt=new Pt,lt={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let Qe=!1;function Ee(){return C===null?se:1}let V=i;function Ae(I,G){return t.getContext(I,G)}try{const I={alpha:!0,depth:r,stencil:a,antialias:o,premultipliedAlpha:l,preserveDrawingBuffer:u,powerPreference:d,failIfMajorPerformanceCaveat:f};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${$s}`),t.addEventListener("webglcontextlost",Ge,!1),t.addEventListener("webglcontextrestored",Re,!1),t.addEventListener("webglcontextcreationerror",at,!1),V===null){const G="webgl2";if(V=Ae(G,I),V===null)throw Ae(G)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(I){throw I("WebGLRenderer: "+I.message),I}let Oe,Ve,Fe,$e,Je,ut,k,P,he,be,Ie,Se,yt,je,Tt,vt,Ue,He,pt,J,me,Le,j,ke;function ge(){Oe=new JQ(V),Oe.init(),Le=new I7(V,Oe),Ve=new kQ(V,Oe,e,Le),Fe=new OJ(V,Oe),Ve.reversedDepthBuffer&&p&&Fe.buffers.depth.setReversed(!0),$e=new tK(V),Je=new xJ,ut=new LJ(V,Oe,Fe,Je,Ve,Le,$e),k=new XQ(w),P=new KQ(w),he=new aj(V),j=new VQ(V,he),be=new $Q(V,he,$e,j),Ie=new iK(V,be,he,$e),pt=new nK(V,Ve,ut),vt=new WQ(Je),Se=new _J(w,k,P,Oe,Ve,j,vt),yt=new FJ(w,Je),je=new SJ,Tt=new wJ(Oe),He=new HQ(w,k,P,Fe,Ie,m,l),Ue=new DJ(w,Ie,Ve),ke=new HJ(V,$e,Ve,Fe),J=new GQ(V,Oe,$e),me=new eK(V,Oe,$e),$e.programs=Se.programs,w.capabilities=Ve,w.extensions=Oe,w.properties=Je,w.renderLists=je,w.shadowMap=Ue,w.state=Fe,w.info=$e}ge();const We=new zJ(w,V);this.xr=We,this.getContext=function(){return V},this.getContextAttributes=function(){return V.getContextAttributes()},this.forceContextLoss=function(){const I=Oe.get("WEBGL_lose_context");I&&I.loseContext()},this.forceContextRestore=function(){const I=Oe.get("WEBGL_lose_context");I&&I.restoreContext()},this.getPixelRatio=function(){return se},this.setPixelRatio=function(I){I!==void 0&&(se=I,this.setSize(Q,ce,!1))},this.getSize=function(I){return I.set(Q,ce)},this.setSize=function(I,G,Z=!0){if(We.isPresenting){dt("WebGLRenderer: Can't change size while VR device is presenting.");return}Q=I,ce=G,t.width=Math.floor(I*se),t.height=Math.floor(G*se),Z===!0&&(t.style.width=I+"px",t.style.height=G+"px"),this.setViewport(0,0,I,G)},this.getDrawingBufferSize=function(I){return I.set(Q*se,ce*se).floor()},this.setDrawingBufferSize=function(I,G,Z){Q=I,ce=G,se=Z,t.width=Math.floor(I*Z),t.height=Math.floor(G*Z),this.setViewport(0,0,I,G)},this.getCurrentViewport=function(I){return I.copy(K)},this.getViewport=function(I){return I.copy(nt)},this.setViewport=function(I,G,Z,F){I.isVector4?nt.set(I.x,I.y,I.z,I.w):nt.set(I,G,Z,F),Fe.viewport(K.copy(nt).multiplyScalar(se).round())},this.getScissor=function(I){return I.copy(tt)},this.setScissor=function(I,G,Z,F){I.isVector4?tt.set(I.x,I.y,I.z,I.w):tt.set(I,G,Z,F),Fe.scissor(oe.copy(tt).multiplyScalar(se).round())},this.getScissorTest=function(){return xt},this.setScissorTest=function(I){Fe.setScissorTest(xt=I)},this.setOpaqueSort=function(I){De=I},this.setTransparentSort=function(I){Xe=I},this.getClearColor=function(I){return I.copy(He.getClearColor())},this.setClearColor=function(){He.setClearColor(...arguments)},this.getClearAlpha=function(){return He.getClearAlpha()},this.setClearAlpha=function(){He.setClearAlpha(...arguments)},this.clear=function(I=!0,G=!0,Z=!0){let F=0;if(I){let q=!1;if(C!==null){const ne=C.texture.format;q=v.has(ne)}if(q){const ne=C.texture.type,le=x.has(ne),pe=He.getClearColor(),xe=He.getClearAlpha(),Te=pe.r,Ce=pe.g,ze=pe.b;le?(S[0]=Te,S[1]=Ce,S[2]=ze,S[3]=xe,V.clearBufferuiv(V.COLOR,0,S)):(_[0]=Te,_[1]=Ce,_[2]=ze,_[3]=xe,V.clearBufferiv(V.COLOR,0,_))}else F|=V.COLOR_BUFFER_BIT}G&&(F|=V.DEPTH_BUFFER_BIT),Z&&(F|=V.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),V.clear(F)},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(){t.removeEventListener("webglcontextlost",Ge,!1),t.removeEventListener("webglcontextrestored",Re,!1),t.removeEventListener("webglcontextcreationerror",at,!1),He.dispose(),je.dispose(),Tt.dispose(),Je.dispose(),k.dispose(),P.dispose(),Ie.dispose(),j.dispose(),ke.dispose(),Se.dispose(),We.dispose(),We.removeEventListener("sessionstart",ro),We.removeEventListener("sessionend",ao),Li.stop()};function Ge(I){I.preventDefault(),Dg("WebGLRenderer: Context Lost."),L=!0}function Re(){Dg("WebGLRenderer: Context Restored."),L=!1;const I=$e.autoReset,G=Ue.enabled,Z=Ue.autoUpdate,F=Ue.needsUpdate,q=Ue.type;ge(),$e.autoReset=I,Ue.enabled=G,Ue.autoUpdate=Z,Ue.needsUpdate=F,Ue.type=q}function at(I){Ht("WebGLRenderer: A WebGL context could not be created. Reason: ",I.statusMessage)}function Et(I){const G=I.target;G.removeEventListener("dispose",Et),Gt(G)}function Gt(I){kt(I),Je.remove(I)}function kt(I){const G=Je.get(I).programs;G!==void 0&&(G.forEach(function(Z){Se.releaseProgram(Z)}),I.isShaderMaterial&&Se.releaseShaderCache(I))}this.renderBufferDirect=function(I,G,Z,F,q,ne){G===null&&(G=lt);const le=q.isMesh&&q.matrixWorld.determinant()<0,pe=zo(I,G,Z,F,q);Fe.setMaterial(F,le);let xe=Z.index,Te=1;if(F.wireframe===!0){if(xe=be.getWireframeAttribute(Z),xe===void 0)return;Te=2}const Ce=Z.drawRange,ze=Z.attributes.position;let Be=Ce.start*Te,qe=(Ce.start+Ce.count)*Te;ne!==null&&(Be=Math.max(Be,ne.start*Te),qe=Math.min(qe,(ne.start+ne.count)*Te)),xe!==null?(Be=Math.max(Be,0),qe=Math.min(qe,xe.count)):ze!=null&&(Be=Math.max(Be,0),qe=Math.min(qe,ze.count));const ct=qe-Be;if(ct<0||ct===1/0)return;j.setup(q,F,pe,Z,xe);let At,Rt=J;if(xe!==null&&(At=he.get(xe),Rt=me,Rt.setIndex(At)),q.isMesh)F.wireframe===!0?(Fe.setLineWidth(F.wireframeLinewidth*Ee()),Rt.setMode(V.LINES)):Rt.setMode(V.TRIANGLES);else if(q.isLine){let mt=F.linewidth;mt===void 0&&(mt=1),Fe.setLineWidth(mt*Ee()),q.isLineSegments?Rt.setMode(V.LINES):q.isLineLoop?Rt.setMode(V.LINE_LOOP):Rt.setMode(V.LINE_STRIP)}else q.isPoints?Rt.setMode(V.POINTS):q.isSprite&&Rt.setMode(V.TRIANGLES);if(q.isBatchedMesh)if(q._multiDrawInstances!==null)bp("WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),Rt.renderMultiDrawInstances(q._multiDrawStarts,q._multiDrawCounts,q._multiDrawCount,q._multiDrawInstances);else if(Oe.get("WEBGL_multi_draw"))Rt.renderMultiDraw(q._multiDrawStarts,q._multiDrawCounts,q._multiDrawCount);else{const mt=q._multiDrawStarts,Dt=q._multiDrawCounts,st=q._multiDrawCount,Kt=xe?he.get(xe).bytesPerElement:1,Pn=Je.get(F).currentProgram.getUniforms();for(let Yt=0;Yt{function ne(){if(F.forEach(function(le){Je.get(le).currentProgram.isReady()&&F.delete(le)}),F.size===0){q(I);return}setTimeout(ne,10)}Oe.get("KHR_parallel_shader_compile")!==null?ne():setTimeout(ne,10)})};let gi=null;function Po(I){gi&&gi(I)}function ro(){Li.stop()}function ao(){Li.start()}const Li=new C7;Li.setAnimationLoop(Po),typeof self<"u"&&Li.setContext(self),this.setAnimationLoop=function(I){gi=I,We.setAnimationLoop(I),I===null?Li.stop():Li.start()},We.addEventListener("sessionstart",ro),We.addEventListener("sessionend",ao),this.render=function(I,G){if(G!==void 0&&G.isCamera!==!0){Ht("WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(L===!0)return;if(I.matrixWorldAutoUpdate===!0&&I.updateMatrixWorld(),G.parent===null&&G.matrixWorldAutoUpdate===!0&&G.updateMatrixWorld(),We.enabled===!0&&We.isPresenting===!0&&(We.cameraAutoUpdate===!0&&We.updateCamera(G),G=We.getCamera()),I.isScene===!0&&I.onBeforeRender(w,I,G,C),E=Tt.get(I,R.length),E.init(G),R.push(E),de.multiplyMatrices(G.projectionMatrix,G.matrixWorldInverse),ve.setFromProjectionMatrix(de,ka,G.reversedDepth),Ze=this.localClippingEnabled,we=vt.init(this.clippingPlanes,Ze),T=je.get(I,b.length),T.init(),b.push(T),We.enabled===!0&&We.isPresenting===!0){const ne=w.xr.getDepthSensingMesh();ne!==null&&so(ne,G,-1/0,w.sortObjects)}so(I,G,0,w.sortObjects),T.finish(),w.sortObjects===!0&&T.sort(De,Xe),Qe=We.enabled===!1||We.isPresenting===!1||We.hasDepthSensing()===!1,Qe&&He.addToRenderList(T,I),this.info.render.frame++,we===!0&&vt.beginShadows();const Z=E.state.shadowsArray;Ue.render(Z,I,G),we===!0&&vt.endShadows(),this.info.autoReset===!0&&this.info.reset();const F=T.opaque,q=T.transmissive;if(E.setupLights(),G.isArrayCamera){const ne=G.cameras;if(q.length>0)for(let le=0,pe=ne.length;le0&&er(F,q,I,G),Qe&&He.render(I),Er(T,I,G);C!==null&&N===0&&(ut.updateMultisampleRenderTarget(C),ut.updateRenderTargetMipmap(C)),I.isScene===!0&&I.onAfterRender(w,I,G),j.resetDefaultState(),z=-1,W=null,R.pop(),R.length>0?(E=R[R.length-1],we===!0&&vt.setGlobalState(w.clippingPlanes,E.state.camera)):E=null,b.pop(),b.length>0?T=b[b.length-1]:T=null};function so(I,G,Z,F){if(I.visible===!1)return;if(I.layers.test(G.layers)){if(I.isGroup)Z=I.renderOrder;else if(I.isLOD)I.autoUpdate===!0&&I.update(G);else if(I.isLight)E.pushLight(I),I.castShadow&&E.pushShadow(I);else if(I.isSprite){if(!I.frustumCulled||ve.intersectsSprite(I)){F&&wt.setFromMatrixPosition(I.matrixWorld).applyMatrix4(de);const le=Ie.update(I),pe=I.material;pe.visible&&T.push(I,le,pe,Z,wt.z,null)}}else if((I.isMesh||I.isLine||I.isPoints)&&(!I.frustumCulled||ve.intersectsObject(I))){const le=Ie.update(I),pe=I.material;if(F&&(I.boundingSphere!==void 0?(I.boundingSphere===null&&I.computeBoundingSphere(),wt.copy(I.boundingSphere.center)):(le.boundingSphere===null&&le.computeBoundingSphere(),wt.copy(le.boundingSphere.center)),wt.applyMatrix4(I.matrixWorld).applyMatrix4(de)),Array.isArray(pe)){const xe=le.groups;for(let Te=0,Ce=xe.length;Te0&&$r(q,G,Z),ne.length>0&&$r(ne,G,Z),le.length>0&&$r(le,G,Z),Fe.buffers.depth.setTest(!0),Fe.buffers.depth.setMask(!0),Fe.buffers.color.setMask(!0),Fe.setPolygonOffset(!1)}function er(I,G,Z,F){if((Z.isScene===!0?Z.overrideMaterial:null)!==null)return;E.state.transmissionRenderTarget[F.id]===void 0&&(E.state.transmissionRenderTarget[F.id]=new pi(1,1,{generateMipmaps:!0,type:Oe.has("EXT_color_buffer_half_float")||Oe.has("EXT_color_buffer_float")?Jn:Ni,minFilter:Ga,samples:4,stencilBuffer:a,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:tn.workingColorSpace}));const ne=E.state.transmissionRenderTarget[F.id],le=F.viewport||K;ne.setSize(le.z*w.transmissionResolutionScale,le.w*w.transmissionResolutionScale);const pe=w.getRenderTarget(),xe=w.getActiveCubeFace(),Te=w.getActiveMipmapLevel();w.setRenderTarget(ne),w.getClearColor(X),te=w.getClearAlpha(),te<1&&w.setClearColor(16777215,.5),w.clear(),Qe&&He.render(Z);const Ce=w.toneMapping;w.toneMapping=As;const ze=F.viewport;if(F.viewport!==void 0&&(F.viewport=void 0),E.setupLightsView(F),we===!0&&vt.setGlobalState(w.clippingPlanes,F),$r(I,Z,F),ut.updateMultisampleRenderTarget(ne),ut.updateRenderTargetMipmap(ne),Oe.has("WEBGL_multisampled_render_to_texture")===!1){let Be=!1;for(let qe=0,ct=G.length;qe0),ze=!!Z.morphAttributes.position,Be=!!Z.morphAttributes.normal,qe=!!Z.morphAttributes.color;let ct=As;F.toneMapped&&(C===null||C.isXRRenderTarget===!0)&&(ct=w.toneMapping);const At=Z.morphAttributes.position||Z.morphAttributes.normal||Z.morphAttributes.color,Rt=At!==void 0?At.length:0,mt=Je.get(F),Dt=E.state.lights;if(we===!0&&(Ze===!0||I!==W)){const An=I===W&&F.id===z;vt.setState(F,I,An)}let st=!1;F.version===mt.__version?(mt.needsLights&&mt.lightsStateVersion!==Dt.state.version||mt.outputColorSpace!==pe||q.isBatchedMesh&&mt.batching===!1||!q.isBatchedMesh&&mt.batching===!0||q.isBatchedMesh&&mt.batchingColor===!0&&q.colorTexture===null||q.isBatchedMesh&&mt.batchingColor===!1&&q.colorTexture!==null||q.isInstancedMesh&&mt.instancing===!1||!q.isInstancedMesh&&mt.instancing===!0||q.isSkinnedMesh&&mt.skinning===!1||!q.isSkinnedMesh&&mt.skinning===!0||q.isInstancedMesh&&mt.instancingColor===!0&&q.instanceColor===null||q.isInstancedMesh&&mt.instancingColor===!1&&q.instanceColor!==null||q.isInstancedMesh&&mt.instancingMorph===!0&&q.morphTexture===null||q.isInstancedMesh&&mt.instancingMorph===!1&&q.morphTexture!==null||mt.envMap!==xe||F.fog===!0&&mt.fog!==ne||mt.numClippingPlanes!==void 0&&(mt.numClippingPlanes!==vt.numPlanes||mt.numIntersection!==vt.numIntersection)||mt.vertexAlphas!==Te||mt.vertexTangents!==Ce||mt.morphTargets!==ze||mt.morphNormals!==Be||mt.morphColors!==qe||mt.toneMapping!==ct||mt.morphTargetsCount!==Rt)&&(st=!0):(st=!0,mt.__version=F.version);let Kt=mt.currentProgram;st===!0&&(Kt=Ja(F,G,q));let Pn=!1,Yt=!1,Wt=!1;const Ot=Kt.getUniforms(),Wn=mt.uniforms;if(Fe.useProgram(Kt.program)&&(Pn=!0,Yt=!0,Wt=!0),F.id!==z&&(z=F.id,Yt=!0),Pn||W!==I){Fe.buffers.depth.getReversed()&&I.reversedDepth!==!0&&(I._reversedDepth=!0,I.updateProjectionMatrix()),Ot.setValue(V,"projectionMatrix",I.projectionMatrix),Ot.setValue(V,"viewMatrix",I.matrixWorldInverse);const Zn=Ot.map.cameraPosition;Zn!==void 0&&Zn.setValue(V,it.setFromMatrixPosition(I.matrixWorld)),Ve.logarithmicDepthBuffer&&Ot.setValue(V,"logDepthBufFC",2/(Math.log(I.far+1)/Math.LN2)),(F.isMeshPhongMaterial||F.isMeshToonMaterial||F.isMeshLambertMaterial||F.isMeshBasicMaterial||F.isMeshStandardMaterial||F.isShaderMaterial)&&Ot.setValue(V,"isOrthographic",I.isOrthographicCamera===!0),W!==I&&(W=I,Yt=!0,Wt=!0)}if(q.isSkinnedMesh){Ot.setOptional(V,q,"bindMatrix"),Ot.setOptional(V,q,"bindMatrixInverse");const An=q.skeleton;An&&(An.boneTexture===null&&An.computeBoneTexture(),Ot.setValue(V,"boneTexture",An.boneTexture,ut))}q.isBatchedMesh&&(Ot.setOptional(V,q,"batchingTexture"),Ot.setValue(V,"batchingTexture",q._matricesTexture,ut),Ot.setOptional(V,q,"batchingIdTexture"),Ot.setValue(V,"batchingIdTexture",q._indirectTexture,ut),Ot.setOptional(V,q,"batchingColorTexture"),q._colorsTexture!==null&&Ot.setValue(V,"batchingColorTexture",q._colorsTexture,ut));const Ii=Z.morphAttributes;if((Ii.position!==void 0||Ii.normal!==void 0||Ii.color!==void 0)&&pt.update(q,Z,Kt),(Yt||mt.receiveShadow!==q.receiveShadow)&&(mt.receiveShadow=q.receiveShadow,Ot.setValue(V,"receiveShadow",q.receiveShadow)),F.isMeshGouraudMaterial&&F.envMap!==null&&(Wn.envMap.value=xe,Wn.flipEnvMap.value=xe.isCubeTexture&&xe.isRenderTargetTexture===!1?-1:1),F.isMeshStandardMaterial&&F.envMap===null&&G.environment!==null&&(Wn.envMapIntensity.value=G.environmentIntensity),Wn.dfgLUT!==void 0&&(Wn.dfgLUT.value=GJ()),Yt&&(Ot.setValue(V,"toneMappingExposure",w.toneMappingExposure),mt.needsLights&&Sa(Wn,Wt),ne&&F.fog===!0&&yt.refreshFogUniforms(Wn,ne),yt.refreshMaterialUniforms(Wn,F,se,ce,E.state.transmissionRenderTarget[I.id]),u1.upload(V,oo(mt),Wn,ut)),F.isShaderMaterial&&F.uniformsNeedUpdate===!0&&(u1.upload(V,oo(mt),Wn,ut),F.uniformsNeedUpdate=!1),F.isSpriteMaterial&&Ot.setValue(V,"center",q.center),Ot.setValue(V,"modelViewMatrix",q.modelViewMatrix),Ot.setValue(V,"normalMatrix",q.normalMatrix),Ot.setValue(V,"modelMatrix",q.matrixWorld),F.isShaderMaterial||F.isRawShaderMaterial){const An=F.uniformsGroups;for(let Zn=0,cd=An.length;Zn0&&ut.useMultisampledRTT(I)===!1?q=Je.get(I).__webglMultisampledFramebuffer:Array.isArray(Ce)?q=Ce[Z]:q=Ce,K.copy(I.viewport),oe.copy(I.scissor),ae=I.scissorTest}else K.copy(nt).multiplyScalar(se).floor(),oe.copy(tt).multiplyScalar(se).floor(),ae=xt;if(Z!==0&&(q=O),Fe.bindFramebuffer(V.FRAMEBUFFER,q)&&F&&Fe.drawBuffers(I,q),Fe.viewport(K),Fe.scissor(oe),Fe.setScissorTest(ae),ne){const xe=Je.get(I.texture);V.framebufferTexture2D(V.FRAMEBUFFER,V.COLOR_ATTACHMENT0,V.TEXTURE_CUBE_MAP_POSITIVE_X+G,xe.__webglTexture,Z)}else if(le){const xe=G;for(let Te=0;Te=0&&G<=I.width-F&&Z>=0&&Z<=I.height-q&&(I.textures.length>1&&V.readBuffer(V.COLOR_ATTACHMENT0+pe),V.readPixels(G,Z,F,q,Le.convert(Ce),Le.convert(ze),ne))}finally{const Te=C!==null?Je.get(C).__webglFramebuffer:null;Fe.bindFramebuffer(V.FRAMEBUFFER,Te)}}},this.readRenderTargetPixelsAsync=async function(I,G,Z,F,q,ne,le,pe=0){if(!(I&&I.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let xe=Je.get(I).__webglFramebuffer;if(I.isWebGLCubeRenderTarget&&le!==void 0&&(xe=xe[le]),xe)if(G>=0&&G<=I.width-F&&Z>=0&&Z<=I.height-q){Fe.bindFramebuffer(V.FRAMEBUFFER,xe);const Te=I.textures[pe],Ce=Te.format,ze=Te.type;if(!Ve.textureFormatReadable(Ce))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Ve.textureTypeReadable(ze))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const Be=V.createBuffer();V.bindBuffer(V.PIXEL_PACK_BUFFER,Be),V.bufferData(V.PIXEL_PACK_BUFFER,ne.byteLength,V.STREAM_READ),I.textures.length>1&&V.readBuffer(V.COLOR_ATTACHMENT0+pe),V.readPixels(G,Z,F,q,Le.convert(Ce),Le.convert(ze),0);const qe=C!==null?Je.get(C).__webglFramebuffer:null;Fe.bindFramebuffer(V.FRAMEBUFFER,qe);const ct=V.fenceSync(V.SYNC_GPU_COMMANDS_COMPLETE,0);return V.flush(),await xX(V,ct,4),V.bindBuffer(V.PIXEL_PACK_BUFFER,Be),V.getBufferSubData(V.PIXEL_PACK_BUFFER,0,ne),V.deleteBuffer(Be),V.deleteSync(ct),ne}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(I,G=null,Z=0){const F=Math.pow(2,-Z),q=Math.floor(I.image.width*F),ne=Math.floor(I.image.height*F),le=G!==null?G.x:0,pe=G!==null?G.y:0;ut.setTexture2D(I,0),V.copyTexSubImage2D(V.TEXTURE_2D,Z,0,0,le,pe,q,ne),Fe.unbindTexture()};const B=V.createFramebuffer(),Y=V.createFramebuffer();this.copyTextureToTexture=function(I,G,Z=null,F=null,q=0,ne=null){ne===null&&(q!==0?(bp("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),ne=q,q=0):ne=0);let le,pe,xe,Te,Ce,ze,Be,qe,ct;const At=I.isCompressedTexture?I.mipmaps[ne]:I.image;if(Z!==null)le=Z.max.x-Z.min.x,pe=Z.max.y-Z.min.y,xe=Z.isBox3?Z.max.z-Z.min.z:1,Te=Z.min.x,Ce=Z.min.y,ze=Z.isBox3?Z.min.z:0;else{const Ii=Math.pow(2,-q);le=Math.floor(At.width*Ii),pe=Math.floor(At.height*Ii),I.isDataArrayTexture?xe=At.depth:I.isData3DTexture?xe=Math.floor(At.depth*Ii):xe=1,Te=0,Ce=0,ze=0}F!==null?(Be=F.x,qe=F.y,ct=F.z):(Be=0,qe=0,ct=0);const Rt=Le.convert(G.format),mt=Le.convert(G.type);let Dt;G.isData3DTexture?(ut.setTexture3D(G,0),Dt=V.TEXTURE_3D):G.isDataArrayTexture||G.isCompressedArrayTexture?(ut.setTexture2DArray(G,0),Dt=V.TEXTURE_2D_ARRAY):(ut.setTexture2D(G,0),Dt=V.TEXTURE_2D),V.pixelStorei(V.UNPACK_FLIP_Y_WEBGL,G.flipY),V.pixelStorei(V.UNPACK_PREMULTIPLY_ALPHA_WEBGL,G.premultiplyAlpha),V.pixelStorei(V.UNPACK_ALIGNMENT,G.unpackAlignment);const st=V.getParameter(V.UNPACK_ROW_LENGTH),Kt=V.getParameter(V.UNPACK_IMAGE_HEIGHT),Pn=V.getParameter(V.UNPACK_SKIP_PIXELS),Yt=V.getParameter(V.UNPACK_SKIP_ROWS),Wt=V.getParameter(V.UNPACK_SKIP_IMAGES);V.pixelStorei(V.UNPACK_ROW_LENGTH,At.width),V.pixelStorei(V.UNPACK_IMAGE_HEIGHT,At.height),V.pixelStorei(V.UNPACK_SKIP_PIXELS,Te),V.pixelStorei(V.UNPACK_SKIP_ROWS,Ce),V.pixelStorei(V.UNPACK_SKIP_IMAGES,ze);const Ot=I.isDataArrayTexture||I.isData3DTexture,Wn=G.isDataArrayTexture||G.isData3DTexture;if(I.isDepthTexture){const Ii=Je.get(I),An=Je.get(G),Zn=Je.get(Ii.__renderTarget),cd=Je.get(An.__renderTarget);Fe.bindFramebuffer(V.READ_FRAMEBUFFER,Zn.__webglFramebuffer),Fe.bindFramebuffer(V.DRAW_FRAMEBUFFER,cd.__webglFramebuffer);for(let $a=0;$aM||fe[y]!==Ne[M]){var et=` `+fe[y].replace(" at new "," at ");return c.displayName&&et.includes("")&&(et=et.replace("",c.displayName)),et}while(1<=y&&0<=M);break}}}finally{E2=!1,Error.prepareStackTrace=g}return(g=c?c.displayName||c.name:"")?o(g):""}function u(c){switch(c.tag){case 26:case 27:case 5:return o(c.type);case 16:return o("Lazy");case 13:return o("Suspense");case 19:return o("SuspenseList");case 0:case 15:return c=l(c.type,!1),c;case 11:return c=l(c.type.render,!1),c;case 1:return c=l(c.type,!0),c;default:return""}}function d(c){try{var h="";do h+=u(c),c=c.return;while(c);return h}catch(g){return` Error generating stack: `+g.message+` -`+g.stack}}function f(c){var h=c,g=c;if(c.alternate)for(;h.return;)h=h.return;else{c=h;do h=c,h.flags&4098&&(g=h.return),c=h.return;while(c)}return h.tag===3?g:null}function p(c){if(f(c)!==c)throw Error(r(188))}function m(c){var h=c.alternate;if(!h){if(h=f(c),h===null)throw Error(r(188));return h!==c?null:c}for(var g=c,y=h;;){var M=g.return;if(M===null)break;var A=M.alternate;if(A===null){if(y=M.return,y!==null){g=y;continue}break}if(M.child===A.child){for(A=M.child;A;){if(A===g)return p(M),c;if(A===y)return p(M),h;A=A.sibling}throw Error(r(188))}if(g.return!==y.return)g=M,y=A;else{for(var H=!1,ee=M.child;ee;){if(ee===g){H=!0,g=M,y=A;break}if(ee===y){H=!0,y=M,g=A;break}ee=ee.sibling}if(!H){for(ee=A.child;ee;){if(ee===g){H=!0,g=A,y=M;break}if(ee===y){H=!0,y=A,g=M;break}ee=ee.sibling}if(!H)throw Error(r(189))}}if(g.alternate!==y)throw Error(r(190))}if(g.tag!==3)throw Error(r(188));return g.stateNode.current===g?c:h}function v(c){var h=c.tag;if(h===5||h===26||h===27||h===6)return c;for(c=c.child;c!==null;){if(h=v(c),h!==null)return h;c=c.sibling}return null}function x(c){var h=c.tag;if(h===5||h===26||h===27||h===6)return c;for(c=c.child;c!==null;){if(c.tag!==4&&(h=x(c),h!==null))return h;c=c.sibling}return null}function S(c){return{current:c}}function _(c){0>vd||(c.current=C2[vd],C2[vd]=null,vd--)}function T(c,h){vd++,C2[vd]=c.current,c.current=h}function E(c){return c>>>=0,c===0?32:31-(MV(c)/AV|0)|0}function b(c){var h=c&42;if(h!==0)return h;switch(c&-c){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return c&4194176;case 4194304:case 8388608:case 16777216:case 33554432:return c&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return c}}function R(c,h){var g=c.pendingLanes;if(g===0)return 0;var y=0,M=c.suspendedLanes,A=c.pingedLanes,H=c.warmLanes;c=c.finishedLanes!==0;var ee=g&134217727;return ee!==0?(g=ee&~M,g!==0?y=b(g):(A&=ee,A!==0?y=b(A):c||(H=ee&~H,H!==0&&(y=b(H))))):(ee=g&~M,ee!==0?y=b(ee):A!==0?y=b(A):c||(H=g&~H,H!==0&&(y=b(H)))),y===0?0:h!==0&&h!==y&&!(h&M)&&(M=y&-y,H=h&-h,M>=H||M===32&&(H&4194176)!==0)?h:y}function w(c,h){return(c.pendingLanes&~(c.suspendedLanes&~c.pingedLanes)&h)===0}function L(c,h){switch(c){case 1:case 2:case 4:case 8:return h+250;case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return h+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function U(){var c=Uv;return Uv<<=1,!(Uv&4194176)&&(Uv=128),c}function N(){var c=Pv;return Pv<<=1,!(Pv&62914560)&&(Pv=4194304),c}function C(c){for(var h=[],g=0;31>g;g++)h.push(c);return h}function z(c,h){c.pendingLanes|=h,h!==268435456&&(c.suspendedLanes=0,c.pingedLanes=0,c.warmLanes=0)}function W(c,h,g,y,M,A){var H=c.pendingLanes;c.pendingLanes=g,c.suspendedLanes=0,c.pingedLanes=0,c.warmLanes=0,c.expiredLanes&=g,c.entangledLanes&=g,c.errorRecoveryDisabledLanes&=g,c.shellSuspendCounter=0;var ee=c.entanglements,fe=c.expirationTimes,Ne=c.hiddenUpdates;for(g=H&~g;0>=H,M-=H,ko=1<<32-wa(h)+M|g<_n?(ir=Ft,Ft=null):ir=Ft.sibling;var xn=_t(_e,Ft,ye[_n],Ke);if(xn===null){Ft===null&&(Ft=ir);break}c&&Ft&&xn.alternate===null&&h(_e,Ft),ue=A(xn,ue,_n),ni===null?Nt=xn:ni.sibling=xn,ni=xn,Ft=ir}if(_n===ye.length)return g(_e,Ft),vn&&se(_e,_n),Nt;if(Ft===null){for(;_n_n?(ir=Ft,Ft=null):ir=Ft.sibling;var nc=_t(_e,Ft,xn.value,Ke);if(nc===null){Ft===null&&(Ft=ir);break}c&&Ft&&nc.alternate===null&&h(_e,Ft),ue=A(nc,ue,_n),ni===null?Nt=nc:ni.sibling=nc,ni=nc,Ft=ir}if(xn.done)return g(_e,Ft),vn&&se(_e,_n),Nt;if(Ft===null){for(;!xn.done;_n++,xn=ye.next())xn=gt(_e,xn.value,Ke),xn!==null&&(ue=A(xn,ue,_n),ni===null?Nt=xn:ni.sibling=xn,ni=xn);return vn&&se(_e,_n),Nt}for(Ft=y(Ft);!xn.done;_n++,xn=ye.next())xn=jt(Ft,_e,_n,xn.value,Ke),xn!==null&&(c&&xn.alternate!==null&&Ft.delete(xn.key===null?_n:xn.key),ue=A(xn,ue,_n),ni===null?Nt=xn:ni.sibling=xn,ni=xn);return c&&Ft.forEach(function(HV){return h(_e,HV)}),vn&&se(_e,_n),Nt}function Cu(_e,ue,ye,Ke){if(typeof ye=="object"&&ye!==null&&ye.type===md&&ye.key===null&&(ye=ye.props.children),typeof ye=="object"&&ye!==null){switch(ye.$$typeof){case Ov:e:{for(var Nt=ye.key;ue!==null;){if(ue.key===Nt){if(Nt=ye.type,Nt===md){if(ue.tag===7){g(_e,ue.sibling),Ke=M(ue,ye.props.children),Ke.return=_e,_e=Ke;break e}}else if(ue.elementType===Nt||typeof Nt=="object"&&Nt!==null&&Nt.$$typeof===jl&&mi(Nt)===ue.type){g(_e,ue.sibling),Ke=M(ue,ye.props),Gt(Ke,ye),Ke.return=_e,_e=Ke;break e}g(_e,ue);break}else h(_e,ue);ue=ue.sibling}ye.type===md?(Ke=vu(ye.props.children,_e.mode,Ke,ye.key),Ke.return=_e,_e=Ke):(Ke=Nv(ye.type,ye.key,ye.props,null,_e.mode,Ke),Gt(Ke,ye),Ke.return=_e,_e=Ke)}return H(_e);case pd:e:{for(Nt=ye.key;ue!==null;){if(ue.key===Nt)if(ue.tag===4&&ue.stateNode.containerInfo===ye.containerInfo&&ue.stateNode.implementation===ye.implementation){g(_e,ue.sibling),Ke=M(ue,ye.children||[]),Ke.return=_e,_e=Ke;break e}else{g(_e,ue);break}else h(_e,ue);ue=ue.sibling}Ke=p2(ye,_e.mode,Ke),Ke.return=_e,_e=Ke}return H(_e);case jl:return Nt=ye._init,ye=Nt(ye._payload),Cu(_e,ue,ye,Ke)}if(Lv(ye))return os(_e,ue,ye,Ke);if(a(ye)){if(Nt=a(ye),typeof Nt!="function")throw Error(r(150));return ye=Nt.call(ye),Cm(_e,ue,ye,Ke)}if(typeof ye.then=="function")return Cu(_e,ue,Et(ye),Ke);if(ye.$$typeof===Yl)return Cu(_e,ue,Mv(_e,ye),Ke);kt(_e,ye)}return typeof ye=="string"&&ye!==""||typeof ye=="number"||typeof ye=="bigint"?(ye=""+ye,ue!==null&&ue.tag===6?(g(_e,ue.sibling),Ke=M(ue,ye),Ke.return=_e,_e=Ke):(g(_e,ue),Ke=f2(ye,_e.mode,Ke),Ke.return=_e,_e=Ke),H(_e)):g(_e,ue)}return function(_e,ue,ye,Ke){try{Tm=0;var Nt=Cu(_e,ue,ye,Ke);return wd=null,Nt}catch(Ft){if(Ft===Sm)throw Ft;var ni=t(29,Ft,null,_e.mode);return ni.lanes=Ke,ni.return=_e,ni}finally{}}}function Po(c,h){c=jo,T(Wv,c),T(Rd,h),jo=c|h.baseLanes}function ro(){T(Wv,jo),T(Rd,Rd.current)}function ao(){jo=Wv.current,_(Rd),_(Wv)}function Li(c){var h=c.alternate;T(ji,ji.current&1),T(as,c),uo===null&&(h===null||Rd.current!==null||h.memoizedState!==null)&&(uo=c)}function so(c){if(c.tag===22){if(T(ji,ji.current),T(as,c),uo===null){var h=c.alternate;h!==null&&h.memoizedState!==null&&(uo=c)}}else Er()}function Er(){T(ji,ji.current),T(as,as.current)}function er(c){_(as),uo===c&&(uo=null),_(ji)}function $r(c){for(var h=c;h!==null;){if(h.tag===13){var g=h.memoizedState;if(g!==null&&(g=g.dehydrated,g===null||A2(g)||w2(g)))return h}else if(h.tag===19&&h.memoizedProps.revealOrder!==void 0){if(h.flags&128)return h}else if(h.child!==null){h.child.return=h,h=h.child;continue}if(h===c)break;for(;h.sibling===null;){if(h.return===null||h.return===c)return null;h=h.return}h.sibling.return=h.return,h=h.sibling}return null}function Un(){throw Error(r(321))}function Ja(c,h){if(h===null)return!1;for(var g=0;gA?A:8);var H=Vt.T,ee={};Vt.T=ee,LT(c,!1,h,g);try{var fe=M(),Ne=Vt.S;if(Ne!==null&&Ne(ee,fe),fe!==null&&typeof fe=="object"&&typeof fe.then=="function"){var et=je(fe,y);om(c,h,et,Ma(c))}else om(c,h,y,Ma(c))}catch(gt){om(c,h,{then:function(){},status:"rejected",reason:gt},Ma())}finally{ta(A),Vt.T=H}}function bC(c){var h=c.memoizedState;if(h!==null)return h;h={memoizedState:gd,baseState:gd,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:q,lastRenderedState:gd},next:null};var g={};return h.next={memoizedState:g,baseState:g,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:q,lastRenderedState:g},next:null},c.memoizedState=h,c=c.alternate,c!==null&&(c.memoizedState=h),h}function OT(){return Mr(xu)}function MC(){return I().memoizedState}function AC(){return I().memoizedState}function VF(c){for(var h=c.return;h!==null;){switch(h.tag){case 24:case 3:var g=Ma();c=Ue(g);var y=He(h,c,g);y!==null&&(zr(y,h,g),pt(y,h,g)),h={cache:qT()},c.payload=h;return}h=h.return}}function GF(c,h,g){var y=Ma();g={lane:y,revertLane:0,action:g,hasEagerState:!1,eagerState:null,next:null},Tv(c)?RC(h,g):(g=Ae(c,h,g,y),g!==null&&(zr(g,c,y),CC(g,h,y)))}function wC(c,h,g){var y=Ma();om(c,h,g,y)}function om(c,h,g,y){var M={lane:y,revertLane:0,action:g,hasEagerState:!1,eagerState:null,next:null};if(Tv(c))RC(h,M);else{var A=c.alternate;if(c.lanes===0&&(A===null||A.lanes===0)&&(A=h.lastRenderedReducer,A!==null))try{var H=h.lastRenderedState,ee=A(H,g);if(M.hasEagerState=!0,M.eagerState=ee,Ca(ee,H))return V(c,h,M,0),Qn===null&&Ee(),!1}catch{}finally{}if(g=Ae(c,h,M,y),g!==null)return zr(g,c,y),CC(g,h,y),!0}return!1}function LT(c,h,g,y){if(y={lane:2,revertLane:Ie(),action:y,hasEagerState:!1,eagerState:null,next:null},Tv(c)){if(h)throw Error(r(479))}else h=Ae(c,g,y,2),h!==null&&zr(h,c,2)}function Tv(c){var h=c.alternate;return c===en||h!==null&&h===en}function RC(c,h){Cd=Xv=!0;var g=c.pending;g===null?h.next=h:(h.next=g.next,g.next=h),c.pending=h}function CC(c,h,g){if(g&4194176){var y=h.lanes;y&=c.pendingLanes,g|=y,h.lanes=g,oe(c,g)}}function IT(c,h,g,y){h=c.memoizedState,g=g(y,h),g=g==null?h:g2({},h,g),c.memoizedState=g,c.lanes===0&&(c.updateQueue.baseState=g)}function DC(c,h,g,y,M,A,H){return c=c.stateNode,typeof c.shouldComponentUpdate=="function"?c.shouldComponentUpdate(y,A,H):h.prototype&&h.prototype.isPureReactComponent?!ge(g,y)||!ge(M,A):!0}function NC(c,h,g,y){c=h.state,typeof h.componentWillReceiveProps=="function"&&h.componentWillReceiveProps(g,y),typeof h.UNSAFE_componentWillReceiveProps=="function"&&h.UNSAFE_componentWillReceiveProps(g,y),h.state!==c&&H2.enqueueReplaceState(h,h.state,null)}function du(c,h){var g=h;if("ref"in h){g={};for(var y in h)y!=="ref"&&(g[y]=h[y])}if(c=c.defaultProps){g===h&&(g=g2({},g));for(var M in c)g[M]===void 0&&(g[M]=c[M])}return g}function Ev(c,h){try{var g=c.onUncaughtError;g(h.value,{componentStack:h.stack})}catch(y){setTimeout(function(){throw y})}}function OC(c,h,g){try{var y=c.onCaughtError;y(g.value,{componentStack:g.stack,errorBoundary:h.tag===1?h.stateNode:null})}catch(M){setTimeout(function(){throw M})}}function UT(c,h,g){return g=Ue(g),g.tag=3,g.payload={element:null},g.callback=function(){Ev(c,h)},g}function LC(c){return c=Ue(c),c.tag=3,c}function IC(c,h,g,y){var M=g.type.getDerivedStateFromError;if(typeof M=="function"){var A=y.value;c.payload=function(){return M(A)},c.callback=function(){OC(h,g,y)}}var H=g.stateNode;H!==null&&typeof H.componentDidCatch=="function"&&(c.callback=function(){OC(h,g,y),typeof M!="function"&&(tc===null?tc=new Set([this]):tc.add(this));var ee=y.stack;this.componentDidCatch(y.value,{componentStack:ee!==null?ee:""})})}function kF(c,h,g,y,M){if(g.flags|=32768,y!==null&&typeof y=="object"&&typeof y.then=="function"){if(h=g.alternate,h!==null&&cm(h,g,M,!0),g=as.current,g!==null){switch(g.tag){case 13:return uo===null?c2():g.alternate===null&&Si===0&&(Si=3),g.flags&=-257,g.flags|=65536,g.lanes=M,y===kv?g.flags|=16384:(h=g.updateQueue,h===null?g.updateQueue=new Set([y]):h.add(y),h2(c,y,M)),!1;case 22:return g.flags|=65536,y===kv?g.flags|=16384:(h=g.updateQueue,h===null?(h={transitions:null,markerInstances:null,retryQueue:new Set([y])},g.updateQueue=h):(g=h.retryQueue,g===null?h.retryQueue=new Set([y]):g.add(y)),h2(c,y,M)),!1}throw Error(r(435,g.tag))}return h2(c,y,M),c2(),!1}if(vn)return h=as.current,h!==null?(!(h.flags&65536)&&(h.flags|=256),h.flags|=65536,h.lanes=M,y!==O2&&(c=Error(r(422),{cause:y}),Qe(ce(c,g)))):(y!==O2&&(h=Error(r(423),{cause:y}),Qe(ce(h,g))),c=c.current.alternate,c.flags|=65536,M&=-M,c.lanes|=M,y=ce(y,g),M=UT(c.stateNode,y,M),J(c,M),Si!==4&&(Si=2)),!1;var A=Error(r(520),{cause:y});if(A=ce(A,g),Mm===null?Mm=[A]:Mm.push(A),Si!==4&&(Si=2),h===null)return!0;y=ce(y,g),g=h;do{switch(g.tag){case 3:return g.flags|=65536,c=M&-M,g.lanes|=c,c=UT(g.stateNode,y,c),J(g,c),!1;case 1:if(h=g.type,A=g.stateNode,(g.flags&128)===0&&(typeof h.getDerivedStateFromError=="function"||A!==null&&typeof A.componentDidCatch=="function"&&(tc===null||!tc.has(A))))return g.flags|=65536,M&=-M,g.lanes|=M,M=LC(M),IC(M,c,g,y),J(g,M),!1}g=g.return}while(g!==null);return!1}function fr(c,h,g,y){h.child=c===null?gD(h,null,g,y):Su(h,c.child,g,y)}function UC(c,h,g,y,M){g=g.render;var A=h.ref;if("ref"in y){var H={};for(var ee in y)ee!=="ref"&&(H[ee]=y[ee])}else H=y;return fu(h),y=oo(c,h,g,H,A,M),ee=br(),c!==null&&!tr?(O(c,h,M),Bo(c,h,M)):(vn&&ee&&Xe(h),h.flags|=1,fr(c,h,y,M),h.child)}function PC(c,h,g,y,M){if(c===null){var A=g.type;return typeof A=="function"&&!d2(A)&&A.defaultProps===void 0&&g.compare===null?(h.tag=15,h.type=A,zC(c,h,A,y,M)):(c=Nv(g.type,null,y,h,h.mode,M),c.ref=h.ref,c.return=h,h.child=c)}if(A=c.child,!kT(c,M)){var H=A.memoizedProps;if(g=g.compare,g=g!==null?g:ge,g(H,y)&&c.ref===h.ref)return Bo(c,h,M)}return h.flags|=1,c=ql(A,y),c.ref=h.ref,c.return=h,h.child=c}function zC(c,h,g,y,M){if(c!==null){var A=c.memoizedProps;if(ge(A,y)&&c.ref===h.ref)if(tr=!1,h.pendingProps=y=A,kT(c,M))c.flags&131072&&(tr=!0);else return h.lanes=c.lanes,Bo(c,h,M)}return PT(c,h,g,y,M)}function BC(c,h,g){var y=h.pendingProps,M=y.children,A=(h.stateNode._pendingVisibility&2)!==0,H=c!==null?c.memoizedState:null;if(lm(c,h),y.mode==="hidden"||A){if(h.flags&128){if(y=H!==null?H.baseLanes|g:g,c!==null){for(M=h.child=c.child,A=0;M!==null;)A=A|M.lanes|M.childLanes,M=M.sibling;h.childLanes=A&~y}else h.childLanes=0,h.child=null;return FC(c,h,y,g)}if(g&536870912)h.memoizedState={baseLanes:0,cachePool:null},c!==null&&Av(h,H!==null?H.cachePool:null),H!==null?Po(h,H):ro(),so(h);else return h.lanes=h.childLanes=536870912,FC(c,h,H!==null?H.baseLanes|g:g,g)}else H!==null?(Av(h,H.cachePool),Po(h,H),Er(),h.memoizedState=null):(c!==null&&Av(h,null),ro(),Er());return fr(c,h,M,g),h.child}function FC(c,h,g,y){var M=YT();return M=M===null?null:{parent:Go?xi._currentValue:xi._currentValue2,pool:M},h.memoizedState={baseLanes:g,cachePool:M},c!==null&&Av(h,null),ro(),so(h),c!==null&&cm(c,h,y,!0),null}function lm(c,h){var g=h.ref;if(g===null)c!==null&&c.ref!==null&&(h.flags|=2097664);else{if(typeof g!="function"&&typeof g!="object")throw Error(r(284));(c===null||c.ref!==g)&&(h.flags|=2097664)}}function PT(c,h,g,y,M){return fu(h),g=oo(c,h,g,y,void 0,M),y=br(),c!==null&&!tr?(O(c,h,M),Bo(c,h,M)):(vn&&y&&Xe(h),h.flags|=1,fr(c,h,g,M),h.child)}function HC(c,h,g,y,M,A){return fu(h),h.updateQueue=null,g=zo(h,y,g,M),lo(c),y=br(),c!==null&&!tr?(O(c,h,A),Bo(c,h,A)):(vn&&y&&Xe(h),h.flags|=1,fr(c,h,g,A),h.child)}function VC(c,h,g,y,M){if(fu(h),h.stateNode===null){var A=_d,H=g.contextType;typeof H=="object"&&H!==null&&(A=Mr(H)),A=new g(y,A),h.memoizedState=A.state!==null&&A.state!==void 0?A.state:null,A.updater=H2,h.stateNode=A,A._reactInternals=h,A=h.stateNode,A.props=y,A.state=h.memoizedState,A.refs={},Tt(h),H=g.contextType,A.context=typeof H=="object"&&H!==null?Mr(H):_d,A.state=h.memoizedState,H=g.getDerivedStateFromProps,typeof H=="function"&&(IT(h,g,H,y),A.state=h.memoizedState),typeof g.getDerivedStateFromProps=="function"||typeof A.getSnapshotBeforeUpdate=="function"||typeof A.UNSAFE_componentWillMount!="function"&&typeof A.componentWillMount!="function"||(H=A.state,typeof A.componentWillMount=="function"&&A.componentWillMount(),typeof A.UNSAFE_componentWillMount=="function"&&A.UNSAFE_componentWillMount(),H!==A.state&&H2.enqueueReplaceState(A,A.state,null),Le(h,y,A,M),me(),A.state=h.memoizedState),typeof A.componentDidMount=="function"&&(h.flags|=4194308),y=!0}else if(c===null){A=h.stateNode;var ee=h.memoizedProps,fe=du(g,ee);A.props=fe;var Ne=A.context,et=g.contextType;H=_d,typeof et=="object"&&et!==null&&(H=Mr(et));var gt=g.getDerivedStateFromProps;et=typeof gt=="function"||typeof A.getSnapshotBeforeUpdate=="function",ee=h.pendingProps!==ee,et||typeof A.UNSAFE_componentWillReceiveProps!="function"&&typeof A.componentWillReceiveProps!="function"||(ee||Ne!==H)&&NC(h,A,y,H),Kl=!1;var _t=h.memoizedState;A.state=_t,Le(h,y,A,M),me(),Ne=h.memoizedState,ee||_t!==Ne||Kl?(typeof gt=="function"&&(IT(h,g,gt,y),Ne=h.memoizedState),(fe=Kl||DC(h,g,fe,y,_t,Ne,H))?(et||typeof A.UNSAFE_componentWillMount!="function"&&typeof A.componentWillMount!="function"||(typeof A.componentWillMount=="function"&&A.componentWillMount(),typeof A.UNSAFE_componentWillMount=="function"&&A.UNSAFE_componentWillMount()),typeof A.componentDidMount=="function"&&(h.flags|=4194308)):(typeof A.componentDidMount=="function"&&(h.flags|=4194308),h.memoizedProps=y,h.memoizedState=Ne),A.props=y,A.state=Ne,A.context=H,y=fe):(typeof A.componentDidMount=="function"&&(h.flags|=4194308),y=!1)}else{A=h.stateNode,vt(c,h),H=h.memoizedProps,et=du(g,H),A.props=et,gt=h.pendingProps,_t=A.context,Ne=g.contextType,fe=_d,typeof Ne=="object"&&Ne!==null&&(fe=Mr(Ne)),ee=g.getDerivedStateFromProps,(Ne=typeof ee=="function"||typeof A.getSnapshotBeforeUpdate=="function")||typeof A.UNSAFE_componentWillReceiveProps!="function"&&typeof A.componentWillReceiveProps!="function"||(H!==gt||_t!==fe)&&NC(h,A,y,fe),Kl=!1,_t=h.memoizedState,A.state=_t,Le(h,y,A,M),me();var jt=h.memoizedState;H!==gt||_t!==jt||Kl||c!==null&&c.dependencies!==null&&bv(c.dependencies)?(typeof ee=="function"&&(IT(h,g,ee,y),jt=h.memoizedState),(et=Kl||DC(h,g,et,y,_t,jt,fe)||c!==null&&c.dependencies!==null&&bv(c.dependencies))?(Ne||typeof A.UNSAFE_componentWillUpdate!="function"&&typeof A.componentWillUpdate!="function"||(typeof A.componentWillUpdate=="function"&&A.componentWillUpdate(y,jt,fe),typeof A.UNSAFE_componentWillUpdate=="function"&&A.UNSAFE_componentWillUpdate(y,jt,fe)),typeof A.componentDidUpdate=="function"&&(h.flags|=4),typeof A.getSnapshotBeforeUpdate=="function"&&(h.flags|=1024)):(typeof A.componentDidUpdate!="function"||H===c.memoizedProps&&_t===c.memoizedState||(h.flags|=4),typeof A.getSnapshotBeforeUpdate!="function"||H===c.memoizedProps&&_t===c.memoizedState||(h.flags|=1024),h.memoizedProps=y,h.memoizedState=jt),A.props=y,A.state=jt,A.context=fe,y=et):(typeof A.componentDidUpdate!="function"||H===c.memoizedProps&&_t===c.memoizedState||(h.flags|=4),typeof A.getSnapshotBeforeUpdate!="function"||H===c.memoizedProps&&_t===c.memoizedState||(h.flags|=1024),y=!1)}return A=y,lm(c,h),y=(h.flags&128)!==0,A||y?(A=h.stateNode,g=y&&typeof g.getDerivedStateFromError!="function"?null:A.render(),h.flags|=1,c!==null&&y?(h.child=Su(h,c.child,null,M),h.child=Su(h,null,g,M)):fr(c,h,g,M),h.memoizedState=A.state,c=h.child):c=Bo(c,h,M),c}function GC(c,h,g,y){return ct(),h.flags|=256,fr(c,h,g,y),h.child}function zT(c){return{baseLanes:c,cachePool:jC()}}function BT(c,h,g){return c=c!==null?c.childLanes&~g:0,h&&(c|=ss),c}function kC(c,h,g){var y=h.pendingProps,M=!1,A=(h.flags&128)!==0,H;if((H=A)||(H=c!==null&&c.memoizedState===null?!1:(ji.current&2)!==0),H&&(M=!0,h.flags&=-129),H=(h.flags&32)!==0,h.flags&=-33,c===null){if(vn){if(M?Li(h):Er(),vn){var ee=Rr,fe;(fe=ee)&&(ee=sV(ee,co),ee!==null?(h.memoizedState={dehydrated:ee,treeContext:yu!==null?{id:ko,overflow:Wo}:null,retryLane:536870912},fe=t(18,null,null,0),fe.stateNode=ee,fe.return=h,h.child=fe,Br=h,Rr=null,fe=!0):fe=!1),fe||Ze(h)}if(ee=h.memoizedState,ee!==null&&(ee=ee.dehydrated,ee!==null))return w2(ee)?h.lanes=16:h.lanes=536870912,null;er(h)}return ee=y.children,y=y.fallback,M?(Er(),M=h.mode,ee=HT({mode:"hidden",children:ee},M),y=vu(y,M,g,null),ee.return=h,y.return=h,ee.sibling=y,h.child=ee,M=h.child,M.memoizedState=zT(g),M.childLanes=BT(c,H,g),h.memoizedState=V2,y):(Li(h),FT(h,ee))}if(fe=c.memoizedState,fe!==null&&(ee=fe.dehydrated,ee!==null)){if(A)h.flags&256?(Li(h),h.flags&=-257,h=VT(c,h,g)):h.memoizedState!==null?(Er(),h.child=c.child,h.flags|=128,h=null):(Er(),M=y.fallback,ee=h.mode,y=HT({mode:"visible",children:y.children},ee),M=vu(M,ee,g,null),M.flags|=2,y.return=h,M.return=h,y.sibling=M,h.child=y,Su(h,c.child,null,g),y=h.child,y.memoizedState=zT(g),y.childLanes=BT(c,H,g),h.memoizedState=V2,h=M);else if(Li(h),w2(ee))H=JH(ee).digest,y=Error(r(419)),y.stack="",y.digest=H,Qe({value:y,source:null,stack:null}),h=VT(c,h,g);else if(tr||cm(c,h,g,!1),H=(g&c.childLanes)!==0,tr||H){if(H=Qn,H!==null){if(y=g&-g,y&42)y=1;else switch(y){case 2:y=1;break;case 8:y=4;break;case 32:y=16;break;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:y=64;break;case 268435456:y=134217728;break;default:y=0}if(y=y&(H.suspendedLanes|g)?0:y,y!==0&&y!==fe.retryLane)throw fe.retryLane=y,Oe(c,y),zr(H,c,y),_D}A2(ee)||c2(),h=VT(c,h,g)}else A2(ee)?(h.flags|=128,h.child=c.child,h=tH.bind(null,c),$H(ee,h),h=null):(c=fe.treeContext,es&&(Rr=iV(ee),Br=h,vn=!0,Is=null,co=!1,c!==null&&(ns[is++]=ko,ns[is++]=Wo,ns[is++]=yu,ko=c.id,Wo=c.overflow,yu=h)),h=FT(h,y.children),h.flags|=4096);return h}return M?(Er(),M=y.fallback,ee=h.mode,fe=c.child,A=fe.sibling,y=ql(fe,{mode:"hidden",children:y.children}),y.subtreeFlags=fe.subtreeFlags&31457280,A!==null?M=ql(A,M):(M=vu(M,ee,g,null),M.flags|=2),M.return=h,y.return=h,y.sibling=M,h.child=y,y=M,M=h.child,ee=c.child.memoizedState,ee===null?ee=zT(g):(fe=ee.cachePool,fe!==null?(A=Go?xi._currentValue:xi._currentValue2,fe=fe.parent!==A?{parent:A,pool:A}:fe):fe=jC(),ee={baseLanes:ee.baseLanes|g,cachePool:fe}),M.memoizedState=ee,M.childLanes=BT(c,H,g),h.memoizedState=V2,y):(Li(h),g=c.child,c=g.sibling,g=ql(g,{mode:"visible",children:y.children}),g.return=h,g.sibling=null,c!==null&&(H=h.deletions,H===null?(h.deletions=[c],h.flags|=16):H.push(c)),h.child=g,h.memoizedState=null,g)}function FT(c,h){return h=HT({mode:"visible",children:h},c.mode),h.return=c,c.child=h}function HT(c,h){return L4(c,h,0,null)}function VT(c,h,g){return Su(h,c.child,null,g),c=FT(h,h.pendingProps.children),c.flags|=2,h.memoizedState=null,c}function WC(c,h,g){c.lanes|=h;var y=c.alternate;y!==null&&(y.lanes|=h),WT(c.return,h,g)}function GT(c,h,g,y,M){var A=c.memoizedState;A===null?c.memoizedState={isBackwards:h,rendering:null,renderingStartTime:0,last:y,tail:g,tailMode:M}:(A.isBackwards=h,A.rendering=null,A.renderingStartTime=0,A.last=y,A.tail=g,A.tailMode=M)}function XC(c,h,g){var y=h.pendingProps,M=y.revealOrder,A=y.tail;if(fr(c,h,y.children,g),y=ji.current,y&2)y=y&1|2,h.flags|=128;else{if(c!==null&&c.flags&128)e:for(c=h.child;c!==null;){if(c.tag===13)c.memoizedState!==null&&WC(c,g,h);else if(c.tag===19)WC(c,g,h);else if(c.child!==null){c.child.return=c,c=c.child;continue}if(c===h)break e;for(;c.sibling===null;){if(c.return===null||c.return===h)break e;c=c.return}c.sibling.return=c.return,c=c.sibling}y&=1}switch(T(ji,y),M){case"forwards":for(g=h.child,M=null;g!==null;)c=g.alternate,c!==null&&$r(c)===null&&(M=g),g=g.sibling;g=M,g===null?(M=h.child,h.child=null):(M=g.sibling,g.sibling=null),GT(h,!1,M,g,A);break;case"backwards":for(g=null,M=h.child,h.child=null;M!==null;){if(c=M.alternate,c!==null&&$r(c)===null){h.child=M;break}c=M.sibling,M.sibling=g,g=M,M=c}GT(h,!0,g,null,A);break;case"together":GT(h,!1,null,null,void 0);break;default:h.memoizedState=null}return h.child}function Bo(c,h,g){if(c!==null&&(h.dependencies=c.dependencies),ec|=h.lanes,!(g&h.childLanes))if(c!==null){if(cm(c,h,g,!1),(g&h.childLanes)===0)return null}else return null;if(c!==null&&h.child!==c.child)throw Error(r(153));if(h.child!==null){for(c=h.child,g=ql(c,c.pendingProps),h.child=g,g.return=h;c.sibling!==null;)c=c.sibling,g=g.sibling=ql(c,c.pendingProps),g.return=h;g.sibling=null}return h.child}function kT(c,h){return c.lanes&h?!0:(c=c.dependencies,!!(c!==null&&bv(c)))}function WF(c,h,g){switch(h.tag){case 3:tt(h,h.stateNode.containerInfo),Gl(h,xi,c.memoizedState.cache),ct();break;case 27:case 5:ve(h);break;case 4:tt(h,h.stateNode.containerInfo);break;case 10:Gl(h,h.type,h.memoizedProps.value);break;case 13:var y=h.memoizedState;if(y!==null)return y.dehydrated!==null?(Li(h),h.flags|=128,null):g&h.child.childLanes?kC(c,h,g):(Li(h),c=Bo(c,h,g),c!==null?c.sibling:null);Li(h);break;case 19:var M=(c.flags&128)!==0;if(y=(g&h.childLanes)!==0,y||(cm(c,h,g,!1),y=(g&h.childLanes)!==0),M){if(y)return XC(c,h,g);h.flags|=128}if(M=h.memoizedState,M!==null&&(M.rendering=null,M.tail=null,M.lastEffect=null),T(ji,ji.current),y)break;return null;case 22:case 23:return h.lanes=0,BC(c,h,g);case 24:Gl(h,xi,c.memoizedState.cache)}return Bo(c,h,g)}function qC(c,h,g){if(c!==null)if(c.memoizedProps!==h.pendingProps)tr=!0;else{if(!kT(c,g)&&!(h.flags&128))return tr=!1,WF(c,h,g);tr=!!(c.flags&131072)}else tr=!1,vn&&h.flags&1048576&&De(h,Fv,h.index);switch(h.lanes=0,h.tag){case 16:e:{c=h.pendingProps;var y=h.elementType,M=y._init;if(y=M(y._payload),h.type=y,typeof y=="function")d2(y)?(c=du(y,c),h.tag=1,h=VC(null,h,y,c,g)):(h.tag=0,h=PT(null,h,y,c,g));else{if(y!=null){if(M=y.$$typeof,M===_2){h.tag=11,h=UC(null,h,y,c,g);break e}else if(M===S2){h.tag=14,h=PC(null,h,y,c,g);break e}}throw h=s(y)||y,Error(r(306,h,""))}}return h;case 0:return PT(c,h,h.type,h.pendingProps,g);case 1:return y=h.type,M=du(y,h.pendingProps),VC(c,h,y,M,g);case 3:e:{if(tt(h,h.stateNode.containerInfo),c===null)throw Error(r(387));var A=h.pendingProps;M=h.memoizedState,y=M.element,vt(c,h),Le(h,A,null,g);var H=h.memoizedState;if(A=H.cache,Gl(h,xi,A),A!==M.cache&&XT(h,[xi],g,!0),me(),A=H.element,es&&M.isDehydrated)if(M={element:A,isDehydrated:!1,cache:H.cache},h.updateQueue.baseState=M,h.memoizedState=M,h.flags&256){h=GC(c,h,A,g);break e}else if(A!==y){y=ce(Error(r(424)),h),Qe(y),h=GC(c,h,A,g);break e}else for(es&&(Rr=nV(h.stateNode.containerInfo),Br=h,vn=!0,Is=null,co=!0),g=gD(h,null,A,g),h.child=g;g;)g.flags=g.flags&-3|4096,g=g.sibling;else{if(ct(),A===y){h=Bo(c,h,g);break e}fr(c,h,A,g)}h=h.child}return h;case 26:if(ts)return lm(c,h),c===null?(g=sD(h.type,null,h.pendingProps,null))?h.memoizedState=g:vn||(h.stateNode=_V(h.type,h.pendingProps,Ql.current,h)):h.memoizedState=sD(h.type,c.memoizedProps,h.pendingProps,c.memoizedState),null;case 27:if(wr)return ve(h),c===null&&wr&&vn&&(y=h.stateNode=dD(h.type,h.pendingProps,Ql.current,pr.current,!1),Br=h,co=!0,Rr=iD(y)),y=h.pendingProps.children,c!==null||vn?fr(c,h,y,g):h.child=Su(h,null,y,g),lm(c,h),h.child;case 5:return c===null&&vn&&(mV(h.type,h.pendingProps,pr.current),(M=y=Rr)&&(y=rV(y,h.type,h.pendingProps,co),y!==null?(h.stateNode=y,Br=h,Rr=iD(y),co=!1,M=!0):M=!1),M||Ze(h)),ve(h),M=h.type,A=h.pendingProps,H=c!==null?c.memoizedProps:null,y=A.children,Iv(M,A)?y=null:H!==null&&Iv(M,H)&&(h.flags|=32),h.memoizedState!==null&&(M=oo(c,h,Sa,null,null,g),Go?xu._currentValue=M:xu._currentValue2=M),lm(c,h),fr(c,h,y,g),h.child;case 6:return c===null&&vn&&(gV(h.pendingProps,pr.current),(c=g=Rr)&&(g=aV(g,h.pendingProps,co),g!==null?(h.stateNode=g,Br=h,Rr=null,c=!0):c=!1),c||Ze(h)),null;case 13:return kC(c,h,g);case 4:return tt(h,h.stateNode.containerInfo),y=h.pendingProps,c===null?h.child=Su(h,null,y,g):fr(c,h,y,g),h.child;case 11:return UC(c,h,h.type,h.pendingProps,g);case 7:return fr(c,h,h.pendingProps,g),h.child;case 8:return fr(c,h,h.pendingProps.children,g),h.child;case 12:return fr(c,h,h.pendingProps.children,g),h.child;case 10:return y=h.pendingProps,Gl(h,h.type,y.value),fr(c,h,y.children,g),h.child;case 9:return M=h.type._context,y=h.pendingProps.children,fu(h),M=Mr(M),y=y(M),h.flags|=1,fr(c,h,y,g),h.child;case 14:return PC(c,h,h.type,h.pendingProps,g);case 15:return zC(c,h,h.type,h.pendingProps,g);case 19:return XC(c,h,g);case 22:return BC(c,h,g);case 24:return fu(h),y=Mr(xi),c===null?(M=YT(),M===null&&(M=Qn,A=qT(),M.pooledCache=A,A.refCount++,A!==null&&(M.pooledCacheLanes|=g),M=A),h.memoizedState={parent:y,cache:M},Tt(h),Gl(h,xi,M)):(c.lanes&g&&(vt(c,h),Le(h,null,null,g),me()),M=c.memoizedState,A=h.memoizedState,M.parent!==y?(M={parent:y,cache:y},h.memoizedState=M,h.lanes===0&&(h.memoizedState=h.updateQueue.baseState=M),Gl(h,xi,y)):(y=A.cache,Gl(h,xi,y),y!==M.cache&&XT(h,[xi],g,!0))),fr(c,h,h.pendingProps.children,g),h.child;case 29:throw h.pendingProps}throw Error(r(156,h.tag))}function Gl(c,h,g){Go?(T(Yv,h._currentValue),h._currentValue=g):(T(Yv,h._currentValue2),h._currentValue2=g)}function Fo(c){var h=Yv.current;Go?c._currentValue=h:c._currentValue2=h,_(Yv)}function WT(c,h,g){for(;c!==null;){var y=c.alternate;if((c.childLanes&h)!==h?(c.childLanes|=h,y!==null&&(y.childLanes|=h)):y!==null&&(y.childLanes&h)!==h&&(y.childLanes|=h),c===g)break;c=c.return}}function XT(c,h,g,y){var M=c.child;for(M!==null&&(M.return=c);M!==null;){var A=M.dependencies;if(A!==null){var H=M.child;A=A.firstContext;e:for(;A!==null;){var ee=A;A=M;for(var fe=0;feAm&&(h.flags|=128,y=!0,hm(M,!1),h.lanes=4194304)}else{if(!y)if(c=$r(A),c!==null){if(h.flags|=128,y=!0,c=c.updateQueue,h.updateQueue=c,wv(h,c),hm(M,!0),M.tail===null&&M.tailMode==="hidden"&&!A.alternate&&!vn)return vi(h),null}else 2*Ls()-M.renderingStartTime>Am&&g!==536870912&&(h.flags|=128,y=!0,hm(M,!1),h.lanes=4194304);M.isBackwards?(A.sibling=h.child,h.child=A):(c=M.last,c!==null?c.sibling=A:h.child=A,M.last=A)}return M.tail!==null?(h=M.tail,M.rendering=h,M.tail=h.sibling,M.renderingStartTime=Ls(),h.sibling=null,c=ji.current,T(ji,y?c&1|2:c&1),h):(vi(h),null);case 22:case 23:return er(h),ao(),y=h.memoizedState!==null,c!==null?c.memoizedState!==null!==y&&(h.flags|=8192):y&&(h.flags|=8192),y?g&536870912&&!(h.flags&128)&&(vi(h),h.subtreeFlags&6&&(h.flags|=8192)):vi(h),g=h.updateQueue,g!==null&&wv(h,g.retryQueue),g=null,c!==null&&c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(g=c.memoizedState.cachePool.pool),y=null,h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(y=h.memoizedState.cachePool.pool),y!==g&&(h.flags|=2048),c!==null&&_(Au),null;case 24:return g=null,c!==null&&(g=c.memoizedState.cache),h.memoizedState.cache!==g&&(h.flags|=2048),Fo(xi),vi(h),null;case 25:return null}throw Error(r(156,h.tag))}function qF(c,h){switch(nt(h),h.tag){case 1:return c=h.flags,c&65536?(h.flags=c&-65537|128,h):null;case 3:return Fo(xi),xt(),c=h.flags,c&65536&&!(c&128)?(h.flags=c&-65537|128,h):null;case 26:case 27:case 5:return we(h),null;case 13:if(er(h),c=h.memoizedState,c!==null&&c.dehydrated!==null){if(h.alternate===null)throw Error(r(340));ct()}return c=h.flags,c&65536?(h.flags=c&-65537|128,h):null;case 19:return _(ji),null;case 4:return xt(),null;case 10:return Fo(h.type),null;case 22:case 23:return er(h),ao(),c!==null&&_(Au),c=h.flags,c&65536?(h.flags=c&-65537|128,h):null;case 24:return Fo(xi),null;case 25:return null;default:return null}}function $C(c,h){switch(nt(h),h.tag){case 3:Fo(xi),xt();break;case 26:case 27:case 5:we(h);break;case 4:xt();break;case 13:er(h);break;case 19:_(ji);break;case 10:Fo(h.type);break;case 22:case 23:er(h),ao(),c!==null&&_(Au);break;case 24:Fo(xi)}}function dm(c,h){try{var g=h.updateQueue,y=g!==null?g.lastEffect:null;if(y!==null){var M=y.next;g=M;do{if((g.tag&c)===c){y=void 0;var A=g.create,H=g.inst;y=A(),H.destroy=y}g=g.next}while(g!==M)}}catch(ee){wn(h,h.return,ee)}}function kl(c,h,g){try{var y=h.updateQueue,M=y!==null?y.lastEffect:null;if(M!==null){var A=M.next;y=A;do{if((y.tag&c)===c){var H=y.inst,ee=H.destroy;if(ee!==void 0){H.destroy=void 0,M=h;var fe=g;try{ee()}catch(Ne){wn(M,fe,Ne)}}}y=y.next}while(y!==A)}}catch(Ne){wn(h,h.return,Ne)}}function e4(c){var h=c.updateQueue;if(h!==null){var g=c.stateNode;try{ke(h,g)}catch(y){wn(c,c.return,y)}}}function t4(c,h,g){g.props=du(c.type,c.memoizedProps),g.state=c.memoizedState;try{g.componentWillUnmount()}catch(y){wn(c,h,y)}}function pu(c,h){try{var g=c.ref;if(g!==null){var y=c.stateNode;switch(c.tag){case 26:case 27:case 5:var M=mm(y);break;default:M=y}typeof g=="function"?c.refCleanup=g(M):g.current=M}}catch(A){wn(c,h,A)}}function Ea(c,h){var g=c.ref,y=c.refCleanup;if(g!==null)if(typeof y=="function")try{y()}catch(M){wn(c,h,M)}finally{c.refCleanup=null,c=c.alternate,c!=null&&(c.refCleanup=null)}else if(typeof g=="function")try{g(null)}catch(M){wn(c,h,M)}else g.current=null}function n4(c){var h=c.type,g=c.memoizedProps,y=c.stateNode;try{FH(y,h,g,c)}catch(M){wn(c,c.return,M)}}function i4(c,h,g){try{HH(c.stateNode,c.type,g,h,c)}catch(y){wn(c,c.return,y)}}function r4(c){return c.tag===5||c.tag===3||(ts?c.tag===26:!1)||(wr?c.tag===27:!1)||c.tag===4}function KT(c){e:for(;;){for(;c.sibling===null;){if(c.return===null||r4(c.return))return null;c=c.return}for(c.sibling.return=c.return,c=c.sibling;c.tag!==5&&c.tag!==6&&(!wr||c.tag!==27)&&c.tag!==18;){if(c.flags&2||c.child===null||c.tag===4)continue e;c.child.return=c,c=c.child}if(!(c.flags&2))return c.stateNode}}function JT(c,h,g){var y=c.tag;if(y===5||y===6)c=c.stateNode,h?GH(g,c,h):zH(g,c);else if(!(y===4||wr&&y===27)&&(c=c.child,c!==null))for(JT(c,h,g),c=c.sibling;c!==null;)JT(c,h,g),c=c.sibling}function Rv(c,h,g){var y=c.tag;if(y===5||y===6)c=c.stateNode,h?VH(g,c,h):PH(g,c);else if(!(y===4||wr&&y===27)&&(c=c.child,c!==null))for(Rv(c,h,g),c=c.sibling;c!==null;)Rv(c,h,g),c=c.sibling}function a4(c,h,g){c=c.containerInfo;try{$4(c,g)}catch(y){wn(h,h.return,y)}}function YF(c,h){for(mH(c.containerInfo),nr=h;nr!==null;)if(c=nr,h=c.child,(c.subtreeFlags&1028)!==0&&h!==null)h.return=c,nr=h;else for(;nr!==null;){c=nr;var g=c.alternate;switch(h=c.flags,c.tag){case 0:break;case 11:case 15:break;case 1:if(h&1024&&g!==null){h=void 0;var y=c,M=g.memoizedProps;g=g.memoizedState;var A=y.stateNode;try{var H=du(y.type,M,y.elementType===y.type);h=A.getSnapshotBeforeUpdate(H,g),A.__reactInternalSnapshotBeforeUpdate=h}catch(ee){wn(y,y.return,ee)}}break;case 3:h&1024&&Ar&&ZH(c.stateNode.containerInfo);break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if(h&1024)throw Error(r(163))}if(h=c.sibling,h!==null){h.return=c.return,nr=h;break}nr=c.return}return H=SD,SD=!1,H}function s4(c,h,g){var y=g.flags;switch(g.tag){case 0:case 11:case 15:Ho(c,g),y&4&&dm(5,g);break;case 1:if(Ho(c,g),y&4)if(c=g.stateNode,h===null)try{c.componentDidMount()}catch(ee){wn(g,g.return,ee)}else{var M=du(g.type,h.memoizedProps);h=h.memoizedState;try{c.componentDidUpdate(M,h,c.__reactInternalSnapshotBeforeUpdate)}catch(ee){wn(g,g.return,ee)}}y&64&&e4(g),y&512&&pu(g,g.return);break;case 3:if(Ho(c,g),y&64&&(y=g.updateQueue,y!==null)){if(c=null,g.child!==null)switch(g.child.tag){case 27:case 5:c=mm(g.child.stateNode);break;case 1:c=g.child.stateNode}try{ke(y,c)}catch(ee){wn(g,g.return,ee)}}break;case 26:if(ts){Ho(c,g),y&512&&pu(g,g.return);break}case 27:case 5:Ho(c,g),h===null&&y&4&&n4(g),y&512&&pu(g,g.return);break;case 12:Ho(c,g);break;case 13:Ho(c,g),y&4&&l4(c,g);break;case 22:if(M=g.memoizedState!==null||qo,!M){h=h!==null&&h.memoizedState!==null||yi;var A=qo,H=yi;qo=M,(yi=h)&&!H?Wl(c,g,(g.subtreeFlags&8772)!==0):Ho(c,g),qo=A,yi=H}y&512&&(g.memoizedProps.mode==="manual"?pu(g,g.return):Ea(g,g.return));break;default:Ho(c,g)}}function o4(c){var h=c.alternate;h!==null&&(c.alternate=null,o4(h)),c.child=null,c.deletions=null,c.sibling=null,c.tag===5&&(h=c.stateNode,h!==null&&EH(h)),c.stateNode=null,c.return=null,c.dependencies=null,c.memoizedProps=null,c.memoizedState=null,c.pendingProps=null,c.stateNode=null,c.updateQueue=null}function Os(c,h,g){for(g=g.child;g!==null;)$T(c,h,g),g=g.sibling}function $T(c,h,g){if(Ra&&typeof Ra.onCommitFiberUnmount=="function")try{Ra.onCommitFiberUnmount(_m,g)}catch{}switch(g.tag){case 26:if(ts){yi||Ea(g,h),Os(c,h,g),g.memoizedState?lD(g.memoizedState):g.stateNode&&uD(g.stateNode);break}case 27:if(wr){yi||Ea(g,h);var y=Pi,M=Da;Pi=g.stateNode,Os(c,h,g),bV(g.stateNode),Pi=y,Da=M;break}case 5:yi||Ea(g,h);case 6:if(Ar){if(y=Pi,M=Da,Pi=null,Os(c,h,g),Pi=y,Da=M,Pi!==null)if(Da)try{WH(Pi,g.stateNode)}catch(A){wn(g,h,A)}else try{kH(Pi,g.stateNode)}catch(A){wn(g,h,A)}}else Os(c,h,g);break;case 18:Ar&&Pi!==null&&(Da?pV(Pi,g.stateNode):fV(Pi,g.stateNode));break;case 4:Ar?(y=Pi,M=Da,Pi=g.stateNode.containerInfo,Da=!0,Os(c,h,g),Pi=y,Da=M):(Zl&&a4(g.stateNode,g,K4()),Os(c,h,g));break;case 0:case 11:case 14:case 15:yi||kl(2,g,h),yi||kl(4,g,h),Os(c,h,g);break;case 1:yi||(Ea(g,h),y=g.stateNode,typeof y.componentWillUnmount=="function"&&t4(g,h,y)),Os(c,h,g);break;case 21:Os(c,h,g);break;case 22:yi||Ea(g,h),yi=(y=yi)||g.memoizedState!==null,Os(c,h,g),yi=y;break;default:Os(c,h,g)}}function l4(c,h){if(es&&h.memoizedState===null&&(c=h.alternate,c!==null&&(c=c.memoizedState,c!==null&&(c=c.dehydrated,c!==null))))try{dV(c)}catch(g){wn(h,h.return,g)}}function jF(c){switch(c.tag){case 13:case 19:var h=c.stateNode;return h===null&&(h=c.stateNode=new yD),h;case 22:return c=c.stateNode,h=c._retryCache,h===null&&(h=c._retryCache=new yD),h;default:throw Error(r(435,c.tag))}}function e2(c,h){var g=jF(c);h.forEach(function(y){var M=nH.bind(null,c,y);g.has(y)||(g.add(y),y.then(M,M))})}function ea(c,h){var g=h.deletions;if(g!==null)for(var y=0;y";case Zv:return":has("+(a2(c)||"")+")";case Qv:return'[role="'+c.value+'"]';case Jv:return'"'+c.value+'"';case Kv:return'[data-testname="'+c.value+'"]';default:throw Error(r(365))}}function g4(c,h){var g=[];c=[c,0];for(var y=0;yg?32:g;g=Vt.T;var M=_u();try{if(ta(y),Vt.T=null,Ru===null)var A=!1;else{y=j2,j2=null;var H=Ru,ee=wm;if(Ru=null,wm=0,Bn&6)throw Error(r(331));var fe=Bn;if(Bn|=4,p4(H.current),h4(H,H.current,ee,y),Bn=fe,Je(0,!1),Ra&&typeof Ra.onPostCommitFiberRoot=="function")try{Ra.onPostCommitFiberRoot(_m,H)}catch{}A=!0}return A}finally{ta(M),Vt.T=g,C4(c,h)}}return!1}function D4(c,h,g){h=ce(g,h),h=UT(c.stateNode,h,2),c=He(c,h,2),c!==null&&(z(c,2),$e(c))}function wn(c,h,g){if(c.tag===3)D4(c,c,g);else for(;h!==null;){if(h.tag===3){D4(h,c,g);break}else if(h.tag===1){var y=h.stateNode;if(typeof h.type.getDerivedStateFromError=="function"||typeof y.componentDidCatch=="function"&&(tc===null||!tc.has(y))){c=ce(g,c),g=LC(2),y=He(h,g,2),y!==null&&(IC(g,y,h,c),z(y,2),$e(y));break}}h=h.return}}function h2(c,h,g){var y=c.pingCache;if(y===null){y=c.pingCache=new FV;var M=new Set;y.set(h,M)}else M=y.get(h),M===void 0&&(M=new Set,y.set(h,M));M.has(g)||(k2=!0,M.add(g),c=eH.bind(null,c,h,g),h.then(c,c))}function eH(c,h,g){var y=c.pingCache;y!==null&&y.delete(h),c.pingedLanes|=c.suspendedLanes&g,c.warmLanes&=~g,Qn===c&&(dn&g)===g&&(Si===4||Si===3&&(dn&62914560)===dn&&300>Ls()-q2?!(Bn&2)&&dd(c,0):W2|=g,Ld===dn&&(Ld=0)),$e(c)}function N4(c,h){h===0&&(h=N()),c=Oe(c,h),c!==null&&(z(c,h),$e(c))}function tH(c){var h=c.memoizedState,g=0;h!==null&&(g=h.retryLane),N4(c,g)}function nH(c,h){var g=0;switch(c.tag){case 13:var y=c.stateNode,M=c.memoizedState;M!==null&&(g=M.retryLane);break;case 19:y=c.stateNode;break;case 22:y=c.stateNode._retryCache;break;default:throw Error(r(314))}y!==null&&y.delete(h),N4(c,g)}function iH(c,h){return zv(c,h)}function rH(c,h,g,y){this.tag=c,this.key=g,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=h,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=y,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function d2(c){return c=c.prototype,!(!c||!c.isReactComponent)}function ql(c,h){var g=c.alternate;return g===null?(g=t(c.tag,h,c.key,c.mode),g.elementType=c.elementType,g.type=c.type,g.stateNode=c.stateNode,g.alternate=c,c.alternate=g):(g.pendingProps=h,g.type=c.type,g.flags=0,g.subtreeFlags=0,g.deletions=null),g.flags=c.flags&31457280,g.childLanes=c.childLanes,g.lanes=c.lanes,g.child=c.child,g.memoizedProps=c.memoizedProps,g.memoizedState=c.memoizedState,g.updateQueue=c.updateQueue,h=c.dependencies,g.dependencies=h===null?null:{lanes:h.lanes,firstContext:h.firstContext},g.sibling=c.sibling,g.index=c.index,g.ref=c.ref,g.refCleanup=c.refCleanup,g}function O4(c,h){c.flags&=31457282;var g=c.alternate;return g===null?(c.childLanes=0,c.lanes=h,c.child=null,c.subtreeFlags=0,c.memoizedProps=null,c.memoizedState=null,c.updateQueue=null,c.dependencies=null,c.stateNode=null):(c.childLanes=g.childLanes,c.lanes=g.lanes,c.child=g.child,c.subtreeFlags=0,c.deletions=null,c.memoizedProps=g.memoizedProps,c.memoizedState=g.memoizedState,c.updateQueue=g.updateQueue,c.type=g.type,h=g.dependencies,c.dependencies=h===null?null:{lanes:h.lanes,firstContext:h.firstContext}),c}function Nv(c,h,g,y,M,A){var H=0;if(y=c,typeof c=="function")d2(c)&&(H=1);else if(typeof c=="string")H=ts&&wr?aD(c,g,pr.current)?26:fD(c)?27:5:ts?aD(c,g,pr.current)?26:5:wr&&fD(c)?27:5;else e:switch(c){case md:return vu(g.children,M,A,h);case F4:H=8,M|=24;break;case v2:return c=t(12,g,h,M|2),c.elementType=v2,c.lanes=A,c;case x2:return c=t(13,g,h,M),c.elementType=x2,c.lanes=A,c;case y2:return c=t(19,g,h,M),c.elementType=y2,c.lanes=A,c;case V4:return L4(g,M,A,h);default:if(typeof c=="object"&&c!==null)switch(c.$$typeof){case lH:case Yl:H=10;break e;case H4:H=9;break e;case _2:H=11;break e;case S2:H=14;break e;case jl:H=16,y=null;break e}H=29,g=Error(r(130,c===null?"null":typeof c,"")),y=null}return h=t(H,g,h,M),h.elementType=c,h.type=y,h.lanes=A,h}function vu(c,h,g,y){return c=t(7,c,y,h),c.lanes=g,c}function L4(c,h,g,y){c=t(22,c,y,h),c.elementType=V4,c.lanes=g;var M={_visibility:1,_pendingVisibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null,_current:null,detach:function(){var A=M._current;if(A===null)throw Error(r(456));if(!(M._pendingVisibility&2)){var H=Oe(A,2);H!==null&&(M._pendingVisibility|=2,zr(H,A,2))}},attach:function(){var A=M._current;if(A===null)throw Error(r(456));if(M._pendingVisibility&2){var H=Oe(A,2);H!==null&&(M._pendingVisibility&=-3,zr(H,A,2))}}};return c.stateNode=M,c}function f2(c,h,g){return c=t(6,c,null,h),c.lanes=g,c}function p2(c,h,g){return h=t(4,c.children!==null?c.children:[],c.key,h),h.lanes=g,h.stateNode={containerInfo:c.containerInfo,pendingChildren:null,implementation:c.implementation},h}function aH(c,h,g,y,M,A,H,ee){this.tag=1,this.containerInfo=c,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=M2,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=C(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.finishedLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=C(0),this.hiddenUpdates=C(null),this.identifierPrefix=y,this.onUncaughtError=M,this.onCaughtError=A,this.onRecoverableError=H,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=ee,this.incompleteTransitions=new Map}function I4(c,h,g,y,M,A,H,ee,fe,Ne,et,gt){return c=new aH(c,h,g,H,ee,fe,Ne,gt),h=1,A===!0&&(h|=24),A=t(3,null,null,h),c.current=A,A.stateNode=c,h=qT(),h.refCount++,c.pooledCache=h,h.refCount++,A.memoizedState={element:y,isDehydrated:g,cache:h},Tt(A),c}function U4(c){return c?(c=_d,c):_d}function P4(c){var h=c._reactInternals;if(h===void 0)throw typeof c.render=="function"?Error(r(188)):(c=Object.keys(c).join(","),Error(r(268,c)));return c=m(h),c=c!==null?v(c):null,c===null?null:mm(c.stateNode)}function z4(c,h,g,y,M,A){M=U4(M),y.context===null?y.context=M:y.pendingContext=M,y=Ue(h),y.payload={element:g},A=A===void 0?null:A,A!==null&&(y.callback=A),g=He(c,y,h),g!==null&&(zr(g,c,h),pt(g,c,h))}function B4(c,h){if(c=c.memoizedState,c!==null&&c.dehydrated!==null){var g=c.retryLane;c.retryLane=g!==0&&g=Ne&&A>=gt&&M<=et&&H<=_t){c.splice(h,1);break}else if(y!==Ne||g.width!==fe.width||_tH){if(!(A!==gt||g.height!==fe.height||etM)){Ne>y&&(fe.width+=Ne-y,fe.x=y),etA&&(fe.height+=gt-A,fe.y=A),_tg&&(g=ee)),eevd||(c.current=C2[vd],C2[vd]=null,vd--)}function T(c,h){vd++,C2[vd]=c.current,c.current=h}function E(c){return c>>>=0,c===0?32:31-(MV(c)/AV|0)|0}function b(c){var h=c&42;if(h!==0)return h;switch(c&-c){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return c&4194176;case 4194304:case 8388608:case 16777216:case 33554432:return c&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return c}}function R(c,h){var g=c.pendingLanes;if(g===0)return 0;var y=0,M=c.suspendedLanes,A=c.pingedLanes,H=c.warmLanes;c=c.finishedLanes!==0;var ee=g&134217727;return ee!==0?(g=ee&~M,g!==0?y=b(g):(A&=ee,A!==0?y=b(A):c||(H=ee&~H,H!==0&&(y=b(H))))):(ee=g&~M,ee!==0?y=b(ee):A!==0?y=b(A):c||(H=g&~H,H!==0&&(y=b(H)))),y===0?0:h!==0&&h!==y&&!(h&M)&&(M=y&-y,H=h&-h,M>=H||M===32&&(H&4194176)!==0)?h:y}function w(c,h){return(c.pendingLanes&~(c.suspendedLanes&~c.pingedLanes)&h)===0}function L(c,h){switch(c){case 1:case 2:case 4:case 8:return h+250;case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return h+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function U(){var c=Uv;return Uv<<=1,!(Uv&4194176)&&(Uv=128),c}function N(){var c=Pv;return Pv<<=1,!(Pv&62914560)&&(Pv=4194304),c}function C(c){for(var h=[],g=0;31>g;g++)h.push(c);return h}function z(c,h){c.pendingLanes|=h,h!==268435456&&(c.suspendedLanes=0,c.pingedLanes=0,c.warmLanes=0)}function W(c,h,g,y,M,A){var H=c.pendingLanes;c.pendingLanes=g,c.suspendedLanes=0,c.pingedLanes=0,c.warmLanes=0,c.expiredLanes&=g,c.entangledLanes&=g,c.errorRecoveryDisabledLanes&=g,c.shellSuspendCounter=0;var ee=c.entanglements,fe=c.expirationTimes,Ne=c.hiddenUpdates;for(g=H&~g;0>=H,M-=H,ko=1<<32-wa(h)+M|g<_n?(ir=Ft,Ft=null):ir=Ft.sibling;var xn=_t(_e,Ft,ye[_n],Ke);if(xn===null){Ft===null&&(Ft=ir);break}c&&Ft&&xn.alternate===null&&h(_e,Ft),ue=A(xn,ue,_n),ni===null?Nt=xn:ni.sibling=xn,ni=xn,Ft=ir}if(_n===ye.length)return g(_e,Ft),vn&&se(_e,_n),Nt;if(Ft===null){for(;_n_n?(ir=Ft,Ft=null):ir=Ft.sibling;var nc=_t(_e,Ft,xn.value,Ke);if(nc===null){Ft===null&&(Ft=ir);break}c&&Ft&&nc.alternate===null&&h(_e,Ft),ue=A(nc,ue,_n),ni===null?Nt=nc:ni.sibling=nc,ni=nc,Ft=ir}if(xn.done)return g(_e,Ft),vn&&se(_e,_n),Nt;if(Ft===null){for(;!xn.done;_n++,xn=ye.next())xn=gt(_e,xn.value,Ke),xn!==null&&(ue=A(xn,ue,_n),ni===null?Nt=xn:ni.sibling=xn,ni=xn);return vn&&se(_e,_n),Nt}for(Ft=y(Ft);!xn.done;_n++,xn=ye.next())xn=jt(Ft,_e,_n,xn.value,Ke),xn!==null&&(c&&xn.alternate!==null&&Ft.delete(xn.key===null?_n:xn.key),ue=A(xn,ue,_n),ni===null?Nt=xn:ni.sibling=xn,ni=xn);return c&&Ft.forEach(function(HV){return h(_e,HV)}),vn&&se(_e,_n),Nt}function Cu(_e,ue,ye,Ke){if(typeof ye=="object"&&ye!==null&&ye.type===md&&ye.key===null&&(ye=ye.props.children),typeof ye=="object"&&ye!==null){switch(ye.$$typeof){case Ov:e:{for(var Nt=ye.key;ue!==null;){if(ue.key===Nt){if(Nt=ye.type,Nt===md){if(ue.tag===7){g(_e,ue.sibling),Ke=M(ue,ye.props.children),Ke.return=_e,_e=Ke;break e}}else if(ue.elementType===Nt||typeof Nt=="object"&&Nt!==null&&Nt.$$typeof===jl&&mi(Nt)===ue.type){g(_e,ue.sibling),Ke=M(ue,ye.props),Gt(Ke,ye),Ke.return=_e,_e=Ke;break e}g(_e,ue);break}else h(_e,ue);ue=ue.sibling}ye.type===md?(Ke=vu(ye.props.children,_e.mode,Ke,ye.key),Ke.return=_e,_e=Ke):(Ke=Nv(ye.type,ye.key,ye.props,null,_e.mode,Ke),Gt(Ke,ye),Ke.return=_e,_e=Ke)}return H(_e);case pd:e:{for(Nt=ye.key;ue!==null;){if(ue.key===Nt)if(ue.tag===4&&ue.stateNode.containerInfo===ye.containerInfo&&ue.stateNode.implementation===ye.implementation){g(_e,ue.sibling),Ke=M(ue,ye.children||[]),Ke.return=_e,_e=Ke;break e}else{g(_e,ue);break}else h(_e,ue);ue=ue.sibling}Ke=p2(ye,_e.mode,Ke),Ke.return=_e,_e=Ke}return H(_e);case jl:return Nt=ye._init,ye=Nt(ye._payload),Cu(_e,ue,ye,Ke)}if(Lv(ye))return os(_e,ue,ye,Ke);if(a(ye)){if(Nt=a(ye),typeof Nt!="function")throw Error(r(150));return ye=Nt.call(ye),Cm(_e,ue,ye,Ke)}if(typeof ye.then=="function")return Cu(_e,ue,Et(ye),Ke);if(ye.$$typeof===Yl)return Cu(_e,ue,Mv(_e,ye),Ke);kt(_e,ye)}return typeof ye=="string"&&ye!==""||typeof ye=="number"||typeof ye=="bigint"?(ye=""+ye,ue!==null&&ue.tag===6?(g(_e,ue.sibling),Ke=M(ue,ye),Ke.return=_e,_e=Ke):(g(_e,ue),Ke=f2(ye,_e.mode,Ke),Ke.return=_e,_e=Ke),H(_e)):g(_e,ue)}return function(_e,ue,ye,Ke){try{Tm=0;var Nt=Cu(_e,ue,ye,Ke);return wd=null,Nt}catch(Ft){if(Ft===Sm)throw Ft;var ni=t(29,Ft,null,_e.mode);return ni.lanes=Ke,ni.return=_e,ni}finally{}}}function Po(c,h){c=jo,T(Wv,c),T(Rd,h),jo=c|h.baseLanes}function ro(){T(Wv,jo),T(Rd,Rd.current)}function ao(){jo=Wv.current,_(Rd),_(Wv)}function Li(c){var h=c.alternate;T(ji,ji.current&1),T(as,c),uo===null&&(h===null||Rd.current!==null||h.memoizedState!==null)&&(uo=c)}function so(c){if(c.tag===22){if(T(ji,ji.current),T(as,c),uo===null){var h=c.alternate;h!==null&&h.memoizedState!==null&&(uo=c)}}else Er()}function Er(){T(ji,ji.current),T(as,as.current)}function er(c){_(as),uo===c&&(uo=null),_(ji)}function $r(c){for(var h=c;h!==null;){if(h.tag===13){var g=h.memoizedState;if(g!==null&&(g=g.dehydrated,g===null||A2(g)||w2(g)))return h}else if(h.tag===19&&h.memoizedProps.revealOrder!==void 0){if(h.flags&128)return h}else if(h.child!==null){h.child.return=h,h=h.child;continue}if(h===c)break;for(;h.sibling===null;){if(h.return===null||h.return===c)return null;h=h.return}h.sibling.return=h.return,h=h.sibling}return null}function Un(){throw Error(r(321))}function Ja(c,h){if(h===null)return!1;for(var g=0;gA?A:8);var H=Vt.T,ee={};Vt.T=ee,LT(c,!1,h,g);try{var fe=M(),Ne=Vt.S;if(Ne!==null&&Ne(ee,fe),fe!==null&&typeof fe=="object"&&typeof fe.then=="function"){var et=je(fe,y);om(c,h,et,Ma(c))}else om(c,h,y,Ma(c))}catch(gt){om(c,h,{then:function(){},status:"rejected",reason:gt},Ma())}finally{ta(A),Vt.T=H}}function bC(c){var h=c.memoizedState;if(h!==null)return h;h={memoizedState:gd,baseState:gd,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:q,lastRenderedState:gd},next:null};var g={};return h.next={memoizedState:g,baseState:g,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:q,lastRenderedState:g},next:null},c.memoizedState=h,c=c.alternate,c!==null&&(c.memoizedState=h),h}function OT(){return Mr(xu)}function MC(){return I().memoizedState}function AC(){return I().memoizedState}function VF(c){for(var h=c.return;h!==null;){switch(h.tag){case 24:case 3:var g=Ma();c=Ue(g);var y=He(h,c,g);y!==null&&(zr(y,h,g),pt(y,h,g)),h={cache:qT()},c.payload=h;return}h=h.return}}function GF(c,h,g){var y=Ma();g={lane:y,revertLane:0,action:g,hasEagerState:!1,eagerState:null,next:null},Tv(c)?RC(h,g):(g=Ae(c,h,g,y),g!==null&&(zr(g,c,y),CC(g,h,y)))}function wC(c,h,g){var y=Ma();om(c,h,g,y)}function om(c,h,g,y){var M={lane:y,revertLane:0,action:g,hasEagerState:!1,eagerState:null,next:null};if(Tv(c))RC(h,M);else{var A=c.alternate;if(c.lanes===0&&(A===null||A.lanes===0)&&(A=h.lastRenderedReducer,A!==null))try{var H=h.lastRenderedState,ee=A(H,g);if(M.hasEagerState=!0,M.eagerState=ee,Ca(ee,H))return V(c,h,M,0),Qn===null&&Ee(),!1}catch{}finally{}if(g=Ae(c,h,M,y),g!==null)return zr(g,c,y),CC(g,h,y),!0}return!1}function LT(c,h,g,y){if(y={lane:2,revertLane:Ie(),action:y,hasEagerState:!1,eagerState:null,next:null},Tv(c)){if(h)throw Error(r(479))}else h=Ae(c,g,y,2),h!==null&&zr(h,c,2)}function Tv(c){var h=c.alternate;return c===en||h!==null&&h===en}function RC(c,h){Cd=Xv=!0;var g=c.pending;g===null?h.next=h:(h.next=g.next,g.next=h),c.pending=h}function CC(c,h,g){if(g&4194176){var y=h.lanes;y&=c.pendingLanes,g|=y,h.lanes=g,oe(c,g)}}function IT(c,h,g,y){h=c.memoizedState,g=g(y,h),g=g==null?h:g2({},h,g),c.memoizedState=g,c.lanes===0&&(c.updateQueue.baseState=g)}function DC(c,h,g,y,M,A,H){return c=c.stateNode,typeof c.shouldComponentUpdate=="function"?c.shouldComponentUpdate(y,A,H):h.prototype&&h.prototype.isPureReactComponent?!ge(g,y)||!ge(M,A):!0}function NC(c,h,g,y){c=h.state,typeof h.componentWillReceiveProps=="function"&&h.componentWillReceiveProps(g,y),typeof h.UNSAFE_componentWillReceiveProps=="function"&&h.UNSAFE_componentWillReceiveProps(g,y),h.state!==c&&H2.enqueueReplaceState(h,h.state,null)}function du(c,h){var g=h;if("ref"in h){g={};for(var y in h)y!=="ref"&&(g[y]=h[y])}if(c=c.defaultProps){g===h&&(g=g2({},g));for(var M in c)g[M]===void 0&&(g[M]=c[M])}return g}function Ev(c,h){try{var g=c.onUncaughtError;g(h.value,{componentStack:h.stack})}catch(y){setTimeout(function(){throw y})}}function OC(c,h,g){try{var y=c.onCaughtError;y(g.value,{componentStack:g.stack,errorBoundary:h.tag===1?h.stateNode:null})}catch(M){setTimeout(function(){throw M})}}function UT(c,h,g){return g=Ue(g),g.tag=3,g.payload={element:null},g.callback=function(){Ev(c,h)},g}function LC(c){return c=Ue(c),c.tag=3,c}function IC(c,h,g,y){var M=g.type.getDerivedStateFromError;if(typeof M=="function"){var A=y.value;c.payload=function(){return M(A)},c.callback=function(){OC(h,g,y)}}var H=g.stateNode;H!==null&&typeof H.componentDidCatch=="function"&&(c.callback=function(){OC(h,g,y),typeof M!="function"&&(tc===null?tc=new Set([this]):tc.add(this));var ee=y.stack;this.componentDidCatch(y.value,{componentStack:ee!==null?ee:""})})}function kF(c,h,g,y,M){if(g.flags|=32768,y!==null&&typeof y=="object"&&typeof y.then=="function"){if(h=g.alternate,h!==null&&cm(h,g,M,!0),g=as.current,g!==null){switch(g.tag){case 13:return uo===null?c2():g.alternate===null&&Si===0&&(Si=3),g.flags&=-257,g.flags|=65536,g.lanes=M,y===kv?g.flags|=16384:(h=g.updateQueue,h===null?g.updateQueue=new Set([y]):h.add(y),h2(c,y,M)),!1;case 22:return g.flags|=65536,y===kv?g.flags|=16384:(h=g.updateQueue,h===null?(h={transitions:null,markerInstances:null,retryQueue:new Set([y])},g.updateQueue=h):(g=h.retryQueue,g===null?h.retryQueue=new Set([y]):g.add(y)),h2(c,y,M)),!1}throw Error(r(435,g.tag))}return h2(c,y,M),c2(),!1}if(vn)return h=as.current,h!==null?(!(h.flags&65536)&&(h.flags|=256),h.flags|=65536,h.lanes=M,y!==O2&&(c=Error(r(422),{cause:y}),Qe(ce(c,g)))):(y!==O2&&(h=Error(r(423),{cause:y}),Qe(ce(h,g))),c=c.current.alternate,c.flags|=65536,M&=-M,c.lanes|=M,y=ce(y,g),M=UT(c.stateNode,y,M),J(c,M),Si!==4&&(Si=2)),!1;var A=Error(r(520),{cause:y});if(A=ce(A,g),Mm===null?Mm=[A]:Mm.push(A),Si!==4&&(Si=2),h===null)return!0;y=ce(y,g),g=h;do{switch(g.tag){case 3:return g.flags|=65536,c=M&-M,g.lanes|=c,c=UT(g.stateNode,y,c),J(g,c),!1;case 1:if(h=g.type,A=g.stateNode,(g.flags&128)===0&&(typeof h.getDerivedStateFromError=="function"||A!==null&&typeof A.componentDidCatch=="function"&&(tc===null||!tc.has(A))))return g.flags|=65536,M&=-M,g.lanes|=M,M=LC(M),IC(M,c,g,y),J(g,M),!1}g=g.return}while(g!==null);return!1}function fr(c,h,g,y){h.child=c===null?gD(h,null,g,y):Su(h,c.child,g,y)}function UC(c,h,g,y,M){g=g.render;var A=h.ref;if("ref"in y){var H={};for(var ee in y)ee!=="ref"&&(H[ee]=y[ee])}else H=y;return fu(h),y=oo(c,h,g,H,A,M),ee=br(),c!==null&&!tr?(O(c,h,M),Bo(c,h,M)):(vn&&ee&&Xe(h),h.flags|=1,fr(c,h,y,M),h.child)}function PC(c,h,g,y,M){if(c===null){var A=g.type;return typeof A=="function"&&!d2(A)&&A.defaultProps===void 0&&g.compare===null?(h.tag=15,h.type=A,zC(c,h,A,y,M)):(c=Nv(g.type,null,y,h,h.mode,M),c.ref=h.ref,c.return=h,h.child=c)}if(A=c.child,!kT(c,M)){var H=A.memoizedProps;if(g=g.compare,g=g!==null?g:ge,g(H,y)&&c.ref===h.ref)return Bo(c,h,M)}return h.flags|=1,c=ql(A,y),c.ref=h.ref,c.return=h,h.child=c}function zC(c,h,g,y,M){if(c!==null){var A=c.memoizedProps;if(ge(A,y)&&c.ref===h.ref)if(tr=!1,h.pendingProps=y=A,kT(c,M))c.flags&131072&&(tr=!0);else return h.lanes=c.lanes,Bo(c,h,M)}return PT(c,h,g,y,M)}function BC(c,h,g){var y=h.pendingProps,M=y.children,A=(h.stateNode._pendingVisibility&2)!==0,H=c!==null?c.memoizedState:null;if(lm(c,h),y.mode==="hidden"||A){if(h.flags&128){if(y=H!==null?H.baseLanes|g:g,c!==null){for(M=h.child=c.child,A=0;M!==null;)A=A|M.lanes|M.childLanes,M=M.sibling;h.childLanes=A&~y}else h.childLanes=0,h.child=null;return FC(c,h,y,g)}if(g&536870912)h.memoizedState={baseLanes:0,cachePool:null},c!==null&&Av(h,H!==null?H.cachePool:null),H!==null?Po(h,H):ro(),so(h);else return h.lanes=h.childLanes=536870912,FC(c,h,H!==null?H.baseLanes|g:g,g)}else H!==null?(Av(h,H.cachePool),Po(h,H),Er(),h.memoizedState=null):(c!==null&&Av(h,null),ro(),Er());return fr(c,h,M,g),h.child}function FC(c,h,g,y){var M=YT();return M=M===null?null:{parent:Go?xi._currentValue:xi._currentValue2,pool:M},h.memoizedState={baseLanes:g,cachePool:M},c!==null&&Av(h,null),ro(),so(h),c!==null&&cm(c,h,y,!0),null}function lm(c,h){var g=h.ref;if(g===null)c!==null&&c.ref!==null&&(h.flags|=2097664);else{if(typeof g!="function"&&typeof g!="object")throw Error(r(284));(c===null||c.ref!==g)&&(h.flags|=2097664)}}function PT(c,h,g,y,M){return fu(h),g=oo(c,h,g,y,void 0,M),y=br(),c!==null&&!tr?(O(c,h,M),Bo(c,h,M)):(vn&&y&&Xe(h),h.flags|=1,fr(c,h,g,M),h.child)}function HC(c,h,g,y,M,A){return fu(h),h.updateQueue=null,g=zo(h,y,g,M),lo(c),y=br(),c!==null&&!tr?(O(c,h,A),Bo(c,h,A)):(vn&&y&&Xe(h),h.flags|=1,fr(c,h,g,A),h.child)}function VC(c,h,g,y,M){if(fu(h),h.stateNode===null){var A=_d,H=g.contextType;typeof H=="object"&&H!==null&&(A=Mr(H)),A=new g(y,A),h.memoizedState=A.state!==null&&A.state!==void 0?A.state:null,A.updater=H2,h.stateNode=A,A._reactInternals=h,A=h.stateNode,A.props=y,A.state=h.memoizedState,A.refs={},Tt(h),H=g.contextType,A.context=typeof H=="object"&&H!==null?Mr(H):_d,A.state=h.memoizedState,H=g.getDerivedStateFromProps,typeof H=="function"&&(IT(h,g,H,y),A.state=h.memoizedState),typeof g.getDerivedStateFromProps=="function"||typeof A.getSnapshotBeforeUpdate=="function"||typeof A.UNSAFE_componentWillMount!="function"&&typeof A.componentWillMount!="function"||(H=A.state,typeof A.componentWillMount=="function"&&A.componentWillMount(),typeof A.UNSAFE_componentWillMount=="function"&&A.UNSAFE_componentWillMount(),H!==A.state&&H2.enqueueReplaceState(A,A.state,null),Le(h,y,A,M),me(),A.state=h.memoizedState),typeof A.componentDidMount=="function"&&(h.flags|=4194308),y=!0}else if(c===null){A=h.stateNode;var ee=h.memoizedProps,fe=du(g,ee);A.props=fe;var Ne=A.context,et=g.contextType;H=_d,typeof et=="object"&&et!==null&&(H=Mr(et));var gt=g.getDerivedStateFromProps;et=typeof gt=="function"||typeof A.getSnapshotBeforeUpdate=="function",ee=h.pendingProps!==ee,et||typeof A.UNSAFE_componentWillReceiveProps!="function"&&typeof A.componentWillReceiveProps!="function"||(ee||Ne!==H)&&NC(h,A,y,H),Kl=!1;var _t=h.memoizedState;A.state=_t,Le(h,y,A,M),me(),Ne=h.memoizedState,ee||_t!==Ne||Kl?(typeof gt=="function"&&(IT(h,g,gt,y),Ne=h.memoizedState),(fe=Kl||DC(h,g,fe,y,_t,Ne,H))?(et||typeof A.UNSAFE_componentWillMount!="function"&&typeof A.componentWillMount!="function"||(typeof A.componentWillMount=="function"&&A.componentWillMount(),typeof A.UNSAFE_componentWillMount=="function"&&A.UNSAFE_componentWillMount()),typeof A.componentDidMount=="function"&&(h.flags|=4194308)):(typeof A.componentDidMount=="function"&&(h.flags|=4194308),h.memoizedProps=y,h.memoizedState=Ne),A.props=y,A.state=Ne,A.context=H,y=fe):(typeof A.componentDidMount=="function"&&(h.flags|=4194308),y=!1)}else{A=h.stateNode,vt(c,h),H=h.memoizedProps,et=du(g,H),A.props=et,gt=h.pendingProps,_t=A.context,Ne=g.contextType,fe=_d,typeof Ne=="object"&&Ne!==null&&(fe=Mr(Ne)),ee=g.getDerivedStateFromProps,(Ne=typeof ee=="function"||typeof A.getSnapshotBeforeUpdate=="function")||typeof A.UNSAFE_componentWillReceiveProps!="function"&&typeof A.componentWillReceiveProps!="function"||(H!==gt||_t!==fe)&&NC(h,A,y,fe),Kl=!1,_t=h.memoizedState,A.state=_t,Le(h,y,A,M),me();var jt=h.memoizedState;H!==gt||_t!==jt||Kl||c!==null&&c.dependencies!==null&&bv(c.dependencies)?(typeof ee=="function"&&(IT(h,g,ee,y),jt=h.memoizedState),(et=Kl||DC(h,g,et,y,_t,jt,fe)||c!==null&&c.dependencies!==null&&bv(c.dependencies))?(Ne||typeof A.UNSAFE_componentWillUpdate!="function"&&typeof A.componentWillUpdate!="function"||(typeof A.componentWillUpdate=="function"&&A.componentWillUpdate(y,jt,fe),typeof A.UNSAFE_componentWillUpdate=="function"&&A.UNSAFE_componentWillUpdate(y,jt,fe)),typeof A.componentDidUpdate=="function"&&(h.flags|=4),typeof A.getSnapshotBeforeUpdate=="function"&&(h.flags|=1024)):(typeof A.componentDidUpdate!="function"||H===c.memoizedProps&&_t===c.memoizedState||(h.flags|=4),typeof A.getSnapshotBeforeUpdate!="function"||H===c.memoizedProps&&_t===c.memoizedState||(h.flags|=1024),h.memoizedProps=y,h.memoizedState=jt),A.props=y,A.state=jt,A.context=fe,y=et):(typeof A.componentDidUpdate!="function"||H===c.memoizedProps&&_t===c.memoizedState||(h.flags|=4),typeof A.getSnapshotBeforeUpdate!="function"||H===c.memoizedProps&&_t===c.memoizedState||(h.flags|=1024),y=!1)}return A=y,lm(c,h),y=(h.flags&128)!==0,A||y?(A=h.stateNode,g=y&&typeof g.getDerivedStateFromError!="function"?null:A.render(),h.flags|=1,c!==null&&y?(h.child=Su(h,c.child,null,M),h.child=Su(h,null,g,M)):fr(c,h,g,M),h.memoizedState=A.state,c=h.child):c=Bo(c,h,M),c}function GC(c,h,g,y){return lt(),h.flags|=256,fr(c,h,g,y),h.child}function zT(c){return{baseLanes:c,cachePool:jC()}}function BT(c,h,g){return c=c!==null?c.childLanes&~g:0,h&&(c|=ss),c}function kC(c,h,g){var y=h.pendingProps,M=!1,A=(h.flags&128)!==0,H;if((H=A)||(H=c!==null&&c.memoizedState===null?!1:(ji.current&2)!==0),H&&(M=!0,h.flags&=-129),H=(h.flags&32)!==0,h.flags&=-33,c===null){if(vn){if(M?Li(h):Er(),vn){var ee=Rr,fe;(fe=ee)&&(ee=sV(ee,co),ee!==null?(h.memoizedState={dehydrated:ee,treeContext:yu!==null?{id:ko,overflow:Wo}:null,retryLane:536870912},fe=t(18,null,null,0),fe.stateNode=ee,fe.return=h,h.child=fe,Br=h,Rr=null,fe=!0):fe=!1),fe||Ze(h)}if(ee=h.memoizedState,ee!==null&&(ee=ee.dehydrated,ee!==null))return w2(ee)?h.lanes=16:h.lanes=536870912,null;er(h)}return ee=y.children,y=y.fallback,M?(Er(),M=h.mode,ee=HT({mode:"hidden",children:ee},M),y=vu(y,M,g,null),ee.return=h,y.return=h,ee.sibling=y,h.child=ee,M=h.child,M.memoizedState=zT(g),M.childLanes=BT(c,H,g),h.memoizedState=V2,y):(Li(h),FT(h,ee))}if(fe=c.memoizedState,fe!==null&&(ee=fe.dehydrated,ee!==null)){if(A)h.flags&256?(Li(h),h.flags&=-257,h=VT(c,h,g)):h.memoizedState!==null?(Er(),h.child=c.child,h.flags|=128,h=null):(Er(),M=y.fallback,ee=h.mode,y=HT({mode:"visible",children:y.children},ee),M=vu(M,ee,g,null),M.flags|=2,y.return=h,M.return=h,y.sibling=M,h.child=y,Su(h,c.child,null,g),y=h.child,y.memoizedState=zT(g),y.childLanes=BT(c,H,g),h.memoizedState=V2,h=M);else if(Li(h),w2(ee))H=JH(ee).digest,y=Error(r(419)),y.stack="",y.digest=H,Qe({value:y,source:null,stack:null}),h=VT(c,h,g);else if(tr||cm(c,h,g,!1),H=(g&c.childLanes)!==0,tr||H){if(H=Qn,H!==null){if(y=g&-g,y&42)y=1;else switch(y){case 2:y=1;break;case 8:y=4;break;case 32:y=16;break;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:y=64;break;case 268435456:y=134217728;break;default:y=0}if(y=y&(H.suspendedLanes|g)?0:y,y!==0&&y!==fe.retryLane)throw fe.retryLane=y,Oe(c,y),zr(H,c,y),_D}A2(ee)||c2(),h=VT(c,h,g)}else A2(ee)?(h.flags|=128,h.child=c.child,h=tH.bind(null,c),$H(ee,h),h=null):(c=fe.treeContext,es&&(Rr=iV(ee),Br=h,vn=!0,Is=null,co=!1,c!==null&&(ns[is++]=ko,ns[is++]=Wo,ns[is++]=yu,ko=c.id,Wo=c.overflow,yu=h)),h=FT(h,y.children),h.flags|=4096);return h}return M?(Er(),M=y.fallback,ee=h.mode,fe=c.child,A=fe.sibling,y=ql(fe,{mode:"hidden",children:y.children}),y.subtreeFlags=fe.subtreeFlags&31457280,A!==null?M=ql(A,M):(M=vu(M,ee,g,null),M.flags|=2),M.return=h,y.return=h,y.sibling=M,h.child=y,y=M,M=h.child,ee=c.child.memoizedState,ee===null?ee=zT(g):(fe=ee.cachePool,fe!==null?(A=Go?xi._currentValue:xi._currentValue2,fe=fe.parent!==A?{parent:A,pool:A}:fe):fe=jC(),ee={baseLanes:ee.baseLanes|g,cachePool:fe}),M.memoizedState=ee,M.childLanes=BT(c,H,g),h.memoizedState=V2,y):(Li(h),g=c.child,c=g.sibling,g=ql(g,{mode:"visible",children:y.children}),g.return=h,g.sibling=null,c!==null&&(H=h.deletions,H===null?(h.deletions=[c],h.flags|=16):H.push(c)),h.child=g,h.memoizedState=null,g)}function FT(c,h){return h=HT({mode:"visible",children:h},c.mode),h.return=c,c.child=h}function HT(c,h){return L4(c,h,0,null)}function VT(c,h,g){return Su(h,c.child,null,g),c=FT(h,h.pendingProps.children),c.flags|=2,h.memoizedState=null,c}function WC(c,h,g){c.lanes|=h;var y=c.alternate;y!==null&&(y.lanes|=h),WT(c.return,h,g)}function GT(c,h,g,y,M){var A=c.memoizedState;A===null?c.memoizedState={isBackwards:h,rendering:null,renderingStartTime:0,last:y,tail:g,tailMode:M}:(A.isBackwards=h,A.rendering=null,A.renderingStartTime=0,A.last=y,A.tail=g,A.tailMode=M)}function XC(c,h,g){var y=h.pendingProps,M=y.revealOrder,A=y.tail;if(fr(c,h,y.children,g),y=ji.current,y&2)y=y&1|2,h.flags|=128;else{if(c!==null&&c.flags&128)e:for(c=h.child;c!==null;){if(c.tag===13)c.memoizedState!==null&&WC(c,g,h);else if(c.tag===19)WC(c,g,h);else if(c.child!==null){c.child.return=c,c=c.child;continue}if(c===h)break e;for(;c.sibling===null;){if(c.return===null||c.return===h)break e;c=c.return}c.sibling.return=c.return,c=c.sibling}y&=1}switch(T(ji,y),M){case"forwards":for(g=h.child,M=null;g!==null;)c=g.alternate,c!==null&&$r(c)===null&&(M=g),g=g.sibling;g=M,g===null?(M=h.child,h.child=null):(M=g.sibling,g.sibling=null),GT(h,!1,M,g,A);break;case"backwards":for(g=null,M=h.child,h.child=null;M!==null;){if(c=M.alternate,c!==null&&$r(c)===null){h.child=M;break}c=M.sibling,M.sibling=g,g=M,M=c}GT(h,!0,g,null,A);break;case"together":GT(h,!1,null,null,void 0);break;default:h.memoizedState=null}return h.child}function Bo(c,h,g){if(c!==null&&(h.dependencies=c.dependencies),ec|=h.lanes,!(g&h.childLanes))if(c!==null){if(cm(c,h,g,!1),(g&h.childLanes)===0)return null}else return null;if(c!==null&&h.child!==c.child)throw Error(r(153));if(h.child!==null){for(c=h.child,g=ql(c,c.pendingProps),h.child=g,g.return=h;c.sibling!==null;)c=c.sibling,g=g.sibling=ql(c,c.pendingProps),g.return=h;g.sibling=null}return h.child}function kT(c,h){return c.lanes&h?!0:(c=c.dependencies,!!(c!==null&&bv(c)))}function WF(c,h,g){switch(h.tag){case 3:tt(h,h.stateNode.containerInfo),Gl(h,xi,c.memoizedState.cache),lt();break;case 27:case 5:ve(h);break;case 4:tt(h,h.stateNode.containerInfo);break;case 10:Gl(h,h.type,h.memoizedProps.value);break;case 13:var y=h.memoizedState;if(y!==null)return y.dehydrated!==null?(Li(h),h.flags|=128,null):g&h.child.childLanes?kC(c,h,g):(Li(h),c=Bo(c,h,g),c!==null?c.sibling:null);Li(h);break;case 19:var M=(c.flags&128)!==0;if(y=(g&h.childLanes)!==0,y||(cm(c,h,g,!1),y=(g&h.childLanes)!==0),M){if(y)return XC(c,h,g);h.flags|=128}if(M=h.memoizedState,M!==null&&(M.rendering=null,M.tail=null,M.lastEffect=null),T(ji,ji.current),y)break;return null;case 22:case 23:return h.lanes=0,BC(c,h,g);case 24:Gl(h,xi,c.memoizedState.cache)}return Bo(c,h,g)}function qC(c,h,g){if(c!==null)if(c.memoizedProps!==h.pendingProps)tr=!0;else{if(!kT(c,g)&&!(h.flags&128))return tr=!1,WF(c,h,g);tr=!!(c.flags&131072)}else tr=!1,vn&&h.flags&1048576&&De(h,Fv,h.index);switch(h.lanes=0,h.tag){case 16:e:{c=h.pendingProps;var y=h.elementType,M=y._init;if(y=M(y._payload),h.type=y,typeof y=="function")d2(y)?(c=du(y,c),h.tag=1,h=VC(null,h,y,c,g)):(h.tag=0,h=PT(null,h,y,c,g));else{if(y!=null){if(M=y.$$typeof,M===_2){h.tag=11,h=UC(null,h,y,c,g);break e}else if(M===S2){h.tag=14,h=PC(null,h,y,c,g);break e}}throw h=s(y)||y,Error(r(306,h,""))}}return h;case 0:return PT(c,h,h.type,h.pendingProps,g);case 1:return y=h.type,M=du(y,h.pendingProps),VC(c,h,y,M,g);case 3:e:{if(tt(h,h.stateNode.containerInfo),c===null)throw Error(r(387));var A=h.pendingProps;M=h.memoizedState,y=M.element,vt(c,h),Le(h,A,null,g);var H=h.memoizedState;if(A=H.cache,Gl(h,xi,A),A!==M.cache&&XT(h,[xi],g,!0),me(),A=H.element,es&&M.isDehydrated)if(M={element:A,isDehydrated:!1,cache:H.cache},h.updateQueue.baseState=M,h.memoizedState=M,h.flags&256){h=GC(c,h,A,g);break e}else if(A!==y){y=ce(Error(r(424)),h),Qe(y),h=GC(c,h,A,g);break e}else for(es&&(Rr=nV(h.stateNode.containerInfo),Br=h,vn=!0,Is=null,co=!0),g=gD(h,null,A,g),h.child=g;g;)g.flags=g.flags&-3|4096,g=g.sibling;else{if(lt(),A===y){h=Bo(c,h,g);break e}fr(c,h,A,g)}h=h.child}return h;case 26:if(ts)return lm(c,h),c===null?(g=sD(h.type,null,h.pendingProps,null))?h.memoizedState=g:vn||(h.stateNode=_V(h.type,h.pendingProps,Ql.current,h)):h.memoizedState=sD(h.type,c.memoizedProps,h.pendingProps,c.memoizedState),null;case 27:if(wr)return ve(h),c===null&&wr&&vn&&(y=h.stateNode=dD(h.type,h.pendingProps,Ql.current,pr.current,!1),Br=h,co=!0,Rr=iD(y)),y=h.pendingProps.children,c!==null||vn?fr(c,h,y,g):h.child=Su(h,null,y,g),lm(c,h),h.child;case 5:return c===null&&vn&&(mV(h.type,h.pendingProps,pr.current),(M=y=Rr)&&(y=rV(y,h.type,h.pendingProps,co),y!==null?(h.stateNode=y,Br=h,Rr=iD(y),co=!1,M=!0):M=!1),M||Ze(h)),ve(h),M=h.type,A=h.pendingProps,H=c!==null?c.memoizedProps:null,y=A.children,Iv(M,A)?y=null:H!==null&&Iv(M,H)&&(h.flags|=32),h.memoizedState!==null&&(M=oo(c,h,Sa,null,null,g),Go?xu._currentValue=M:xu._currentValue2=M),lm(c,h),fr(c,h,y,g),h.child;case 6:return c===null&&vn&&(gV(h.pendingProps,pr.current),(c=g=Rr)&&(g=aV(g,h.pendingProps,co),g!==null?(h.stateNode=g,Br=h,Rr=null,c=!0):c=!1),c||Ze(h)),null;case 13:return kC(c,h,g);case 4:return tt(h,h.stateNode.containerInfo),y=h.pendingProps,c===null?h.child=Su(h,null,y,g):fr(c,h,y,g),h.child;case 11:return UC(c,h,h.type,h.pendingProps,g);case 7:return fr(c,h,h.pendingProps,g),h.child;case 8:return fr(c,h,h.pendingProps.children,g),h.child;case 12:return fr(c,h,h.pendingProps.children,g),h.child;case 10:return y=h.pendingProps,Gl(h,h.type,y.value),fr(c,h,y.children,g),h.child;case 9:return M=h.type._context,y=h.pendingProps.children,fu(h),M=Mr(M),y=y(M),h.flags|=1,fr(c,h,y,g),h.child;case 14:return PC(c,h,h.type,h.pendingProps,g);case 15:return zC(c,h,h.type,h.pendingProps,g);case 19:return XC(c,h,g);case 22:return BC(c,h,g);case 24:return fu(h),y=Mr(xi),c===null?(M=YT(),M===null&&(M=Qn,A=qT(),M.pooledCache=A,A.refCount++,A!==null&&(M.pooledCacheLanes|=g),M=A),h.memoizedState={parent:y,cache:M},Tt(h),Gl(h,xi,M)):(c.lanes&g&&(vt(c,h),Le(h,null,null,g),me()),M=c.memoizedState,A=h.memoizedState,M.parent!==y?(M={parent:y,cache:y},h.memoizedState=M,h.lanes===0&&(h.memoizedState=h.updateQueue.baseState=M),Gl(h,xi,y)):(y=A.cache,Gl(h,xi,y),y!==M.cache&&XT(h,[xi],g,!0))),fr(c,h,h.pendingProps.children,g),h.child;case 29:throw h.pendingProps}throw Error(r(156,h.tag))}function Gl(c,h,g){Go?(T(Yv,h._currentValue),h._currentValue=g):(T(Yv,h._currentValue2),h._currentValue2=g)}function Fo(c){var h=Yv.current;Go?c._currentValue=h:c._currentValue2=h,_(Yv)}function WT(c,h,g){for(;c!==null;){var y=c.alternate;if((c.childLanes&h)!==h?(c.childLanes|=h,y!==null&&(y.childLanes|=h)):y!==null&&(y.childLanes&h)!==h&&(y.childLanes|=h),c===g)break;c=c.return}}function XT(c,h,g,y){var M=c.child;for(M!==null&&(M.return=c);M!==null;){var A=M.dependencies;if(A!==null){var H=M.child;A=A.firstContext;e:for(;A!==null;){var ee=A;A=M;for(var fe=0;feAm&&(h.flags|=128,y=!0,hm(M,!1),h.lanes=4194304)}else{if(!y)if(c=$r(A),c!==null){if(h.flags|=128,y=!0,c=c.updateQueue,h.updateQueue=c,wv(h,c),hm(M,!0),M.tail===null&&M.tailMode==="hidden"&&!A.alternate&&!vn)return vi(h),null}else 2*Ls()-M.renderingStartTime>Am&&g!==536870912&&(h.flags|=128,y=!0,hm(M,!1),h.lanes=4194304);M.isBackwards?(A.sibling=h.child,h.child=A):(c=M.last,c!==null?c.sibling=A:h.child=A,M.last=A)}return M.tail!==null?(h=M.tail,M.rendering=h,M.tail=h.sibling,M.renderingStartTime=Ls(),h.sibling=null,c=ji.current,T(ji,y?c&1|2:c&1),h):(vi(h),null);case 22:case 23:return er(h),ao(),y=h.memoizedState!==null,c!==null?c.memoizedState!==null!==y&&(h.flags|=8192):y&&(h.flags|=8192),y?g&536870912&&!(h.flags&128)&&(vi(h),h.subtreeFlags&6&&(h.flags|=8192)):vi(h),g=h.updateQueue,g!==null&&wv(h,g.retryQueue),g=null,c!==null&&c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(g=c.memoizedState.cachePool.pool),y=null,h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(y=h.memoizedState.cachePool.pool),y!==g&&(h.flags|=2048),c!==null&&_(Au),null;case 24:return g=null,c!==null&&(g=c.memoizedState.cache),h.memoizedState.cache!==g&&(h.flags|=2048),Fo(xi),vi(h),null;case 25:return null}throw Error(r(156,h.tag))}function qF(c,h){switch(nt(h),h.tag){case 1:return c=h.flags,c&65536?(h.flags=c&-65537|128,h):null;case 3:return Fo(xi),xt(),c=h.flags,c&65536&&!(c&128)?(h.flags=c&-65537|128,h):null;case 26:case 27:case 5:return we(h),null;case 13:if(er(h),c=h.memoizedState,c!==null&&c.dehydrated!==null){if(h.alternate===null)throw Error(r(340));lt()}return c=h.flags,c&65536?(h.flags=c&-65537|128,h):null;case 19:return _(ji),null;case 4:return xt(),null;case 10:return Fo(h.type),null;case 22:case 23:return er(h),ao(),c!==null&&_(Au),c=h.flags,c&65536?(h.flags=c&-65537|128,h):null;case 24:return Fo(xi),null;case 25:return null;default:return null}}function $C(c,h){switch(nt(h),h.tag){case 3:Fo(xi),xt();break;case 26:case 27:case 5:we(h);break;case 4:xt();break;case 13:er(h);break;case 19:_(ji);break;case 10:Fo(h.type);break;case 22:case 23:er(h),ao(),c!==null&&_(Au);break;case 24:Fo(xi)}}function dm(c,h){try{var g=h.updateQueue,y=g!==null?g.lastEffect:null;if(y!==null){var M=y.next;g=M;do{if((g.tag&c)===c){y=void 0;var A=g.create,H=g.inst;y=A(),H.destroy=y}g=g.next}while(g!==M)}}catch(ee){wn(h,h.return,ee)}}function kl(c,h,g){try{var y=h.updateQueue,M=y!==null?y.lastEffect:null;if(M!==null){var A=M.next;y=A;do{if((y.tag&c)===c){var H=y.inst,ee=H.destroy;if(ee!==void 0){H.destroy=void 0,M=h;var fe=g;try{ee()}catch(Ne){wn(M,fe,Ne)}}}y=y.next}while(y!==A)}}catch(Ne){wn(h,h.return,Ne)}}function e4(c){var h=c.updateQueue;if(h!==null){var g=c.stateNode;try{ke(h,g)}catch(y){wn(c,c.return,y)}}}function t4(c,h,g){g.props=du(c.type,c.memoizedProps),g.state=c.memoizedState;try{g.componentWillUnmount()}catch(y){wn(c,h,y)}}function pu(c,h){try{var g=c.ref;if(g!==null){var y=c.stateNode;switch(c.tag){case 26:case 27:case 5:var M=mm(y);break;default:M=y}typeof g=="function"?c.refCleanup=g(M):g.current=M}}catch(A){wn(c,h,A)}}function Ea(c,h){var g=c.ref,y=c.refCleanup;if(g!==null)if(typeof y=="function")try{y()}catch(M){wn(c,h,M)}finally{c.refCleanup=null,c=c.alternate,c!=null&&(c.refCleanup=null)}else if(typeof g=="function")try{g(null)}catch(M){wn(c,h,M)}else g.current=null}function n4(c){var h=c.type,g=c.memoizedProps,y=c.stateNode;try{FH(y,h,g,c)}catch(M){wn(c,c.return,M)}}function i4(c,h,g){try{HH(c.stateNode,c.type,g,h,c)}catch(y){wn(c,c.return,y)}}function r4(c){return c.tag===5||c.tag===3||(ts?c.tag===26:!1)||(wr?c.tag===27:!1)||c.tag===4}function KT(c){e:for(;;){for(;c.sibling===null;){if(c.return===null||r4(c.return))return null;c=c.return}for(c.sibling.return=c.return,c=c.sibling;c.tag!==5&&c.tag!==6&&(!wr||c.tag!==27)&&c.tag!==18;){if(c.flags&2||c.child===null||c.tag===4)continue e;c.child.return=c,c=c.child}if(!(c.flags&2))return c.stateNode}}function JT(c,h,g){var y=c.tag;if(y===5||y===6)c=c.stateNode,h?GH(g,c,h):zH(g,c);else if(!(y===4||wr&&y===27)&&(c=c.child,c!==null))for(JT(c,h,g),c=c.sibling;c!==null;)JT(c,h,g),c=c.sibling}function Rv(c,h,g){var y=c.tag;if(y===5||y===6)c=c.stateNode,h?VH(g,c,h):PH(g,c);else if(!(y===4||wr&&y===27)&&(c=c.child,c!==null))for(Rv(c,h,g),c=c.sibling;c!==null;)Rv(c,h,g),c=c.sibling}function a4(c,h,g){c=c.containerInfo;try{$4(c,g)}catch(y){wn(h,h.return,y)}}function YF(c,h){for(mH(c.containerInfo),nr=h;nr!==null;)if(c=nr,h=c.child,(c.subtreeFlags&1028)!==0&&h!==null)h.return=c,nr=h;else for(;nr!==null;){c=nr;var g=c.alternate;switch(h=c.flags,c.tag){case 0:break;case 11:case 15:break;case 1:if(h&1024&&g!==null){h=void 0;var y=c,M=g.memoizedProps;g=g.memoizedState;var A=y.stateNode;try{var H=du(y.type,M,y.elementType===y.type);h=A.getSnapshotBeforeUpdate(H,g),A.__reactInternalSnapshotBeforeUpdate=h}catch(ee){wn(y,y.return,ee)}}break;case 3:h&1024&&Ar&&ZH(c.stateNode.containerInfo);break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if(h&1024)throw Error(r(163))}if(h=c.sibling,h!==null){h.return=c.return,nr=h;break}nr=c.return}return H=SD,SD=!1,H}function s4(c,h,g){var y=g.flags;switch(g.tag){case 0:case 11:case 15:Ho(c,g),y&4&&dm(5,g);break;case 1:if(Ho(c,g),y&4)if(c=g.stateNode,h===null)try{c.componentDidMount()}catch(ee){wn(g,g.return,ee)}else{var M=du(g.type,h.memoizedProps);h=h.memoizedState;try{c.componentDidUpdate(M,h,c.__reactInternalSnapshotBeforeUpdate)}catch(ee){wn(g,g.return,ee)}}y&64&&e4(g),y&512&&pu(g,g.return);break;case 3:if(Ho(c,g),y&64&&(y=g.updateQueue,y!==null)){if(c=null,g.child!==null)switch(g.child.tag){case 27:case 5:c=mm(g.child.stateNode);break;case 1:c=g.child.stateNode}try{ke(y,c)}catch(ee){wn(g,g.return,ee)}}break;case 26:if(ts){Ho(c,g),y&512&&pu(g,g.return);break}case 27:case 5:Ho(c,g),h===null&&y&4&&n4(g),y&512&&pu(g,g.return);break;case 12:Ho(c,g);break;case 13:Ho(c,g),y&4&&l4(c,g);break;case 22:if(M=g.memoizedState!==null||qo,!M){h=h!==null&&h.memoizedState!==null||yi;var A=qo,H=yi;qo=M,(yi=h)&&!H?Wl(c,g,(g.subtreeFlags&8772)!==0):Ho(c,g),qo=A,yi=H}y&512&&(g.memoizedProps.mode==="manual"?pu(g,g.return):Ea(g,g.return));break;default:Ho(c,g)}}function o4(c){var h=c.alternate;h!==null&&(c.alternate=null,o4(h)),c.child=null,c.deletions=null,c.sibling=null,c.tag===5&&(h=c.stateNode,h!==null&&EH(h)),c.stateNode=null,c.return=null,c.dependencies=null,c.memoizedProps=null,c.memoizedState=null,c.pendingProps=null,c.stateNode=null,c.updateQueue=null}function Os(c,h,g){for(g=g.child;g!==null;)$T(c,h,g),g=g.sibling}function $T(c,h,g){if(Ra&&typeof Ra.onCommitFiberUnmount=="function")try{Ra.onCommitFiberUnmount(_m,g)}catch{}switch(g.tag){case 26:if(ts){yi||Ea(g,h),Os(c,h,g),g.memoizedState?lD(g.memoizedState):g.stateNode&&uD(g.stateNode);break}case 27:if(wr){yi||Ea(g,h);var y=Pi,M=Da;Pi=g.stateNode,Os(c,h,g),bV(g.stateNode),Pi=y,Da=M;break}case 5:yi||Ea(g,h);case 6:if(Ar){if(y=Pi,M=Da,Pi=null,Os(c,h,g),Pi=y,Da=M,Pi!==null)if(Da)try{WH(Pi,g.stateNode)}catch(A){wn(g,h,A)}else try{kH(Pi,g.stateNode)}catch(A){wn(g,h,A)}}else Os(c,h,g);break;case 18:Ar&&Pi!==null&&(Da?pV(Pi,g.stateNode):fV(Pi,g.stateNode));break;case 4:Ar?(y=Pi,M=Da,Pi=g.stateNode.containerInfo,Da=!0,Os(c,h,g),Pi=y,Da=M):(Zl&&a4(g.stateNode,g,K4()),Os(c,h,g));break;case 0:case 11:case 14:case 15:yi||kl(2,g,h),yi||kl(4,g,h),Os(c,h,g);break;case 1:yi||(Ea(g,h),y=g.stateNode,typeof y.componentWillUnmount=="function"&&t4(g,h,y)),Os(c,h,g);break;case 21:Os(c,h,g);break;case 22:yi||Ea(g,h),yi=(y=yi)||g.memoizedState!==null,Os(c,h,g),yi=y;break;default:Os(c,h,g)}}function l4(c,h){if(es&&h.memoizedState===null&&(c=h.alternate,c!==null&&(c=c.memoizedState,c!==null&&(c=c.dehydrated,c!==null))))try{dV(c)}catch(g){wn(h,h.return,g)}}function jF(c){switch(c.tag){case 13:case 19:var h=c.stateNode;return h===null&&(h=c.stateNode=new yD),h;case 22:return c=c.stateNode,h=c._retryCache,h===null&&(h=c._retryCache=new yD),h;default:throw Error(r(435,c.tag))}}function e2(c,h){var g=jF(c);h.forEach(function(y){var M=nH.bind(null,c,y);g.has(y)||(g.add(y),y.then(M,M))})}function ea(c,h){var g=h.deletions;if(g!==null)for(var y=0;y";case Zv:return":has("+(a2(c)||"")+")";case Qv:return'[role="'+c.value+'"]';case Jv:return'"'+c.value+'"';case Kv:return'[data-testname="'+c.value+'"]';default:throw Error(r(365))}}function g4(c,h){var g=[];c=[c,0];for(var y=0;yg?32:g;g=Vt.T;var M=_u();try{if(ta(y),Vt.T=null,Ru===null)var A=!1;else{y=j2,j2=null;var H=Ru,ee=wm;if(Ru=null,wm=0,Bn&6)throw Error(r(331));var fe=Bn;if(Bn|=4,p4(H.current),h4(H,H.current,ee,y),Bn=fe,Je(0,!1),Ra&&typeof Ra.onPostCommitFiberRoot=="function")try{Ra.onPostCommitFiberRoot(_m,H)}catch{}A=!0}return A}finally{ta(M),Vt.T=g,C4(c,h)}}return!1}function D4(c,h,g){h=ce(g,h),h=UT(c.stateNode,h,2),c=He(c,h,2),c!==null&&(z(c,2),$e(c))}function wn(c,h,g){if(c.tag===3)D4(c,c,g);else for(;h!==null;){if(h.tag===3){D4(h,c,g);break}else if(h.tag===1){var y=h.stateNode;if(typeof h.type.getDerivedStateFromError=="function"||typeof y.componentDidCatch=="function"&&(tc===null||!tc.has(y))){c=ce(g,c),g=LC(2),y=He(h,g,2),y!==null&&(IC(g,y,h,c),z(y,2),$e(y));break}}h=h.return}}function h2(c,h,g){var y=c.pingCache;if(y===null){y=c.pingCache=new FV;var M=new Set;y.set(h,M)}else M=y.get(h),M===void 0&&(M=new Set,y.set(h,M));M.has(g)||(k2=!0,M.add(g),c=eH.bind(null,c,h,g),h.then(c,c))}function eH(c,h,g){var y=c.pingCache;y!==null&&y.delete(h),c.pingedLanes|=c.suspendedLanes&g,c.warmLanes&=~g,Qn===c&&(dn&g)===g&&(Si===4||Si===3&&(dn&62914560)===dn&&300>Ls()-q2?!(Bn&2)&&dd(c,0):W2|=g,Ld===dn&&(Ld=0)),$e(c)}function N4(c,h){h===0&&(h=N()),c=Oe(c,h),c!==null&&(z(c,h),$e(c))}function tH(c){var h=c.memoizedState,g=0;h!==null&&(g=h.retryLane),N4(c,g)}function nH(c,h){var g=0;switch(c.tag){case 13:var y=c.stateNode,M=c.memoizedState;M!==null&&(g=M.retryLane);break;case 19:y=c.stateNode;break;case 22:y=c.stateNode._retryCache;break;default:throw Error(r(314))}y!==null&&y.delete(h),N4(c,g)}function iH(c,h){return zv(c,h)}function rH(c,h,g,y){this.tag=c,this.key=g,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=h,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=y,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function d2(c){return c=c.prototype,!(!c||!c.isReactComponent)}function ql(c,h){var g=c.alternate;return g===null?(g=t(c.tag,h,c.key,c.mode),g.elementType=c.elementType,g.type=c.type,g.stateNode=c.stateNode,g.alternate=c,c.alternate=g):(g.pendingProps=h,g.type=c.type,g.flags=0,g.subtreeFlags=0,g.deletions=null),g.flags=c.flags&31457280,g.childLanes=c.childLanes,g.lanes=c.lanes,g.child=c.child,g.memoizedProps=c.memoizedProps,g.memoizedState=c.memoizedState,g.updateQueue=c.updateQueue,h=c.dependencies,g.dependencies=h===null?null:{lanes:h.lanes,firstContext:h.firstContext},g.sibling=c.sibling,g.index=c.index,g.ref=c.ref,g.refCleanup=c.refCleanup,g}function O4(c,h){c.flags&=31457282;var g=c.alternate;return g===null?(c.childLanes=0,c.lanes=h,c.child=null,c.subtreeFlags=0,c.memoizedProps=null,c.memoizedState=null,c.updateQueue=null,c.dependencies=null,c.stateNode=null):(c.childLanes=g.childLanes,c.lanes=g.lanes,c.child=g.child,c.subtreeFlags=0,c.deletions=null,c.memoizedProps=g.memoizedProps,c.memoizedState=g.memoizedState,c.updateQueue=g.updateQueue,c.type=g.type,h=g.dependencies,c.dependencies=h===null?null:{lanes:h.lanes,firstContext:h.firstContext}),c}function Nv(c,h,g,y,M,A){var H=0;if(y=c,typeof c=="function")d2(c)&&(H=1);else if(typeof c=="string")H=ts&&wr?aD(c,g,pr.current)?26:fD(c)?27:5:ts?aD(c,g,pr.current)?26:5:wr&&fD(c)?27:5;else e:switch(c){case md:return vu(g.children,M,A,h);case F4:H=8,M|=24;break;case v2:return c=t(12,g,h,M|2),c.elementType=v2,c.lanes=A,c;case x2:return c=t(13,g,h,M),c.elementType=x2,c.lanes=A,c;case y2:return c=t(19,g,h,M),c.elementType=y2,c.lanes=A,c;case V4:return L4(g,M,A,h);default:if(typeof c=="object"&&c!==null)switch(c.$$typeof){case lH:case Yl:H=10;break e;case H4:H=9;break e;case _2:H=11;break e;case S2:H=14;break e;case jl:H=16,y=null;break e}H=29,g=Error(r(130,c===null?"null":typeof c,"")),y=null}return h=t(H,g,h,M),h.elementType=c,h.type=y,h.lanes=A,h}function vu(c,h,g,y){return c=t(7,c,y,h),c.lanes=g,c}function L4(c,h,g,y){c=t(22,c,y,h),c.elementType=V4,c.lanes=g;var M={_visibility:1,_pendingVisibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null,_current:null,detach:function(){var A=M._current;if(A===null)throw Error(r(456));if(!(M._pendingVisibility&2)){var H=Oe(A,2);H!==null&&(M._pendingVisibility|=2,zr(H,A,2))}},attach:function(){var A=M._current;if(A===null)throw Error(r(456));if(M._pendingVisibility&2){var H=Oe(A,2);H!==null&&(M._pendingVisibility&=-3,zr(H,A,2))}}};return c.stateNode=M,c}function f2(c,h,g){return c=t(6,c,null,h),c.lanes=g,c}function p2(c,h,g){return h=t(4,c.children!==null?c.children:[],c.key,h),h.lanes=g,h.stateNode={containerInfo:c.containerInfo,pendingChildren:null,implementation:c.implementation},h}function aH(c,h,g,y,M,A,H,ee){this.tag=1,this.containerInfo=c,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=M2,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=C(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.finishedLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=C(0),this.hiddenUpdates=C(null),this.identifierPrefix=y,this.onUncaughtError=M,this.onCaughtError=A,this.onRecoverableError=H,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=ee,this.incompleteTransitions=new Map}function I4(c,h,g,y,M,A,H,ee,fe,Ne,et,gt){return c=new aH(c,h,g,H,ee,fe,Ne,gt),h=1,A===!0&&(h|=24),A=t(3,null,null,h),c.current=A,A.stateNode=c,h=qT(),h.refCount++,c.pooledCache=h,h.refCount++,A.memoizedState={element:y,isDehydrated:g,cache:h},Tt(A),c}function U4(c){return c?(c=_d,c):_d}function P4(c){var h=c._reactInternals;if(h===void 0)throw typeof c.render=="function"?Error(r(188)):(c=Object.keys(c).join(","),Error(r(268,c)));return c=m(h),c=c!==null?v(c):null,c===null?null:mm(c.stateNode)}function z4(c,h,g,y,M,A){M=U4(M),y.context===null?y.context=M:y.pendingContext=M,y=Ue(h),y.payload={element:g},A=A===void 0?null:A,A!==null&&(y.callback=A),g=He(c,y,h),g!==null&&(zr(g,c,h),pt(g,c,h))}function B4(c,h){if(c=c.memoizedState,c!==null&&c.dehydrated!==null){var g=c.retryLane;c.retryLane=g!==0&&g=Ne&&A>=gt&&M<=et&&H<=_t){c.splice(h,1);break}else if(y!==Ne||g.width!==fe.width||_tH){if(!(A!==gt||g.height!==fe.height||etM)){Ne>y&&(fe.width+=Ne-y,fe.x=y),etA&&(fe.height+=gt-A,fe.y=A),_tg&&(g=ee)),ee ")+` No matching component was found for: - `)+c.join(" > ")}return null},nn.getPublicRootInstance=function(c){if(c=c.current,!c.child)return null;switch(c.child.tag){case 27:case 5:return mm(c.child.stateNode);default:return c.child.stateNode}},nn.injectIntoDevTools=function(){var c={bundleType:0,version:hH,rendererPackageName:dH,currentDispatcherRef:Vt,findFiberByHostInstance:Y4,reconcilerVersion:"19.0.0"};if(W4!==null&&(c.rendererConfig=W4),typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")c=!1;else{var h=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(h.isDisabled||!h.supportsFiber)c=!0;else{try{_m=h.inject(c),Ra=h}catch{}c=!!h.checkDCE}}return c},nn.isAlreadyRendering=function(){return!1},nn.observeVisibleRects=function(c,h,g,y){if(!gm)throw Error(r(363));c=s2(c,h);var M=UH(c,g,y).disconnect;return{disconnect:function(){M()}}},nn.shouldError=function(){return null},nn.shouldSuspend=function(){return!1},nn.startHostTransition=function(c,h,g,y){if(c.tag!==5)throw Error(r(476));var M=bC(c).queue;EC(c,M,h,gd,g===null?i:function(){var A=bC(c).next.queue;return om(c,A,{},Ma()),g(y)})},nn.updateContainer=function(c,h,g,y){var M=h.current,A=Ma();return z4(M,A,c,h,g,y),A},nn.updateContainerSync=function(c,h,g,y){return h.tag===0&&gu(),z4(h.current,2,c,h,g,y),2},nn},n.exports.default=n.exports,Object.defineProperty(n.exports,"__esModule",{value:!0})})(G7);var x$=G7.exports;V7.exports=x$;var y$=V7.exports;const S$=aS(y$);function OR(n,e,t){if(!n)return;if(t(n)===!0)return n;let i=e?n.return:n.child;for(;i;){const r=OR(i,e,t);if(r)return r;i=e?null:i.sibling}}function X7(n){try{return Object.defineProperties(n,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return n}}const LR=X7(ie.createContext(null));let q7=class extends ie.Component{render(){return ie.createElement(LR.Provider,{value:this._reactInternals},this.props.children)}};function Y7(){const n=ie.useContext(LR);if(n===null)throw new Error("its-fine: useFiber must be called within a !");const e=ie.useId();return ie.useMemo(()=>{for(const t of[n,n==null?void 0:n.alternate]){if(!t)continue;const i=OR(t,!1,r=>{let a=r.memoizedState;for(;a;){if(a.memoizedState===e)return!0;a=a.next}});if(i)return i}},[n,e])}const T$=Symbol.for("react.context"),E$=n=>n!==null&&typeof n=="object"&&"$$typeof"in n&&n.$$typeof===T$;function b$(){const n=Y7(),[e]=ie.useState(()=>new Map);e.clear();let t=n;for(;t;){const i=t.type;E$(i)&&i!==LR&&!e.has(i)&&e.set(i,ie.use(X7(i))),t=t.return}return e}function M$(){const n=b$();return ie.useMemo(()=>Array.from(n.keys()).reduce((e,t)=>i=>ie.createElement(e,null,ie.createElement(t.Provider,{...i,value:n.get(t)})),e=>ie.createElement(q7,{...e})),[n])}function j7(n){let e=n.root;for(;e.getState().previousRoot;)e=e.getState().previousRoot;return e}const Z7=n=>n&&n.isOrthographicCamera,A$=n=>n&&n.hasOwnProperty("current"),w$=n=>n!=null&&(typeof n=="string"||typeof n=="number"||n.isColor),uv=((n,e)=>typeof window<"u"&&(((n=window.document)==null?void 0:n.createElement)||((e=window.navigator)==null?void 0:e.product)==="ReactNative"))()?ie.useLayoutEffect:ie.useEffect;function Q7(n){const e=ie.useRef(n);return uv(()=>void(e.current=n),[n]),e}function R$(){const n=Y7(),e=M$();return ie.useMemo(()=>({children:t})=>{const r=!!OR(n,!0,a=>a.type===ie.StrictMode)?ie.StrictMode:ie.Fragment;return ot.jsx(r,{children:ot.jsx(e,{children:t})})},[n,e])}function C$({set:n}){return uv(()=>(n(new Promise(()=>null)),()=>n(!1)),[n]),null}const D$=(n=>(n=class extends ie.Component{constructor(...t){super(...t),this.state={error:!1}}componentDidCatch(t){this.props.set(t)}render(){return this.state.error?null:this.props.children}},n.getDerivedStateFromError=()=>({error:!0}),n))();function K7(n){var e;const t=typeof window<"u"?(e=window.devicePixelRatio)!=null?e:2:1;return Array.isArray(n)?Math.min(Math.max(n[0],t),n[1]):n}function rf(n){var e;return(e=n.__r3f)==null?void 0:e.root.getState()}const di={obj:n=>n===Object(n)&&!di.arr(n)&&typeof n!="function",fun:n=>typeof n=="function",str:n=>typeof n=="string",num:n=>typeof n=="number",boo:n=>typeof n=="boolean",und:n=>n===void 0,nul:n=>n===null,arr:n=>Array.isArray(n),equ(n,e,{arrays:t="shallow",objects:i="reference",strict:r=!0}={}){if(typeof n!=typeof e||!!n!=!!e)return!1;if(di.str(n)||di.num(n)||di.boo(n))return n===e;const a=di.obj(n);if(a&&i==="reference")return n===e;const s=di.arr(n);if(s&&t==="reference")return n===e;if((s||a)&&n===e)return!0;let o;for(o in n)if(!(o in e))return!1;if(a&&t==="shallow"&&i==="shallow"){for(o in r?e:n)if(!di.equ(n[o],e[o],{strict:r,objects:"reference"}))return!1}else for(o in r?e:n)if(n[o]!==e[o])return!1;if(di.und(o)){if(s&&n.length===0&&e.length===0||a&&Object.keys(n).length===0&&Object.keys(e).length===0)return!0;if(n!==e)return!1}return!0}};function N$(n){const e={nodes:{},materials:{},meshes:{}};return n&&n.traverse(t=>{t.name&&(e.nodes[t.name]=t),t.material&&!e.materials[t.material.name]&&(e.materials[t.material.name]=t.material),t.isMesh&&!e.meshes[t.name]&&(e.meshes[t.name]=t)}),e}function O$(n){n.type!=="Scene"&&(n.dispose==null||n.dispose());for(const e in n){const t=n[e];(t==null?void 0:t.type)!=="Scene"&&(t==null||t.dispose==null||t.dispose())}}const J7=["children","key","ref"];function L$(n){const e={};for(const t in n)J7.includes(t)||(e[t]=n[t]);return e}function Uy(n,e,t,i){const r=n;let a=r==null?void 0:r.__r3f;return a||(a={root:e,type:t,parent:null,children:[],props:L$(i),object:r,eventCount:0,handlers:{},isHidden:!1},r&&(r.__r3f=a)),a}function Ig(n,e){if(!e.includes("-"))return{root:n,key:e,target:n[e]};if(e in n)return{root:n,key:e,target:n[e]};let t=n;const i=e.split("-");for(const r of i){if(typeof t!="object"||t===null){if(t!==void 0){const a=i.slice(i.indexOf(r)).join("-");return{root:t,key:a,target:void 0}}return{root:n,key:e,target:void 0}}e=r,n=t,t=t[e]}return{root:n,key:e,target:t}}const wL=/-\d+$/;function Py(n,e){if(di.str(e.props.attach)){if(wL.test(e.props.attach)){const r=e.props.attach.replace(wL,""),{root:a,key:s}=Ig(n.object,r);Array.isArray(a[s])||(a[s]=[])}const{root:t,key:i}=Ig(n.object,e.props.attach);e.previousAttach=t[i],t[i]=e.object}else di.fun(e.props.attach)&&(e.previousAttach=e.props.attach(n.object,e.object))}function zy(n,e){if(di.str(e.props.attach)){const{root:t,key:i}=Ig(n.object,e.props.attach),r=e.previousAttach;r===void 0?delete t[i]:t[i]=r}else e.previousAttach==null||e.previousAttach(n.object,e.object);delete e.previousAttach}const K3=[...J7,"args","dispose","attach","object","onUpdate","dispose"],RL=new Map;function I$(n){let e=RL.get(n.constructor);try{e||(e=new n.constructor,RL.set(n.constructor,e))}catch{}return e}function U$(n,e){const t={};for(const i in e)if(!K3.includes(i)&&!di.equ(e[i],n.props[i])){t[i]=e[i];for(const r in e)r.startsWith(`${i}-`)&&(t[r]=e[r])}for(const i in n.props){if(K3.includes(i)||e.hasOwnProperty(i))continue;const{root:r,key:a}=Ig(n.object,i);if(r.constructor&&r.constructor.length===0){const s=I$(r);di.und(s)||(t[a]=s[a])}else t[a]=0}return t}const P$=["map","emissiveMap","sheenColorMap","specularColorMap","envMap"],z$=/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/;function wc(n,e){var t;const i=n.__r3f,r=i&&j7(i).getState(),a=i==null?void 0:i.eventCount;for(const o in e){let l=e[o];if(K3.includes(o))continue;if(i&&z$.test(o)){typeof l=="function"?i.handlers[o]=l:delete i.handlers[o],i.eventCount=Object.keys(i.handlers).length;continue}if(l===void 0)continue;let{root:u,key:d,target:f}=Ig(n,o);if(f===void 0&&(typeof u!="object"||u===null))throw Error(`R3F: Cannot set "${o}". Ensure it is an object before setting "${d}".`);if(f instanceof Ap&&l instanceof Ap)f.mask=l.mask;else if(f instanceof Ye&&w$(l))f.set(l);else if(f!==null&&typeof f=="object"&&typeof f.set=="function"&&typeof f.copy=="function"&&l!=null&&l.constructor&&f.constructor===l.constructor)f.copy(l);else if(f!==null&&typeof f=="object"&&typeof f.set=="function"&&Array.isArray(l))typeof f.fromArray=="function"?f.fromArray(l):f.set(...l);else if(f!==null&&typeof f=="object"&&typeof f.set=="function"&&typeof l=="number")typeof f.setScalar=="function"?f.setScalar(l):f.set(l);else{var s;u[d]=l,r&&!r.linear&&P$.includes(d)&&(s=u[d])!=null&&s.isTexture&&u[d].format===ai&&u[d].type===Ni&&(u[d].colorSpace=mn)}}if(i!=null&&i.parent&&r!=null&&r.internal&&(t=i.object)!=null&&t.isObject3D&&a!==i.eventCount){const o=i.object,l=r.internal.interaction.indexOf(o);l>-1&&r.internal.interaction.splice(l,1),i.eventCount&&o.raycast!==null&&r.internal.interaction.push(o)}return i&&i.props.attach===void 0&&(i.object.isBufferGeometry?i.props.attach="geometry":i.object.isMaterial&&(i.props.attach="material")),i&&$p(i),n}function $p(n){var e;if(!n.parent)return;n.props.onUpdate==null||n.props.onUpdate(n.object);const t=(e=n.root)==null||e.getState==null?void 0:e.getState();t&&t.internal.frames===0&&t.invalidate()}function B$(n,e){n.manual||(Z7(n)?(n.left=e.width/-2,n.right=e.width/2,n.top=e.height/2,n.bottom=e.height/-2):n.aspect=e.width/e.height,n.updateProjectionMatrix())}const kr=n=>n==null?void 0:n.isObject3D;function ox(n){return(n.eventObject||n.object).uuid+"/"+n.index+n.instanceId}function $7(n,e,t,i){const r=t.get(e);r&&(t.delete(e),t.size===0&&(n.delete(i),r.target.releasePointerCapture(i)))}function F$(n,e){const{internal:t}=n.getState();t.interaction=t.interaction.filter(i=>i!==e),t.initialHits=t.initialHits.filter(i=>i!==e),t.hovered.forEach((i,r)=>{(i.eventObject===e||i.object===e)&&t.hovered.delete(r)}),t.capturedMap.forEach((i,r)=>{$7(t.capturedMap,e,i,r)})}function H$(n){function e(l){const{internal:u}=n.getState(),d=l.offsetX-u.initialClick[0],f=l.offsetY-u.initialClick[1];return Math.round(Math.sqrt(d*d+f*f))}function t(l){return l.filter(u=>["Move","Over","Enter","Out","Leave"].some(d=>{var f;return(f=u.__r3f)==null?void 0:f.handlers["onPointer"+d]}))}function i(l,u){const d=n.getState(),f=new Set,p=[],m=u?u(d.internal.interaction):d.internal.interaction;for(let _=0;_{const E=rf(_.object),b=rf(T.object);return!E||!b?_.distance-T.distance:b.events.priority-E.events.priority||_.distance-T.distance}).filter(_=>{const T=ox(_);return f.has(T)?!1:(f.add(T),!0)});d.events.filter&&(x=d.events.filter(x,d));for(const _ of x){let T=_.object;for(;T;){var S;(S=T.__r3f)!=null&&S.eventCount&&p.push({..._,eventObject:T}),T=T.parent}}if("pointerId"in l&&d.internal.capturedMap.has(l.pointerId))for(let _ of d.internal.capturedMap.get(l.pointerId).values())f.has(ox(_.intersection))||p.push(_.intersection);return p}function r(l,u,d,f){if(l.length){const p={stopped:!1};for(const m of l){let v=rf(m.object);if(v||m.object.traverseAncestors(x=>{const S=rf(x);if(S)return v=S,!1}),v){const{raycaster:x,pointer:S,camera:_,internal:T}=v,E=new D(S.x,S.y,0).unproject(_),b=N=>{var C,z;return(C=(z=T.capturedMap.get(N))==null?void 0:z.has(m.eventObject))!=null?C:!1},R=N=>{const C={intersection:m,target:u.target};T.capturedMap.has(N)?T.capturedMap.get(N).set(m.eventObject,C):T.capturedMap.set(N,new Map([[m.eventObject,C]])),u.target.setPointerCapture(N)},w=N=>{const C=T.capturedMap.get(N);C&&$7(T.capturedMap,m.eventObject,C,N)};let L={};for(let N in u){let C=u[N];typeof C!="function"&&(L[N]=C)}let U={...m,...L,pointer:S,intersections:l,stopped:p.stopped,delta:d,unprojectedPoint:E,ray:x.ray,camera:_,stopPropagation(){const N="pointerId"in u&&T.capturedMap.get(u.pointerId);if((!N||N.has(m.eventObject))&&(U.stopped=p.stopped=!0,T.hovered.size&&Array.from(T.hovered.values()).find(C=>C.eventObject===m.eventObject))){const C=l.slice(0,l.indexOf(m));a([...C,m])}},target:{hasPointerCapture:b,setPointerCapture:R,releasePointerCapture:w},currentTarget:{hasPointerCapture:b,setPointerCapture:R,releasePointerCapture:w},nativeEvent:u};if(f(U),p.stopped===!0)break}}}return l}function a(l){const{internal:u}=n.getState();for(const d of u.hovered.values())if(!l.length||!l.find(f=>f.object===d.object&&f.index===d.index&&f.instanceId===d.instanceId)){const p=d.eventObject.__r3f;if(u.hovered.delete(ox(d)),p!=null&&p.eventCount){const m=p.handlers,v={...d,intersections:l};m.onPointerOut==null||m.onPointerOut(v),m.onPointerLeave==null||m.onPointerLeave(v)}}}function s(l,u){for(let d=0;da([]);case"onLostPointerCapture":return u=>{const{internal:d}=n.getState();"pointerId"in u&&d.capturedMap.has(u.pointerId)&&requestAnimationFrame(()=>{d.capturedMap.has(u.pointerId)&&(d.capturedMap.delete(u.pointerId),a([]))})}}return function(d){const{onPointerMissed:f,internal:p}=n.getState();p.lastEvent.current=d;const m=l==="onPointerMove",v=l==="onClick"||l==="onContextMenu"||l==="onDoubleClick",S=i(d,m?t:void 0),_=v?e(d):0;l==="onPointerDown"&&(p.initialClick=[d.offsetX,d.offsetY],p.initialHits=S.map(E=>E.eventObject)),v&&!S.length&&_<=2&&(s(d,p.interaction),f&&f(d)),m&&a(S);function T(E){const b=E.eventObject,R=b.__r3f;if(!(R!=null&&R.eventCount))return;const w=R.handlers;if(m){if(w.onPointerOver||w.onPointerEnter||w.onPointerOut||w.onPointerLeave){const L=ox(E),U=p.hovered.get(L);U?U.stopped&&E.stopPropagation():(p.hovered.set(L,E),w.onPointerOver==null||w.onPointerOver(E),w.onPointerEnter==null||w.onPointerEnter(E))}w.onPointerMove==null||w.onPointerMove(E)}else{const L=w[l];L?(!v||p.initialHits.includes(b))&&(s(d,p.interaction.filter(U=>!p.initialHits.includes(U))),L(E)):v&&p.initialHits.includes(b)&&s(d,p.interaction.filter(U=>!p.initialHits.includes(U)))}}r(S,d,_,T)}}return{handlePointer:o}}const CL=n=>!!(n!=null&&n.render),ez=ie.createContext(null),V$=(n,e)=>{const t=p$((o,l)=>{const u=new D,d=new D,f=new D;function p(_=l().camera,T=d,E=l().size){const{width:b,height:R,top:w,left:L}=E,U=b/R;T.isVector3?f.copy(T):f.set(...T);const N=_.getWorldPosition(u).distanceTo(f);if(Z7(_))return{width:b/_.zoom,height:R/_.zoom,top:w,left:L,factor:1,distance:N,aspect:U};{const C=_.fov*Math.PI/180,z=2*Math.tan(C/2)*N,W=z*(b/R);return{width:W,height:z,top:w,left:L,factor:b/W,distance:N,aspect:U}}}let m;const v=_=>o(T=>({performance:{...T.performance,current:_}})),x=new re;return{set:o,get:l,gl:null,camera:null,raycaster:null,events:{priority:1,enabled:!0,connected:!1},scene:null,xr:null,invalidate:(_=1)=>n(l(),_),advance:(_,T)=>e(_,T,l()),legacy:!1,linear:!1,flat:!1,controls:null,clock:new cv,pointer:x,mouse:x,frameloop:"always",onPointerMissed:void 0,performance:{current:1,min:.5,max:1,debounce:200,regress:()=>{const _=l();m&&clearTimeout(m),_.performance.current!==_.performance.min&&v(_.performance.min),m=setTimeout(()=>v(l().performance.max),_.performance.debounce)}},size:{width:0,height:0,top:0,left:0},viewport:{initialDpr:0,dpr:0,width:0,height:0,top:0,left:0,aspect:0,distance:0,factor:0,getCurrentViewport:p},setEvents:_=>o(T=>({...T,events:{...T.events,..._}})),setSize:(_,T,E=0,b=0)=>{const R=l().camera,w={width:_,height:T,top:E,left:b};o(L=>({size:w,viewport:{...L.viewport,...p(R,d,w)}}))},setDpr:_=>o(T=>{const E=K7(_);return{viewport:{...T.viewport,dpr:E,initialDpr:T.viewport.initialDpr||E}}}),setFrameloop:(_="always")=>{const T=l().clock;T.stop(),T.elapsedTime=0,_!=="never"&&(T.start(),T.elapsedTime=0),o(()=>({frameloop:_}))},previousRoot:void 0,internal:{interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,lastEvent:ie.createRef(),active:!1,frames:0,priority:0,subscribe:(_,T,E)=>{const b=l().internal;return b.priority=b.priority+(T>0?1:0),b.subscribers.push({ref:_,priority:T,store:E}),b.subscribers=b.subscribers.sort((R,w)=>R.priority-w.priority),()=>{const R=l().internal;R!=null&&R.subscribers&&(R.priority=R.priority-(T>0?1:0),R.subscribers=R.subscribers.filter(w=>w.ref!==_))}}}}}),i=t.getState();let r=i.size,a=i.viewport.dpr,s=i.camera;return t.subscribe(()=>{const{camera:o,size:l,viewport:u,gl:d,set:f}=t.getState();if(l.width!==r.width||l.height!==r.height||u.dpr!==a){r=l,a=u.dpr,B$(o,l),u.dpr>0&&d.setPixelRatio(u.dpr);const p=typeof HTMLCanvasElement<"u"&&d.domElement instanceof HTMLCanvasElement;d.setSize(l.width,l.height,p)}o!==s&&(s=o,f(p=>({viewport:{...p.viewport,...p.viewport.getCurrentViewport(o)}})))}),t.subscribe(o=>n(o)),t};function tz(){const n=ie.useContext(ez);if(!n)throw new Error("R3F: Hooks can only be used within the Canvas component!");return n}function pn(n=t=>t,e){return tz()(n,e)}function _a(n,e=0){const t=tz(),i=t.getState().internal.subscribe,r=Q7(n);return uv(()=>i(r,e,t),[e,i,t]),null}const DL=new WeakMap,G$=n=>{var e;return typeof n=="function"&&(n==null||(e=n.prototype)==null?void 0:e.constructor)===n};function nz(n,e){return function(t,...i){let r;return G$(t)?(r=DL.get(t),r||(r=new t,DL.set(t,r))):r=t,n&&n(r),Promise.all(i.map(a=>new Promise((s,o)=>r.load(a,l=>{kr(l==null?void 0:l.scene)&&Object.assign(l,N$(l.scene)),s(l)},e,l=>o(new Error(`Could not load ${a}: ${l==null?void 0:l.message}`))))))}}function By(n,e,t,i){const r=Array.isArray(e)?e:[e],a=g$(nz(t,i),[n,...r],{equal:di.equ});return Array.isArray(e)?a:a[0]}By.preload=function(n,e,t){const i=Array.isArray(e)?e:[e];return v$(nz(t),[n,...i])};By.clear=function(n,e){const t=Array.isArray(e)?e:[e];return _$([n,...t])};function k$(n){const e=S$(n);return e.injectIntoDevTools({bundleType:0,rendererPackageName:"@react-three/fiber",version:ie.version}),e}const iz=0,Op={},W$=/^three(?=[A-Z])/,dT=n=>`${n[0].toUpperCase()}${n.slice(1)}`;let X$=0;const q$=n=>typeof n=="function";function rz(n){if(q$(n)){const e=`${X$++}`;return Op[e]=n,e}else Object.assign(Op,n)}function az(n,e){const t=dT(n),i=Op[t];if(n!=="primitive"&&!i)throw new Error(`R3F: ${t} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);if(n==="primitive"&&!e.object)throw new Error("R3F: Primitives without 'object' are invalid!");if(e.args!==void 0&&!Array.isArray(e.args))throw new Error("R3F: The args prop must be an array!")}function Y$(n,e,t){var i;return n=dT(n)in Op?n:n.replace(W$,""),az(n,e),n==="primitive"&&(i=e.object)!=null&&i.__r3f&&delete e.object.__r3f,Uy(e.object,t,n,e)}function j$(n){if(!n.isHidden){var e;n.props.attach&&(e=n.parent)!=null&&e.object?zy(n.parent,n):kr(n.object)&&(n.object.visible=!1),n.isHidden=!0,$p(n)}}function sz(n){if(n.isHidden){var e;n.props.attach&&(e=n.parent)!=null&&e.object?Py(n.parent,n):kr(n.object)&&n.props.visible!==!1&&(n.object.visible=!0),n.isHidden=!1,$p(n)}}function IR(n,e,t){const i=e.root.getState();if(!(!n.parent&&n.object!==i.scene)){if(!e.object){var r,a;const s=Op[dT(e.type)];e.object=(r=e.props.object)!=null?r:new s(...(a=e.props.args)!=null?a:[]),e.object.__r3f=e}if(wc(e.object,e.props),e.props.attach)Py(n,e);else if(kr(e.object)&&kr(n.object)){const s=n.object.children.indexOf(t==null?void 0:t.object);if(t&&s!==-1){const o=n.object.children.indexOf(e.object);if(o!==-1){n.object.children.splice(o,1);const l=o{try{n.dispose()}catch{}};typeof IS_REACT_ACT_ENVIRONMENT<"u"?e():Q3.unstable_scheduleCallback(Q3.unstable_IdlePriority,e)}}function J3(n,e,t){if(!e)return;e.parent=null;const i=n.children.indexOf(e);i!==-1&&n.children.splice(i,1),e.props.attach?zy(n,e):kr(e.object)&&kr(n.object)&&(n.object.remove(e.object),F$(j7(e),e.object));const r=e.props.dispose!==null&&t!==!1;for(let a=e.children.length-1;a>=0;a--){const s=e.children[a];J3(e,s,r)}e.children.length=0,delete e.object.__r3f,r&&e.type!=="primitive"&&e.object.type!=="Scene"&&oz(e.object),t===void 0&&$p(e)}function Z$(n,e){for(const t of[n,n.alternate])if(t!==null)if(typeof t.ref=="function"){t.refCleanup==null||t.refCleanup();const i=t.ref(e);typeof i=="function"&&(t.refCleanup=i)}else t.ref&&(t.ref.current=e)}const h1=[];function Q$(){for(const[t]of h1){const i=t.parent;if(i){t.props.attach?zy(i,t):kr(t.object)&&kr(i.object)&&i.object.remove(t.object);for(const r of t.children)r.props.attach?zy(t,r):kr(r.object)&&kr(t.object)&&t.object.remove(r.object)}t.isHidden&&sz(t),t.object.__r3f&&delete t.object.__r3f,t.type!=="primitive"&&oz(t.object)}for(const[t,i,r]of h1){t.props=i;const a=t.parent;if(a){var n,e;const s=Op[dT(t.type)];t.object=(n=t.props.object)!=null?n:new s(...(e=t.props.args)!=null?e:[]),t.object.__r3f=t,Z$(r,t.object),wc(t.object,t.props),t.props.attach?Py(a,t):kr(t.object)&&kr(a.object)&&a.object.add(t.object);for(const o of t.children)o.props.attach?Py(t,o):kr(o.object)&&kr(t.object)&&t.object.add(o.object);$p(t)}}h1.length=0}const bb=()=>{},OL={};let lx=iz;const K$=0,J$=4,$3=k$({isPrimaryRenderer:!1,warnsIfNotActing:!1,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,createInstance:Y$,removeChild:J3,appendChild:Eb,appendInitialChild:Eb,insertBefore:NL,appendChildToContainer(n,e){const t=n.getState().scene.__r3f;!e||!t||Eb(t,e)},removeChildFromContainer(n,e){const t=n.getState().scene.__r3f;!e||!t||J3(t,e)},insertInContainerBefore(n,e,t){const i=n.getState().scene.__r3f;!e||!t||!i||NL(i,e,t)},getRootHostContext:()=>OL,getChildHostContext:()=>OL,commitUpdate(n,e,t,i,r){var a,s,o;az(e,i);let l=!1;if((n.type==="primitive"&&t.object!==i.object||((a=i.args)==null?void 0:a.length)!==((s=t.args)==null?void 0:s.length)||(o=i.args)!=null&&o.some((d,f)=>{var p;return d!==((p=t.args)==null?void 0:p[f])}))&&(l=!0),l)h1.push([n,{...i},r]);else{const d=U$(n,i);Object.keys(d).length&&(Object.assign(n.props,d),wc(n.object,d))}(r.sibling===null||(r.flags&J$)===K$)&&Q$()},finalizeInitialChildren:()=>!1,commitMount(){},getPublicInstance:n=>n==null?void 0:n.object,prepareForCommit:()=>null,preparePortalMount:n=>Uy(n.getState().scene,n,"",{}),resetAfterCommit:()=>{},shouldSetTextContent:()=>!1,clearContainer:()=>!1,hideInstance:j$,unhideInstance:sz,createTextInstance:bb,hideTextInstance:bb,unhideTextInstance:bb,scheduleTimeout:typeof setTimeout=="function"?setTimeout:void 0,cancelTimeout:typeof clearTimeout=="function"?clearTimeout:void 0,noTimeout:-1,getInstanceFromNode:()=>null,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},prepareScopeUpdate(){},getInstanceFromScope:()=>null,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,requestPostPaintCallback(){},maySuspendCommit:()=>!1,preloadInstance:()=>!0,startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,HostTransitionContext:ie.createContext(null),setCurrentUpdatePriority(n){lx=n},getCurrentUpdatePriority(){return lx},resolveUpdatePriority(){var n;if(lx!==iz)return lx;switch(typeof window<"u"&&((n=window.event)==null?void 0:n.type)){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return o1.DiscreteEventPriority;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return o1.ContinuousEventPriority;default:return o1.DefaultEventPriority}},resetFormInstance(){}}),Gh=new Map,af={objects:"shallow",strict:!1};function $$(n,e){if(!e&&typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement&&n.parentElement){const{width:t,height:i,top:r,left:a}=n.parentElement.getBoundingClientRect();return{width:t,height:i,top:r,left:a}}else if(!e&&typeof OffscreenCanvas<"u"&&n instanceof OffscreenCanvas)return{width:n.width,height:n.height,top:0,left:0};return{width:0,height:0,top:0,left:0,...e}}function eee(n){const e=Gh.get(n),t=e==null?void 0:e.fiber,i=e==null?void 0:e.store;e&&console.warn("R3F.createRoot should only be called once!");const r=typeof reportError=="function"?reportError:console.error,a=i||V$(nA,IL),s=t||$3.createContainer(a,o1.ConcurrentRoot,null,!1,null,"",r,r,r,null);e||Gh.set(n,{fiber:s,store:a});let o,l,u=!1,d=null;return{async configure(f={}){let p;d=new Promise(De=>p=De);let{gl:m,size:v,scene:x,events:S,onCreated:_,shadows:T=!1,linear:E=!1,flat:b=!1,legacy:R=!1,orthographic:w=!1,frameloop:L="always",dpr:U=[1,2],performance:N,raycaster:C,camera:z,onPointerMissed:W}=f,K=a.getState(),oe=K.gl;if(!K.gl){const De={canvas:n,powerPreference:"high-performance",antialias:!0,alpha:!0},Xe=typeof m=="function"?await m(De):m;CL(Xe)?oe=Xe:oe=new uT({...De,...m}),K.set({gl:oe})}let ae=K.raycaster;ae||K.set({raycaster:ae=new sT});const{params:X,...te}=C||{};if(di.equ(te,ae,af)||wc(ae,{...te}),di.equ(X,ae.params,af)||wc(ae,{params:{...ae.params,...X}}),!K.camera||K.camera===l&&!di.equ(l,z,af)){l=z;const De=z==null?void 0:z.isCamera,Xe=De?z:w?new Za(0,0,0,0,.1,1e3):new si(75,0,.1,1e3);De||(Xe.position.z=5,z&&(wc(Xe,z),Xe.manual||("aspect"in z||"left"in z||"right"in z||"bottom"in z||"top"in z)&&(Xe.manual=!0,Xe.updateProjectionMatrix())),!K.camera&&!(z!=null&&z.rotation)&&Xe.lookAt(0,0,0)),K.set({camera:Xe}),ae.camera=Xe}if(!K.scene){let De;x!=null&&x.isScene?(De=x,Uy(De,a,"",{})):(De=new Rp,Uy(De,a,"",{}),x&&wc(De,x)),K.set({scene:De})}S&&!K.events.handlers&&K.set({events:S(a)});const Q=$$(n,v);if(di.equ(Q,K.size,af)||K.setSize(Q.width,Q.height,Q.top,Q.left),U&&K.viewport.dpr!==K7(U)&&K.setDpr(U),K.frameloop!==L&&K.setFrameloop(L),K.onPointerMissed||K.set({onPointerMissed:W}),N&&!di.equ(N,K.performance,af)&&K.set(De=>({performance:{...De.performance,...N}})),!K.xr){var ce;const De=(tt,xt)=>{const ve=a.getState();ve.frameloop!=="never"&&IL(tt,!0,ve,xt)},Xe=()=>{const tt=a.getState();tt.gl.xr.enabled=tt.gl.xr.isPresenting,tt.gl.xr.setAnimationLoop(tt.gl.xr.isPresenting?De:null),tt.gl.xr.isPresenting||nA(tt)},nt={connect(){const tt=a.getState().gl;tt.xr.addEventListener("sessionstart",Xe),tt.xr.addEventListener("sessionend",Xe)},disconnect(){const tt=a.getState().gl;tt.xr.removeEventListener("sessionstart",Xe),tt.xr.removeEventListener("sessionend",Xe)}};typeof((ce=oe.xr)==null?void 0:ce.addEventListener)=="function"&&nt.connect(),K.set({xr:nt})}if(oe.shadowMap){const De=oe.shadowMap.enabled,Xe=oe.shadowMap.type;if(oe.shadowMap.enabled=!!T,di.boo(T))oe.shadowMap.type=Z0;else if(di.str(T)){var se;const nt={basic:W8,percentage:MS,soft:Z0,variance:Xs};oe.shadowMap.type=(se=nt[T])!=null?se:Z0}else di.obj(T)&&Object.assign(oe.shadowMap,T);(De!==oe.shadowMap.enabled||Xe!==oe.shadowMap.type)&&(oe.shadowMap.needsUpdate=!0)}return tn.enabled=!R,u||(oe.outputColorSpace=E?Xn:mn,oe.toneMapping=b?As:jw),K.legacy!==R&&K.set(()=>({legacy:R})),K.linear!==E&&K.set(()=>({linear:E})),K.flat!==b&&K.set(()=>({flat:b})),m&&!di.fun(m)&&!CL(m)&&!di.equ(m,oe,af)&&wc(oe,m),o=_,u=!0,p(),this},render(f){return!u&&!d&&this.configure(),d.then(()=>{$3.updateContainer(ot.jsx(tee,{store:a,children:f,onCreated:o,rootElement:n}),s,null,()=>{})}),a},unmount(){lz(n)}}}function tee({store:n,children:e,onCreated:t,rootElement:i}){return uv(()=>{const r=n.getState();r.set(a=>({internal:{...a.internal,active:!0}})),t&&t(r),n.getState().events.connected||r.events.connect==null||r.events.connect(i)},[]),ot.jsx(ez.Provider,{value:n,children:e})}function lz(n,e){const t=Gh.get(n),i=t==null?void 0:t.fiber;if(i){const r=t==null?void 0:t.store.getState();r&&(r.internal.active=!1),$3.updateContainer(null,i,null,()=>{r&&setTimeout(()=>{try{var a,s,o,l;r.events.disconnect==null||r.events.disconnect(),(a=r.gl)==null||(s=a.renderLists)==null||s.dispose==null||s.dispose(),(o=r.gl)==null||o.forceContextLoss==null||o.forceContextLoss(),(l=r.gl)!=null&&l.xr&&r.xr.disconnect(),O$(r.scene),Gh.delete(n)}catch{}},500)})}}const nee=new Set,iee=new Set,ree=new Set;function Mb(n,e){if(n.size)for(const{callback:t}of n.values())t(e)}function ig(n,e){switch(n){case"before":return Mb(nee,e);case"after":return Mb(iee,e);case"tail":return Mb(ree,e)}}let Ab,wb;function eA(n,e,t){let i=e.clock.getDelta();e.frameloop==="never"&&typeof n=="number"&&(i=n-e.clock.elapsedTime,e.clock.oldTime=e.clock.elapsedTime,e.clock.elapsedTime=n),Ab=e.internal.subscribers;for(let r=0;r0)&&!((e=sf.gl.xr)!=null&&e.isPresenting)&&(Rb+=eA(n,sf))}if(tA=!1,ig("after",n),Rb===0)return ig("tail",n),Fy=!1,cancelAnimationFrame(LL)}function nA(n,e=1){var t;if(!n)return Gh.forEach(i=>nA(i.store.getState(),e));(t=n.gl.xr)!=null&&t.isPresenting||!n.internal.active||n.frameloop==="never"||(e>1?n.internal.frames=Math.min(60,n.internal.frames+e):tA?n.internal.frames=2:n.internal.frames=1,Fy||(Fy=!0,requestAnimationFrame(cz)))}function IL(n,e=!0,t,i){if(e&&ig("before",n),t)eA(n,t,i);else for(const r of Gh.values())eA(n,r.store.getState());e&&ig("after",n)}const Cb={onClick:["click",!1],onContextMenu:["contextmenu",!1],onDoubleClick:["dblclick",!1],onWheel:["wheel",!0],onPointerDown:["pointerdown",!0],onPointerUp:["pointerup",!0],onPointerLeave:["pointerleave",!0],onPointerMove:["pointermove",!0],onPointerCancel:["pointercancel",!0],onLostPointerCapture:["lostpointercapture",!0]};function aee(n){const{handlePointer:e}=H$(n);return{priority:1,enabled:!0,compute(t,i,r){i.pointer.set(t.offsetX/i.size.width*2-1,-(t.offsetY/i.size.height)*2+1),i.raycaster.setFromCamera(i.pointer,i.camera)},connected:void 0,handlers:Object.keys(Cb).reduce((t,i)=>({...t,[i]:e(i)}),{}),update:()=>{var t;const{events:i,internal:r}=n.getState();(t=r.lastEvent)!=null&&t.current&&i.handlers&&i.handlers.onPointerMove(r.lastEvent.current)},connect:t=>{const{set:i,events:r}=n.getState();if(r.disconnect==null||r.disconnect(),i(a=>({events:{...a.events,connected:t}})),r.handlers)for(const a in r.handlers){const s=r.handlers[a],[o,l]=Cb[a];t.addEventListener(o,s,{passive:l})}},disconnect:()=>{const{set:t,events:i}=n.getState();if(i.connected){if(i.handlers)for(const r in i.handlers){const a=i.handlers[r],[s]=Cb[r];i.connected.removeEventListener(s,a)}t(r=>({events:{...r.events,connected:void 0}}))}}}}function UL(n,e){let t;return(...i)=>{window.clearTimeout(t),t=window.setTimeout(()=>n(...i),e)}}function see({debounce:n,scroll:e,polyfill:t,offsetSize:i}={debounce:0,scroll:!1,offsetSize:!1}){const r=t||(typeof window>"u"?class{}:window.ResizeObserver);if(!r)throw new Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");const[a,s]=ie.useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),o=ie.useRef({element:null,scrollContainers:null,resizeObserver:null,lastBounds:a,orientationHandler:null}),l=n?typeof n=="number"?n:n.scroll:null,u=n?typeof n=="number"?n:n.resize:null,d=ie.useRef(!1);ie.useEffect(()=>(d.current=!0,()=>void(d.current=!1)));const[f,p,m]=ie.useMemo(()=>{const _=()=>{if(!o.current.element)return;const{left:T,top:E,width:b,height:R,bottom:w,right:L,x:U,y:N}=o.current.element.getBoundingClientRect(),C={left:T,top:E,width:b,height:R,bottom:w,right:L,x:U,y:N};o.current.element instanceof HTMLElement&&i&&(C.height=o.current.element.offsetHeight,C.width=o.current.element.offsetWidth),Object.freeze(C),d.current&&!uee(o.current.lastBounds,C)&&s(o.current.lastBounds=C)};return[_,u?UL(_,u):_,l?UL(_,l):_]},[s,i,l,u]);function v(){o.current.scrollContainers&&(o.current.scrollContainers.forEach(_=>_.removeEventListener("scroll",m,!0)),o.current.scrollContainers=null),o.current.resizeObserver&&(o.current.resizeObserver.disconnect(),o.current.resizeObserver=null),o.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",o.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",o.current.orientationHandler))}function x(){o.current.element&&(o.current.resizeObserver=new r(m),o.current.resizeObserver.observe(o.current.element),e&&o.current.scrollContainers&&o.current.scrollContainers.forEach(_=>_.addEventListener("scroll",m,{capture:!0,passive:!0})),o.current.orientationHandler=()=>{m()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",o.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",o.current.orientationHandler))}const S=_=>{!_||_===o.current.element||(v(),o.current.element=_,o.current.scrollContainers=uz(_),x())};return lee(m,!!e),oee(p),ie.useEffect(()=>{v(),x()},[e,m,p]),ie.useEffect(()=>v,[]),[S,a,f]}function oee(n){ie.useEffect(()=>{const e=n;return window.addEventListener("resize",e),()=>void window.removeEventListener("resize",e)},[n])}function lee(n,e){ie.useEffect(()=>{if(e){const t=n;return window.addEventListener("scroll",t,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",t,!0)}},[n,e])}function uz(n){const e=[];if(!n||n===document.body)return e;const{overflow:t,overflowX:i,overflowY:r}=window.getComputedStyle(n);return[t,i,r].some(a=>a==="auto"||a==="scroll")&&e.push(n),[...e,...uz(n.parentElement)]}const cee=["x","y","top","bottom","left","right","width","height"],uee=(n,e)=>cee.every(t=>n[t]===e[t]);function hee({ref:n,children:e,fallback:t,resize:i,style:r,gl:a,events:s=aee,eventSource:o,eventPrefix:l,shadows:u,linear:d,flat:f,legacy:p,orthographic:m,frameloop:v,dpr:x,performance:S,raycaster:_,camera:T,scene:E,onPointerMissed:b,onCreated:R,...w}){ie.useMemo(()=>rz(kJ),[]);const L=R$(),[U,N]=see({scroll:!0,debounce:{scroll:50,resize:0},...i}),C=ie.useRef(null),z=ie.useRef(null);ie.useImperativeHandle(n,()=>C.current);const W=Q7(b),[K,oe]=ie.useState(!1),[ae,X]=ie.useState(!1);if(K)throw K;if(ae)throw ae;const te=ie.useRef(null);uv(()=>{const ce=C.current;if(N.width>0&&N.height>0&&ce){te.current||(te.current=eee(ce));async function se(){await te.current.configure({gl:a,scene:E,events:s,shadows:u,linear:d,flat:f,legacy:p,orthographic:m,frameloop:v,dpr:x,performance:S,raycaster:_,camera:T,size:N,onPointerMissed:(...De)=>W.current==null?void 0:W.current(...De),onCreated:De=>{De.events.connect==null||De.events.connect(o?A$(o)?o.current:o:z.current),l&&De.setEvents({compute:(Xe,nt)=>{const tt=Xe[l+"X"],xt=Xe[l+"Y"];nt.pointer.set(tt/nt.size.width*2-1,-(xt/nt.size.height)*2+1),nt.raycaster.setFromCamera(nt.pointer,nt.camera)}}),R==null||R(De)}}),te.current.render(ot.jsx(L,{children:ot.jsx(D$,{set:X,children:ot.jsx(ie.Suspense,{fallback:ot.jsx(C$,{set:oe}),children:e??null})})}))}se()}}),ie.useEffect(()=>{const ce=C.current;if(ce)return()=>lz(ce)},[]);const Q=o?"none":"auto";return ot.jsx("div",{ref:z,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:Q,...r},...w,children:ot.jsx("div",{ref:U,style:{width:"100%",height:"100%"},children:ot.jsx("canvas",{ref:C,style:{display:"block"},children:t})})})}function hz(n){return ot.jsx(q7,{children:ot.jsx(hee,{...n})})}function dee(n){let e=0;for(const i in n.attributes){const r=n.getAttribute(i);e+=r.count*r.itemSize*r.array.BYTES_PER_ELEMENT}const t=n.getIndex();return e+=t?t.count*t.itemSize*t.array.BYTES_PER_ELEMENT:0,e}function PL(n,e){if(e===_9)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),n;if(e===Cy||e===tR){let t=n.getIndex();if(t===null){const s=[],o=n.getAttribute("position");if(o!==void 0){for(let l=0;l=2.0 are supported."));return}const u=new Xee(a,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});u.fileLoader.setRequestHeader(this.requestHeader);for(let d=0;d=0&&o[f]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+f+'".')}}u.setExtensions(s),u.setPlugins(o),u.parse(i,r)}parseAsync(e,t){const i=this;return new Promise(function(r,a){i.parse(e,t,r,a)})}}function fee(){let n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}const ln={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class pee{constructor(e){this.parser=e,this.name=ln.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let i=0,r=t.length;i=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,a.source,s)}}class Ree{constructor(e){this.parser=e,this.name=ln.EXT_TEXTURE_WEBP}loadTexture(e){const t=this.name,i=this.parser,r=i.json,a=r.textures[e];if(!a.extensions||!a.extensions[t])return null;const s=a.extensions[t],o=r.images[s.source];let l=i.textureLoader;if(o.uri){const u=i.options.manager.getHandler(o.uri);u!==null&&(l=u)}return i.loadTextureImage(e,s.source,l)}}class Cee{constructor(e){this.parser=e,this.name=ln.EXT_TEXTURE_AVIF}loadTexture(e){const t=this.name,i=this.parser,r=i.json,a=r.textures[e];if(!a.extensions||!a.extensions[t])return null;const s=a.extensions[t],o=r.images[s.source];let l=i.textureLoader;if(o.uri){const u=i.options.manager.getHandler(o.uri);u!==null&&(l=u)}return i.loadTextureImage(e,s.source,l)}}class Dee{constructor(e){this.name=ln.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){const r=i.extensions[this.name],a=this.parser.getDependency("buffer",r.buffer),s=this.parser.options.meshoptDecoder;if(!s||!s.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return a.then(function(o){const l=r.byteOffset||0,u=r.byteLength||0,d=r.count,f=r.byteStride,p=new Uint8Array(o,l,u);return s.decodeGltfBufferAsync?s.decodeGltfBufferAsync(d,f,p,r.mode,r.filter).then(function(m){return m.buffer}):s.ready.then(function(){const m=new ArrayBuffer(d*f);return s.decodeGltfBuffer(new Uint8Array(m),d,f,p,r.mode,r.filter),m})})}else return null}}class Nee{constructor(e){this.name=ln.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||i.mesh===void 0)return null;const r=t.meshes[i.mesh];for(const u of r.primitives)if(u.mode!==fs.TRIANGLES&&u.mode!==fs.TRIANGLE_STRIP&&u.mode!==fs.TRIANGLE_FAN&&u.mode!==void 0)return null;const s=i.extensions[this.name].attributes,o=[],l={};for(const u in s)o.push(this.parser.getDependency("accessor",s[u]).then(d=>(l[u]=d,l[u])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(u=>{const d=u.pop(),f=d.isGroup?d.children:[d],p=u[0].count,m=[];for(const v of f){const x=new Me,S=new D,_=new ft,T=new D(1,1,1),E=new VS(v.geometry,v.material,p);for(let b=0;b0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":n.search(/\.ktx2($|\?)/i)>0||n.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}const Wee=new Me;class Xee{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new fee,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let i=!1,r=-1,a=!1,s=-1;if(typeof navigator<"u"){const o=navigator.userAgent;i=/^((?!chrome|android).)*safari/i.test(o)===!0;const l=o.match(/Version\/(\d+)/);r=i&&l?parseInt(l[1],10):-1,a=o.indexOf("Firefox")>-1,s=a?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||i&&r<17||a&&s<98?this.textureLoader=new ER(this.options.manager):this.textureLoader=new x7(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new jr(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const i=this,r=this.json,a=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(s){return s._markDefs&&s._markDefs()}),Promise.all(this._invokeAll(function(s){return s.beforeRoot&&s.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(s){const o={scene:s[0][r.scene||0],scenes:s[0],animations:s[1],cameras:s[2],asset:r.asset,parser:i,userData:{}};return Xu(a,o,r),yo(o,r),Promise.all(i._invokeAll(function(l){return l.afterRoot&&l.afterRoot(o)})).then(function(){for(const l of o.scenes)l.updateMatrixWorld();e(o)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let r=0,a=t.length;r{const l=this.associations.get(s);l!=null&&this.associations.set(o,l);for(const[u,d]of s.children.entries())a(d,o.children[u])};return a(i,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let i=0;i=2&&S.setY(N,w[L*l+1]),l>=3&&S.setZ(N,w[L*l+2]),l>=4&&S.setW(N,w[L*l+3]),l>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}S.normalized=v}return S})}loadTexture(e){const t=this.json,i=this.options,a=t.textures[e].source,s=t.images[a];let o=this.textureLoader;if(s.uri){const l=i.manager.getHandler(s.uri);l!==null&&(o=l)}return this.loadTextureImage(e,a,o)}loadTextureImage(e,t,i){const r=this,a=this.json,s=a.textures[e],o=a.images[t],l=(o.uri||o.bufferView)+":"+s.sampler;if(this.textureCache[l])return this.textureCache[l];const u=this.loadImageSource(t,i).then(function(d){d.flipY=!1,d.name=s.name||o.name||"",d.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(d.name=o.uri);const p=(a.samplers||{})[s.sampler]||{};return d.magFilter=BL[p.magFilter]||Bt,d.minFilter=BL[p.minFilter]||Ga,d.wrapS=FL[p.wrapS]||Ir,d.wrapT=FL[p.wrapT]||Ir,d.generateMipmaps=!d.isCompressedTexture&&d.minFilter!==Yn&&d.minFilter!==Bt,r.associations.set(d,{textures:e}),d}).catch(function(){return null});return this.textureCache[l]=u,u}loadImageSource(e,t){const i=this,r=this.json,a=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(f=>f.clone());const s=r.images[e],o=self.URL||self.webkitURL;let l=s.uri||"",u=!1;if(s.bufferView!==void 0)l=i.getDependency("bufferView",s.bufferView).then(function(f){u=!0;const p=new Blob([f],{type:s.mimeType});return l=o.createObjectURL(p),l});else if(s.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const d=Promise.resolve(l).then(function(f){return new Promise(function(p,m){let v=p;t.isImageBitmapLoader===!0&&(v=function(x){const S=new In(x);S.needsUpdate=!0,p(S)}),t.load(qc.resolveURL(f,a.path),v,void 0,m)})}).then(function(f){return u===!0&&o.revokeObjectURL(l),yo(f,s),f.userData.mimeType=s.mimeType||kee(s.uri),f}).catch(function(f){throw console.error("THREE.GLTFLoader: Couldn't load texture",l),f});return this.sourceCache[e]=d,d}assignTexture(e,t,i,r){const a=this;return this.getDependency("texture",i.index).then(function(s){if(!s)return null;if(i.texCoord!==void 0&&i.texCoord>0&&(s=s.clone(),s.channel=i.texCoord),a.extensions[ln.KHR_TEXTURE_TRANSFORM]){const o=i.extensions!==void 0?i.extensions[ln.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const l=a.associations.get(s);s=a.extensions[ln.KHR_TEXTURE_TRANSFORM].extendTexture(s,o),a.associations.set(s,l)}}return r!==void 0&&(s.colorSpace=r),e[t]=s,s})}assignFinalMaterial(e){const t=e.geometry;let i=e.material;const r=t.attributes.tangent===void 0,a=t.attributes.color!==void 0,s=t.attributes.normal===void 0;if(e.isPoints){const o="PointsMaterial:"+i.uuid;let l=this.cache.get(o);l||(l=new nv,ei.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,l.sizeAttenuation=!1,this.cache.add(o,l)),i=l}else if(e.isLine){const o="LineBasicMaterial:"+i.uuid;let l=this.cache.get(o);l||(l=new Yi,ei.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,this.cache.add(o,l)),i=l}if(r||a||s){let o="ClonedMaterial:"+i.uuid+":";r&&(o+="derivative-tangents:"),a&&(o+="vertex-colors:"),s&&(o+="flat-shading:");let l=this.cache.get(o);l||(l=i.clone(),a&&(l.vertexColors=!0),s&&(l.flatShading=!0),r&&(l.normalScale&&(l.normalScale.y*=-1),l.clearcoatNormalScale&&(l.clearcoatNormalScale.y*=-1)),this.cache.add(o,l),this.associations.set(l,this.associations.get(i))),i=l}e.material=i}getMaterialType(){return lv}loadMaterial(e){const t=this,i=this.json,r=this.extensions,a=i.materials[e];let s;const o={},l=a.extensions||{},u=[];if(l[ln.KHR_MATERIALS_UNLIT]){const f=r[ln.KHR_MATERIALS_UNLIT];s=f.getMaterialType(),u.push(f.extendParams(o,a,t))}else{const f=a.pbrMetallicRoughness||{};if(o.color=new Ye(1,1,1),o.opacity=1,Array.isArray(f.baseColorFactor)){const p=f.baseColorFactor;o.color.setRGB(p[0],p[1],p[2],Xn),o.opacity=p[3]}f.baseColorTexture!==void 0&&u.push(t.assignTexture(o,"map",f.baseColorTexture,mn)),o.metalness=f.metallicFactor!==void 0?f.metallicFactor:1,o.roughness=f.roughnessFactor!==void 0?f.roughnessFactor:1,f.metallicRoughnessTexture!==void 0&&(u.push(t.assignTexture(o,"metalnessMap",f.metallicRoughnessTexture)),u.push(t.assignTexture(o,"roughnessMap",f.metallicRoughnessTexture))),s=this._invokeOne(function(p){return p.getMaterialType&&p.getMaterialType(e)}),u.push(Promise.all(this._invokeAll(function(p){return p.extendMaterialParams&&p.extendMaterialParams(e,o)})))}a.doubleSided===!0&&(o.side=xr);const d=a.alphaMode||Nb.OPAQUE;if(d===Nb.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,d===Nb.MASK&&(o.alphaTest=a.alphaCutoff!==void 0?a.alphaCutoff:.5)),a.normalTexture!==void 0&&s!==Sr&&(u.push(t.assignTexture(o,"normalMap",a.normalTexture)),o.normalScale=new re(1,1),a.normalTexture.scale!==void 0)){const f=a.normalTexture.scale;o.normalScale.set(f,f)}if(a.occlusionTexture!==void 0&&s!==Sr&&(u.push(t.assignTexture(o,"aoMap",a.occlusionTexture)),a.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=a.occlusionTexture.strength)),a.emissiveFactor!==void 0&&s!==Sr){const f=a.emissiveFactor;o.emissive=new Ye().setRGB(f[0],f[1],f[2],Xn)}return a.emissiveTexture!==void 0&&s!==Sr&&u.push(t.assignTexture(o,"emissiveMap",a.emissiveTexture,mn)),Promise.all(u).then(function(){const f=new s(o);return a.name&&(f.name=a.name),yo(f,a),t.associations.set(f,{materials:e}),a.extensions&&Xu(r,f,a),f})}createUniqueName(e){const t=fn.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,i=this.extensions,r=this.primitiveCache;function a(o){return i[ln.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,t).then(function(l){return HL(l,o,t)})}const s=[];for(let o=0,l=e.length;o0&&Vee(_,a),_.name=t.createUniqueName(a.name||"mesh_"+e),yo(_,a),S.extensions&&Xu(r,_,S),t.assignFinalMaterial(_),f.push(_)}for(let m=0,v=f.length;m1?d=new Xi:u.length===1?d=u[0]:d=new Xt,d!==u[0])for(let f=0,p=u.length;f1){const f=r.associations.get(d);r.associations.set(d,{...f})}return r.associations.get(d).nodes=e,d}),this.nodeCache[e]}loadScene(e){const t=this.extensions,i=this.json.scenes[e],r=this,a=new Xi;i.name&&(a.name=r.createUniqueName(i.name)),yo(a,i),i.extensions&&Xu(t,a,i);const s=i.nodes||[],o=[];for(let l=0,u=s.length;l{const f=new Map;for(const[p,m]of r.associations)(p instanceof ei||p instanceof In)&&f.set(p,m);return d.traverse(p=>{const m=r.associations.get(p);m!=null&&f.set(p,m)}),f};return r.associations=u(a),a})}_createAnimationTracks(e,t,i,r,a){const s=[],o=e.name?e.name:e.uuid,l=[];hc[a.path]===hc.weights?e.traverse(function(p){p.morphTargetInfluences&&l.push(p.name?p.name:p.uuid)}):l.push(o);let u;switch(hc[a.path]){case hc.weights:u=tu;break;case hc.rotation:u=nu;break;case hc.translation:case hc.scale:u=Hh;break;default:switch(i.itemSize){case 1:u=tu;break;case 2:case 3:default:u=Hh;break}break}const d=r.interpolation!==void 0?Bee[r.interpolation]:Tp,f=this._getArrayFromAccessor(i);for(let p=0,m=l.length;p ")}return null},nn.getPublicRootInstance=function(c){if(c=c.current,!c.child)return null;switch(c.child.tag){case 27:case 5:return mm(c.child.stateNode);default:return c.child.stateNode}},nn.injectIntoDevTools=function(){var c={bundleType:0,version:hH,rendererPackageName:dH,currentDispatcherRef:Vt,findFiberByHostInstance:Y4,reconcilerVersion:"19.0.0"};if(W4!==null&&(c.rendererConfig=W4),typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")c=!1;else{var h=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(h.isDisabled||!h.supportsFiber)c=!0;else{try{_m=h.inject(c),Ra=h}catch{}c=!!h.checkDCE}}return c},nn.isAlreadyRendering=function(){return!1},nn.observeVisibleRects=function(c,h,g,y){if(!gm)throw Error(r(363));c=s2(c,h);var M=UH(c,g,y).disconnect;return{disconnect:function(){M()}}},nn.shouldError=function(){return null},nn.shouldSuspend=function(){return!1},nn.startHostTransition=function(c,h,g,y){if(c.tag!==5)throw Error(r(476));var M=bC(c).queue;EC(c,M,h,gd,g===null?i:function(){var A=bC(c).next.queue;return om(c,A,{},Ma()),g(y)})},nn.updateContainer=function(c,h,g,y){var M=h.current,A=Ma();return z4(M,A,c,h,g,y),A},nn.updateContainerSync=function(c,h,g,y){return h.tag===0&&gu(),z4(h.current,2,c,h,g,y),2},nn},n.exports.default=n.exports,Object.defineProperty(n.exports,"__esModule",{value:!0})})(G7);var x$=G7.exports;V7.exports=x$;var y$=V7.exports;const S$=aS(y$);function OR(n,e,t){if(!n)return;if(t(n)===!0)return n;let i=e?n.return:n.child;for(;i;){const r=OR(i,e,t);if(r)return r;i=e?null:i.sibling}}function X7(n){try{return Object.defineProperties(n,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return n}}const LR=X7(ie.createContext(null));let q7=class extends ie.Component{render(){return ie.createElement(LR.Provider,{value:this._reactInternals},this.props.children)}};function Y7(){const n=ie.useContext(LR);if(n===null)throw new Error("its-fine: useFiber must be called within a !");const e=ie.useId();return ie.useMemo(()=>{for(const t of[n,n==null?void 0:n.alternate]){if(!t)continue;const i=OR(t,!1,r=>{let a=r.memoizedState;for(;a;){if(a.memoizedState===e)return!0;a=a.next}});if(i)return i}},[n,e])}const T$=Symbol.for("react.context"),E$=n=>n!==null&&typeof n=="object"&&"$$typeof"in n&&n.$$typeof===T$;function b$(){const n=Y7(),[e]=ie.useState(()=>new Map);e.clear();let t=n;for(;t;){const i=t.type;E$(i)&&i!==LR&&!e.has(i)&&e.set(i,ie.use(X7(i))),t=t.return}return e}function M$(){const n=b$();return ie.useMemo(()=>Array.from(n.keys()).reduce((e,t)=>i=>ie.createElement(e,null,ie.createElement(t.Provider,{...i,value:n.get(t)})),e=>ie.createElement(q7,{...e})),[n])}function j7(n){let e=n.root;for(;e.getState().previousRoot;)e=e.getState().previousRoot;return e}const Z7=n=>n&&n.isOrthographicCamera,A$=n=>n&&n.hasOwnProperty("current"),w$=n=>n!=null&&(typeof n=="string"||typeof n=="number"||n.isColor),uv=((n,e)=>typeof window<"u"&&(((n=window.document)==null?void 0:n.createElement)||((e=window.navigator)==null?void 0:e.product)==="ReactNative"))()?ie.useLayoutEffect:ie.useEffect;function Q7(n){const e=ie.useRef(n);return uv(()=>void(e.current=n),[n]),e}function R$(){const n=Y7(),e=M$();return ie.useMemo(()=>({children:t})=>{const r=!!OR(n,!0,a=>a.type===ie.StrictMode)?ie.StrictMode:ie.Fragment;return ot.jsx(r,{children:ot.jsx(e,{children:t})})},[n,e])}function C$({set:n}){return uv(()=>(n(new Promise(()=>null)),()=>n(!1)),[n]),null}const D$=(n=>(n=class extends ie.Component{constructor(...t){super(...t),this.state={error:!1}}componentDidCatch(t){this.props.set(t)}render(){return this.state.error?null:this.props.children}},n.getDerivedStateFromError=()=>({error:!0}),n))();function K7(n){var e;const t=typeof window<"u"?(e=window.devicePixelRatio)!=null?e:2:1;return Array.isArray(n)?Math.min(Math.max(n[0],t),n[1]):n}function rf(n){var e;return(e=n.__r3f)==null?void 0:e.root.getState()}const di={obj:n=>n===Object(n)&&!di.arr(n)&&typeof n!="function",fun:n=>typeof n=="function",str:n=>typeof n=="string",num:n=>typeof n=="number",boo:n=>typeof n=="boolean",und:n=>n===void 0,nul:n=>n===null,arr:n=>Array.isArray(n),equ(n,e,{arrays:t="shallow",objects:i="reference",strict:r=!0}={}){if(typeof n!=typeof e||!!n!=!!e)return!1;if(di.str(n)||di.num(n)||di.boo(n))return n===e;const a=di.obj(n);if(a&&i==="reference")return n===e;const s=di.arr(n);if(s&&t==="reference")return n===e;if((s||a)&&n===e)return!0;let o;for(o in n)if(!(o in e))return!1;if(a&&t==="shallow"&&i==="shallow"){for(o in r?e:n)if(!di.equ(n[o],e[o],{strict:r,objects:"reference"}))return!1}else for(o in r?e:n)if(n[o]!==e[o])return!1;if(di.und(o)){if(s&&n.length===0&&e.length===0||a&&Object.keys(n).length===0&&Object.keys(e).length===0)return!0;if(n!==e)return!1}return!0}};function N$(n){const e={nodes:{},materials:{},meshes:{}};return n&&n.traverse(t=>{t.name&&(e.nodes[t.name]=t),t.material&&!e.materials[t.material.name]&&(e.materials[t.material.name]=t.material),t.isMesh&&!e.meshes[t.name]&&(e.meshes[t.name]=t)}),e}function O$(n){n.type!=="Scene"&&(n.dispose==null||n.dispose());for(const e in n){const t=n[e];(t==null?void 0:t.type)!=="Scene"&&(t==null||t.dispose==null||t.dispose())}}const J7=["children","key","ref"];function L$(n){const e={};for(const t in n)J7.includes(t)||(e[t]=n[t]);return e}function Uy(n,e,t,i){const r=n;let a=r==null?void 0:r.__r3f;return a||(a={root:e,type:t,parent:null,children:[],props:L$(i),object:r,eventCount:0,handlers:{},isHidden:!1},r&&(r.__r3f=a)),a}function Ig(n,e){if(!e.includes("-"))return{root:n,key:e,target:n[e]};if(e in n)return{root:n,key:e,target:n[e]};let t=n;const i=e.split("-");for(const r of i){if(typeof t!="object"||t===null){if(t!==void 0){const a=i.slice(i.indexOf(r)).join("-");return{root:t,key:a,target:void 0}}return{root:n,key:e,target:void 0}}e=r,n=t,t=t[e]}return{root:n,key:e,target:t}}const wL=/-\d+$/;function Py(n,e){if(di.str(e.props.attach)){if(wL.test(e.props.attach)){const r=e.props.attach.replace(wL,""),{root:a,key:s}=Ig(n.object,r);Array.isArray(a[s])||(a[s]=[])}const{root:t,key:i}=Ig(n.object,e.props.attach);e.previousAttach=t[i],t[i]=e.object}else di.fun(e.props.attach)&&(e.previousAttach=e.props.attach(n.object,e.object))}function zy(n,e){if(di.str(e.props.attach)){const{root:t,key:i}=Ig(n.object,e.props.attach),r=e.previousAttach;r===void 0?delete t[i]:t[i]=r}else e.previousAttach==null||e.previousAttach(n.object,e.object);delete e.previousAttach}const K3=[...J7,"args","dispose","attach","object","onUpdate","dispose"],RL=new Map;function I$(n){let e=RL.get(n.constructor);try{e||(e=new n.constructor,RL.set(n.constructor,e))}catch{}return e}function U$(n,e){const t={};for(const i in e)if(!K3.includes(i)&&!di.equ(e[i],n.props[i])){t[i]=e[i];for(const r in e)r.startsWith(`${i}-`)&&(t[r]=e[r])}for(const i in n.props){if(K3.includes(i)||e.hasOwnProperty(i))continue;const{root:r,key:a}=Ig(n.object,i);if(r.constructor&&r.constructor.length===0){const s=I$(r);di.und(s)||(t[a]=s[a])}else t[a]=0}return t}const P$=["map","emissiveMap","sheenColorMap","specularColorMap","envMap"],z$=/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/;function wc(n,e){var t;const i=n.__r3f,r=i&&j7(i).getState(),a=i==null?void 0:i.eventCount;for(const o in e){let l=e[o];if(K3.includes(o))continue;if(i&&z$.test(o)){typeof l=="function"?i.handlers[o]=l:delete i.handlers[o],i.eventCount=Object.keys(i.handlers).length;continue}if(l===void 0)continue;let{root:u,key:d,target:f}=Ig(n,o);if(f===void 0&&(typeof u!="object"||u===null))throw Error(`R3F: Cannot set "${o}". Ensure it is an object before setting "${d}".`);if(f instanceof Ap&&l instanceof Ap)f.mask=l.mask;else if(f instanceof Ye&&w$(l))f.set(l);else if(f!==null&&typeof f=="object"&&typeof f.set=="function"&&typeof f.copy=="function"&&l!=null&&l.constructor&&f.constructor===l.constructor)f.copy(l);else if(f!==null&&typeof f=="object"&&typeof f.set=="function"&&Array.isArray(l))typeof f.fromArray=="function"?f.fromArray(l):f.set(...l);else if(f!==null&&typeof f=="object"&&typeof f.set=="function"&&typeof l=="number")typeof f.setScalar=="function"?f.setScalar(l):f.set(l);else{var s;u[d]=l,r&&!r.linear&&P$.includes(d)&&(s=u[d])!=null&&s.isTexture&&u[d].format===ai&&u[d].type===Ni&&(u[d].colorSpace=mn)}}if(i!=null&&i.parent&&r!=null&&r.internal&&(t=i.object)!=null&&t.isObject3D&&a!==i.eventCount){const o=i.object,l=r.internal.interaction.indexOf(o);l>-1&&r.internal.interaction.splice(l,1),i.eventCount&&o.raycast!==null&&r.internal.interaction.push(o)}return i&&i.props.attach===void 0&&(i.object.isBufferGeometry?i.props.attach="geometry":i.object.isMaterial&&(i.props.attach="material")),i&&$p(i),n}function $p(n){var e;if(!n.parent)return;n.props.onUpdate==null||n.props.onUpdate(n.object);const t=(e=n.root)==null||e.getState==null?void 0:e.getState();t&&t.internal.frames===0&&t.invalidate()}function B$(n,e){n.manual||(Z7(n)?(n.left=e.width/-2,n.right=e.width/2,n.top=e.height/2,n.bottom=e.height/-2):n.aspect=e.width/e.height,n.updateProjectionMatrix())}const kr=n=>n==null?void 0:n.isObject3D;function ox(n){return(n.eventObject||n.object).uuid+"/"+n.index+n.instanceId}function $7(n,e,t,i){const r=t.get(e);r&&(t.delete(e),t.size===0&&(n.delete(i),r.target.releasePointerCapture(i)))}function F$(n,e){const{internal:t}=n.getState();t.interaction=t.interaction.filter(i=>i!==e),t.initialHits=t.initialHits.filter(i=>i!==e),t.hovered.forEach((i,r)=>{(i.eventObject===e||i.object===e)&&t.hovered.delete(r)}),t.capturedMap.forEach((i,r)=>{$7(t.capturedMap,e,i,r)})}function H$(n){function e(l){const{internal:u}=n.getState(),d=l.offsetX-u.initialClick[0],f=l.offsetY-u.initialClick[1];return Math.round(Math.sqrt(d*d+f*f))}function t(l){return l.filter(u=>["Move","Over","Enter","Out","Leave"].some(d=>{var f;return(f=u.__r3f)==null?void 0:f.handlers["onPointer"+d]}))}function i(l,u){const d=n.getState(),f=new Set,p=[],m=u?u(d.internal.interaction):d.internal.interaction;for(let _=0;_{const E=rf(_.object),b=rf(T.object);return!E||!b?_.distance-T.distance:b.events.priority-E.events.priority||_.distance-T.distance}).filter(_=>{const T=ox(_);return f.has(T)?!1:(f.add(T),!0)});d.events.filter&&(x=d.events.filter(x,d));for(const _ of x){let T=_.object;for(;T;){var S;(S=T.__r3f)!=null&&S.eventCount&&p.push({..._,eventObject:T}),T=T.parent}}if("pointerId"in l&&d.internal.capturedMap.has(l.pointerId))for(let _ of d.internal.capturedMap.get(l.pointerId).values())f.has(ox(_.intersection))||p.push(_.intersection);return p}function r(l,u,d,f){if(l.length){const p={stopped:!1};for(const m of l){let v=rf(m.object);if(v||m.object.traverseAncestors(x=>{const S=rf(x);if(S)return v=S,!1}),v){const{raycaster:x,pointer:S,camera:_,internal:T}=v,E=new D(S.x,S.y,0).unproject(_),b=N=>{var C,z;return(C=(z=T.capturedMap.get(N))==null?void 0:z.has(m.eventObject))!=null?C:!1},R=N=>{const C={intersection:m,target:u.target};T.capturedMap.has(N)?T.capturedMap.get(N).set(m.eventObject,C):T.capturedMap.set(N,new Map([[m.eventObject,C]])),u.target.setPointerCapture(N)},w=N=>{const C=T.capturedMap.get(N);C&&$7(T.capturedMap,m.eventObject,C,N)};let L={};for(let N in u){let C=u[N];typeof C!="function"&&(L[N]=C)}let U={...m,...L,pointer:S,intersections:l,stopped:p.stopped,delta:d,unprojectedPoint:E,ray:x.ray,camera:_,stopPropagation(){const N="pointerId"in u&&T.capturedMap.get(u.pointerId);if((!N||N.has(m.eventObject))&&(U.stopped=p.stopped=!0,T.hovered.size&&Array.from(T.hovered.values()).find(C=>C.eventObject===m.eventObject))){const C=l.slice(0,l.indexOf(m));a([...C,m])}},target:{hasPointerCapture:b,setPointerCapture:R,releasePointerCapture:w},currentTarget:{hasPointerCapture:b,setPointerCapture:R,releasePointerCapture:w},nativeEvent:u};if(f(U),p.stopped===!0)break}}}return l}function a(l){const{internal:u}=n.getState();for(const d of u.hovered.values())if(!l.length||!l.find(f=>f.object===d.object&&f.index===d.index&&f.instanceId===d.instanceId)){const p=d.eventObject.__r3f;if(u.hovered.delete(ox(d)),p!=null&&p.eventCount){const m=p.handlers,v={...d,intersections:l};m.onPointerOut==null||m.onPointerOut(v),m.onPointerLeave==null||m.onPointerLeave(v)}}}function s(l,u){for(let d=0;da([]);case"onLostPointerCapture":return u=>{const{internal:d}=n.getState();"pointerId"in u&&d.capturedMap.has(u.pointerId)&&requestAnimationFrame(()=>{d.capturedMap.has(u.pointerId)&&(d.capturedMap.delete(u.pointerId),a([]))})}}return function(d){const{onPointerMissed:f,internal:p}=n.getState();p.lastEvent.current=d;const m=l==="onPointerMove",v=l==="onClick"||l==="onContextMenu"||l==="onDoubleClick",S=i(d,m?t:void 0),_=v?e(d):0;l==="onPointerDown"&&(p.initialClick=[d.offsetX,d.offsetY],p.initialHits=S.map(E=>E.eventObject)),v&&!S.length&&_<=2&&(s(d,p.interaction),f&&f(d)),m&&a(S);function T(E){const b=E.eventObject,R=b.__r3f;if(!(R!=null&&R.eventCount))return;const w=R.handlers;if(m){if(w.onPointerOver||w.onPointerEnter||w.onPointerOut||w.onPointerLeave){const L=ox(E),U=p.hovered.get(L);U?U.stopped&&E.stopPropagation():(p.hovered.set(L,E),w.onPointerOver==null||w.onPointerOver(E),w.onPointerEnter==null||w.onPointerEnter(E))}w.onPointerMove==null||w.onPointerMove(E)}else{const L=w[l];L?(!v||p.initialHits.includes(b))&&(s(d,p.interaction.filter(U=>!p.initialHits.includes(U))),L(E)):v&&p.initialHits.includes(b)&&s(d,p.interaction.filter(U=>!p.initialHits.includes(U)))}}r(S,d,_,T)}}return{handlePointer:o}}const CL=n=>!!(n!=null&&n.render),ez=ie.createContext(null),V$=(n,e)=>{const t=p$((o,l)=>{const u=new D,d=new D,f=new D;function p(_=l().camera,T=d,E=l().size){const{width:b,height:R,top:w,left:L}=E,U=b/R;T.isVector3?f.copy(T):f.set(...T);const N=_.getWorldPosition(u).distanceTo(f);if(Z7(_))return{width:b/_.zoom,height:R/_.zoom,top:w,left:L,factor:1,distance:N,aspect:U};{const C=_.fov*Math.PI/180,z=2*Math.tan(C/2)*N,W=z*(b/R);return{width:W,height:z,top:w,left:L,factor:b/W,distance:N,aspect:U}}}let m;const v=_=>o(T=>({performance:{...T.performance,current:_}})),x=new re;return{set:o,get:l,gl:null,camera:null,raycaster:null,events:{priority:1,enabled:!0,connected:!1},scene:null,xr:null,invalidate:(_=1)=>n(l(),_),advance:(_,T)=>e(_,T,l()),legacy:!1,linear:!1,flat:!1,controls:null,clock:new cv,pointer:x,mouse:x,frameloop:"always",onPointerMissed:void 0,performance:{current:1,min:.5,max:1,debounce:200,regress:()=>{const _=l();m&&clearTimeout(m),_.performance.current!==_.performance.min&&v(_.performance.min),m=setTimeout(()=>v(l().performance.max),_.performance.debounce)}},size:{width:0,height:0,top:0,left:0},viewport:{initialDpr:0,dpr:0,width:0,height:0,top:0,left:0,aspect:0,distance:0,factor:0,getCurrentViewport:p},setEvents:_=>o(T=>({...T,events:{...T.events,..._}})),setSize:(_,T,E=0,b=0)=>{const R=l().camera,w={width:_,height:T,top:E,left:b};o(L=>({size:w,viewport:{...L.viewport,...p(R,d,w)}}))},setDpr:_=>o(T=>{const E=K7(_);return{viewport:{...T.viewport,dpr:E,initialDpr:T.viewport.initialDpr||E}}}),setFrameloop:(_="always")=>{const T=l().clock;T.stop(),T.elapsedTime=0,_!=="never"&&(T.start(),T.elapsedTime=0),o(()=>({frameloop:_}))},previousRoot:void 0,internal:{interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,lastEvent:ie.createRef(),active:!1,frames:0,priority:0,subscribe:(_,T,E)=>{const b=l().internal;return b.priority=b.priority+(T>0?1:0),b.subscribers.push({ref:_,priority:T,store:E}),b.subscribers=b.subscribers.sort((R,w)=>R.priority-w.priority),()=>{const R=l().internal;R!=null&&R.subscribers&&(R.priority=R.priority-(T>0?1:0),R.subscribers=R.subscribers.filter(w=>w.ref!==_))}}}}}),i=t.getState();let r=i.size,a=i.viewport.dpr,s=i.camera;return t.subscribe(()=>{const{camera:o,size:l,viewport:u,gl:d,set:f}=t.getState();if(l.width!==r.width||l.height!==r.height||u.dpr!==a){r=l,a=u.dpr,B$(o,l),u.dpr>0&&d.setPixelRatio(u.dpr);const p=typeof HTMLCanvasElement<"u"&&d.domElement instanceof HTMLCanvasElement;d.setSize(l.width,l.height,p)}o!==s&&(s=o,f(p=>({viewport:{...p.viewport,...p.viewport.getCurrentViewport(o)}})))}),t.subscribe(o=>n(o)),t};function tz(){const n=ie.useContext(ez);if(!n)throw new Error("R3F: Hooks can only be used within the Canvas component!");return n}function pn(n=t=>t,e){return tz()(n,e)}function _a(n,e=0){const t=tz(),i=t.getState().internal.subscribe,r=Q7(n);return uv(()=>i(r,e,t),[e,i,t]),null}const DL=new WeakMap,G$=n=>{var e;return typeof n=="function"&&(n==null||(e=n.prototype)==null?void 0:e.constructor)===n};function nz(n,e){return function(t,...i){let r;return G$(t)?(r=DL.get(t),r||(r=new t,DL.set(t,r))):r=t,n&&n(r),Promise.all(i.map(a=>new Promise((s,o)=>r.load(a,l=>{kr(l==null?void 0:l.scene)&&Object.assign(l,N$(l.scene)),s(l)},e,l=>o(new Error(`Could not load ${a}: ${l==null?void 0:l.message}`))))))}}function By(n,e,t,i){const r=Array.isArray(e)?e:[e],a=g$(nz(t,i),[n,...r],{equal:di.equ});return Array.isArray(e)?a:a[0]}By.preload=function(n,e,t){const i=Array.isArray(e)?e:[e];return v$(nz(t),[n,...i])};By.clear=function(n,e){const t=Array.isArray(e)?e:[e];return _$([n,...t])};function k$(n){const e=S$(n);return e.injectIntoDevTools({bundleType:0,rendererPackageName:"@react-three/fiber",version:ie.version}),e}const iz=0,Op={},W$=/^three(?=[A-Z])/,dT=n=>`${n[0].toUpperCase()}${n.slice(1)}`;let X$=0;const q$=n=>typeof n=="function";function rz(n){if(q$(n)){const e=`${X$++}`;return Op[e]=n,e}else Object.assign(Op,n)}function az(n,e){const t=dT(n),i=Op[t];if(n!=="primitive"&&!i)throw new Error(`R3F: ${t} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);if(n==="primitive"&&!e.object)throw new Error("R3F: Primitives without 'object' are invalid!");if(e.args!==void 0&&!Array.isArray(e.args))throw new Error("R3F: The args prop must be an array!")}function Y$(n,e,t){var i;return n=dT(n)in Op?n:n.replace(W$,""),az(n,e),n==="primitive"&&(i=e.object)!=null&&i.__r3f&&delete e.object.__r3f,Uy(e.object,t,n,e)}function j$(n){if(!n.isHidden){var e;n.props.attach&&(e=n.parent)!=null&&e.object?zy(n.parent,n):kr(n.object)&&(n.object.visible=!1),n.isHidden=!0,$p(n)}}function sz(n){if(n.isHidden){var e;n.props.attach&&(e=n.parent)!=null&&e.object?Py(n.parent,n):kr(n.object)&&n.props.visible!==!1&&(n.object.visible=!0),n.isHidden=!1,$p(n)}}function IR(n,e,t){const i=e.root.getState();if(!(!n.parent&&n.object!==i.scene)){if(!e.object){var r,a;const s=Op[dT(e.type)];e.object=(r=e.props.object)!=null?r:new s(...(a=e.props.args)!=null?a:[]),e.object.__r3f=e}if(wc(e.object,e.props),e.props.attach)Py(n,e);else if(kr(e.object)&&kr(n.object)){const s=n.object.children.indexOf(t==null?void 0:t.object);if(t&&s!==-1){const o=n.object.children.indexOf(e.object);if(o!==-1){n.object.children.splice(o,1);const l=o{try{n.dispose()}catch{}};typeof IS_REACT_ACT_ENVIRONMENT<"u"?e():Q3.unstable_scheduleCallback(Q3.unstable_IdlePriority,e)}}function J3(n,e,t){if(!e)return;e.parent=null;const i=n.children.indexOf(e);i!==-1&&n.children.splice(i,1),e.props.attach?zy(n,e):kr(e.object)&&kr(n.object)&&(n.object.remove(e.object),F$(j7(e),e.object));const r=e.props.dispose!==null&&t!==!1;for(let a=e.children.length-1;a>=0;a--){const s=e.children[a];J3(e,s,r)}e.children.length=0,delete e.object.__r3f,r&&e.type!=="primitive"&&e.object.type!=="Scene"&&oz(e.object),t===void 0&&$p(e)}function Z$(n,e){for(const t of[n,n.alternate])if(t!==null)if(typeof t.ref=="function"){t.refCleanup==null||t.refCleanup();const i=t.ref(e);typeof i=="function"&&(t.refCleanup=i)}else t.ref&&(t.ref.current=e)}const h1=[];function Q$(){for(const[t]of h1){const i=t.parent;if(i){t.props.attach?zy(i,t):kr(t.object)&&kr(i.object)&&i.object.remove(t.object);for(const r of t.children)r.props.attach?zy(t,r):kr(r.object)&&kr(t.object)&&t.object.remove(r.object)}t.isHidden&&sz(t),t.object.__r3f&&delete t.object.__r3f,t.type!=="primitive"&&oz(t.object)}for(const[t,i,r]of h1){t.props=i;const a=t.parent;if(a){var n,e;const s=Op[dT(t.type)];t.object=(n=t.props.object)!=null?n:new s(...(e=t.props.args)!=null?e:[]),t.object.__r3f=t,Z$(r,t.object),wc(t.object,t.props),t.props.attach?Py(a,t):kr(t.object)&&kr(a.object)&&a.object.add(t.object);for(const o of t.children)o.props.attach?Py(t,o):kr(o.object)&&kr(t.object)&&t.object.add(o.object);$p(t)}}h1.length=0}const bb=()=>{},OL={};let lx=iz;const K$=0,J$=4,$3=k$({isPrimaryRenderer:!1,warnsIfNotActing:!1,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,createInstance:Y$,removeChild:J3,appendChild:Eb,appendInitialChild:Eb,insertBefore:NL,appendChildToContainer(n,e){const t=n.getState().scene.__r3f;!e||!t||Eb(t,e)},removeChildFromContainer(n,e){const t=n.getState().scene.__r3f;!e||!t||J3(t,e)},insertInContainerBefore(n,e,t){const i=n.getState().scene.__r3f;!e||!t||!i||NL(i,e,t)},getRootHostContext:()=>OL,getChildHostContext:()=>OL,commitUpdate(n,e,t,i,r){var a,s,o;az(e,i);let l=!1;if((n.type==="primitive"&&t.object!==i.object||((a=i.args)==null?void 0:a.length)!==((s=t.args)==null?void 0:s.length)||(o=i.args)!=null&&o.some((d,f)=>{var p;return d!==((p=t.args)==null?void 0:p[f])}))&&(l=!0),l)h1.push([n,{...i},r]);else{const d=U$(n,i);Object.keys(d).length&&(Object.assign(n.props,d),wc(n.object,d))}(r.sibling===null||(r.flags&J$)===K$)&&Q$()},finalizeInitialChildren:()=>!1,commitMount(){},getPublicInstance:n=>n==null?void 0:n.object,prepareForCommit:()=>null,preparePortalMount:n=>Uy(n.getState().scene,n,"",{}),resetAfterCommit:()=>{},shouldSetTextContent:()=>!1,clearContainer:()=>!1,hideInstance:j$,unhideInstance:sz,createTextInstance:bb,hideTextInstance:bb,unhideTextInstance:bb,scheduleTimeout:typeof setTimeout=="function"?setTimeout:void 0,cancelTimeout:typeof clearTimeout=="function"?clearTimeout:void 0,noTimeout:-1,getInstanceFromNode:()=>null,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},prepareScopeUpdate(){},getInstanceFromScope:()=>null,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,requestPostPaintCallback(){},maySuspendCommit:()=>!1,preloadInstance:()=>!0,startSuspendingCommit(){},suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,HostTransitionContext:ie.createContext(null),setCurrentUpdatePriority(n){lx=n},getCurrentUpdatePriority(){return lx},resolveUpdatePriority(){var n;if(lx!==iz)return lx;switch(typeof window<"u"&&((n=window.event)==null?void 0:n.type)){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return o1.DiscreteEventPriority;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return o1.ContinuousEventPriority;default:return o1.DefaultEventPriority}},resetFormInstance(){}}),Gh=new Map,af={objects:"shallow",strict:!1};function $$(n,e){if(!e&&typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement&&n.parentElement){const{width:t,height:i,top:r,left:a}=n.parentElement.getBoundingClientRect();return{width:t,height:i,top:r,left:a}}else if(!e&&typeof OffscreenCanvas<"u"&&n instanceof OffscreenCanvas)return{width:n.width,height:n.height,top:0,left:0};return{width:0,height:0,top:0,left:0,...e}}function eee(n){const e=Gh.get(n),t=e==null?void 0:e.fiber,i=e==null?void 0:e.store;e&&console.warn("R3F.createRoot should only be called once!");const r=typeof reportError=="function"?reportError:console.error,a=i||V$(nA,IL),s=t||$3.createContainer(a,o1.ConcurrentRoot,null,!1,null,"",r,r,r,null);e||Gh.set(n,{fiber:s,store:a});let o,l,u=!1,d=null;return{async configure(f={}){let p;d=new Promise(De=>p=De);let{gl:m,size:v,scene:x,events:S,onCreated:_,shadows:T=!1,linear:E=!1,flat:b=!1,legacy:R=!1,orthographic:w=!1,frameloop:L="always",dpr:U=[1,2],performance:N,raycaster:C,camera:z,onPointerMissed:W}=f,K=a.getState(),oe=K.gl;if(!K.gl){const De={canvas:n,powerPreference:"high-performance",antialias:!0,alpha:!0},Xe=typeof m=="function"?await m(De):m;CL(Xe)?oe=Xe:oe=new uT({...De,...m}),K.set({gl:oe})}let ae=K.raycaster;ae||K.set({raycaster:ae=new sT});const{params:X,...te}=C||{};if(di.equ(te,ae,af)||wc(ae,{...te}),di.equ(X,ae.params,af)||wc(ae,{params:{...ae.params,...X}}),!K.camera||K.camera===l&&!di.equ(l,z,af)){l=z;const De=z==null?void 0:z.isCamera,Xe=De?z:w?new Za(0,0,0,0,.1,1e3):new si(75,0,.1,1e3);De||(Xe.position.z=5,z&&(wc(Xe,z),Xe.manual||("aspect"in z||"left"in z||"right"in z||"bottom"in z||"top"in z)&&(Xe.manual=!0,Xe.updateProjectionMatrix())),!K.camera&&!(z!=null&&z.rotation)&&Xe.lookAt(0,0,0)),K.set({camera:Xe}),ae.camera=Xe}if(!K.scene){let De;x!=null&&x.isScene?(De=x,Uy(De,a,"",{})):(De=new Rp,Uy(De,a,"",{}),x&&wc(De,x)),K.set({scene:De})}S&&!K.events.handlers&&K.set({events:S(a)});const Q=$$(n,v);if(di.equ(Q,K.size,af)||K.setSize(Q.width,Q.height,Q.top,Q.left),U&&K.viewport.dpr!==K7(U)&&K.setDpr(U),K.frameloop!==L&&K.setFrameloop(L),K.onPointerMissed||K.set({onPointerMissed:W}),N&&!di.equ(N,K.performance,af)&&K.set(De=>({performance:{...De.performance,...N}})),!K.xr){var ce;const De=(tt,xt)=>{const ve=a.getState();ve.frameloop!=="never"&&IL(tt,!0,ve,xt)},Xe=()=>{const tt=a.getState();tt.gl.xr.enabled=tt.gl.xr.isPresenting,tt.gl.xr.setAnimationLoop(tt.gl.xr.isPresenting?De:null),tt.gl.xr.isPresenting||nA(tt)},nt={connect(){const tt=a.getState().gl;tt.xr.addEventListener("sessionstart",Xe),tt.xr.addEventListener("sessionend",Xe)},disconnect(){const tt=a.getState().gl;tt.xr.removeEventListener("sessionstart",Xe),tt.xr.removeEventListener("sessionend",Xe)}};typeof((ce=oe.xr)==null?void 0:ce.addEventListener)=="function"&&nt.connect(),K.set({xr:nt})}if(oe.shadowMap){const De=oe.shadowMap.enabled,Xe=oe.shadowMap.type;if(oe.shadowMap.enabled=!!T,di.boo(T))oe.shadowMap.type=Z0;else if(di.str(T)){var se;const nt={basic:W8,percentage:MS,soft:Z0,variance:Xs};oe.shadowMap.type=(se=nt[T])!=null?se:Z0}else di.obj(T)&&Object.assign(oe.shadowMap,T);(De!==oe.shadowMap.enabled||Xe!==oe.shadowMap.type)&&(oe.shadowMap.needsUpdate=!0)}return tn.enabled=!R,u||(oe.outputColorSpace=E?Xn:mn,oe.toneMapping=b?As:jw),K.legacy!==R&&K.set(()=>({legacy:R})),K.linear!==E&&K.set(()=>({linear:E})),K.flat!==b&&K.set(()=>({flat:b})),m&&!di.fun(m)&&!CL(m)&&!di.equ(m,oe,af)&&wc(oe,m),o=_,u=!0,p(),this},render(f){return!u&&!d&&this.configure(),d.then(()=>{$3.updateContainer(ot.jsx(tee,{store:a,children:f,onCreated:o,rootElement:n}),s,null,()=>{})}),a},unmount(){lz(n)}}}function tee({store:n,children:e,onCreated:t,rootElement:i}){return uv(()=>{const r=n.getState();r.set(a=>({internal:{...a.internal,active:!0}})),t&&t(r),n.getState().events.connected||r.events.connect==null||r.events.connect(i)},[]),ot.jsx(ez.Provider,{value:n,children:e})}function lz(n,e){const t=Gh.get(n),i=t==null?void 0:t.fiber;if(i){const r=t==null?void 0:t.store.getState();r&&(r.internal.active=!1),$3.updateContainer(null,i,null,()=>{r&&setTimeout(()=>{try{var a,s,o,l;r.events.disconnect==null||r.events.disconnect(),(a=r.gl)==null||(s=a.renderLists)==null||s.dispose==null||s.dispose(),(o=r.gl)==null||o.forceContextLoss==null||o.forceContextLoss(),(l=r.gl)!=null&&l.xr&&r.xr.disconnect(),O$(r.scene),Gh.delete(n)}catch{}},500)})}}const nee=new Set,iee=new Set,ree=new Set;function Mb(n,e){if(n.size)for(const{callback:t}of n.values())t(e)}function ig(n,e){switch(n){case"before":return Mb(nee,e);case"after":return Mb(iee,e);case"tail":return Mb(ree,e)}}let Ab,wb;function eA(n,e,t){let i=e.clock.getDelta();e.frameloop==="never"&&typeof n=="number"&&(i=n-e.clock.elapsedTime,e.clock.oldTime=e.clock.elapsedTime,e.clock.elapsedTime=n),Ab=e.internal.subscribers;for(let r=0;r0)&&!((e=sf.gl.xr)!=null&&e.isPresenting)&&(Rb+=eA(n,sf))}if(tA=!1,ig("after",n),Rb===0)return ig("tail",n),Fy=!1,cancelAnimationFrame(LL)}function nA(n,e=1){var t;if(!n)return Gh.forEach(i=>nA(i.store.getState(),e));(t=n.gl.xr)!=null&&t.isPresenting||!n.internal.active||n.frameloop==="never"||(e>1?n.internal.frames=Math.min(60,n.internal.frames+e):tA?n.internal.frames=2:n.internal.frames=1,Fy||(Fy=!0,requestAnimationFrame(cz)))}function IL(n,e=!0,t,i){if(e&&ig("before",n),t)eA(n,t,i);else for(const r of Gh.values())eA(n,r.store.getState());e&&ig("after",n)}const Cb={onClick:["click",!1],onContextMenu:["contextmenu",!1],onDoubleClick:["dblclick",!1],onWheel:["wheel",!0],onPointerDown:["pointerdown",!0],onPointerUp:["pointerup",!0],onPointerLeave:["pointerleave",!0],onPointerMove:["pointermove",!0],onPointerCancel:["pointercancel",!0],onLostPointerCapture:["lostpointercapture",!0]};function aee(n){const{handlePointer:e}=H$(n);return{priority:1,enabled:!0,compute(t,i,r){i.pointer.set(t.offsetX/i.size.width*2-1,-(t.offsetY/i.size.height)*2+1),i.raycaster.setFromCamera(i.pointer,i.camera)},connected:void 0,handlers:Object.keys(Cb).reduce((t,i)=>({...t,[i]:e(i)}),{}),update:()=>{var t;const{events:i,internal:r}=n.getState();(t=r.lastEvent)!=null&&t.current&&i.handlers&&i.handlers.onPointerMove(r.lastEvent.current)},connect:t=>{const{set:i,events:r}=n.getState();if(r.disconnect==null||r.disconnect(),i(a=>({events:{...a.events,connected:t}})),r.handlers)for(const a in r.handlers){const s=r.handlers[a],[o,l]=Cb[a];t.addEventListener(o,s,{passive:l})}},disconnect:()=>{const{set:t,events:i}=n.getState();if(i.connected){if(i.handlers)for(const r in i.handlers){const a=i.handlers[r],[s]=Cb[r];i.connected.removeEventListener(s,a)}t(r=>({events:{...r.events,connected:void 0}}))}}}}function UL(n,e){let t;return(...i)=>{window.clearTimeout(t),t=window.setTimeout(()=>n(...i),e)}}function see({debounce:n,scroll:e,polyfill:t,offsetSize:i}={debounce:0,scroll:!1,offsetSize:!1}){const r=t||(typeof window>"u"?class{}:window.ResizeObserver);if(!r)throw new Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");const[a,s]=ie.useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),o=ie.useRef({element:null,scrollContainers:null,resizeObserver:null,lastBounds:a,orientationHandler:null}),l=n?typeof n=="number"?n:n.scroll:null,u=n?typeof n=="number"?n:n.resize:null,d=ie.useRef(!1);ie.useEffect(()=>(d.current=!0,()=>void(d.current=!1)));const[f,p,m]=ie.useMemo(()=>{const _=()=>{if(!o.current.element)return;const{left:T,top:E,width:b,height:R,bottom:w,right:L,x:U,y:N}=o.current.element.getBoundingClientRect(),C={left:T,top:E,width:b,height:R,bottom:w,right:L,x:U,y:N};o.current.element instanceof HTMLElement&&i&&(C.height=o.current.element.offsetHeight,C.width=o.current.element.offsetWidth),Object.freeze(C),d.current&&!uee(o.current.lastBounds,C)&&s(o.current.lastBounds=C)};return[_,u?UL(_,u):_,l?UL(_,l):_]},[s,i,l,u]);function v(){o.current.scrollContainers&&(o.current.scrollContainers.forEach(_=>_.removeEventListener("scroll",m,!0)),o.current.scrollContainers=null),o.current.resizeObserver&&(o.current.resizeObserver.disconnect(),o.current.resizeObserver=null),o.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",o.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",o.current.orientationHandler))}function x(){o.current.element&&(o.current.resizeObserver=new r(m),o.current.resizeObserver.observe(o.current.element),e&&o.current.scrollContainers&&o.current.scrollContainers.forEach(_=>_.addEventListener("scroll",m,{capture:!0,passive:!0})),o.current.orientationHandler=()=>{m()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",o.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",o.current.orientationHandler))}const S=_=>{!_||_===o.current.element||(v(),o.current.element=_,o.current.scrollContainers=uz(_),x())};return lee(m,!!e),oee(p),ie.useEffect(()=>{v(),x()},[e,m,p]),ie.useEffect(()=>v,[]),[S,a,f]}function oee(n){ie.useEffect(()=>{const e=n;return window.addEventListener("resize",e),()=>void window.removeEventListener("resize",e)},[n])}function lee(n,e){ie.useEffect(()=>{if(e){const t=n;return window.addEventListener("scroll",t,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",t,!0)}},[n,e])}function uz(n){const e=[];if(!n||n===document.body)return e;const{overflow:t,overflowX:i,overflowY:r}=window.getComputedStyle(n);return[t,i,r].some(a=>a==="auto"||a==="scroll")&&e.push(n),[...e,...uz(n.parentElement)]}const cee=["x","y","top","bottom","left","right","width","height"],uee=(n,e)=>cee.every(t=>n[t]===e[t]);function hee({ref:n,children:e,fallback:t,resize:i,style:r,gl:a,events:s=aee,eventSource:o,eventPrefix:l,shadows:u,linear:d,flat:f,legacy:p,orthographic:m,frameloop:v,dpr:x,performance:S,raycaster:_,camera:T,scene:E,onPointerMissed:b,onCreated:R,...w}){ie.useMemo(()=>rz(kJ),[]);const L=R$(),[U,N]=see({scroll:!0,debounce:{scroll:50,resize:0},...i}),C=ie.useRef(null),z=ie.useRef(null);ie.useImperativeHandle(n,()=>C.current);const W=Q7(b),[K,oe]=ie.useState(!1),[ae,X]=ie.useState(!1);if(K)throw K;if(ae)throw ae;const te=ie.useRef(null);uv(()=>{const ce=C.current;if(N.width>0&&N.height>0&&ce){te.current||(te.current=eee(ce));async function se(){await te.current.configure({gl:a,scene:E,events:s,shadows:u,linear:d,flat:f,legacy:p,orthographic:m,frameloop:v,dpr:x,performance:S,raycaster:_,camera:T,size:N,onPointerMissed:(...De)=>W.current==null?void 0:W.current(...De),onCreated:De=>{De.events.connect==null||De.events.connect(o?A$(o)?o.current:o:z.current),l&&De.setEvents({compute:(Xe,nt)=>{const tt=Xe[l+"X"],xt=Xe[l+"Y"];nt.pointer.set(tt/nt.size.width*2-1,-(xt/nt.size.height)*2+1),nt.raycaster.setFromCamera(nt.pointer,nt.camera)}}),R==null||R(De)}}),te.current.render(ot.jsx(L,{children:ot.jsx(D$,{set:X,children:ot.jsx(ie.Suspense,{fallback:ot.jsx(C$,{set:oe}),children:e??null})})}))}se()}}),ie.useEffect(()=>{const ce=C.current;if(ce)return()=>lz(ce)},[]);const Q=o?"none":"auto";return ot.jsx("div",{ref:z,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:Q,...r},...w,children:ot.jsx("div",{ref:U,style:{width:"100%",height:"100%"},children:ot.jsx("canvas",{ref:C,style:{display:"block"},children:t})})})}function hz(n){return ot.jsx(q7,{children:ot.jsx(hee,{...n})})}function dee(n){let e=0;for(const i in n.attributes){const r=n.getAttribute(i);e+=r.count*r.itemSize*r.array.BYTES_PER_ELEMENT}const t=n.getIndex();return e+=t?t.count*t.itemSize*t.array.BYTES_PER_ELEMENT:0,e}function PL(n,e){if(e===_9)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),n;if(e===Cy||e===tR){let t=n.getIndex();if(t===null){const s=[],o=n.getAttribute("position");if(o!==void 0){for(let l=0;l=2.0 are supported."));return}const u=new Xee(a,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});u.fileLoader.setRequestHeader(this.requestHeader);for(let d=0;d=0&&o[f]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+f+'".')}}u.setExtensions(s),u.setPlugins(o),u.parse(i,r)}parseAsync(e,t){const i=this;return new Promise(function(r,a){i.parse(e,t,r,a)})}}function fee(){let n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}const ln={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class pee{constructor(e){this.parser=e,this.name=ln.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let i=0,r=t.length;i=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,a.source,s)}}class Ree{constructor(e){this.parser=e,this.name=ln.EXT_TEXTURE_WEBP}loadTexture(e){const t=this.name,i=this.parser,r=i.json,a=r.textures[e];if(!a.extensions||!a.extensions[t])return null;const s=a.extensions[t],o=r.images[s.source];let l=i.textureLoader;if(o.uri){const u=i.options.manager.getHandler(o.uri);u!==null&&(l=u)}return i.loadTextureImage(e,s.source,l)}}class Cee{constructor(e){this.parser=e,this.name=ln.EXT_TEXTURE_AVIF}loadTexture(e){const t=this.name,i=this.parser,r=i.json,a=r.textures[e];if(!a.extensions||!a.extensions[t])return null;const s=a.extensions[t],o=r.images[s.source];let l=i.textureLoader;if(o.uri){const u=i.options.manager.getHandler(o.uri);u!==null&&(l=u)}return i.loadTextureImage(e,s.source,l)}}class Dee{constructor(e){this.name=ln.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){const r=i.extensions[this.name],a=this.parser.getDependency("buffer",r.buffer),s=this.parser.options.meshoptDecoder;if(!s||!s.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return a.then(function(o){const l=r.byteOffset||0,u=r.byteLength||0,d=r.count,f=r.byteStride,p=new Uint8Array(o,l,u);return s.decodeGltfBufferAsync?s.decodeGltfBufferAsync(d,f,p,r.mode,r.filter).then(function(m){return m.buffer}):s.ready.then(function(){const m=new ArrayBuffer(d*f);return s.decodeGltfBuffer(new Uint8Array(m),d,f,p,r.mode,r.filter),m})})}else return null}}class Nee{constructor(e){this.name=ln.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||i.mesh===void 0)return null;const r=t.meshes[i.mesh];for(const u of r.primitives)if(u.mode!==fs.TRIANGLES&&u.mode!==fs.TRIANGLE_STRIP&&u.mode!==fs.TRIANGLE_FAN&&u.mode!==void 0)return null;const s=i.extensions[this.name].attributes,o=[],l={};for(const u in s)o.push(this.parser.getDependency("accessor",s[u]).then(d=>(l[u]=d,l[u])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(u=>{const d=u.pop(),f=d.isGroup?d.children:[d],p=u[0].count,m=[];for(const v of f){const x=new Me,S=new D,_=new ft,T=new D(1,1,1),E=new VS(v.geometry,v.material,p);for(let b=0;b0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":n.search(/\.ktx2($|\?)/i)>0||n.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}const Wee=new Me;class Xee{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new fee,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let i=!1,r=-1,a=!1,s=-1;if(typeof navigator<"u"){const o=navigator.userAgent;i=/^((?!chrome|android).)*safari/i.test(o)===!0;const l=o.match(/Version\/(\d+)/);r=i&&l?parseInt(l[1],10):-1,a=o.indexOf("Firefox")>-1,s=a?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||i&&r<17||a&&s<98?this.textureLoader=new ER(this.options.manager):this.textureLoader=new x7(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new jr(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const i=this,r=this.json,a=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(s){return s._markDefs&&s._markDefs()}),Promise.all(this._invokeAll(function(s){return s.beforeRoot&&s.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(s){const o={scene:s[0][r.scene||0],scenes:s[0],animations:s[1],cameras:s[2],asset:r.asset,parser:i,userData:{}};return Xu(a,o,r),yo(o,r),Promise.all(i._invokeAll(function(l){return l.afterRoot&&l.afterRoot(o)})).then(function(){for(const l of o.scenes)l.updateMatrixWorld();e(o)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let r=0,a=t.length;r{const l=this.associations.get(s);l!=null&&this.associations.set(o,l);for(const[u,d]of s.children.entries())a(d,o.children[u])};return a(i,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let i=0;i=2&&S.setY(N,w[L*l+1]),l>=3&&S.setZ(N,w[L*l+2]),l>=4&&S.setW(N,w[L*l+3]),l>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}S.normalized=v}return S})}loadTexture(e){const t=this.json,i=this.options,a=t.textures[e].source,s=t.images[a];let o=this.textureLoader;if(s.uri){const l=i.manager.getHandler(s.uri);l!==null&&(o=l)}return this.loadTextureImage(e,a,o)}loadTextureImage(e,t,i){const r=this,a=this.json,s=a.textures[e],o=a.images[t],l=(o.uri||o.bufferView)+":"+s.sampler;if(this.textureCache[l])return this.textureCache[l];const u=this.loadImageSource(t,i).then(function(d){d.flipY=!1,d.name=s.name||o.name||"",d.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(d.name=o.uri);const p=(a.samplers||{})[s.sampler]||{};return d.magFilter=BL[p.magFilter]||Bt,d.minFilter=BL[p.minFilter]||Ga,d.wrapS=FL[p.wrapS]||Ir,d.wrapT=FL[p.wrapT]||Ir,d.generateMipmaps=!d.isCompressedTexture&&d.minFilter!==Yn&&d.minFilter!==Bt,r.associations.set(d,{textures:e}),d}).catch(function(){return null});return this.textureCache[l]=u,u}loadImageSource(e,t){const i=this,r=this.json,a=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(f=>f.clone());const s=r.images[e],o=self.URL||self.webkitURL;let l=s.uri||"",u=!1;if(s.bufferView!==void 0)l=i.getDependency("bufferView",s.bufferView).then(function(f){u=!0;const p=new Blob([f],{type:s.mimeType});return l=o.createObjectURL(p),l});else if(s.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const d=Promise.resolve(l).then(function(f){return new Promise(function(p,m){let v=p;t.isImageBitmapLoader===!0&&(v=function(x){const S=new In(x);S.needsUpdate=!0,p(S)}),t.load(qc.resolveURL(f,a.path),v,void 0,m)})}).then(function(f){return u===!0&&o.revokeObjectURL(l),yo(f,s),f.userData.mimeType=s.mimeType||kee(s.uri),f}).catch(function(f){throw console.error("THREE.GLTFLoader: Couldn't load texture",l),f});return this.sourceCache[e]=d,d}assignTexture(e,t,i,r){const a=this;return this.getDependency("texture",i.index).then(function(s){if(!s)return null;if(i.texCoord!==void 0&&i.texCoord>0&&(s=s.clone(),s.channel=i.texCoord),a.extensions[ln.KHR_TEXTURE_TRANSFORM]){const o=i.extensions!==void 0?i.extensions[ln.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const l=a.associations.get(s);s=a.extensions[ln.KHR_TEXTURE_TRANSFORM].extendTexture(s,o),a.associations.set(s,l)}}return r!==void 0&&(s.colorSpace=r),e[t]=s,s})}assignFinalMaterial(e){const t=e.geometry;let i=e.material;const r=t.attributes.tangent===void 0,a=t.attributes.color!==void 0,s=t.attributes.normal===void 0;if(e.isPoints){const o="PointsMaterial:"+i.uuid;let l=this.cache.get(o);l||(l=new nv,ei.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,l.sizeAttenuation=!1,this.cache.add(o,l)),i=l}else if(e.isLine){const o="LineBasicMaterial:"+i.uuid;let l=this.cache.get(o);l||(l=new Yi,ei.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,this.cache.add(o,l)),i=l}if(r||a||s){let o="ClonedMaterial:"+i.uuid+":";r&&(o+="derivative-tangents:"),a&&(o+="vertex-colors:"),s&&(o+="flat-shading:");let l=this.cache.get(o);l||(l=i.clone(),a&&(l.vertexColors=!0),s&&(l.flatShading=!0),r&&(l.normalScale&&(l.normalScale.y*=-1),l.clearcoatNormalScale&&(l.clearcoatNormalScale.y*=-1)),this.cache.add(o,l),this.associations.set(l,this.associations.get(i))),i=l}e.material=i}getMaterialType(){return lv}loadMaterial(e){const t=this,i=this.json,r=this.extensions,a=i.materials[e];let s;const o={},l=a.extensions||{},u=[];if(l[ln.KHR_MATERIALS_UNLIT]){const f=r[ln.KHR_MATERIALS_UNLIT];s=f.getMaterialType(),u.push(f.extendParams(o,a,t))}else{const f=a.pbrMetallicRoughness||{};if(o.color=new Ye(1,1,1),o.opacity=1,Array.isArray(f.baseColorFactor)){const p=f.baseColorFactor;o.color.setRGB(p[0],p[1],p[2],Xn),o.opacity=p[3]}f.baseColorTexture!==void 0&&u.push(t.assignTexture(o,"map",f.baseColorTexture,mn)),o.metalness=f.metallicFactor!==void 0?f.metallicFactor:1,o.roughness=f.roughnessFactor!==void 0?f.roughnessFactor:1,f.metallicRoughnessTexture!==void 0&&(u.push(t.assignTexture(o,"metalnessMap",f.metallicRoughnessTexture)),u.push(t.assignTexture(o,"roughnessMap",f.metallicRoughnessTexture))),s=this._invokeOne(function(p){return p.getMaterialType&&p.getMaterialType(e)}),u.push(Promise.all(this._invokeAll(function(p){return p.extendMaterialParams&&p.extendMaterialParams(e,o)})))}a.doubleSided===!0&&(o.side=xr);const d=a.alphaMode||Nb.OPAQUE;if(d===Nb.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,d===Nb.MASK&&(o.alphaTest=a.alphaCutoff!==void 0?a.alphaCutoff:.5)),a.normalTexture!==void 0&&s!==Sr&&(u.push(t.assignTexture(o,"normalMap",a.normalTexture)),o.normalScale=new re(1,1),a.normalTexture.scale!==void 0)){const f=a.normalTexture.scale;o.normalScale.set(f,f)}if(a.occlusionTexture!==void 0&&s!==Sr&&(u.push(t.assignTexture(o,"aoMap",a.occlusionTexture)),a.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=a.occlusionTexture.strength)),a.emissiveFactor!==void 0&&s!==Sr){const f=a.emissiveFactor;o.emissive=new Ye().setRGB(f[0],f[1],f[2],Xn)}return a.emissiveTexture!==void 0&&s!==Sr&&u.push(t.assignTexture(o,"emissiveMap",a.emissiveTexture,mn)),Promise.all(u).then(function(){const f=new s(o);return a.name&&(f.name=a.name),yo(f,a),t.associations.set(f,{materials:e}),a.extensions&&Xu(r,f,a),f})}createUniqueName(e){const t=fn.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,i=this.extensions,r=this.primitiveCache;function a(o){return i[ln.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,t).then(function(l){return HL(l,o,t)})}const s=[];for(let o=0,l=e.length;o0&&Vee(_,a),_.name=t.createUniqueName(a.name||"mesh_"+e),yo(_,a),S.extensions&&Xu(r,_,S),t.assignFinalMaterial(_),f.push(_)}for(let m=0,v=f.length;m1?d=new Xi:u.length===1?d=u[0]:d=new Xt,d!==u[0])for(let f=0,p=u.length;f1){const f=r.associations.get(d);r.associations.set(d,{...f})}return r.associations.get(d).nodes=e,d}),this.nodeCache[e]}loadScene(e){const t=this.extensions,i=this.json.scenes[e],r=this,a=new Xi;i.name&&(a.name=r.createUniqueName(i.name)),yo(a,i),i.extensions&&Xu(t,a,i);const s=i.nodes||[],o=[];for(let l=0,u=s.length;l{const f=new Map;for(const[p,m]of r.associations)(p instanceof ei||p instanceof In)&&f.set(p,m);return d.traverse(p=>{const m=r.associations.get(p);m!=null&&f.set(p,m)}),f};return r.associations=u(a),a})}_createAnimationTracks(e,t,i,r,a){const s=[],o=e.name?e.name:e.uuid,l=[];hc[a.path]===hc.weights?e.traverse(function(p){p.morphTargetInfluences&&l.push(p.name?p.name:p.uuid)}):l.push(o);let u;switch(hc[a.path]){case hc.weights:u=tu;break;case hc.rotation:u=nu;break;case hc.translation:case hc.scale:u=Hh;break;default:switch(i.itemSize){case 1:u=tu;break;case 2:case 3:default:u=Hh;break}break}const d=r.interpolation!==void 0?Bee[r.interpolation]:Tp,f=this._getArrayFromAccessor(i);for(let p=0,m=l.length;pnew Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())}),yn=(n,e,t)=>new Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())}),VL=class extends Xt{constructor(n){super(),this.weight=0,this.isBinary=!1,this.overrideBlink="none",this.overrideLookAt="none",this.overrideMouth="none",this._binds=[],this.name=`VRMExpression_${n}`,this.expressionName=n,this.type="VRMExpression",this.visible=!1}get binds(){return this._binds}get overrideBlinkAmount(){return this.overrideBlink==="block"?0.5?1:0:this.weight}addBind(n){this._binds.push(n)}deleteBind(n){const e=this._binds.indexOf(n);e>=0&&this._binds.splice(e,1)}applyWeight(n){var e;let t=this.outputWeight;t*=(e=n==null?void 0:n.multiplier)!=null?e:1,this.isBinary&&t<1&&(t=0),this._binds.forEach(i=>i.applyWeight(t))}clearAppliedWeight(){this._binds.forEach(n=>n.clearAppliedWeight())}};function pz(n,e,t){var i,r;const a=n.parser.json,s=(i=a.nodes)==null?void 0:i[e];if(s==null)return console.warn(`extractPrimitivesInternal: Attempt to use nodes[${e}] of glTF but the node doesn't exist`),null;const o=s.mesh;if(o==null)return null;const l=(r=a.meshes)==null?void 0:r[o];if(l==null)return console.warn(`extractPrimitivesInternal: Attempt to use meshes[${o}] of glTF but the mesh doesn't exist`),null;const u=l.primitives.length,d=[];return t.traverse(f=>{d.length{const a=pz(n,r,i);a!=null&&t.set(r,a)}),t})}var aA={Aa:"aa",Ih:"ih",Ou:"ou",Ee:"ee",Oh:"oh",Blink:"blink",Happy:"happy",Angry:"angry",Sad:"sad",Relaxed:"relaxed",LookUp:"lookUp",Surprised:"surprised",LookDown:"lookDown",LookLeft:"lookLeft",LookRight:"lookRight",BlinkLeft:"blinkLeft",BlinkRight:"blinkRight",Neutral:"neutral"};function mz(n){return Math.max(Math.min(n,1),0)}var WL=class gz{constructor(){this.blinkExpressionNames=["blink","blinkLeft","blinkRight"],this.lookAtExpressionNames=["lookLeft","lookRight","lookUp","lookDown"],this.mouthExpressionNames=["aa","ee","ih","oh","ou"],this._expressions=[],this._expressionMap={}}get expressions(){return this._expressions.concat()}get expressionMap(){return Object.assign({},this._expressionMap)}get presetExpressionMap(){const e={},t=new Set(Object.values(aA));return Object.entries(this._expressionMap).forEach(([i,r])=>{t.has(i)&&(e[i]=r)}),e}get customExpressionMap(){const e={},t=new Set(Object.values(aA));return Object.entries(this._expressionMap).forEach(([i,r])=>{t.has(i)||(e[i]=r)}),e}copy(e){return this._expressions.concat().forEach(i=>{this.unregisterExpression(i)}),e._expressions.forEach(i=>{this.registerExpression(i)}),this.blinkExpressionNames=e.blinkExpressionNames.concat(),this.lookAtExpressionNames=e.lookAtExpressionNames.concat(),this.mouthExpressionNames=e.mouthExpressionNames.concat(),this}clone(){return new gz().copy(this)}getExpression(e){var t;return(t=this._expressionMap[e])!=null?t:null}registerExpression(e){this._expressions.push(e),this._expressionMap[e.expressionName]=e}unregisterExpression(e){const t=this._expressions.indexOf(e);t===-1&&console.warn("VRMExpressionManager: The specified expressions is not registered"),this._expressions.splice(t,1),delete this._expressionMap[e.expressionName]}getValue(e){var t;const i=this.getExpression(e);return(t=i==null?void 0:i.weight)!=null?t:null}setValue(e,t){const i=this.getExpression(e);i&&(i.weight=mz(t))}resetValues(){this._expressions.forEach(e=>{e.weight=0})}getExpressionTrackName(e){const t=this.getExpression(e);return t?`${t.name}.weight`:null}update(){const e=this._calculateWeightMultipliers();this._expressions.forEach(t=>{t.clearAppliedWeight()}),this._expressions.forEach(t=>{let i=1;const r=t.expressionName;this.blinkExpressionNames.indexOf(r)!==-1&&(i*=e.blink),this.lookAtExpressionNames.indexOf(r)!==-1&&(i*=e.lookAt),this.mouthExpressionNames.indexOf(r)!==-1&&(i*=e.mouth),t.applyWeight({multiplier:i})})}_calculateWeightMultipliers(){let e=1,t=1,i=1;return this._expressions.forEach(r=>{e-=r.overrideBlinkAmount,t-=r.overrideLookAtAmount,i-=r.overrideMouthAmount}),e=Math.max(0,e),t=Math.max(0,t),i=Math.max(0,i),{blink:e,lookAt:t,mouth:i}}},Km={Color:"color",EmissionColor:"emissionColor",ShadeColor:"shadeColor",RimColor:"rimColor",OutlineColor:"outlineColor"},Yee={_Color:Km.Color,_EmissionColor:Km.EmissionColor,_ShadeColor:Km.ShadeColor,_RimColor:Km.RimColor,_OutlineColor:Km.OutlineColor},jee=new Ye,vz=class _z{constructor({material:e,type:t,targetValue:i,targetAlpha:r}){this.material=e,this.type=t,this.targetValue=i,this.targetAlpha=r??1;const a=this._initColorBindState(),s=this._initAlphaBindState();this._state={color:a,alpha:s}}applyWeight(e){const{color:t,alpha:i}=this._state;if(t!=null){const{propertyName:r,deltaValue:a}=t,s=this.material[r];s!=null&&s.add(jee.copy(a).multiplyScalar(e))}if(i!=null){const{propertyName:r,deltaValue:a}=i;this.material[r]!=null&&(this.material[r]+=a*e)}}clearAppliedWeight(){const{color:e,alpha:t}=this._state;if(e!=null){const{propertyName:i,initialValue:r}=e,a=this.material[i];a!=null&&a.copy(r)}if(t!=null){const{propertyName:i,initialValue:r}=t;this.material[i]!=null&&(this.material[i]=r)}}_initColorBindState(){var e,t,i;const{material:r,type:a,targetValue:s}=this,o=this._getPropertyNameMap(),l=(t=(e=o==null?void 0:o[a])==null?void 0:e[0])!=null?t:null;if(l==null)return console.warn(`Tried to add a material color bind to the material ${(i=r.name)!=null?i:"(no name)"}, the type ${a} but the material or the type is not supported.`),null;const d=r[l].clone(),f=new Ye(s.r-d.r,s.g-d.g,s.b-d.b);return{propertyName:l,initialValue:d,deltaValue:f}}_initAlphaBindState(){var e,t,i;const{material:r,type:a,targetAlpha:s}=this,o=this._getPropertyNameMap(),l=(t=(e=o==null?void 0:o[a])==null?void 0:e[1])!=null?t:null;if(l==null&&s!==1)return console.warn(`Tried to add a material alpha bind to the material ${(i=r.name)!=null?i:"(no name)"}, the type ${a} but the material or the type does not support alpha.`),null;if(l==null)return null;const u=r[l],d=s-u;return{propertyName:l,initialValue:u,deltaValue:d}}_getPropertyNameMap(){var e,t;return(t=(e=Object.entries(_z._propertyNameMapMap).find(([i])=>this.material[i]===!0))==null?void 0:e[1])!=null?t:null}};vz._propertyNameMapMap={isMeshStandardMaterial:{color:["color","opacity"],emissionColor:["emissive",null]},isMeshBasicMaterial:{color:["color","opacity"]},isMToonMaterial:{color:["color","opacity"],emissionColor:["emissive",null],outlineColor:["outlineColorFactor",null],matcapColor:["matcapFactor",null],rimColor:["parametricRimColorFactor",null],shadeColor:["shadeColorFactor",null]}};var XL=vz,Hy=class{constructor({primitives:n,index:e,weight:t}){this.primitives=n,this.index=e,this.weight=t}applyWeight(n){this.primitives.forEach(e=>{var t;((t=e.morphTargetInfluences)==null?void 0:t[this.index])!=null&&(e.morphTargetInfluences[this.index]+=this.weight*n)})}clearAppliedWeight(){this.primitives.forEach(n=>{var e;((e=n.morphTargetInfluences)==null?void 0:e[this.index])!=null&&(n.morphTargetInfluences[this.index]=0)})}},qL=new re,xz=class yz{constructor({material:e,scale:t,offset:i}){var r,a;this.material=e,this.scale=t,this.offset=i;const s=(r=Object.entries(yz._propertyNamesMap).find(([o])=>e[o]===!0))==null?void 0:r[1];s==null?(console.warn(`Tried to add a texture transform bind to the material ${(a=e.name)!=null?a:"(no name)"} but the material is not supported.`),this._properties=[]):(this._properties=[],s.forEach(o=>{var l;const u=(l=e[o])==null?void 0:l.clone();if(!u)return null;e[o]=u;const d=u.offset.clone(),f=u.repeat.clone(),p=i.clone().sub(d),m=t.clone().sub(f);this._properties.push({name:o,initialOffset:d,deltaOffset:p,initialScale:f,deltaScale:m})}))}applyWeight(e){this._properties.forEach(t=>{const i=this.material[t.name];i!==void 0&&(i.offset.add(qL.copy(t.deltaOffset).multiplyScalar(e)),i.repeat.add(qL.copy(t.deltaScale).multiplyScalar(e)))})}clearAppliedWeight(){this._properties.forEach(e=>{const t=this.material[e.name];t!==void 0&&(t.offset.copy(e.initialOffset),t.repeat.copy(e.initialScale))})}};xz._propertyNamesMap={isMeshStandardMaterial:["map","emissiveMap","bumpMap","normalMap","displacementMap","roughnessMap","metalnessMap","alphaMap"],isMeshBasicMaterial:["map","specularMap","alphaMap"],isMToonMaterial:["map","normalMap","emissiveMap","shadeMultiplyTexture","rimMultiplyTexture","outlineWidthMultiplyTexture","uvAnimationMaskTexture"]};var YL=xz,Zee=new Set(["1.0","1.0-beta"]),Sz=class Tz{get name(){return"VRMExpressionLoaderPlugin"}constructor(e){this.parser=e}afterRoot(e){return yn(this,null,function*(){e.userData.vrmExpressionManager=yield this._import(e)})}_import(e){return yn(this,null,function*(){const t=yield this._v1Import(e);if(t)return t;const i=yield this._v0Import(e);return i||null})}_v1Import(e){return yn(this,null,function*(){var t,i;const r=this.parser.json;if(!(((t=r.extensionsUsed)==null?void 0:t.indexOf("VRMC_vrm"))!==-1))return null;const s=(i=r.extensions)==null?void 0:i.VRMC_vrm;if(!s)return null;const o=s.specVersion;if(!Zee.has(o))return console.warn(`VRMExpressionLoaderPlugin: Unknown VRMC_vrm specVersion "${o}"`),null;const l=s.expressions;if(!l)return null;const u=new Set(Object.values(aA)),d=new Map;l.preset!=null&&Object.entries(l.preset).forEach(([p,m])=>{if(m!=null){if(!u.has(p)){console.warn(`VRMExpressionLoaderPlugin: Unknown preset name "${p}" detected. Ignoring the expression`);return}d.set(p,m)}}),l.custom!=null&&Object.entries(l.custom).forEach(([p,m])=>{if(u.has(p)){console.warn(`VRMExpressionLoaderPlugin: Custom expression cannot have preset name "${p}". Ignoring the expression`);return}d.set(p,m)});const f=new WL;return yield Promise.all(Array.from(d.entries()).map(p=>yn(this,[p],function*([m,v]){var x,S,_,T,E,b,R;const w=new VL(m);if(e.scene.add(w),w.isBinary=(x=v.isBinary)!=null?x:!1,w.overrideBlink=(S=v.overrideBlink)!=null?S:"none",w.overrideLookAt=(_=v.overrideLookAt)!=null?_:"none",w.overrideMouth=(T=v.overrideMouth)!=null?T:"none",(E=v.morphTargetBinds)==null||E.forEach(L=>yn(this,null,function*(){var U;if(L.node===void 0||L.index===void 0)return;const N=yield GL(e,L.node),C=L.index;if(!N.every(z=>Array.isArray(z.morphTargetInfluences)&&C{const N=U.material;N&&(Array.isArray(N)?L.push(...N):L.push(N))}),(b=v.materialColorBinds)==null||b.forEach(U=>yn(this,null,function*(){L.filter(C=>{var z;const W=(z=this.parser.associations.get(C))==null?void 0:z.materials;return U.material===W}).forEach(C=>{w.addBind(new XL({material:C,type:U.type,targetValue:new Ye().fromArray(U.targetValue),targetAlpha:U.targetValue[3]}))})})),(R=v.textureTransformBinds)==null||R.forEach(U=>yn(this,null,function*(){L.filter(C=>{var z;const W=(z=this.parser.associations.get(C))==null?void 0:z.materials;return U.material===W}).forEach(C=>{var z,W;w.addBind(new YL({material:C,offset:new re().fromArray((z=U.offset)!=null?z:[0,0]),scale:new re().fromArray((W=U.scale)!=null?W:[1,1])}))})}))}f.registerExpression(w)}))),f})}_v0Import(e){return yn(this,null,function*(){var t;const i=this.parser.json,r=(t=i.extensions)==null?void 0:t.VRM;if(!r)return null;const a=r.blendShapeMaster;if(!a)return null;const s=new WL,o=a.blendShapeGroups;if(!o)return s;const l=new Set;return yield Promise.all(o.map(u=>yn(this,null,function*(){var d;const f=u.presetName,p=f!=null&&Tz.v0v1PresetNameMap[f]||null,m=p??u.name;if(m==null){console.warn("VRMExpressionLoaderPlugin: One of custom expressions has no name. Ignoring the expression");return}if(l.has(m)){console.warn(`VRMExpressionLoaderPlugin: An expression preset ${f} has duplicated entries. Ignoring the expression`);return}l.add(m);const v=new VL(m);e.scene.add(v),v.isBinary=(d=u.isBinary)!=null?d:!1,u.binds&&u.binds.forEach(S=>yn(this,null,function*(){var _;if(S.mesh===void 0||S.index===void 0)return;const T=[];(_=i.nodes)==null||_.forEach((b,R)=>{b.mesh===S.mesh&&T.push(R)});const E=S.index;yield Promise.all(T.map(b=>yn(this,null,function*(){var R;const w=yield GL(e,b);if(!w.every(L=>Array.isArray(L.morphTargetInfluences)&&E{if(S.materialName===void 0||S.propertyName===void 0||S.targetValue===void 0)return;const _=[];e.scene.traverse(E=>{if(E.material){const b=E.material;Array.isArray(b)?_.push(...b.filter(R=>(R.name===S.materialName||R.name===S.materialName+" (Outline)")&&_.indexOf(R)===-1)):b.name===S.materialName&&_.indexOf(b)===-1&&_.push(b)}});const T=S.propertyName;_.forEach(E=>{if(T==="_MainTex_ST"){const R=new re(S.targetValue[0],S.targetValue[1]),w=new re(S.targetValue[2],S.targetValue[3]);w.y=1-w.y-R.y,v.addBind(new YL({material:E,scale:R,offset:w}));return}const b=Yee[T];if(b){v.addBind(new XL({material:E,type:b,targetValue:new Ye().fromArray(S.targetValue),targetAlpha:S.targetValue[3]}));return}console.warn(T+" is not supported")})}),s.registerExpression(v)}))),s})}};Sz.v0v1PresetNameMap={a:"aa",e:"ee",i:"ih",o:"oh",u:"ou",blink:"blink",joy:"happy",angry:"angry",sorrow:"sad",fun:"relaxed",lookup:"lookUp",lookdown:"lookDown",lookleft:"lookLeft",lookright:"lookRight",blink_l:"blinkLeft",blink_r:"blinkRight",neutral:"neutral"};var Qee=Sz,UR=class Mf{constructor(e,t){this._firstPersonOnlyLayer=Mf.DEFAULT_FIRSTPERSON_ONLY_LAYER,this._thirdPersonOnlyLayer=Mf.DEFAULT_THIRDPERSON_ONLY_LAYER,this._initializedLayers=!1,this.humanoid=e,this.meshAnnotations=t}copy(e){if(this.humanoid!==e.humanoid)throw new Error("VRMFirstPerson: humanoid must be same in order to copy");return this.meshAnnotations=e.meshAnnotations.map(t=>({meshes:t.meshes.concat(),type:t.type})),this}clone(){return new Mf(this.humanoid,this.meshAnnotations).copy(this)}get firstPersonOnlyLayer(){return this._firstPersonOnlyLayer}get thirdPersonOnlyLayer(){return this._thirdPersonOnlyLayer}setup({firstPersonOnlyLayer:e=Mf.DEFAULT_FIRSTPERSON_ONLY_LAYER,thirdPersonOnlyLayer:t=Mf.DEFAULT_THIRDPERSON_ONLY_LAYER}={}){this._initializedLayers||(this._firstPersonOnlyLayer=e,this._thirdPersonOnlyLayer=t,this.meshAnnotations.forEach(i=>{i.meshes.forEach(r=>{i.type==="firstPersonOnly"?(r.layers.set(this._firstPersonOnlyLayer),r.traverse(a=>a.layers.set(this._firstPersonOnlyLayer))):i.type==="thirdPersonOnly"?(r.layers.set(this._thirdPersonOnlyLayer),r.traverse(a=>a.layers.set(this._thirdPersonOnlyLayer))):i.type==="auto"&&this._createHeadlessModel(r)})}),this._initializedLayers=!0)}_excludeTriangles(e,t,i,r){let a=0;if(t!=null&&t.length>0)for(let s=0;s0&&r.includes(f[0])||d[1]>0&&r.includes(f[1])||d[2]>0&&r.includes(f[2])||d[3]>0&&r.includes(f[3]))continue;const p=t[l],m=i[l];if(p[0]>0&&r.includes(m[0])||p[1]>0&&r.includes(m[1])||p[2]>0&&r.includes(m[2])||p[3]>0&&r.includes(m[3]))continue;const v=t[u],x=i[u];v[0]>0&&r.includes(x[0])||v[1]>0&&r.includes(x[1])||v[2]>0&&r.includes(x[2])||v[3]>0&&r.includes(x[3])||(e[a++]=o,e[a++]=l,e[a++]=u)}return a}_createErasedMesh(e,t){const i=new FS(e.geometry.clone(),e.material);i.name=`${e.name}(erase)`,i.frustumCulled=e.frustumCulled,i.layers.set(this._firstPersonOnlyLayer);const r=i.geometry,a=r.getAttribute("skinIndex"),s=a instanceof X3?[]:a.array,o=[];for(let x=0;x{this._isEraseTarget(a)&&i.push(s)}),!i.length){t.layers.enable(this._thirdPersonOnlyLayer),t.layers.enable(this._firstPersonOnlyLayer);return}t.layers.set(this._thirdPersonOnlyLayer);const r=this._createErasedMesh(t,i);e.add(r)}_createHeadlessModel(e){if(e.type==="Group")if(e.layers.set(this._thirdPersonOnlyLayer),this._isEraseTarget(e))e.traverse(t=>t.layers.set(this._thirdPersonOnlyLayer));else{const t=new Xi;t.name=`_headless_${e.name}`,t.layers.set(this._firstPersonOnlyLayer),e.parent.add(t),e.children.filter(i=>i.type==="SkinnedMesh").forEach(i=>{const r=i;this._createHeadlessModelForSkinnedMesh(t,r)})}else if(e.type==="SkinnedMesh"){const t=e;this._createHeadlessModelForSkinnedMesh(e.parent,t)}else this._isEraseTarget(e)&&(e.layers.set(this._thirdPersonOnlyLayer),e.traverse(t=>t.layers.set(this._thirdPersonOnlyLayer)))}_isEraseTarget(e){return e===this.humanoid.getRawBoneNode("head")?!0:e.parent?this._isEraseTarget(e.parent):!1}};UR.DEFAULT_FIRSTPERSON_ONLY_LAYER=9;UR.DEFAULT_THIRDPERSON_ONLY_LAYER=10;var jL=UR,Kee=new Set(["1.0","1.0-beta"]),Jee=class{get name(){return"VRMFirstPersonLoaderPlugin"}constructor(n){this.parser=n}afterRoot(n){return yn(this,null,function*(){const e=n.userData.vrmHumanoid;if(e!==null){if(e===void 0)throw new Error("VRMFirstPersonLoaderPlugin: vrmHumanoid is undefined. VRMHumanoidLoaderPlugin have to be used first");n.userData.vrmFirstPerson=yield this._import(n,e)}})}_import(n,e){return yn(this,null,function*(){if(e==null)return null;const t=yield this._v1Import(n,e);if(t)return t;const i=yield this._v0Import(n,e);return i||null})}_v1Import(n,e){return yn(this,null,function*(){var t,i;const r=this.parser.json;if(!(((t=r.extensionsUsed)==null?void 0:t.indexOf("VRMC_vrm"))!==-1))return null;const s=(i=r.extensions)==null?void 0:i.VRMC_vrm;if(!s)return null;const o=s.specVersion;if(!Kee.has(o))return console.warn(`VRMFirstPersonLoaderPlugin: Unknown VRMC_vrm specVersion "${o}"`),null;const l=s.firstPerson,u=[],d=yield kL(n);return Array.from(d.entries()).forEach(([f,p])=>{var m,v;const x=(m=l==null?void 0:l.meshAnnotations)==null?void 0:m.find(S=>S.node===f);u.push({meshes:p,type:(v=x==null?void 0:x.type)!=null?v:"auto"})}),new jL(e,u)})}_v0Import(n,e){return yn(this,null,function*(){var t;const i=this.parser.json,r=(t=i.extensions)==null?void 0:t.VRM;if(!r)return null;const a=r.firstPerson;if(!a)return null;const s=[],o=yield kL(n);return Array.from(o.entries()).forEach(([l,u])=>{const d=i.nodes[l],f=a.meshAnnotations?a.meshAnnotations.find(p=>p.mesh===d.mesh):void 0;s.push({meshes:u,type:this._convertV0FlagToV1Type(f==null?void 0:f.firstPersonFlag)})}),new jL(e,s)})}_convertV0FlagToV1Type(n){return n==="FirstPersonOnly"?"firstPersonOnly":n==="ThirdPersonOnly"?"thirdPersonOnly":n==="Both"?"both":"auto"}},ZL=new D,QL=new D,$ee=new ft,KL=class extends Xi{constructor(n){super(),this.vrmHumanoid=n,this._boneAxesMap=new Map,Object.values(n.humanBones).forEach(e=>{const t=new w7(1);t.matrixAutoUpdate=!1,t.material.depthTest=!1,t.material.depthWrite=!1,this.add(t),this._boneAxesMap.set(e,t)})}dispose(){Array.from(this._boneAxesMap.values()).forEach(n=>{n.geometry.dispose(),n.material.dispose()})}updateMatrixWorld(n){Array.from(this._boneAxesMap.entries()).forEach(([e,t])=>{e.node.updateWorldMatrix(!0,!1),e.node.matrixWorld.decompose(ZL,$ee,QL);const i=ZL.set(.1,.1,.1).divide(QL);t.matrix.copy(e.node.matrixWorld).scale(i)}),super.updateMatrixWorld(n)}},Lb=["hips","spine","chest","upperChest","neck","head","leftEye","rightEye","jaw","leftUpperLeg","leftLowerLeg","leftFoot","leftToes","rightUpperLeg","rightLowerLeg","rightFoot","rightToes","leftShoulder","leftUpperArm","leftLowerArm","leftHand","rightShoulder","rightUpperArm","rightLowerArm","rightHand","leftThumbMetacarpal","leftThumbProximal","leftThumbDistal","leftIndexProximal","leftIndexIntermediate","leftIndexDistal","leftMiddleProximal","leftMiddleIntermediate","leftMiddleDistal","leftRingProximal","leftRingIntermediate","leftRingDistal","leftLittleProximal","leftLittleIntermediate","leftLittleDistal","rightThumbMetacarpal","rightThumbProximal","rightThumbDistal","rightIndexProximal","rightIndexIntermediate","rightIndexDistal","rightMiddleProximal","rightMiddleIntermediate","rightMiddleDistal","rightRingProximal","rightRingIntermediate","rightRingDistal","rightLittleProximal","rightLittleIntermediate","rightLittleDistal"],ete={hips:null,spine:"hips",chest:"spine",upperChest:"chest",neck:"upperChest",head:"neck",leftEye:"head",rightEye:"head",jaw:"head",leftUpperLeg:"hips",leftLowerLeg:"leftUpperLeg",leftFoot:"leftLowerLeg",leftToes:"leftFoot",rightUpperLeg:"hips",rightLowerLeg:"rightUpperLeg",rightFoot:"rightLowerLeg",rightToes:"rightFoot",leftShoulder:"upperChest",leftUpperArm:"leftShoulder",leftLowerArm:"leftUpperArm",leftHand:"leftLowerArm",rightShoulder:"upperChest",rightUpperArm:"rightShoulder",rightLowerArm:"rightUpperArm",rightHand:"rightLowerArm",leftThumbMetacarpal:"leftHand",leftThumbProximal:"leftThumbMetacarpal",leftThumbDistal:"leftThumbProximal",leftIndexProximal:"leftHand",leftIndexIntermediate:"leftIndexProximal",leftIndexDistal:"leftIndexIntermediate",leftMiddleProximal:"leftHand",leftMiddleIntermediate:"leftMiddleProximal",leftMiddleDistal:"leftMiddleIntermediate",leftRingProximal:"leftHand",leftRingIntermediate:"leftRingProximal",leftRingDistal:"leftRingIntermediate",leftLittleProximal:"leftHand",leftLittleIntermediate:"leftLittleProximal",leftLittleDistal:"leftLittleIntermediate",rightThumbMetacarpal:"rightHand",rightThumbProximal:"rightThumbMetacarpal",rightThumbDistal:"rightThumbProximal",rightIndexProximal:"rightHand",rightIndexIntermediate:"rightIndexProximal",rightIndexDistal:"rightIndexIntermediate",rightMiddleProximal:"rightHand",rightMiddleIntermediate:"rightMiddleProximal",rightMiddleDistal:"rightMiddleIntermediate",rightRingProximal:"rightHand",rightRingIntermediate:"rightRingProximal",rightRingDistal:"rightRingIntermediate",rightLittleProximal:"rightHand",rightLittleIntermediate:"rightLittleProximal",rightLittleDistal:"rightLittleIntermediate"};function Ez(n){return n.invert?n.invert():n.inverse(),n}var qu=new D,Yu=new ft,sA=class{constructor(n){this.humanBones=n,this.restPose=this.getAbsolutePose()}getAbsolutePose(){const n={};return Object.keys(this.humanBones).forEach(e=>{const t=e,i=this.getBoneNode(t);i&&(qu.copy(i.position),Yu.copy(i.quaternion),n[t]={position:qu.toArray(),rotation:Yu.toArray()})}),n}getPose(){const n={};return Object.keys(this.humanBones).forEach(e=>{const t=e,i=this.getBoneNode(t);if(!i)return;qu.set(0,0,0),Yu.identity();const r=this.restPose[t];r!=null&&r.position&&qu.fromArray(r.position).negate(),r!=null&&r.rotation&&Ez(Yu.fromArray(r.rotation)),qu.add(i.position),Yu.premultiply(i.quaternion),n[t]={position:qu.toArray(),rotation:Yu.toArray()}}),n}setPose(n){Object.entries(n).forEach(([e,t])=>{const i=e,r=this.getBoneNode(i);if(!r)return;const a=this.restPose[i];a&&(t!=null&&t.position&&(r.position.fromArray(t.position),a.position&&r.position.add(qu.fromArray(a.position))),t!=null&&t.rotation&&(r.quaternion.fromArray(t.rotation),a.rotation&&r.quaternion.multiply(Yu.fromArray(a.rotation))))})}resetPose(){Object.entries(this.restPose).forEach(([n,e])=>{const t=this.getBoneNode(n);t&&(e!=null&&e.position&&t.position.fromArray(e.position),e!=null&&e.rotation&&t.quaternion.fromArray(e.rotation))})}getBone(n){var e;return(e=this.humanBones[n])!=null?e:void 0}getBoneNode(n){var e,t;return(t=(e=this.humanBones[n])==null?void 0:e.node)!=null?t:null}},Ib=new D,tte=new ft,nte=new D,JL=class bz extends sA{static _setupTransforms(e){const t=new Xt;t.name="VRMHumanoidRig";const i={},r={},a={};Lb.forEach(o=>{var l;const u=e.getBoneNode(o);if(u){const d=new D,f=new ft;u.updateWorldMatrix(!0,!1),u.matrixWorld.decompose(d,f,Ib),i[o]=d,r[o]=u.quaternion.clone();const p=new ft;(l=u.parent)==null||l.matrixWorld.decompose(Ib,p,Ib),a[o]=p}});const s={};return Lb.forEach(o=>{var l;const u=e.getBoneNode(o);if(u){const d=i[o];let f=o,p;for(;p==null&&(f=ete[f],f!=null);)p=i[f];const m=new Xt;m.name="Normalized_"+u.name,(f?(l=s[f])==null?void 0:l.node:t).add(m),m.position.copy(d),p&&m.position.sub(p),s[o]={node:m}}}),{rigBones:s,root:t,parentWorldRotations:a,boneRotations:r}}constructor(e){const{rigBones:t,root:i,parentWorldRotations:r,boneRotations:a}=bz._setupTransforms(e);super(t),this.original=e,this.root=i,this._parentWorldRotations=r,this._boneRotations=a}update(){Lb.forEach(e=>{const t=this.original.getBoneNode(e);if(t!=null){const i=this.getBoneNode(e),r=this._parentWorldRotations[e],a=tte.copy(r).invert(),s=this._boneRotations[e];if(t.quaternion.copy(i.quaternion).multiply(r).premultiply(a).multiply(s),e==="hips"){const o=i.getWorldPosition(nte);t.parent.updateWorldMatrix(!0,!1);const l=t.parent.matrixWorld,u=o.applyMatrix4(l.invert());t.position.copy(u)}}})}},$L=class Mz{get restPose(){return console.warn("VRMHumanoid: restPose is deprecated. Use either rawRestPose or normalizedRestPose instead."),this.rawRestPose}get rawRestPose(){return this._rawHumanBones.restPose}get normalizedRestPose(){return this._normalizedHumanBones.restPose}get humanBones(){return this._rawHumanBones.humanBones}get rawHumanBones(){return this._rawHumanBones.humanBones}get normalizedHumanBones(){return this._normalizedHumanBones.humanBones}get normalizedHumanBonesRoot(){return this._normalizedHumanBones.root}constructor(e,t){var i;this.autoUpdateHumanBones=(i=t==null?void 0:t.autoUpdateHumanBones)!=null?i:!0,this._rawHumanBones=new sA(e),this._normalizedHumanBones=new JL(this._rawHumanBones)}copy(e){return this.autoUpdateHumanBones=e.autoUpdateHumanBones,this._rawHumanBones=new sA(e.humanBones),this._normalizedHumanBones=new JL(this._rawHumanBones),this}clone(){return new Mz(this.humanBones,{autoUpdateHumanBones:this.autoUpdateHumanBones}).copy(this)}getAbsolutePose(){return console.warn("VRMHumanoid: getAbsolutePose() is deprecated. Use either getRawAbsolutePose() or getNormalizedAbsolutePose() instead."),this.getRawAbsolutePose()}getRawAbsolutePose(){return this._rawHumanBones.getAbsolutePose()}getNormalizedAbsolutePose(){return this._normalizedHumanBones.getAbsolutePose()}getPose(){return console.warn("VRMHumanoid: getPose() is deprecated. Use either getRawPose() or getNormalizedPose() instead."),this.getRawPose()}getRawPose(){return this._rawHumanBones.getPose()}getNormalizedPose(){return this._normalizedHumanBones.getPose()}setPose(e){return console.warn("VRMHumanoid: setPose() is deprecated. Use either setRawPose() or setNormalizedPose() instead."),this.setRawPose(e)}setRawPose(e){return this._rawHumanBones.setPose(e)}setNormalizedPose(e){return this._normalizedHumanBones.setPose(e)}resetPose(){return console.warn("VRMHumanoid: resetPose() is deprecated. Use either resetRawPose() or resetNormalizedPose() instead."),this.resetRawPose()}resetRawPose(){return this._rawHumanBones.resetPose()}resetNormalizedPose(){return this._normalizedHumanBones.resetPose()}getBone(e){return console.warn("VRMHumanoid: getBone() is deprecated. Use either getRawBone() or getNormalizedBone() instead."),this.getRawBone(e)}getRawBone(e){return this._rawHumanBones.getBone(e)}getNormalizedBone(e){return this._normalizedHumanBones.getBone(e)}getBoneNode(e){return console.warn("VRMHumanoid: getBoneNode() is deprecated. Use either getRawBoneNode() or getNormalizedBoneNode() instead."),this.getRawBoneNode(e)}getRawBoneNode(e){return this._rawHumanBones.getBoneNode(e)}getNormalizedBoneNode(e){return this._normalizedHumanBones.getBoneNode(e)}update(){this.autoUpdateHumanBones&&this._normalizedHumanBones.update()}},ite={Hips:"hips",Spine:"spine",Head:"head",LeftUpperLeg:"leftUpperLeg",LeftLowerLeg:"leftLowerLeg",LeftFoot:"leftFoot",RightUpperLeg:"rightUpperLeg",RightLowerLeg:"rightLowerLeg",RightFoot:"rightFoot",LeftUpperArm:"leftUpperArm",LeftLowerArm:"leftLowerArm",LeftHand:"leftHand",RightUpperArm:"rightUpperArm",RightLowerArm:"rightLowerArm",RightHand:"rightHand"},rte=new Set(["1.0","1.0-beta"]),eI={leftThumbProximal:"leftThumbMetacarpal",leftThumbIntermediate:"leftThumbProximal",rightThumbProximal:"rightThumbMetacarpal",rightThumbIntermediate:"rightThumbProximal"},ate=class{get name(){return"VRMHumanoidLoaderPlugin"}constructor(n,e){this.parser=n,this.helperRoot=e==null?void 0:e.helperRoot,this.autoUpdateHumanBones=e==null?void 0:e.autoUpdateHumanBones}afterRoot(n){return yn(this,null,function*(){n.userData.vrmHumanoid=yield this._import(n)})}_import(n){return yn(this,null,function*(){const e=yield this._v1Import(n);if(e)return e;const t=yield this._v0Import(n);return t||null})}_v1Import(n){return yn(this,null,function*(){var e,t;const i=this.parser.json;if(!(((e=i.extensionsUsed)==null?void 0:e.indexOf("VRMC_vrm"))!==-1))return null;const a=(t=i.extensions)==null?void 0:t.VRMC_vrm;if(!a)return null;const s=a.specVersion;if(!rte.has(s))return console.warn(`VRMHumanoidLoaderPlugin: Unknown VRMC_vrm specVersion "${s}"`),null;const o=a.humanoid;if(!o)return null;const l=o.humanBones.leftThumbIntermediate!=null||o.humanBones.rightThumbIntermediate!=null,u={};o.humanBones!=null&&(yield Promise.all(Object.entries(o.humanBones).map(f=>yn(this,[f],function*([p,m]){let v=p;const x=m.node;if(l){const _=eI[v];_!=null&&(v=_)}const S=yield this.parser.getDependency("node",x);if(S==null){console.warn(`A glTF node bound to the humanoid bone ${v} (index = ${x}) does not exist`);return}u[v]={node:S}}))));const d=new $L(this._ensureRequiredBonesExist(u),{autoUpdateHumanBones:this.autoUpdateHumanBones});if(n.scene.add(d.normalizedHumanBonesRoot),this.helperRoot){const f=new KL(d);this.helperRoot.add(f),f.renderOrder=this.helperRoot.renderOrder}return d})}_v0Import(n){return yn(this,null,function*(){var e;const i=(e=this.parser.json.extensions)==null?void 0:e.VRM;if(!i)return null;const r=i.humanoid;if(!r)return null;const a={};r.humanBones!=null&&(yield Promise.all(r.humanBones.map(o=>yn(this,null,function*(){const l=o.bone,u=o.node;if(l==null||u==null)return;const d=yield this.parser.getDependency("node",u);if(d==null){console.warn(`A glTF node bound to the humanoid bone ${l} (index = ${u}) does not exist`);return}const f=eI[l],p=f??l;if(a[p]!=null){console.warn(`Multiple bone entries for ${p} detected (index = ${u}), ignoring duplicated entries.`);return}a[p]={node:d}}))));const s=new $L(this._ensureRequiredBonesExist(a),{autoUpdateHumanBones:this.autoUpdateHumanBones});if(n.scene.add(s.normalizedHumanBonesRoot),this.helperRoot){const o=new KL(s);this.helperRoot.add(o),o.renderOrder=this.helperRoot.renderOrder}return s})}_ensureRequiredBonesExist(n){const e=Object.values(ite).filter(t=>n[t]==null);if(e.length>0)throw new Error(`VRMHumanoidLoaderPlugin: These humanoid bones are required but not exist: ${e.join(", ")}`);return n}},tI=class extends Ct{constructor(){super(),this._currentTheta=0,this._currentRadius=0,this.theta=0,this.radius=0,this._currentTheta=0,this._currentRadius=0,this._attrPos=new bt(new Float32Array(65*3),3),this.setAttribute("position",this._attrPos),this._attrIndex=new bt(new Uint16Array(3*63),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let n=!1;this._currentTheta!==this.theta&&(this._currentTheta=this.theta,n=!0),this._currentRadius!==this.radius&&(this._currentRadius=this.radius,n=!0),n&&this._buildPosition()}_buildPosition(){this._attrPos.setXYZ(0,0,0,0);for(let n=0;n<64;n++){const e=n/63*this._currentTheta;this._attrPos.setXYZ(n+1,this._currentRadius*Math.sin(e),0,this._currentRadius*Math.cos(e))}this._attrPos.needsUpdate=!0}_buildIndex(){for(let n=0;n<63;n++)this._attrIndex.setXYZ(n*3,0,n+1,n+2);this._attrIndex.needsUpdate=!0}},ste=class extends Ct{constructor(){super(),this.radius=0,this._currentRadius=0,this.tail=new D,this._currentTail=new D,this._attrPos=new bt(new Float32Array(294),3),this.setAttribute("position",this._attrPos),this._attrIndex=new bt(new Uint16Array(194),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let n=!1;this._currentRadius!==this.radius&&(this._currentRadius=this.radius,n=!0),this._currentTail.equals(this.tail)||(this._currentTail.copy(this.tail),n=!0),n&&this._buildPosition()}_buildPosition(){for(let n=0;n<32;n++){const e=n/16*Math.PI;this._attrPos.setXYZ(n,Math.cos(e),Math.sin(e),0),this._attrPos.setXYZ(32+n,0,Math.cos(e),Math.sin(e)),this._attrPos.setXYZ(64+n,Math.sin(e),0,Math.cos(e))}this.scale(this._currentRadius,this._currentRadius,this._currentRadius),this.translate(this._currentTail.x,this._currentTail.y,this._currentTail.z),this._attrPos.setXYZ(96,0,0,0),this._attrPos.setXYZ(97,this._currentTail.x,this._currentTail.y,this._currentTail.z),this._attrPos.needsUpdate=!0}_buildIndex(){for(let n=0;n<32;n++){const e=(n+1)%32;this._attrIndex.setXY(n*2,n,e),this._attrIndex.setXY(64+n*2,32+n,32+e),this._attrIndex.setXY(128+n*2,64+n,64+e)}this._attrIndex.setXY(192,96,97),this._attrIndex.needsUpdate=!0}},ux=new ft,nI=new ft,Jm=new D,iI=new D,rI=Math.sqrt(2)/2,ote=new ft(0,0,-rI,rI),lte=new D(0,1,0),cte=class extends Xi{constructor(n){super(),this.matrixAutoUpdate=!1,this.vrmLookAt=n;{const e=new tI;e.radius=.5;const t=new Sr({color:65280,transparent:!0,opacity:.5,side:xr,depthTest:!1,depthWrite:!1});this._meshPitch=new jn(e,t),this.add(this._meshPitch)}{const e=new tI;e.radius=.5;const t=new Sr({color:16711680,transparent:!0,opacity:.5,side:xr,depthTest:!1,depthWrite:!1});this._meshYaw=new jn(e,t),this.add(this._meshYaw)}{const e=new ste;e.radius=.1;const t=new Yi({color:16777215,depthTest:!1,depthWrite:!1});this._lineTarget=new va(e,t),this._lineTarget.frustumCulled=!1,this.add(this._lineTarget)}}dispose(){this._meshYaw.geometry.dispose(),this._meshYaw.material.dispose(),this._meshPitch.geometry.dispose(),this._meshPitch.material.dispose(),this._lineTarget.geometry.dispose(),this._lineTarget.material.dispose()}updateMatrixWorld(n){const e=lt.DEG2RAD*this.vrmLookAt.yaw;this._meshYaw.geometry.theta=e,this._meshYaw.geometry.update();const t=lt.DEG2RAD*this.vrmLookAt.pitch;this._meshPitch.geometry.theta=t,this._meshPitch.geometry.update(),this.vrmLookAt.getLookAtWorldPosition(Jm),this.vrmLookAt.getLookAtWorldQuaternion(ux),ux.multiply(this.vrmLookAt.getFaceFrontQuaternion(nI)),this._meshYaw.position.copy(Jm),this._meshYaw.quaternion.copy(ux),this._meshPitch.position.copy(Jm),this._meshPitch.quaternion.copy(ux),this._meshPitch.quaternion.multiply(nI.setFromAxisAngle(lte,e)),this._meshPitch.quaternion.multiply(ote);const{target:i,autoUpdate:r}=this.vrmLookAt;i!=null&&r&&(i.getWorldPosition(iI).sub(Jm),this._lineTarget.geometry.tail.copy(iI),this._lineTarget.geometry.update(),this._lineTarget.position.copy(Jm)),super.updateMatrixWorld(n)}},ute=new D,hte=new D;function oA(n,e){return n.matrixWorld.decompose(ute,e,hte),e}function d1(n){return[Math.atan2(-n.z,n.x),Math.atan2(n.y,Math.sqrt(n.x*n.x+n.z*n.z))]}function aI(n){const e=Math.round(n/2/Math.PI);return n-2*Math.PI*e}var sI=new D(0,0,1),dte=new D,fte=new D,pte=new D,mte=new ft,Ub=new ft,oI=new ft,gte=new ft,Pb=new Ai,Az=class wz{constructor(e,t){this.offsetFromHeadBone=new D,this.autoUpdate=!0,this.faceFront=new D(0,0,1),this.humanoid=e,this.applier=t,this._yaw=0,this._pitch=0,this._needsUpdate=!0,this._restHeadWorldQuaternion=this.getLookAtWorldQuaternion(new ft)}get yaw(){return this._yaw}set yaw(e){this._yaw=e,this._needsUpdate=!0}get pitch(){return this._pitch}set pitch(e){this._pitch=e,this._needsUpdate=!0}get euler(){return console.warn("VRMLookAt: euler is deprecated. use getEuler() instead."),this.getEuler(new Ai)}getEuler(e){return e.set(lt.DEG2RAD*this._pitch,lt.DEG2RAD*this._yaw,0,"YXZ")}copy(e){if(this.humanoid!==e.humanoid)throw new Error("VRMLookAt: humanoid must be same in order to copy");return this.offsetFromHeadBone.copy(e.offsetFromHeadBone),this.applier=e.applier,this.autoUpdate=e.autoUpdate,this.target=e.target,this.faceFront.copy(e.faceFront),this}clone(){return new wz(this.humanoid,this.applier).copy(this)}reset(){this._yaw=0,this._pitch=0,this._needsUpdate=!0}getLookAtWorldPosition(e){const t=this.humanoid.getRawBoneNode("head");return e.copy(this.offsetFromHeadBone).applyMatrix4(t.matrixWorld)}getLookAtWorldQuaternion(e){const t=this.humanoid.getRawBoneNode("head");return oA(t,e)}getFaceFrontQuaternion(e){if(this.faceFront.distanceToSquared(sI)<.01)return e.copy(this._restHeadWorldQuaternion).invert();const[t,i]=d1(this.faceFront);return Pb.set(0,.5*Math.PI+t,i,"YZX"),e.setFromEuler(Pb).premultiply(gte.copy(this._restHeadWorldQuaternion).invert())}getLookAtWorldDirection(e){return this.getLookAtWorldQuaternion(Ub),this.getFaceFrontQuaternion(oI),e.copy(sI).applyQuaternion(Ub).applyQuaternion(oI).applyEuler(this.getEuler(Pb))}lookAt(e){const t=mte.copy(this._restHeadWorldQuaternion).multiply(Ez(this.getLookAtWorldQuaternion(Ub))),i=this.getLookAtWorldPosition(fte),r=pte.copy(e).sub(i).applyQuaternion(t).normalize(),[a,s]=d1(this.faceFront),[o,l]=d1(r),u=aI(o-a),d=aI(s-l);this._yaw=lt.RAD2DEG*u,this._pitch=lt.RAD2DEG*d,this._needsUpdate=!0}update(e){this.target!=null&&this.autoUpdate&&this.lookAt(this.target.getWorldPosition(dte)),this._needsUpdate&&(this._needsUpdate=!1,this.applier.applyYawPitch(this._yaw,this._pitch))}};Az.EULER_ORDER="YXZ";var vte=Az,_te=new D(0,0,1),go=new ft,of=new ft,cs=new Ai(0,0,0,"YXZ"),f1=class{constructor(n,e,t,i,r){this.humanoid=n,this.rangeMapHorizontalInner=e,this.rangeMapHorizontalOuter=t,this.rangeMapVerticalDown=i,this.rangeMapVerticalUp=r,this.faceFront=new D(0,0,1),this._restQuatLeftEye=new ft,this._restQuatRightEye=new ft,this._restLeftEyeParentWorldQuat=new ft,this._restRightEyeParentWorldQuat=new ft;const a=this.humanoid.getRawBoneNode("leftEye"),s=this.humanoid.getRawBoneNode("rightEye");a&&(this._restQuatLeftEye.copy(a.quaternion),oA(a.parent,this._restLeftEyeParentWorldQuat)),s&&(this._restQuatRightEye.copy(s.quaternion),oA(s.parent,this._restRightEyeParentWorldQuat))}applyYawPitch(n,e){const t=this.humanoid.getRawBoneNode("leftEye"),i=this.humanoid.getRawBoneNode("rightEye"),r=this.humanoid.getNormalizedBoneNode("leftEye"),a=this.humanoid.getNormalizedBoneNode("rightEye");t&&(e<0?cs.x=-lt.DEG2RAD*this.rangeMapVerticalDown.map(-e):cs.x=lt.DEG2RAD*this.rangeMapVerticalUp.map(e),n<0?cs.y=-lt.DEG2RAD*this.rangeMapHorizontalInner.map(-n):cs.y=lt.DEG2RAD*this.rangeMapHorizontalOuter.map(n),go.setFromEuler(cs),this._getWorldFaceFrontQuat(of),r.quaternion.copy(of).multiply(go).multiply(of.invert()),go.copy(this._restLeftEyeParentWorldQuat),t.quaternion.copy(r.quaternion).multiply(go).premultiply(go.invert()).multiply(this._restQuatLeftEye)),i&&(e<0?cs.x=-lt.DEG2RAD*this.rangeMapVerticalDown.map(-e):cs.x=lt.DEG2RAD*this.rangeMapVerticalUp.map(e),n<0?cs.y=-lt.DEG2RAD*this.rangeMapHorizontalOuter.map(-n):cs.y=lt.DEG2RAD*this.rangeMapHorizontalInner.map(n),go.setFromEuler(cs),this._getWorldFaceFrontQuat(of),a.quaternion.copy(of).multiply(go).multiply(of.invert()),go.copy(this._restRightEyeParentWorldQuat),i.quaternion.copy(a.quaternion).multiply(go).premultiply(go.invert()).multiply(this._restQuatRightEye))}lookAt(n){console.warn("VRMLookAtBoneApplier: lookAt() is deprecated. use apply() instead.");const e=lt.RAD2DEG*n.y,t=lt.RAD2DEG*n.x;this.applyYawPitch(e,t)}_getWorldFaceFrontQuat(n){if(this.faceFront.distanceToSquared(_te)<.01)return n.identity();const[e,t]=d1(this.faceFront);return cs.set(0,.5*Math.PI+e,t,"YZX"),n.setFromEuler(cs)}};f1.type="bone";var lA=class{constructor(n,e,t,i,r){this.expressions=n,this.rangeMapHorizontalInner=e,this.rangeMapHorizontalOuter=t,this.rangeMapVerticalDown=i,this.rangeMapVerticalUp=r}applyYawPitch(n,e){e<0?(this.expressions.setValue("lookDown",0),this.expressions.setValue("lookUp",this.rangeMapVerticalUp.map(-e))):(this.expressions.setValue("lookUp",0),this.expressions.setValue("lookDown",this.rangeMapVerticalDown.map(e))),n<0?(this.expressions.setValue("lookLeft",0),this.expressions.setValue("lookRight",this.rangeMapHorizontalOuter.map(-n))):(this.expressions.setValue("lookRight",0),this.expressions.setValue("lookLeft",this.rangeMapHorizontalOuter.map(n)))}lookAt(n){console.warn("VRMLookAtBoneApplier: lookAt() is deprecated. use apply() instead.");const e=lt.RAD2DEG*n.y,t=lt.RAD2DEG*n.x;this.applyYawPitch(e,t)}};lA.type="expression";var lI=class{constructor(n,e){this.inputMaxValue=n,this.outputScale=e}map(n){return this.outputScale*mz(n/this.inputMaxValue)}},xte=new Set(["1.0","1.0-beta"]),hx=.01,yte=class{get name(){return"VRMLookAtLoaderPlugin"}constructor(n,e){this.parser=n,this.helperRoot=e==null?void 0:e.helperRoot}afterRoot(n){return yn(this,null,function*(){const e=n.userData.vrmHumanoid;if(e===null)return;if(e===void 0)throw new Error("VRMLookAtLoaderPlugin: vrmHumanoid is undefined. VRMHumanoidLoaderPlugin have to be used first");const t=n.userData.vrmExpressionManager;if(t!==null){if(t===void 0)throw new Error("VRMLookAtLoaderPlugin: vrmExpressionManager is undefined. VRMExpressionLoaderPlugin have to be used first");n.userData.vrmLookAt=yield this._import(n,e,t)}})}_import(n,e,t){return yn(this,null,function*(){if(e==null||t==null)return null;const i=yield this._v1Import(n,e,t);if(i)return i;const r=yield this._v0Import(n,e,t);return r||null})}_v1Import(n,e,t){return yn(this,null,function*(){var i,r,a;const s=this.parser.json;if(!(((i=s.extensionsUsed)==null?void 0:i.indexOf("VRMC_vrm"))!==-1))return null;const l=(r=s.extensions)==null?void 0:r.VRMC_vrm;if(!l)return null;const u=l.specVersion;if(!xte.has(u))return console.warn(`VRMLookAtLoaderPlugin: Unknown VRMC_vrm specVersion "${u}"`),null;const d=l.lookAt;if(!d)return null;const f=d.type==="expression"?1:10,p=this._v1ImportRangeMap(d.rangeMapHorizontalInner,f),m=this._v1ImportRangeMap(d.rangeMapHorizontalOuter,f),v=this._v1ImportRangeMap(d.rangeMapVerticalDown,f),x=this._v1ImportRangeMap(d.rangeMapVerticalUp,f);let S;d.type==="expression"?S=new lA(t,p,m,v,x):S=new f1(e,p,m,v,x);const _=this._importLookAt(e,S);return _.offsetFromHeadBone.fromArray((a=d.offsetFromHeadBone)!=null?a:[0,.06,0]),_})}_v1ImportRangeMap(n,e){var t,i;let r=(t=n==null?void 0:n.inputMaxValue)!=null?t:90;const a=(i=n==null?void 0:n.outputScale)!=null?i:e;return r(console.error(s),console.warn("VRMMetaLoaderPlugin: Failed to load a thumbnail image"),null))})}},bte=class{constructor(n){this.scene=n.scene,this.meta=n.meta,this.humanoid=n.humanoid,this.expressionManager=n.expressionManager,this.firstPerson=n.firstPerson,this.lookAt=n.lookAt}update(n){this.humanoid.update(),this.lookAt&&this.lookAt.update(n),this.expressionManager&&this.expressionManager.update()}},Mte=class extends bte{constructor(n){super(n),this.materials=n.materials,this.springBoneManager=n.springBoneManager,this.nodeConstraintManager=n.nodeConstraintManager}update(n){super.update(n),this.nodeConstraintManager&&this.nodeConstraintManager.update(),this.springBoneManager&&this.springBoneManager.update(n),this.materials&&this.materials.forEach(e=>{e.update&&e.update(n)})}},Ate=Object.defineProperty,cI=Object.getOwnPropertySymbols,wte=Object.prototype.hasOwnProperty,Rte=Object.prototype.propertyIsEnumerable,uI=(n,e,t)=>e in n?Ate(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,hI=(n,e)=>{for(var t in e||(e={}))wte.call(e,t)&&uI(n,t,e[t]);if(cI)for(var t of cI(e))Rte.call(e,t)&&uI(n,t,e[t]);return n},gh=(n,e,t)=>new Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())}),Cte={"":3e3,srgb:3001};function Dte(n,e){parseInt($s,10)>=152?n.colorSpace=e:n.encoding=Cte[e]}var Nte=class{get pending(){return Promise.all(this._pendings)}constructor(n,e){this._parser=n,this._materialParams=e,this._pendings=[]}assignPrimitive(n,e){e!=null&&(this._materialParams[n]=e)}assignColor(n,e,t){if(e!=null){const i=new Ye().fromArray(e);t&&i.convertSRGBToLinear(),this._materialParams[n]=i}}assignTexture(n,e,t){return gh(this,null,function*(){const i=gh(this,null,function*(){e!=null&&(yield this._parser.assignTexture(this._materialParams,n,e),t&&Dte(this._materialParams[n],"srgb"))});return this._pendings.push(i),i})}assignTextureByIndex(n,e,t){return gh(this,null,function*(){return this.assignTexture(n,e!=null?{index:e}:void 0,t)})}},Ote=`// #define PHONG + */var cx=(n,e,t)=>new Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())}),yn=(n,e,t)=>new Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())}),VL=class extends Xt{constructor(n){super(),this.weight=0,this.isBinary=!1,this.overrideBlink="none",this.overrideLookAt="none",this.overrideMouth="none",this._binds=[],this.name=`VRMExpression_${n}`,this.expressionName=n,this.type="VRMExpression",this.visible=!1}get binds(){return this._binds}get overrideBlinkAmount(){return this.overrideBlink==="block"?0.5?1:0:this.weight}addBind(n){this._binds.push(n)}deleteBind(n){const e=this._binds.indexOf(n);e>=0&&this._binds.splice(e,1)}applyWeight(n){var e;let t=this.outputWeight;t*=(e=n==null?void 0:n.multiplier)!=null?e:1,this.isBinary&&t<1&&(t=0),this._binds.forEach(i=>i.applyWeight(t))}clearAppliedWeight(){this._binds.forEach(n=>n.clearAppliedWeight())}};function pz(n,e,t){var i,r;const a=n.parser.json,s=(i=a.nodes)==null?void 0:i[e];if(s==null)return console.warn(`extractPrimitivesInternal: Attempt to use nodes[${e}] of glTF but the node doesn't exist`),null;const o=s.mesh;if(o==null)return null;const l=(r=a.meshes)==null?void 0:r[o];if(l==null)return console.warn(`extractPrimitivesInternal: Attempt to use meshes[${o}] of glTF but the mesh doesn't exist`),null;const u=l.primitives.length,d=[];return t.traverse(f=>{d.length{const a=pz(n,r,i);a!=null&&t.set(r,a)}),t})}var aA={Aa:"aa",Ih:"ih",Ou:"ou",Ee:"ee",Oh:"oh",Blink:"blink",Happy:"happy",Angry:"angry",Sad:"sad",Relaxed:"relaxed",LookUp:"lookUp",Surprised:"surprised",LookDown:"lookDown",LookLeft:"lookLeft",LookRight:"lookRight",BlinkLeft:"blinkLeft",BlinkRight:"blinkRight",Neutral:"neutral"};function mz(n){return Math.max(Math.min(n,1),0)}var WL=class gz{constructor(){this.blinkExpressionNames=["blink","blinkLeft","blinkRight"],this.lookAtExpressionNames=["lookLeft","lookRight","lookUp","lookDown"],this.mouthExpressionNames=["aa","ee","ih","oh","ou"],this._expressions=[],this._expressionMap={}}get expressions(){return this._expressions.concat()}get expressionMap(){return Object.assign({},this._expressionMap)}get presetExpressionMap(){const e={},t=new Set(Object.values(aA));return Object.entries(this._expressionMap).forEach(([i,r])=>{t.has(i)&&(e[i]=r)}),e}get customExpressionMap(){const e={},t=new Set(Object.values(aA));return Object.entries(this._expressionMap).forEach(([i,r])=>{t.has(i)||(e[i]=r)}),e}copy(e){return this._expressions.concat().forEach(i=>{this.unregisterExpression(i)}),e._expressions.forEach(i=>{this.registerExpression(i)}),this.blinkExpressionNames=e.blinkExpressionNames.concat(),this.lookAtExpressionNames=e.lookAtExpressionNames.concat(),this.mouthExpressionNames=e.mouthExpressionNames.concat(),this}clone(){return new gz().copy(this)}getExpression(e){var t;return(t=this._expressionMap[e])!=null?t:null}registerExpression(e){this._expressions.push(e),this._expressionMap[e.expressionName]=e}unregisterExpression(e){const t=this._expressions.indexOf(e);t===-1&&console.warn("VRMExpressionManager: The specified expressions is not registered"),this._expressions.splice(t,1),delete this._expressionMap[e.expressionName]}getValue(e){var t;const i=this.getExpression(e);return(t=i==null?void 0:i.weight)!=null?t:null}setValue(e,t){const i=this.getExpression(e);i&&(i.weight=mz(t))}resetValues(){this._expressions.forEach(e=>{e.weight=0})}getExpressionTrackName(e){const t=this.getExpression(e);return t?`${t.name}.weight`:null}update(){const e=this._calculateWeightMultipliers();this._expressions.forEach(t=>{t.clearAppliedWeight()}),this._expressions.forEach(t=>{let i=1;const r=t.expressionName;this.blinkExpressionNames.indexOf(r)!==-1&&(i*=e.blink),this.lookAtExpressionNames.indexOf(r)!==-1&&(i*=e.lookAt),this.mouthExpressionNames.indexOf(r)!==-1&&(i*=e.mouth),t.applyWeight({multiplier:i})})}_calculateWeightMultipliers(){let e=1,t=1,i=1;return this._expressions.forEach(r=>{e-=r.overrideBlinkAmount,t-=r.overrideLookAtAmount,i-=r.overrideMouthAmount}),e=Math.max(0,e),t=Math.max(0,t),i=Math.max(0,i),{blink:e,lookAt:t,mouth:i}}},Km={Color:"color",EmissionColor:"emissionColor",ShadeColor:"shadeColor",RimColor:"rimColor",OutlineColor:"outlineColor"},Yee={_Color:Km.Color,_EmissionColor:Km.EmissionColor,_ShadeColor:Km.ShadeColor,_RimColor:Km.RimColor,_OutlineColor:Km.OutlineColor},jee=new Ye,vz=class _z{constructor({material:e,type:t,targetValue:i,targetAlpha:r}){this.material=e,this.type=t,this.targetValue=i,this.targetAlpha=r??1;const a=this._initColorBindState(),s=this._initAlphaBindState();this._state={color:a,alpha:s}}applyWeight(e){const{color:t,alpha:i}=this._state;if(t!=null){const{propertyName:r,deltaValue:a}=t,s=this.material[r];s!=null&&s.add(jee.copy(a).multiplyScalar(e))}if(i!=null){const{propertyName:r,deltaValue:a}=i;this.material[r]!=null&&(this.material[r]+=a*e)}}clearAppliedWeight(){const{color:e,alpha:t}=this._state;if(e!=null){const{propertyName:i,initialValue:r}=e,a=this.material[i];a!=null&&a.copy(r)}if(t!=null){const{propertyName:i,initialValue:r}=t;this.material[i]!=null&&(this.material[i]=r)}}_initColorBindState(){var e,t,i;const{material:r,type:a,targetValue:s}=this,o=this._getPropertyNameMap(),l=(t=(e=o==null?void 0:o[a])==null?void 0:e[0])!=null?t:null;if(l==null)return console.warn(`Tried to add a material color bind to the material ${(i=r.name)!=null?i:"(no name)"}, the type ${a} but the material or the type is not supported.`),null;const d=r[l].clone(),f=new Ye(s.r-d.r,s.g-d.g,s.b-d.b);return{propertyName:l,initialValue:d,deltaValue:f}}_initAlphaBindState(){var e,t,i;const{material:r,type:a,targetAlpha:s}=this,o=this._getPropertyNameMap(),l=(t=(e=o==null?void 0:o[a])==null?void 0:e[1])!=null?t:null;if(l==null&&s!==1)return console.warn(`Tried to add a material alpha bind to the material ${(i=r.name)!=null?i:"(no name)"}, the type ${a} but the material or the type does not support alpha.`),null;if(l==null)return null;const u=r[l],d=s-u;return{propertyName:l,initialValue:u,deltaValue:d}}_getPropertyNameMap(){var e,t;return(t=(e=Object.entries(_z._propertyNameMapMap).find(([i])=>this.material[i]===!0))==null?void 0:e[1])!=null?t:null}};vz._propertyNameMapMap={isMeshStandardMaterial:{color:["color","opacity"],emissionColor:["emissive",null]},isMeshBasicMaterial:{color:["color","opacity"]},isMToonMaterial:{color:["color","opacity"],emissionColor:["emissive",null],outlineColor:["outlineColorFactor",null],matcapColor:["matcapFactor",null],rimColor:["parametricRimColorFactor",null],shadeColor:["shadeColorFactor",null]}};var XL=vz,Hy=class{constructor({primitives:n,index:e,weight:t}){this.primitives=n,this.index=e,this.weight=t}applyWeight(n){this.primitives.forEach(e=>{var t;((t=e.morphTargetInfluences)==null?void 0:t[this.index])!=null&&(e.morphTargetInfluences[this.index]+=this.weight*n)})}clearAppliedWeight(){this.primitives.forEach(n=>{var e;((e=n.morphTargetInfluences)==null?void 0:e[this.index])!=null&&(n.morphTargetInfluences[this.index]=0)})}},qL=new re,xz=class yz{constructor({material:e,scale:t,offset:i}){var r,a;this.material=e,this.scale=t,this.offset=i;const s=(r=Object.entries(yz._propertyNamesMap).find(([o])=>e[o]===!0))==null?void 0:r[1];s==null?(console.warn(`Tried to add a texture transform bind to the material ${(a=e.name)!=null?a:"(no name)"} but the material is not supported.`),this._properties=[]):(this._properties=[],s.forEach(o=>{var l;const u=(l=e[o])==null?void 0:l.clone();if(!u)return null;e[o]=u;const d=u.offset.clone(),f=u.repeat.clone(),p=i.clone().sub(d),m=t.clone().sub(f);this._properties.push({name:o,initialOffset:d,deltaOffset:p,initialScale:f,deltaScale:m})}))}applyWeight(e){this._properties.forEach(t=>{const i=this.material[t.name];i!==void 0&&(i.offset.add(qL.copy(t.deltaOffset).multiplyScalar(e)),i.repeat.add(qL.copy(t.deltaScale).multiplyScalar(e)))})}clearAppliedWeight(){this._properties.forEach(e=>{const t=this.material[e.name];t!==void 0&&(t.offset.copy(e.initialOffset),t.repeat.copy(e.initialScale))})}};xz._propertyNamesMap={isMeshStandardMaterial:["map","emissiveMap","bumpMap","normalMap","displacementMap","roughnessMap","metalnessMap","alphaMap"],isMeshBasicMaterial:["map","specularMap","alphaMap"],isMToonMaterial:["map","normalMap","emissiveMap","shadeMultiplyTexture","rimMultiplyTexture","outlineWidthMultiplyTexture","uvAnimationMaskTexture"]};var YL=xz,Zee=new Set(["1.0","1.0-beta"]),Sz=class Tz{get name(){return"VRMExpressionLoaderPlugin"}constructor(e){this.parser=e}afterRoot(e){return yn(this,null,function*(){e.userData.vrmExpressionManager=yield this._import(e)})}_import(e){return yn(this,null,function*(){const t=yield this._v1Import(e);if(t)return t;const i=yield this._v0Import(e);return i||null})}_v1Import(e){return yn(this,null,function*(){var t,i;const r=this.parser.json;if(!(((t=r.extensionsUsed)==null?void 0:t.indexOf("VRMC_vrm"))!==-1))return null;const s=(i=r.extensions)==null?void 0:i.VRMC_vrm;if(!s)return null;const o=s.specVersion;if(!Zee.has(o))return console.warn(`VRMExpressionLoaderPlugin: Unknown VRMC_vrm specVersion "${o}"`),null;const l=s.expressions;if(!l)return null;const u=new Set(Object.values(aA)),d=new Map;l.preset!=null&&Object.entries(l.preset).forEach(([p,m])=>{if(m!=null){if(!u.has(p)){console.warn(`VRMExpressionLoaderPlugin: Unknown preset name "${p}" detected. Ignoring the expression`);return}d.set(p,m)}}),l.custom!=null&&Object.entries(l.custom).forEach(([p,m])=>{if(u.has(p)){console.warn(`VRMExpressionLoaderPlugin: Custom expression cannot have preset name "${p}". Ignoring the expression`);return}d.set(p,m)});const f=new WL;return yield Promise.all(Array.from(d.entries()).map(p=>yn(this,[p],function*([m,v]){var x,S,_,T,E,b,R;const w=new VL(m);if(e.scene.add(w),w.isBinary=(x=v.isBinary)!=null?x:!1,w.overrideBlink=(S=v.overrideBlink)!=null?S:"none",w.overrideLookAt=(_=v.overrideLookAt)!=null?_:"none",w.overrideMouth=(T=v.overrideMouth)!=null?T:"none",(E=v.morphTargetBinds)==null||E.forEach(L=>yn(this,null,function*(){var U;if(L.node===void 0||L.index===void 0)return;const N=yield GL(e,L.node),C=L.index;if(!N.every(z=>Array.isArray(z.morphTargetInfluences)&&C{const N=U.material;N&&(Array.isArray(N)?L.push(...N):L.push(N))}),(b=v.materialColorBinds)==null||b.forEach(U=>yn(this,null,function*(){L.filter(C=>{var z;const W=(z=this.parser.associations.get(C))==null?void 0:z.materials;return U.material===W}).forEach(C=>{w.addBind(new XL({material:C,type:U.type,targetValue:new Ye().fromArray(U.targetValue),targetAlpha:U.targetValue[3]}))})})),(R=v.textureTransformBinds)==null||R.forEach(U=>yn(this,null,function*(){L.filter(C=>{var z;const W=(z=this.parser.associations.get(C))==null?void 0:z.materials;return U.material===W}).forEach(C=>{var z,W;w.addBind(new YL({material:C,offset:new re().fromArray((z=U.offset)!=null?z:[0,0]),scale:new re().fromArray((W=U.scale)!=null?W:[1,1])}))})}))}f.registerExpression(w)}))),f})}_v0Import(e){return yn(this,null,function*(){var t;const i=this.parser.json,r=(t=i.extensions)==null?void 0:t.VRM;if(!r)return null;const a=r.blendShapeMaster;if(!a)return null;const s=new WL,o=a.blendShapeGroups;if(!o)return s;const l=new Set;return yield Promise.all(o.map(u=>yn(this,null,function*(){var d;const f=u.presetName,p=f!=null&&Tz.v0v1PresetNameMap[f]||null,m=p??u.name;if(m==null){console.warn("VRMExpressionLoaderPlugin: One of custom expressions has no name. Ignoring the expression");return}if(l.has(m)){console.warn(`VRMExpressionLoaderPlugin: An expression preset ${f} has duplicated entries. Ignoring the expression`);return}l.add(m);const v=new VL(m);e.scene.add(v),v.isBinary=(d=u.isBinary)!=null?d:!1,u.binds&&u.binds.forEach(S=>yn(this,null,function*(){var _;if(S.mesh===void 0||S.index===void 0)return;const T=[];(_=i.nodes)==null||_.forEach((b,R)=>{b.mesh===S.mesh&&T.push(R)});const E=S.index;yield Promise.all(T.map(b=>yn(this,null,function*(){var R;const w=yield GL(e,b);if(!w.every(L=>Array.isArray(L.morphTargetInfluences)&&E{if(S.materialName===void 0||S.propertyName===void 0||S.targetValue===void 0)return;const _=[];e.scene.traverse(E=>{if(E.material){const b=E.material;Array.isArray(b)?_.push(...b.filter(R=>(R.name===S.materialName||R.name===S.materialName+" (Outline)")&&_.indexOf(R)===-1)):b.name===S.materialName&&_.indexOf(b)===-1&&_.push(b)}});const T=S.propertyName;_.forEach(E=>{if(T==="_MainTex_ST"){const R=new re(S.targetValue[0],S.targetValue[1]),w=new re(S.targetValue[2],S.targetValue[3]);w.y=1-w.y-R.y,v.addBind(new YL({material:E,scale:R,offset:w}));return}const b=Yee[T];if(b){v.addBind(new XL({material:E,type:b,targetValue:new Ye().fromArray(S.targetValue),targetAlpha:S.targetValue[3]}));return}console.warn(T+" is not supported")})}),s.registerExpression(v)}))),s})}};Sz.v0v1PresetNameMap={a:"aa",e:"ee",i:"ih",o:"oh",u:"ou",blink:"blink",joy:"happy",angry:"angry",sorrow:"sad",fun:"relaxed",lookup:"lookUp",lookdown:"lookDown",lookleft:"lookLeft",lookright:"lookRight",blink_l:"blinkLeft",blink_r:"blinkRight",neutral:"neutral"};var Qee=Sz,UR=class Mf{constructor(e,t){this._firstPersonOnlyLayer=Mf.DEFAULT_FIRSTPERSON_ONLY_LAYER,this._thirdPersonOnlyLayer=Mf.DEFAULT_THIRDPERSON_ONLY_LAYER,this._initializedLayers=!1,this.humanoid=e,this.meshAnnotations=t}copy(e){if(this.humanoid!==e.humanoid)throw new Error("VRMFirstPerson: humanoid must be same in order to copy");return this.meshAnnotations=e.meshAnnotations.map(t=>({meshes:t.meshes.concat(),type:t.type})),this}clone(){return new Mf(this.humanoid,this.meshAnnotations).copy(this)}get firstPersonOnlyLayer(){return this._firstPersonOnlyLayer}get thirdPersonOnlyLayer(){return this._thirdPersonOnlyLayer}setup({firstPersonOnlyLayer:e=Mf.DEFAULT_FIRSTPERSON_ONLY_LAYER,thirdPersonOnlyLayer:t=Mf.DEFAULT_THIRDPERSON_ONLY_LAYER}={}){this._initializedLayers||(this._firstPersonOnlyLayer=e,this._thirdPersonOnlyLayer=t,this.meshAnnotations.forEach(i=>{i.meshes.forEach(r=>{i.type==="firstPersonOnly"?(r.layers.set(this._firstPersonOnlyLayer),r.traverse(a=>a.layers.set(this._firstPersonOnlyLayer))):i.type==="thirdPersonOnly"?(r.layers.set(this._thirdPersonOnlyLayer),r.traverse(a=>a.layers.set(this._thirdPersonOnlyLayer))):i.type==="auto"&&this._createHeadlessModel(r)})}),this._initializedLayers=!0)}_excludeTriangles(e,t,i,r){let a=0;if(t!=null&&t.length>0)for(let s=0;s0&&r.includes(f[0])||d[1]>0&&r.includes(f[1])||d[2]>0&&r.includes(f[2])||d[3]>0&&r.includes(f[3]))continue;const p=t[l],m=i[l];if(p[0]>0&&r.includes(m[0])||p[1]>0&&r.includes(m[1])||p[2]>0&&r.includes(m[2])||p[3]>0&&r.includes(m[3]))continue;const v=t[u],x=i[u];v[0]>0&&r.includes(x[0])||v[1]>0&&r.includes(x[1])||v[2]>0&&r.includes(x[2])||v[3]>0&&r.includes(x[3])||(e[a++]=o,e[a++]=l,e[a++]=u)}return a}_createErasedMesh(e,t){const i=new FS(e.geometry.clone(),e.material);i.name=`${e.name}(erase)`,i.frustumCulled=e.frustumCulled,i.layers.set(this._firstPersonOnlyLayer);const r=i.geometry,a=r.getAttribute("skinIndex"),s=a instanceof X3?[]:a.array,o=[];for(let x=0;x{this._isEraseTarget(a)&&i.push(s)}),!i.length){t.layers.enable(this._thirdPersonOnlyLayer),t.layers.enable(this._firstPersonOnlyLayer);return}t.layers.set(this._thirdPersonOnlyLayer);const r=this._createErasedMesh(t,i);e.add(r)}_createHeadlessModel(e){if(e.type==="Group")if(e.layers.set(this._thirdPersonOnlyLayer),this._isEraseTarget(e))e.traverse(t=>t.layers.set(this._thirdPersonOnlyLayer));else{const t=new Xi;t.name=`_headless_${e.name}`,t.layers.set(this._firstPersonOnlyLayer),e.parent.add(t),e.children.filter(i=>i.type==="SkinnedMesh").forEach(i=>{const r=i;this._createHeadlessModelForSkinnedMesh(t,r)})}else if(e.type==="SkinnedMesh"){const t=e;this._createHeadlessModelForSkinnedMesh(e.parent,t)}else this._isEraseTarget(e)&&(e.layers.set(this._thirdPersonOnlyLayer),e.traverse(t=>t.layers.set(this._thirdPersonOnlyLayer)))}_isEraseTarget(e){return e===this.humanoid.getRawBoneNode("head")?!0:e.parent?this._isEraseTarget(e.parent):!1}};UR.DEFAULT_FIRSTPERSON_ONLY_LAYER=9;UR.DEFAULT_THIRDPERSON_ONLY_LAYER=10;var jL=UR,Kee=new Set(["1.0","1.0-beta"]),Jee=class{get name(){return"VRMFirstPersonLoaderPlugin"}constructor(n){this.parser=n}afterRoot(n){return yn(this,null,function*(){const e=n.userData.vrmHumanoid;if(e!==null){if(e===void 0)throw new Error("VRMFirstPersonLoaderPlugin: vrmHumanoid is undefined. VRMHumanoidLoaderPlugin have to be used first");n.userData.vrmFirstPerson=yield this._import(n,e)}})}_import(n,e){return yn(this,null,function*(){if(e==null)return null;const t=yield this._v1Import(n,e);if(t)return t;const i=yield this._v0Import(n,e);return i||null})}_v1Import(n,e){return yn(this,null,function*(){var t,i;const r=this.parser.json;if(!(((t=r.extensionsUsed)==null?void 0:t.indexOf("VRMC_vrm"))!==-1))return null;const s=(i=r.extensions)==null?void 0:i.VRMC_vrm;if(!s)return null;const o=s.specVersion;if(!Kee.has(o))return console.warn(`VRMFirstPersonLoaderPlugin: Unknown VRMC_vrm specVersion "${o}"`),null;const l=s.firstPerson,u=[],d=yield kL(n);return Array.from(d.entries()).forEach(([f,p])=>{var m,v;const x=(m=l==null?void 0:l.meshAnnotations)==null?void 0:m.find(S=>S.node===f);u.push({meshes:p,type:(v=x==null?void 0:x.type)!=null?v:"auto"})}),new jL(e,u)})}_v0Import(n,e){return yn(this,null,function*(){var t;const i=this.parser.json,r=(t=i.extensions)==null?void 0:t.VRM;if(!r)return null;const a=r.firstPerson;if(!a)return null;const s=[],o=yield kL(n);return Array.from(o.entries()).forEach(([l,u])=>{const d=i.nodes[l],f=a.meshAnnotations?a.meshAnnotations.find(p=>p.mesh===d.mesh):void 0;s.push({meshes:u,type:this._convertV0FlagToV1Type(f==null?void 0:f.firstPersonFlag)})}),new jL(e,s)})}_convertV0FlagToV1Type(n){return n==="FirstPersonOnly"?"firstPersonOnly":n==="ThirdPersonOnly"?"thirdPersonOnly":n==="Both"?"both":"auto"}},ZL=new D,QL=new D,$ee=new ft,KL=class extends Xi{constructor(n){super(),this.vrmHumanoid=n,this._boneAxesMap=new Map,Object.values(n.humanBones).forEach(e=>{const t=new w7(1);t.matrixAutoUpdate=!1,t.material.depthTest=!1,t.material.depthWrite=!1,this.add(t),this._boneAxesMap.set(e,t)})}dispose(){Array.from(this._boneAxesMap.values()).forEach(n=>{n.geometry.dispose(),n.material.dispose()})}updateMatrixWorld(n){Array.from(this._boneAxesMap.entries()).forEach(([e,t])=>{e.node.updateWorldMatrix(!0,!1),e.node.matrixWorld.decompose(ZL,$ee,QL);const i=ZL.set(.1,.1,.1).divide(QL);t.matrix.copy(e.node.matrixWorld).scale(i)}),super.updateMatrixWorld(n)}},Lb=["hips","spine","chest","upperChest","neck","head","leftEye","rightEye","jaw","leftUpperLeg","leftLowerLeg","leftFoot","leftToes","rightUpperLeg","rightLowerLeg","rightFoot","rightToes","leftShoulder","leftUpperArm","leftLowerArm","leftHand","rightShoulder","rightUpperArm","rightLowerArm","rightHand","leftThumbMetacarpal","leftThumbProximal","leftThumbDistal","leftIndexProximal","leftIndexIntermediate","leftIndexDistal","leftMiddleProximal","leftMiddleIntermediate","leftMiddleDistal","leftRingProximal","leftRingIntermediate","leftRingDistal","leftLittleProximal","leftLittleIntermediate","leftLittleDistal","rightThumbMetacarpal","rightThumbProximal","rightThumbDistal","rightIndexProximal","rightIndexIntermediate","rightIndexDistal","rightMiddleProximal","rightMiddleIntermediate","rightMiddleDistal","rightRingProximal","rightRingIntermediate","rightRingDistal","rightLittleProximal","rightLittleIntermediate","rightLittleDistal"],ete={hips:null,spine:"hips",chest:"spine",upperChest:"chest",neck:"upperChest",head:"neck",leftEye:"head",rightEye:"head",jaw:"head",leftUpperLeg:"hips",leftLowerLeg:"leftUpperLeg",leftFoot:"leftLowerLeg",leftToes:"leftFoot",rightUpperLeg:"hips",rightLowerLeg:"rightUpperLeg",rightFoot:"rightLowerLeg",rightToes:"rightFoot",leftShoulder:"upperChest",leftUpperArm:"leftShoulder",leftLowerArm:"leftUpperArm",leftHand:"leftLowerArm",rightShoulder:"upperChest",rightUpperArm:"rightShoulder",rightLowerArm:"rightUpperArm",rightHand:"rightLowerArm",leftThumbMetacarpal:"leftHand",leftThumbProximal:"leftThumbMetacarpal",leftThumbDistal:"leftThumbProximal",leftIndexProximal:"leftHand",leftIndexIntermediate:"leftIndexProximal",leftIndexDistal:"leftIndexIntermediate",leftMiddleProximal:"leftHand",leftMiddleIntermediate:"leftMiddleProximal",leftMiddleDistal:"leftMiddleIntermediate",leftRingProximal:"leftHand",leftRingIntermediate:"leftRingProximal",leftRingDistal:"leftRingIntermediate",leftLittleProximal:"leftHand",leftLittleIntermediate:"leftLittleProximal",leftLittleDistal:"leftLittleIntermediate",rightThumbMetacarpal:"rightHand",rightThumbProximal:"rightThumbMetacarpal",rightThumbDistal:"rightThumbProximal",rightIndexProximal:"rightHand",rightIndexIntermediate:"rightIndexProximal",rightIndexDistal:"rightIndexIntermediate",rightMiddleProximal:"rightHand",rightMiddleIntermediate:"rightMiddleProximal",rightMiddleDistal:"rightMiddleIntermediate",rightRingProximal:"rightHand",rightRingIntermediate:"rightRingProximal",rightRingDistal:"rightRingIntermediate",rightLittleProximal:"rightHand",rightLittleIntermediate:"rightLittleProximal",rightLittleDistal:"rightLittleIntermediate"};function Ez(n){return n.invert?n.invert():n.inverse(),n}var qu=new D,Yu=new ft,sA=class{constructor(n){this.humanBones=n,this.restPose=this.getAbsolutePose()}getAbsolutePose(){const n={};return Object.keys(this.humanBones).forEach(e=>{const t=e,i=this.getBoneNode(t);i&&(qu.copy(i.position),Yu.copy(i.quaternion),n[t]={position:qu.toArray(),rotation:Yu.toArray()})}),n}getPose(){const n={};return Object.keys(this.humanBones).forEach(e=>{const t=e,i=this.getBoneNode(t);if(!i)return;qu.set(0,0,0),Yu.identity();const r=this.restPose[t];r!=null&&r.position&&qu.fromArray(r.position).negate(),r!=null&&r.rotation&&Ez(Yu.fromArray(r.rotation)),qu.add(i.position),Yu.premultiply(i.quaternion),n[t]={position:qu.toArray(),rotation:Yu.toArray()}}),n}setPose(n){Object.entries(n).forEach(([e,t])=>{const i=e,r=this.getBoneNode(i);if(!r)return;const a=this.restPose[i];a&&(t!=null&&t.position&&(r.position.fromArray(t.position),a.position&&r.position.add(qu.fromArray(a.position))),t!=null&&t.rotation&&(r.quaternion.fromArray(t.rotation),a.rotation&&r.quaternion.multiply(Yu.fromArray(a.rotation))))})}resetPose(){Object.entries(this.restPose).forEach(([n,e])=>{const t=this.getBoneNode(n);t&&(e!=null&&e.position&&t.position.fromArray(e.position),e!=null&&e.rotation&&t.quaternion.fromArray(e.rotation))})}getBone(n){var e;return(e=this.humanBones[n])!=null?e:void 0}getBoneNode(n){var e,t;return(t=(e=this.humanBones[n])==null?void 0:e.node)!=null?t:null}},Ib=new D,tte=new ft,nte=new D,JL=class bz extends sA{static _setupTransforms(e){const t=new Xt;t.name="VRMHumanoidRig";const i={},r={},a={};Lb.forEach(o=>{var l;const u=e.getBoneNode(o);if(u){const d=new D,f=new ft;u.updateWorldMatrix(!0,!1),u.matrixWorld.decompose(d,f,Ib),i[o]=d,r[o]=u.quaternion.clone();const p=new ft;(l=u.parent)==null||l.matrixWorld.decompose(Ib,p,Ib),a[o]=p}});const s={};return Lb.forEach(o=>{var l;const u=e.getBoneNode(o);if(u){const d=i[o];let f=o,p;for(;p==null&&(f=ete[f],f!=null);)p=i[f];const m=new Xt;m.name="Normalized_"+u.name,(f?(l=s[f])==null?void 0:l.node:t).add(m),m.position.copy(d),p&&m.position.sub(p),s[o]={node:m}}}),{rigBones:s,root:t,parentWorldRotations:a,boneRotations:r}}constructor(e){const{rigBones:t,root:i,parentWorldRotations:r,boneRotations:a}=bz._setupTransforms(e);super(t),this.original=e,this.root=i,this._parentWorldRotations=r,this._boneRotations=a}update(){Lb.forEach(e=>{const t=this.original.getBoneNode(e);if(t!=null){const i=this.getBoneNode(e),r=this._parentWorldRotations[e],a=tte.copy(r).invert(),s=this._boneRotations[e];if(t.quaternion.copy(i.quaternion).multiply(r).premultiply(a).multiply(s),e==="hips"){const o=i.getWorldPosition(nte);t.parent.updateWorldMatrix(!0,!1);const l=t.parent.matrixWorld,u=o.applyMatrix4(l.invert());t.position.copy(u)}}})}},$L=class Mz{get restPose(){return console.warn("VRMHumanoid: restPose is deprecated. Use either rawRestPose or normalizedRestPose instead."),this.rawRestPose}get rawRestPose(){return this._rawHumanBones.restPose}get normalizedRestPose(){return this._normalizedHumanBones.restPose}get humanBones(){return this._rawHumanBones.humanBones}get rawHumanBones(){return this._rawHumanBones.humanBones}get normalizedHumanBones(){return this._normalizedHumanBones.humanBones}get normalizedHumanBonesRoot(){return this._normalizedHumanBones.root}constructor(e,t){var i;this.autoUpdateHumanBones=(i=t==null?void 0:t.autoUpdateHumanBones)!=null?i:!0,this._rawHumanBones=new sA(e),this._normalizedHumanBones=new JL(this._rawHumanBones)}copy(e){return this.autoUpdateHumanBones=e.autoUpdateHumanBones,this._rawHumanBones=new sA(e.humanBones),this._normalizedHumanBones=new JL(this._rawHumanBones),this}clone(){return new Mz(this.humanBones,{autoUpdateHumanBones:this.autoUpdateHumanBones}).copy(this)}getAbsolutePose(){return console.warn("VRMHumanoid: getAbsolutePose() is deprecated. Use either getRawAbsolutePose() or getNormalizedAbsolutePose() instead."),this.getRawAbsolutePose()}getRawAbsolutePose(){return this._rawHumanBones.getAbsolutePose()}getNormalizedAbsolutePose(){return this._normalizedHumanBones.getAbsolutePose()}getPose(){return console.warn("VRMHumanoid: getPose() is deprecated. Use either getRawPose() or getNormalizedPose() instead."),this.getRawPose()}getRawPose(){return this._rawHumanBones.getPose()}getNormalizedPose(){return this._normalizedHumanBones.getPose()}setPose(e){return console.warn("VRMHumanoid: setPose() is deprecated. Use either setRawPose() or setNormalizedPose() instead."),this.setRawPose(e)}setRawPose(e){return this._rawHumanBones.setPose(e)}setNormalizedPose(e){return this._normalizedHumanBones.setPose(e)}resetPose(){return console.warn("VRMHumanoid: resetPose() is deprecated. Use either resetRawPose() or resetNormalizedPose() instead."),this.resetRawPose()}resetRawPose(){return this._rawHumanBones.resetPose()}resetNormalizedPose(){return this._normalizedHumanBones.resetPose()}getBone(e){return console.warn("VRMHumanoid: getBone() is deprecated. Use either getRawBone() or getNormalizedBone() instead."),this.getRawBone(e)}getRawBone(e){return this._rawHumanBones.getBone(e)}getNormalizedBone(e){return this._normalizedHumanBones.getBone(e)}getBoneNode(e){return console.warn("VRMHumanoid: getBoneNode() is deprecated. Use either getRawBoneNode() or getNormalizedBoneNode() instead."),this.getRawBoneNode(e)}getRawBoneNode(e){return this._rawHumanBones.getBoneNode(e)}getNormalizedBoneNode(e){return this._normalizedHumanBones.getBoneNode(e)}update(){this.autoUpdateHumanBones&&this._normalizedHumanBones.update()}},ite={Hips:"hips",Spine:"spine",Head:"head",LeftUpperLeg:"leftUpperLeg",LeftLowerLeg:"leftLowerLeg",LeftFoot:"leftFoot",RightUpperLeg:"rightUpperLeg",RightLowerLeg:"rightLowerLeg",RightFoot:"rightFoot",LeftUpperArm:"leftUpperArm",LeftLowerArm:"leftLowerArm",LeftHand:"leftHand",RightUpperArm:"rightUpperArm",RightLowerArm:"rightLowerArm",RightHand:"rightHand"},rte=new Set(["1.0","1.0-beta"]),eI={leftThumbProximal:"leftThumbMetacarpal",leftThumbIntermediate:"leftThumbProximal",rightThumbProximal:"rightThumbMetacarpal",rightThumbIntermediate:"rightThumbProximal"},ate=class{get name(){return"VRMHumanoidLoaderPlugin"}constructor(n,e){this.parser=n,this.helperRoot=e==null?void 0:e.helperRoot,this.autoUpdateHumanBones=e==null?void 0:e.autoUpdateHumanBones}afterRoot(n){return yn(this,null,function*(){n.userData.vrmHumanoid=yield this._import(n)})}_import(n){return yn(this,null,function*(){const e=yield this._v1Import(n);if(e)return e;const t=yield this._v0Import(n);return t||null})}_v1Import(n){return yn(this,null,function*(){var e,t;const i=this.parser.json;if(!(((e=i.extensionsUsed)==null?void 0:e.indexOf("VRMC_vrm"))!==-1))return null;const a=(t=i.extensions)==null?void 0:t.VRMC_vrm;if(!a)return null;const s=a.specVersion;if(!rte.has(s))return console.warn(`VRMHumanoidLoaderPlugin: Unknown VRMC_vrm specVersion "${s}"`),null;const o=a.humanoid;if(!o)return null;const l=o.humanBones.leftThumbIntermediate!=null||o.humanBones.rightThumbIntermediate!=null,u={};o.humanBones!=null&&(yield Promise.all(Object.entries(o.humanBones).map(f=>yn(this,[f],function*([p,m]){let v=p;const x=m.node;if(l){const _=eI[v];_!=null&&(v=_)}const S=yield this.parser.getDependency("node",x);if(S==null){console.warn(`A glTF node bound to the humanoid bone ${v} (index = ${x}) does not exist`);return}u[v]={node:S}}))));const d=new $L(this._ensureRequiredBonesExist(u),{autoUpdateHumanBones:this.autoUpdateHumanBones});if(n.scene.add(d.normalizedHumanBonesRoot),this.helperRoot){const f=new KL(d);this.helperRoot.add(f),f.renderOrder=this.helperRoot.renderOrder}return d})}_v0Import(n){return yn(this,null,function*(){var e;const i=(e=this.parser.json.extensions)==null?void 0:e.VRM;if(!i)return null;const r=i.humanoid;if(!r)return null;const a={};r.humanBones!=null&&(yield Promise.all(r.humanBones.map(o=>yn(this,null,function*(){const l=o.bone,u=o.node;if(l==null||u==null)return;const d=yield this.parser.getDependency("node",u);if(d==null){console.warn(`A glTF node bound to the humanoid bone ${l} (index = ${u}) does not exist`);return}const f=eI[l],p=f??l;if(a[p]!=null){console.warn(`Multiple bone entries for ${p} detected (index = ${u}), ignoring duplicated entries.`);return}a[p]={node:d}}))));const s=new $L(this._ensureRequiredBonesExist(a),{autoUpdateHumanBones:this.autoUpdateHumanBones});if(n.scene.add(s.normalizedHumanBonesRoot),this.helperRoot){const o=new KL(s);this.helperRoot.add(o),o.renderOrder=this.helperRoot.renderOrder}return s})}_ensureRequiredBonesExist(n){const e=Object.values(ite).filter(t=>n[t]==null);if(e.length>0)throw new Error(`VRMHumanoidLoaderPlugin: These humanoid bones are required but not exist: ${e.join(", ")}`);return n}},tI=class extends Ct{constructor(){super(),this._currentTheta=0,this._currentRadius=0,this.theta=0,this.radius=0,this._currentTheta=0,this._currentRadius=0,this._attrPos=new bt(new Float32Array(65*3),3),this.setAttribute("position",this._attrPos),this._attrIndex=new bt(new Uint16Array(3*63),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let n=!1;this._currentTheta!==this.theta&&(this._currentTheta=this.theta,n=!0),this._currentRadius!==this.radius&&(this._currentRadius=this.radius,n=!0),n&&this._buildPosition()}_buildPosition(){this._attrPos.setXYZ(0,0,0,0);for(let n=0;n<64;n++){const e=n/63*this._currentTheta;this._attrPos.setXYZ(n+1,this._currentRadius*Math.sin(e),0,this._currentRadius*Math.cos(e))}this._attrPos.needsUpdate=!0}_buildIndex(){for(let n=0;n<63;n++)this._attrIndex.setXYZ(n*3,0,n+1,n+2);this._attrIndex.needsUpdate=!0}},ste=class extends Ct{constructor(){super(),this.radius=0,this._currentRadius=0,this.tail=new D,this._currentTail=new D,this._attrPos=new bt(new Float32Array(294),3),this.setAttribute("position",this._attrPos),this._attrIndex=new bt(new Uint16Array(194),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let n=!1;this._currentRadius!==this.radius&&(this._currentRadius=this.radius,n=!0),this._currentTail.equals(this.tail)||(this._currentTail.copy(this.tail),n=!0),n&&this._buildPosition()}_buildPosition(){for(let n=0;n<32;n++){const e=n/16*Math.PI;this._attrPos.setXYZ(n,Math.cos(e),Math.sin(e),0),this._attrPos.setXYZ(32+n,0,Math.cos(e),Math.sin(e)),this._attrPos.setXYZ(64+n,Math.sin(e),0,Math.cos(e))}this.scale(this._currentRadius,this._currentRadius,this._currentRadius),this.translate(this._currentTail.x,this._currentTail.y,this._currentTail.z),this._attrPos.setXYZ(96,0,0,0),this._attrPos.setXYZ(97,this._currentTail.x,this._currentTail.y,this._currentTail.z),this._attrPos.needsUpdate=!0}_buildIndex(){for(let n=0;n<32;n++){const e=(n+1)%32;this._attrIndex.setXY(n*2,n,e),this._attrIndex.setXY(64+n*2,32+n,32+e),this._attrIndex.setXY(128+n*2,64+n,64+e)}this._attrIndex.setXY(192,96,97),this._attrIndex.needsUpdate=!0}},ux=new ft,nI=new ft,Jm=new D,iI=new D,rI=Math.sqrt(2)/2,ote=new ft(0,0,-rI,rI),lte=new D(0,1,0),cte=class extends Xi{constructor(n){super(),this.matrixAutoUpdate=!1,this.vrmLookAt=n;{const e=new tI;e.radius=.5;const t=new Sr({color:65280,transparent:!0,opacity:.5,side:xr,depthTest:!1,depthWrite:!1});this._meshPitch=new jn(e,t),this.add(this._meshPitch)}{const e=new tI;e.radius=.5;const t=new Sr({color:16711680,transparent:!0,opacity:.5,side:xr,depthTest:!1,depthWrite:!1});this._meshYaw=new jn(e,t),this.add(this._meshYaw)}{const e=new ste;e.radius=.1;const t=new Yi({color:16777215,depthTest:!1,depthWrite:!1});this._lineTarget=new va(e,t),this._lineTarget.frustumCulled=!1,this.add(this._lineTarget)}}dispose(){this._meshYaw.geometry.dispose(),this._meshYaw.material.dispose(),this._meshPitch.geometry.dispose(),this._meshPitch.material.dispose(),this._lineTarget.geometry.dispose(),this._lineTarget.material.dispose()}updateMatrixWorld(n){const e=ht.DEG2RAD*this.vrmLookAt.yaw;this._meshYaw.geometry.theta=e,this._meshYaw.geometry.update();const t=ht.DEG2RAD*this.vrmLookAt.pitch;this._meshPitch.geometry.theta=t,this._meshPitch.geometry.update(),this.vrmLookAt.getLookAtWorldPosition(Jm),this.vrmLookAt.getLookAtWorldQuaternion(ux),ux.multiply(this.vrmLookAt.getFaceFrontQuaternion(nI)),this._meshYaw.position.copy(Jm),this._meshYaw.quaternion.copy(ux),this._meshPitch.position.copy(Jm),this._meshPitch.quaternion.copy(ux),this._meshPitch.quaternion.multiply(nI.setFromAxisAngle(lte,e)),this._meshPitch.quaternion.multiply(ote);const{target:i,autoUpdate:r}=this.vrmLookAt;i!=null&&r&&(i.getWorldPosition(iI).sub(Jm),this._lineTarget.geometry.tail.copy(iI),this._lineTarget.geometry.update(),this._lineTarget.position.copy(Jm)),super.updateMatrixWorld(n)}},ute=new D,hte=new D;function oA(n,e){return n.matrixWorld.decompose(ute,e,hte),e}function d1(n){return[Math.atan2(-n.z,n.x),Math.atan2(n.y,Math.sqrt(n.x*n.x+n.z*n.z))]}function aI(n){const e=Math.round(n/2/Math.PI);return n-2*Math.PI*e}var sI=new D(0,0,1),dte=new D,fte=new D,pte=new D,mte=new ft,Ub=new ft,oI=new ft,gte=new ft,Pb=new Ai,Az=class wz{constructor(e,t){this.offsetFromHeadBone=new D,this.autoUpdate=!0,this.faceFront=new D(0,0,1),this.humanoid=e,this.applier=t,this._yaw=0,this._pitch=0,this._needsUpdate=!0,this._restHeadWorldQuaternion=this.getLookAtWorldQuaternion(new ft)}get yaw(){return this._yaw}set yaw(e){this._yaw=e,this._needsUpdate=!0}get pitch(){return this._pitch}set pitch(e){this._pitch=e,this._needsUpdate=!0}get euler(){return console.warn("VRMLookAt: euler is deprecated. use getEuler() instead."),this.getEuler(new Ai)}getEuler(e){return e.set(ht.DEG2RAD*this._pitch,ht.DEG2RAD*this._yaw,0,"YXZ")}copy(e){if(this.humanoid!==e.humanoid)throw new Error("VRMLookAt: humanoid must be same in order to copy");return this.offsetFromHeadBone.copy(e.offsetFromHeadBone),this.applier=e.applier,this.autoUpdate=e.autoUpdate,this.target=e.target,this.faceFront.copy(e.faceFront),this}clone(){return new wz(this.humanoid,this.applier).copy(this)}reset(){this._yaw=0,this._pitch=0,this._needsUpdate=!0}getLookAtWorldPosition(e){const t=this.humanoid.getRawBoneNode("head");return e.copy(this.offsetFromHeadBone).applyMatrix4(t.matrixWorld)}getLookAtWorldQuaternion(e){const t=this.humanoid.getRawBoneNode("head");return oA(t,e)}getFaceFrontQuaternion(e){if(this.faceFront.distanceToSquared(sI)<.01)return e.copy(this._restHeadWorldQuaternion).invert();const[t,i]=d1(this.faceFront);return Pb.set(0,.5*Math.PI+t,i,"YZX"),e.setFromEuler(Pb).premultiply(gte.copy(this._restHeadWorldQuaternion).invert())}getLookAtWorldDirection(e){return this.getLookAtWorldQuaternion(Ub),this.getFaceFrontQuaternion(oI),e.copy(sI).applyQuaternion(Ub).applyQuaternion(oI).applyEuler(this.getEuler(Pb))}lookAt(e){const t=mte.copy(this._restHeadWorldQuaternion).multiply(Ez(this.getLookAtWorldQuaternion(Ub))),i=this.getLookAtWorldPosition(fte),r=pte.copy(e).sub(i).applyQuaternion(t).normalize(),[a,s]=d1(this.faceFront),[o,l]=d1(r),u=aI(o-a),d=aI(s-l);this._yaw=ht.RAD2DEG*u,this._pitch=ht.RAD2DEG*d,this._needsUpdate=!0}update(e){this.target!=null&&this.autoUpdate&&this.lookAt(this.target.getWorldPosition(dte)),this._needsUpdate&&(this._needsUpdate=!1,this.applier.applyYawPitch(this._yaw,this._pitch))}};Az.EULER_ORDER="YXZ";var vte=Az,_te=new D(0,0,1),go=new ft,of=new ft,cs=new Ai(0,0,0,"YXZ"),f1=class{constructor(n,e,t,i,r){this.humanoid=n,this.rangeMapHorizontalInner=e,this.rangeMapHorizontalOuter=t,this.rangeMapVerticalDown=i,this.rangeMapVerticalUp=r,this.faceFront=new D(0,0,1),this._restQuatLeftEye=new ft,this._restQuatRightEye=new ft,this._restLeftEyeParentWorldQuat=new ft,this._restRightEyeParentWorldQuat=new ft;const a=this.humanoid.getRawBoneNode("leftEye"),s=this.humanoid.getRawBoneNode("rightEye");a&&(this._restQuatLeftEye.copy(a.quaternion),oA(a.parent,this._restLeftEyeParentWorldQuat)),s&&(this._restQuatRightEye.copy(s.quaternion),oA(s.parent,this._restRightEyeParentWorldQuat))}applyYawPitch(n,e){const t=this.humanoid.getRawBoneNode("leftEye"),i=this.humanoid.getRawBoneNode("rightEye"),r=this.humanoid.getNormalizedBoneNode("leftEye"),a=this.humanoid.getNormalizedBoneNode("rightEye");t&&(e<0?cs.x=-ht.DEG2RAD*this.rangeMapVerticalDown.map(-e):cs.x=ht.DEG2RAD*this.rangeMapVerticalUp.map(e),n<0?cs.y=-ht.DEG2RAD*this.rangeMapHorizontalInner.map(-n):cs.y=ht.DEG2RAD*this.rangeMapHorizontalOuter.map(n),go.setFromEuler(cs),this._getWorldFaceFrontQuat(of),r.quaternion.copy(of).multiply(go).multiply(of.invert()),go.copy(this._restLeftEyeParentWorldQuat),t.quaternion.copy(r.quaternion).multiply(go).premultiply(go.invert()).multiply(this._restQuatLeftEye)),i&&(e<0?cs.x=-ht.DEG2RAD*this.rangeMapVerticalDown.map(-e):cs.x=ht.DEG2RAD*this.rangeMapVerticalUp.map(e),n<0?cs.y=-ht.DEG2RAD*this.rangeMapHorizontalOuter.map(-n):cs.y=ht.DEG2RAD*this.rangeMapHorizontalInner.map(n),go.setFromEuler(cs),this._getWorldFaceFrontQuat(of),a.quaternion.copy(of).multiply(go).multiply(of.invert()),go.copy(this._restRightEyeParentWorldQuat),i.quaternion.copy(a.quaternion).multiply(go).premultiply(go.invert()).multiply(this._restQuatRightEye))}lookAt(n){console.warn("VRMLookAtBoneApplier: lookAt() is deprecated. use apply() instead.");const e=ht.RAD2DEG*n.y,t=ht.RAD2DEG*n.x;this.applyYawPitch(e,t)}_getWorldFaceFrontQuat(n){if(this.faceFront.distanceToSquared(_te)<.01)return n.identity();const[e,t]=d1(this.faceFront);return cs.set(0,.5*Math.PI+e,t,"YZX"),n.setFromEuler(cs)}};f1.type="bone";var lA=class{constructor(n,e,t,i,r){this.expressions=n,this.rangeMapHorizontalInner=e,this.rangeMapHorizontalOuter=t,this.rangeMapVerticalDown=i,this.rangeMapVerticalUp=r}applyYawPitch(n,e){e<0?(this.expressions.setValue("lookDown",0),this.expressions.setValue("lookUp",this.rangeMapVerticalUp.map(-e))):(this.expressions.setValue("lookUp",0),this.expressions.setValue("lookDown",this.rangeMapVerticalDown.map(e))),n<0?(this.expressions.setValue("lookLeft",0),this.expressions.setValue("lookRight",this.rangeMapHorizontalOuter.map(-n))):(this.expressions.setValue("lookRight",0),this.expressions.setValue("lookLeft",this.rangeMapHorizontalOuter.map(n)))}lookAt(n){console.warn("VRMLookAtBoneApplier: lookAt() is deprecated. use apply() instead.");const e=ht.RAD2DEG*n.y,t=ht.RAD2DEG*n.x;this.applyYawPitch(e,t)}};lA.type="expression";var lI=class{constructor(n,e){this.inputMaxValue=n,this.outputScale=e}map(n){return this.outputScale*mz(n/this.inputMaxValue)}},xte=new Set(["1.0","1.0-beta"]),hx=.01,yte=class{get name(){return"VRMLookAtLoaderPlugin"}constructor(n,e){this.parser=n,this.helperRoot=e==null?void 0:e.helperRoot}afterRoot(n){return yn(this,null,function*(){const e=n.userData.vrmHumanoid;if(e===null)return;if(e===void 0)throw new Error("VRMLookAtLoaderPlugin: vrmHumanoid is undefined. VRMHumanoidLoaderPlugin have to be used first");const t=n.userData.vrmExpressionManager;if(t!==null){if(t===void 0)throw new Error("VRMLookAtLoaderPlugin: vrmExpressionManager is undefined. VRMExpressionLoaderPlugin have to be used first");n.userData.vrmLookAt=yield this._import(n,e,t)}})}_import(n,e,t){return yn(this,null,function*(){if(e==null||t==null)return null;const i=yield this._v1Import(n,e,t);if(i)return i;const r=yield this._v0Import(n,e,t);return r||null})}_v1Import(n,e,t){return yn(this,null,function*(){var i,r,a;const s=this.parser.json;if(!(((i=s.extensionsUsed)==null?void 0:i.indexOf("VRMC_vrm"))!==-1))return null;const l=(r=s.extensions)==null?void 0:r.VRMC_vrm;if(!l)return null;const u=l.specVersion;if(!xte.has(u))return console.warn(`VRMLookAtLoaderPlugin: Unknown VRMC_vrm specVersion "${u}"`),null;const d=l.lookAt;if(!d)return null;const f=d.type==="expression"?1:10,p=this._v1ImportRangeMap(d.rangeMapHorizontalInner,f),m=this._v1ImportRangeMap(d.rangeMapHorizontalOuter,f),v=this._v1ImportRangeMap(d.rangeMapVerticalDown,f),x=this._v1ImportRangeMap(d.rangeMapVerticalUp,f);let S;d.type==="expression"?S=new lA(t,p,m,v,x):S=new f1(e,p,m,v,x);const _=this._importLookAt(e,S);return _.offsetFromHeadBone.fromArray((a=d.offsetFromHeadBone)!=null?a:[0,.06,0]),_})}_v1ImportRangeMap(n,e){var t,i;let r=(t=n==null?void 0:n.inputMaxValue)!=null?t:90;const a=(i=n==null?void 0:n.outputScale)!=null?i:e;return r(console.error(s),console.warn("VRMMetaLoaderPlugin: Failed to load a thumbnail image"),null))})}},bte=class{constructor(n){this.scene=n.scene,this.meta=n.meta,this.humanoid=n.humanoid,this.expressionManager=n.expressionManager,this.firstPerson=n.firstPerson,this.lookAt=n.lookAt}update(n){this.humanoid.update(),this.lookAt&&this.lookAt.update(n),this.expressionManager&&this.expressionManager.update()}},Mte=class extends bte{constructor(n){super(n),this.materials=n.materials,this.springBoneManager=n.springBoneManager,this.nodeConstraintManager=n.nodeConstraintManager}update(n){super.update(n),this.nodeConstraintManager&&this.nodeConstraintManager.update(),this.springBoneManager&&this.springBoneManager.update(n),this.materials&&this.materials.forEach(e=>{e.update&&e.update(n)})}},Ate=Object.defineProperty,cI=Object.getOwnPropertySymbols,wte=Object.prototype.hasOwnProperty,Rte=Object.prototype.propertyIsEnumerable,uI=(n,e,t)=>e in n?Ate(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,hI=(n,e)=>{for(var t in e||(e={}))wte.call(e,t)&&uI(n,t,e[t]);if(cI)for(var t of cI(e))Rte.call(e,t)&&uI(n,t,e[t]);return n},gh=(n,e,t)=>new Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())}),Cte={"":3e3,srgb:3001};function Dte(n,e){parseInt($s,10)>=152?n.colorSpace=e:n.encoding=Cte[e]}var Nte=class{get pending(){return Promise.all(this._pendings)}constructor(n,e){this._parser=n,this._materialParams=e,this._pendings=[]}assignPrimitive(n,e){e!=null&&(this._materialParams[n]=e)}assignColor(n,e,t){if(e!=null){const i=new Ye().fromArray(e);t&&i.convertSRGBToLinear(),this._materialParams[n]=i}}assignTexture(n,e,t){return gh(this,null,function*(){const i=gh(this,null,function*(){e!=null&&(yield this._parser.assignTexture(this._materialParams,n,e),t&&Dte(this._materialParams[n],"srgb"))});return this._pendings.push(i),i})}assignTextureByIndex(n,e,t){return gh(this,null,function*(){return this.assignTexture(n,e!=null?{index:e}:void 0,t)})}},Ote=`// #define PHONG varying vec3 vViewPosition; @@ -4980,7 +4980,7 @@ void main() { } `,Ite={None:"none"},dI={None:"none",ScreenCoordinates:"screenCoordinates"},Ute={3e3:"",3001:"srgb"};function zb(n){return parseInt($s,10)>=152?n.colorSpace:Ute[n.encoding]}var Pte=class extends Oi{constructor(n={}){var e;super({vertexShader:Ote,fragmentShader:Lte}),this.uvAnimationScrollXSpeedFactor=0,this.uvAnimationScrollYSpeedFactor=0,this.uvAnimationRotationSpeedFactor=0,this.fog=!0,this.normalMapType=Hl,this._ignoreVertexColor=!0,this._v0CompatShade=!1,this._debugMode=Ite.None,this._outlineWidthMode=dI.None,this._isOutline=!1,n.transparentWithZWrite&&(n.depthWrite=!0),delete n.transparentWithZWrite,n.fog=!0,n.lights=!0,n.clipping=!0,this.uniforms=oR.merge([rt.common,rt.normalmap,rt.emissivemap,rt.fog,rt.lights,{litFactor:{value:new Ye(1,1,1)},mapUvTransform:{value:new Mt},colorAlpha:{value:1},normalMapUvTransform:{value:new Mt},shadeColorFactor:{value:new Ye(0,0,0)},shadeMultiplyTexture:{value:null},shadeMultiplyTextureUvTransform:{value:new Mt},shadingShiftFactor:{value:0},shadingShiftTexture:{value:null},shadingShiftTextureUvTransform:{value:new Mt},shadingShiftTextureScale:{value:1},shadingToonyFactor:{value:.9},giEqualizationFactor:{value:.9},matcapFactor:{value:new Ye(1,1,1)},matcapTexture:{value:null},matcapTextureUvTransform:{value:new Mt},parametricRimColorFactor:{value:new Ye(0,0,0)},rimMultiplyTexture:{value:null},rimMultiplyTextureUvTransform:{value:new Mt},rimLightingMixFactor:{value:1},parametricRimFresnelPowerFactor:{value:5},parametricRimLiftFactor:{value:0},emissive:{value:new Ye(0,0,0)},emissiveIntensity:{value:1},emissiveMapUvTransform:{value:new Mt},outlineWidthMultiplyTexture:{value:null},outlineWidthMultiplyTextureUvTransform:{value:new Mt},outlineWidthFactor:{value:0},outlineColorFactor:{value:new Ye(0,0,0)},outlineLightingMixFactor:{value:1},uvAnimationMaskTexture:{value:null},uvAnimationMaskTextureUvTransform:{value:new Mt},uvAnimationScrollXOffset:{value:0},uvAnimationScrollYOffset:{value:0},uvAnimationRotationPhase:{value:0}},(e=n.uniforms)!=null?e:{}]),this.setValues(n),this._uploadUniformsWorkaround(),this.customProgramCacheKey=()=>[...Object.entries(this._generateDefines()).map(([t,i])=>`${t}:${i}`),this.matcapTexture?`matcapTextureColorSpace:${zb(this.matcapTexture)}`:"",this.shadeMultiplyTexture?`shadeMultiplyTextureColorSpace:${zb(this.shadeMultiplyTexture)}`:"",this.rimMultiplyTexture?`rimMultiplyTextureColorSpace:${zb(this.rimMultiplyTexture)}`:""].join(","),this.onBeforeCompile=t=>{const i=parseInt($s,10),r=Object.entries(hI(hI({},this._generateDefines()),this.defines)).filter(([a,s])=>!!s).map(([a,s])=>`#define ${a} ${s}`).join(` `)+` -`;t.vertexShader=r+t.vertexShader,t.fragmentShader=r+t.fragmentShader,i<154&&(t.fragmentShader=t.fragmentShader.replace("#include ","#include "))}}get color(){return this.uniforms.litFactor.value}set color(n){this.uniforms.litFactor.value=n}get map(){return this.uniforms.map.value}set map(n){this.uniforms.map.value=n}get normalMap(){return this.uniforms.normalMap.value}set normalMap(n){this.uniforms.normalMap.value=n}get normalScale(){return this.uniforms.normalScale.value}set normalScale(n){this.uniforms.normalScale.value=n}get emissive(){return this.uniforms.emissive.value}set emissive(n){this.uniforms.emissive.value=n}get emissiveIntensity(){return this.uniforms.emissiveIntensity.value}set emissiveIntensity(n){this.uniforms.emissiveIntensity.value=n}get emissiveMap(){return this.uniforms.emissiveMap.value}set emissiveMap(n){this.uniforms.emissiveMap.value=n}get shadeColorFactor(){return this.uniforms.shadeColorFactor.value}set shadeColorFactor(n){this.uniforms.shadeColorFactor.value=n}get shadeMultiplyTexture(){return this.uniforms.shadeMultiplyTexture.value}set shadeMultiplyTexture(n){this.uniforms.shadeMultiplyTexture.value=n}get shadingShiftFactor(){return this.uniforms.shadingShiftFactor.value}set shadingShiftFactor(n){this.uniforms.shadingShiftFactor.value=n}get shadingShiftTexture(){return this.uniforms.shadingShiftTexture.value}set shadingShiftTexture(n){this.uniforms.shadingShiftTexture.value=n}get shadingShiftTextureScale(){return this.uniforms.shadingShiftTextureScale.value}set shadingShiftTextureScale(n){this.uniforms.shadingShiftTextureScale.value=n}get shadingToonyFactor(){return this.uniforms.shadingToonyFactor.value}set shadingToonyFactor(n){this.uniforms.shadingToonyFactor.value=n}get giEqualizationFactor(){return this.uniforms.giEqualizationFactor.value}set giEqualizationFactor(n){this.uniforms.giEqualizationFactor.value=n}get matcapFactor(){return this.uniforms.matcapFactor.value}set matcapFactor(n){this.uniforms.matcapFactor.value=n}get matcapTexture(){return this.uniforms.matcapTexture.value}set matcapTexture(n){this.uniforms.matcapTexture.value=n}get parametricRimColorFactor(){return this.uniforms.parametricRimColorFactor.value}set parametricRimColorFactor(n){this.uniforms.parametricRimColorFactor.value=n}get rimMultiplyTexture(){return this.uniforms.rimMultiplyTexture.value}set rimMultiplyTexture(n){this.uniforms.rimMultiplyTexture.value=n}get rimLightingMixFactor(){return this.uniforms.rimLightingMixFactor.value}set rimLightingMixFactor(n){this.uniforms.rimLightingMixFactor.value=n}get parametricRimFresnelPowerFactor(){return this.uniforms.parametricRimFresnelPowerFactor.value}set parametricRimFresnelPowerFactor(n){this.uniforms.parametricRimFresnelPowerFactor.value=n}get parametricRimLiftFactor(){return this.uniforms.parametricRimLiftFactor.value}set parametricRimLiftFactor(n){this.uniforms.parametricRimLiftFactor.value=n}get outlineWidthMultiplyTexture(){return this.uniforms.outlineWidthMultiplyTexture.value}set outlineWidthMultiplyTexture(n){this.uniforms.outlineWidthMultiplyTexture.value=n}get outlineWidthFactor(){return this.uniforms.outlineWidthFactor.value}set outlineWidthFactor(n){this.uniforms.outlineWidthFactor.value=n}get outlineColorFactor(){return this.uniforms.outlineColorFactor.value}set outlineColorFactor(n){this.uniforms.outlineColorFactor.value=n}get outlineLightingMixFactor(){return this.uniforms.outlineLightingMixFactor.value}set outlineLightingMixFactor(n){this.uniforms.outlineLightingMixFactor.value=n}get uvAnimationMaskTexture(){return this.uniforms.uvAnimationMaskTexture.value}set uvAnimationMaskTexture(n){this.uniforms.uvAnimationMaskTexture.value=n}get uvAnimationScrollXOffset(){return this.uniforms.uvAnimationScrollXOffset.value}set uvAnimationScrollXOffset(n){this.uniforms.uvAnimationScrollXOffset.value=n}get uvAnimationScrollYOffset(){return this.uniforms.uvAnimationScrollYOffset.value}set uvAnimationScrollYOffset(n){this.uniforms.uvAnimationScrollYOffset.value=n}get uvAnimationRotationPhase(){return this.uniforms.uvAnimationRotationPhase.value}set uvAnimationRotationPhase(n){this.uniforms.uvAnimationRotationPhase.value=n}get ignoreVertexColor(){return this._ignoreVertexColor}set ignoreVertexColor(n){this._ignoreVertexColor=n,this.needsUpdate=!0}get v0CompatShade(){return this._v0CompatShade}set v0CompatShade(n){this._v0CompatShade=n,this.needsUpdate=!0}get debugMode(){return this._debugMode}set debugMode(n){this._debugMode=n,this.needsUpdate=!0}get outlineWidthMode(){return this._outlineWidthMode}set outlineWidthMode(n){this._outlineWidthMode=n,this.needsUpdate=!0}get isOutline(){return this._isOutline}set isOutline(n){this._isOutline=n,this.needsUpdate=!0}get isMToonMaterial(){return!0}update(n){this._uploadUniformsWorkaround(),this._updateUVAnimation(n)}copy(n){return super.copy(n),this.map=n.map,this.normalMap=n.normalMap,this.emissiveMap=n.emissiveMap,this.shadeMultiplyTexture=n.shadeMultiplyTexture,this.shadingShiftTexture=n.shadingShiftTexture,this.matcapTexture=n.matcapTexture,this.rimMultiplyTexture=n.rimMultiplyTexture,this.outlineWidthMultiplyTexture=n.outlineWidthMultiplyTexture,this.uvAnimationMaskTexture=n.uvAnimationMaskTexture,this.normalMapType=n.normalMapType,this.uvAnimationScrollXSpeedFactor=n.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYSpeedFactor=n.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationSpeedFactor=n.uvAnimationRotationSpeedFactor,this.ignoreVertexColor=n.ignoreVertexColor,this.v0CompatShade=n.v0CompatShade,this.debugMode=n.debugMode,this.outlineWidthMode=n.outlineWidthMode,this.isOutline=n.isOutline,this.needsUpdate=!0,this}_updateUVAnimation(n){this.uniforms.uvAnimationScrollXOffset.value+=n*this.uvAnimationScrollXSpeedFactor,this.uniforms.uvAnimationScrollYOffset.value+=n*this.uvAnimationScrollYSpeedFactor,this.uniforms.uvAnimationRotationPhase.value+=n*this.uvAnimationRotationSpeedFactor,this.uniforms.alphaTest.value=this.alphaTest,this.uniformsNeedUpdate=!0}_uploadUniformsWorkaround(){this.uniforms.opacity.value=this.opacity,this._updateTextureMatrix(this.uniforms.map,this.uniforms.mapUvTransform),this._updateTextureMatrix(this.uniforms.normalMap,this.uniforms.normalMapUvTransform),this._updateTextureMatrix(this.uniforms.emissiveMap,this.uniforms.emissiveMapUvTransform),this._updateTextureMatrix(this.uniforms.shadeMultiplyTexture,this.uniforms.shadeMultiplyTextureUvTransform),this._updateTextureMatrix(this.uniforms.shadingShiftTexture,this.uniforms.shadingShiftTextureUvTransform),this._updateTextureMatrix(this.uniforms.matcapTexture,this.uniforms.matcapTextureUvTransform),this._updateTextureMatrix(this.uniforms.rimMultiplyTexture,this.uniforms.rimMultiplyTextureUvTransform),this._updateTextureMatrix(this.uniforms.outlineWidthMultiplyTexture,this.uniforms.outlineWidthMultiplyTextureUvTransform),this._updateTextureMatrix(this.uniforms.uvAnimationMaskTexture,this.uniforms.uvAnimationMaskTextureUvTransform),this.uniformsNeedUpdate=!0}_generateDefines(){const n=parseInt($s,10),e=this.outlineWidthMultiplyTexture!==null,t=this.map!==null||this.normalMap!==null||this.emissiveMap!==null||this.shadeMultiplyTexture!==null||this.shadingShiftTexture!==null||this.rimMultiplyTexture!==null||this.uvAnimationMaskTexture!==null;return{THREE_VRM_THREE_REVISION:n,OUTLINE:this._isOutline,MTOON_USE_UV:e||t,MTOON_UVS_VERTEX_ONLY:e&&!t,V0_COMPAT_SHADE:this._v0CompatShade,USE_SHADEMULTIPLYTEXTURE:this.shadeMultiplyTexture!==null,USE_SHADINGSHIFTTEXTURE:this.shadingShiftTexture!==null,USE_MATCAPTEXTURE:this.matcapTexture!==null,USE_RIMMULTIPLYTEXTURE:this.rimMultiplyTexture!==null,USE_OUTLINEWIDTHMULTIPLYTEXTURE:this._isOutline&&this.outlineWidthMultiplyTexture!==null,USE_UVANIMATIONMASKTEXTURE:this.uvAnimationMaskTexture!==null,IGNORE_VERTEX_COLOR:this._ignoreVertexColor===!0,DEBUG_NORMAL:this._debugMode==="normal",DEBUG_LITSHADERATE:this._debugMode==="litShadeRate",DEBUG_UV:this._debugMode==="uv",OUTLINE_WIDTH_SCREEN:this._isOutline&&this._outlineWidthMode===dI.ScreenCoordinates}}_updateTextureMatrix(n,e){n.value&&(n.value.matrixAutoUpdate&&n.value.updateMatrix(),e.value.copy(n.value.matrix))}},zte=new Set(["1.0","1.0-beta"]),Rz=class p1{get name(){return p1.EXTENSION_NAME}constructor(e,t={}){var i,r,a,s;this.parser=e,this.materialType=(i=t.materialType)!=null?i:Pte,this.renderOrderOffset=(r=t.renderOrderOffset)!=null?r:0,this.v0CompatShade=(a=t.v0CompatShade)!=null?a:!1,this.debugMode=(s=t.debugMode)!=null?s:"none",this._mToonMaterialSet=new Set}beforeRoot(){return gh(this,null,function*(){this._removeUnlitExtensionIfMToonExists()})}afterRoot(e){return gh(this,null,function*(){e.userData.vrmMToonMaterials=Array.from(this._mToonMaterialSet)})}getMaterialType(e){return this._getMToonExtension(e)?this.materialType:null}extendMaterialParams(e,t){const i=this._getMToonExtension(e);return i?this._extendMaterialParams(i,t):null}loadMesh(e){return gh(this,null,function*(){var t;const i=this.parser,a=(t=i.json.meshes)==null?void 0:t[e];if(a==null)throw new Error(`MToonMaterialLoaderPlugin: Attempt to use meshes[${e}] of glTF but the mesh doesn't exist`);const s=a.primitives,o=yield i.loadMesh(e);if(s.length===1){const l=o,u=s[0].material;u!=null&&this._setupPrimitive(l,u)}else{const l=o;for(let u=0;u{var s;this._getMToonExtension(a)&&((s=r.extensions)!=null&&s.KHR_materials_unlit)&&delete r.extensions.KHR_materials_unlit})}_getMToonExtension(e){var t,i;const s=(t=this.parser.json.materials)==null?void 0:t[e];if(s==null){console.warn(`MToonMaterialLoaderPlugin: Attempt to use materials[${e}] of glTF but the material doesn't exist`);return}const o=(i=s.extensions)==null?void 0:i[p1.EXTENSION_NAME];if(o==null)return;const l=o.specVersion;if(!zte.has(l)){console.warn(`MToonMaterialLoaderPlugin: Unknown ${p1.EXTENSION_NAME} specVersion "${l}"`);return}return o}_extendMaterialParams(e,t){return gh(this,null,function*(){var i;delete t.metalness,delete t.roughness;const r=new Nte(this.parser,t);r.assignPrimitive("transparentWithZWrite",e.transparentWithZWrite),r.assignColor("shadeColorFactor",e.shadeColorFactor),r.assignTexture("shadeMultiplyTexture",e.shadeMultiplyTexture,!0),r.assignPrimitive("shadingShiftFactor",e.shadingShiftFactor),r.assignTexture("shadingShiftTexture",e.shadingShiftTexture,!0),r.assignPrimitive("shadingShiftTextureScale",(i=e.shadingShiftTexture)==null?void 0:i.scale),r.assignPrimitive("shadingToonyFactor",e.shadingToonyFactor),r.assignPrimitive("giEqualizationFactor",e.giEqualizationFactor),r.assignColor("matcapFactor",e.matcapFactor),r.assignTexture("matcapTexture",e.matcapTexture,!0),r.assignColor("parametricRimColorFactor",e.parametricRimColorFactor),r.assignTexture("rimMultiplyTexture",e.rimMultiplyTexture,!0),r.assignPrimitive("rimLightingMixFactor",e.rimLightingMixFactor),r.assignPrimitive("parametricRimFresnelPowerFactor",e.parametricRimFresnelPowerFactor),r.assignPrimitive("parametricRimLiftFactor",e.parametricRimLiftFactor),r.assignPrimitive("outlineWidthMode",e.outlineWidthMode),r.assignPrimitive("outlineWidthFactor",e.outlineWidthFactor),r.assignTexture("outlineWidthMultiplyTexture",e.outlineWidthMultiplyTexture,!1),r.assignColor("outlineColorFactor",e.outlineColorFactor),r.assignPrimitive("outlineLightingMixFactor",e.outlineLightingMixFactor),r.assignTexture("uvAnimationMaskTexture",e.uvAnimationMaskTexture,!1),r.assignPrimitive("uvAnimationScrollXSpeedFactor",e.uvAnimationScrollXSpeedFactor),r.assignPrimitive("uvAnimationScrollYSpeedFactor",e.uvAnimationScrollYSpeedFactor),r.assignPrimitive("uvAnimationRotationSpeedFactor",e.uvAnimationRotationSpeedFactor),r.assignPrimitive("v0CompatShade",this.v0CompatShade),r.assignPrimitive("debugMode",this.debugMode),yield r.pending})}_setupPrimitive(e,t){const i=this._getMToonExtension(t);if(i){const r=this._parseRenderOrder(i);e.renderOrder=r+this.renderOrderOffset,this._generateOutline(e),this._addToMaterialSet(e);return}}_shouldGenerateOutline(e){return typeof e.outlineWidthMode=="string"&&e.outlineWidthMode!=="none"&&typeof e.outlineWidthFactor=="number"&&e.outlineWidthFactor>0}_generateOutline(e){const t=e.material;if(!(t instanceof ei)||!this._shouldGenerateOutline(t))return;e.material=[t];const i=t.clone();i.name+=" (Outline)",i.isOutline=!0,i.side=ki,e.material.push(i);const r=e.geometry,a=r.index?r.index.count:r.attributes.position.count/3;r.addGroup(0,a,0),r.addGroup(0,a,1)}_addToMaterialSet(e){const t=e.material,i=new Set;Array.isArray(t)?t.forEach(r=>i.add(r)):i.add(t);for(const r of i)this._mToonMaterialSet.add(r)}_parseRenderOrder(e){var t;return(e.transparentWithZWrite?0:19)+((t=e.renderQueueOffsetNumber)!=null?t:0)}};Rz.EXTENSION_NAME="VRMC_materials_mtoon";var Bte=Rz,Fte=(n,e,t)=>new Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())}),Cz=class cA{get name(){return cA.EXTENSION_NAME}constructor(e){this.parser=e}extendMaterialParams(e,t){return Fte(this,null,function*(){const i=this._getHDREmissiveMultiplierExtension(e);if(i==null)return;console.warn("VRMMaterialsHDREmissiveMultiplierLoaderPlugin: `VRMC_materials_hdr_emissiveMultiplier` is archived. Use `KHR_materials_emissive_strength` instead.");const r=i.emissiveMultiplier;t.emissiveIntensity=r})}_getHDREmissiveMultiplierExtension(e){var t,i;const s=(t=this.parser.json.materials)==null?void 0:t[e];if(s==null){console.warn(`VRMMaterialsHDREmissiveMultiplierLoaderPlugin: Attempt to use materials[${e}] of glTF but the material doesn't exist`);return}const o=(i=s.extensions)==null?void 0:i[cA.EXTENSION_NAME];if(o!=null)return o}};Cz.EXTENSION_NAME="VRMC_materials_hdr_emissiveMultiplier";var Hte=Cz,Vte=Object.defineProperty,Gte=Object.defineProperties,kte=Object.getOwnPropertyDescriptors,fI=Object.getOwnPropertySymbols,Wte=Object.prototype.hasOwnProperty,Xte=Object.prototype.propertyIsEnumerable,pI=(n,e,t)=>e in n?Vte(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,vo=(n,e)=>{for(var t in e||(e={}))Wte.call(e,t)&&pI(n,t,e[t]);if(fI)for(var t of fI(e))Xte.call(e,t)&&pI(n,t,e[t]);return n},mI=(n,e)=>Gte(n,kte(e)),qte=(n,e,t)=>new Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())});function lf(n){return Math.pow(n,2.2)}var Yte=class{get name(){return"VRMMaterialsV0CompatPlugin"}constructor(n){var e;this.parser=n,this._renderQueueMapTransparent=new Map,this._renderQueueMapTransparentZWrite=new Map;const t=this.parser.json;t.extensionsUsed=(e=t.extensionsUsed)!=null?e:[],t.extensionsUsed.indexOf("KHR_texture_transform")===-1&&t.extensionsUsed.push("KHR_texture_transform")}beforeRoot(){return qte(this,null,function*(){var n;const e=this.parser.json,t=(n=e.extensions)==null?void 0:n.VRM,i=t==null?void 0:t.materialProperties;i&&(this._populateRenderQueueMap(i),i.forEach((r,a)=>{var s,o;const l=(s=e.materials)==null?void 0:s[a];if(l==null){console.warn(`VRMMaterialsV0CompatPlugin: Attempt to use materials[${a}] of glTF but the material doesn't exist`);return}if(r.shader==="VRM/MToon"){const u=this._parseV0MToonProperties(r,l);e.materials[a]=u}else if((o=r.shader)!=null&&o.startsWith("VRM/Unlit")){const u=this._parseV0UnlitProperties(r,l);e.materials[a]=u}else r.shader==="VRM_USE_GLTFSHADER"||console.warn(`VRMMaterialsV0CompatPlugin: Unknown shader: ${r.shader}`)}))})}_parseV0MToonProperties(n,e){var t,i,r,a,s,o,l,u,d,f,p,m,v,x,S,_,T,E,b,R,w,L,U,N,C,z,W,K,oe,ae,X,te,Q,ce,se,De,Xe,nt,tt,xt,ve,we,Ze,de,it,wt,ct,Qe,Ee,V,Ae,Oe,Ve,Fe,$e;const Je=(i=(t=n.keywordMap)==null?void 0:t._ALPHABLEND_ON)!=null?i:!1,k=((r=n.floatProperties)==null?void 0:r._ZWrite)===1&&Je,P=this._v0ParseRenderQueue(n),he=(s=(a=n.keywordMap)==null?void 0:a._ALPHATEST_ON)!=null?s:!1,be=Je?"BLEND":he?"MASK":"OPAQUE",Ie=he?(l=(o=n.floatProperties)==null?void 0:o._Cutoff)!=null?l:.5:void 0,yt=((d=(u=n.floatProperties)==null?void 0:u._CullMode)!=null?d:2)===0,je=this._portTextureTransform(n),Tt=((p=(f=n.vectorProperties)==null?void 0:f._Color)!=null?p:[1,1,1,1]).map((I,G)=>G===3?I:lf(I)),vt=(m=n.textureProperties)==null?void 0:m._MainTex,Ue=vt!=null?{index:vt,extensions:vo({},je)}:void 0,He=(x=(v=n.floatProperties)==null?void 0:v._BumpScale)!=null?x:1,pt=(S=n.textureProperties)==null?void 0:S._BumpMap,J=pt!=null?{index:pt,scale:He,extensions:vo({},je)}:void 0,me=((T=(_=n.vectorProperties)==null?void 0:_._EmissionColor)!=null?T:[0,0,0,1]).map(lf),Le=(E=n.textureProperties)==null?void 0:E._EmissionMap,j=Le!=null?{index:Le,extensions:vo({},je)}:void 0,ke=((R=(b=n.vectorProperties)==null?void 0:b._ShadeColor)!=null?R:[.97,.81,.86,1]).map(lf),ge=(w=n.textureProperties)==null?void 0:w._ShadeTexture,We=ge!=null?{index:ge,extensions:vo({},je)}:void 0;let Ge=(U=(L=n.floatProperties)==null?void 0:L._ShadeShift)!=null?U:0,Re=(C=(N=n.floatProperties)==null?void 0:N._ShadeToony)!=null?C:.9;Re=lt.lerp(Re,1,.5+.5*Ge),Ge=-Ge-(1-Re);const at=(W=(z=n.floatProperties)==null?void 0:z._IndirectLightIntensity)!=null?W:.1,Et=at?1-at:void 0,Gt=(K=n.textureProperties)==null?void 0:K._SphereAdd,kt=Gt!=null?[1,1,1]:void 0,mi=Gt!=null?{index:Gt}:void 0,gi=(ae=(oe=n.floatProperties)==null?void 0:oe._RimLightingMix)!=null?ae:0,Po=(X=n.textureProperties)==null?void 0:X._RimTexture,ro=Po!=null?{index:Po,extensions:vo({},je)}:void 0,ao=((Q=(te=n.vectorProperties)==null?void 0:te._RimColor)!=null?Q:[0,0,0,1]).map(lf),Li=(se=(ce=n.floatProperties)==null?void 0:ce._RimFresnelPower)!=null?se:1,so=(Xe=(De=n.floatProperties)==null?void 0:De._RimLift)!=null?Xe:0,Er=["none","worldCoordinates","screenCoordinates"][(tt=(nt=n.floatProperties)==null?void 0:nt._OutlineWidthMode)!=null?tt:0];let er=(ve=(xt=n.floatProperties)==null?void 0:xt._OutlineWidth)!=null?ve:0;er=.01*er;const $r=(we=n.textureProperties)==null?void 0:we._OutlineWidthTexture,Un=$r!=null?{index:$r,extensions:vo({},je)}:void 0,Ja=((de=(Ze=n.vectorProperties)==null?void 0:Ze._OutlineColor)!=null?de:[0,0,0]).map(lf),lo=((wt=(it=n.floatProperties)==null?void 0:it._OutlineColorMode)!=null?wt:0)===1?(Qe=(ct=n.floatProperties)==null?void 0:ct._OutlineLightingMix)!=null?Qe:1:0,zo=(Ee=n.textureProperties)==null?void 0:Ee._UvAnimMaskTexture,Sa=zo!=null?{index:zo,extensions:vo({},je)}:void 0,br=(Ae=(V=n.floatProperties)==null?void 0:V._UvAnimScrollX)!=null?Ae:0;let O=(Ve=(Oe=n.floatProperties)==null?void 0:Oe._UvAnimScrollY)!=null?Ve:0;O!=null&&(O=-O);const B=($e=(Fe=n.floatProperties)==null?void 0:Fe._UvAnimRotation)!=null?$e:0,Y={specVersion:"1.0",transparentWithZWrite:k,renderQueueOffsetNumber:P,shadeColorFactor:ke,shadeMultiplyTexture:We,shadingShiftFactor:Ge,shadingToonyFactor:Re,giEqualizationFactor:Et,matcapFactor:kt,matcapTexture:mi,rimLightingMixFactor:gi,rimMultiplyTexture:ro,parametricRimColorFactor:ao,parametricRimFresnelPowerFactor:Li,parametricRimLiftFactor:so,outlineWidthMode:Er,outlineWidthFactor:er,outlineWidthMultiplyTexture:Un,outlineColorFactor:Ja,outlineLightingMixFactor:lo,uvAnimationMaskTexture:Sa,uvAnimationScrollXSpeedFactor:br,uvAnimationScrollYSpeedFactor:O,uvAnimationRotationSpeedFactor:B};return mI(vo({},e),{pbrMetallicRoughness:{baseColorFactor:Tt,baseColorTexture:Ue},normalTexture:J,emissiveTexture:j,emissiveFactor:me,alphaMode:be,alphaCutoff:Ie,doubleSided:yt,extensions:{VRMC_materials_mtoon:Y}})}_parseV0UnlitProperties(n,e){var t,i,r,a,s;const o=n.shader==="VRM/UnlitTransparentZWrite",l=n.shader==="VRM/UnlitTransparent"||o,u=this._v0ParseRenderQueue(n),d=n.shader==="VRM/UnlitCutout",f=l?"BLEND":d?"MASK":"OPAQUE",p=d?(i=(t=n.floatProperties)==null?void 0:t._Cutoff)!=null?i:.5:void 0,m=this._portTextureTransform(n),v=((a=(r=n.vectorProperties)==null?void 0:r._Color)!=null?a:[1,1,1,1]).map(lf),x=(s=n.textureProperties)==null?void 0:s._MainTex,S=x!=null?{index:x,extensions:vo({},m)}:void 0,_={specVersion:"1.0",transparentWithZWrite:o,renderQueueOffsetNumber:u,shadeColorFactor:v,shadeMultiplyTexture:S};return mI(vo({},e),{pbrMetallicRoughness:{baseColorFactor:v,baseColorTexture:S},alphaMode:f,alphaCutoff:p,extensions:{VRMC_materials_mtoon:_}})}_portTextureTransform(n){var e,t,i,r,a;const s=(e=n.vectorProperties)==null?void 0:e._MainTex;if(s==null)return{};const o=[(t=s==null?void 0:s[0])!=null?t:0,(i=s==null?void 0:s[1])!=null?i:0],l=[(r=s==null?void 0:s[2])!=null?r:1,(a=s==null?void 0:s[3])!=null?a:1];return o[1]=1-l[1]-o[1],{KHR_texture_transform:{offset:o,scale:l}}}_v0ParseRenderQueue(n){var e,t;const i=n.shader==="VRM/UnlitTransparentZWrite",r=((e=n.keywordMap)==null?void 0:e._ALPHABLEND_ON)!=null||n.shader==="VRM/UnlitTransparent"||i,a=((t=n.floatProperties)==null?void 0:t._ZWrite)===1||i;let s=0;if(r){const o=n.renderQueue;o!=null&&(a?s=this._renderQueueMapTransparentZWrite.get(o):s=this._renderQueueMapTransparent.get(o))}return s}_populateRenderQueueMap(n){const e=new Set,t=new Set;n.forEach(i=>{var r,a;const s=i.shader==="VRM/UnlitTransparentZWrite",o=((r=i.keywordMap)==null?void 0:r._ALPHABLEND_ON)!=null||i.shader==="VRM/UnlitTransparent"||s,l=((a=i.floatProperties)==null?void 0:a._ZWrite)===1||s;if(o){const u=i.renderQueue;u!=null&&(l?t.add(u):e.add(u))}}),e.size>10&&console.warn(`VRMMaterialsV0CompatPlugin: This VRM uses ${e.size} render queues for Transparent materials while VRM 1.0 only supports up to 10 render queues. The model might not be rendered correctly.`),t.size>10&&console.warn(`VRMMaterialsV0CompatPlugin: This VRM uses ${t.size} render queues for TransparentZWrite materials while VRM 1.0 only supports up to 10 render queues. The model might not be rendered correctly.`),Array.from(e).sort().forEach((i,r)=>{const a=Math.min(Math.max(r-e.size+1,-9),0);this._renderQueueMapTransparent.set(i,a)}),Array.from(t).sort().forEach((i,r)=>{const a=Math.min(Math.max(r,0),9);this._renderQueueMapTransparentZWrite.set(i,a)})}},gI=(n,e,t)=>new Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())}),dc=new D,Bb=class extends Xi{constructor(n){super(),this._attrPosition=new bt(new Float32Array([0,0,0,0,0,0]),3),this._attrPosition.setUsage(R9);const e=new Ct;e.setAttribute("position",this._attrPosition);const t=new Yi({color:16711935,depthTest:!1,depthWrite:!1});this._line=new Oo(e,t),this.add(this._line),this.constraint=n}updateMatrixWorld(n){dc.setFromMatrixPosition(this.constraint.destination.matrixWorld),this._attrPosition.setXYZ(0,dc.x,dc.y,dc.z),this.constraint.source&&dc.setFromMatrixPosition(this.constraint.source.matrixWorld),this._attrPosition.setXYZ(1,dc.x,dc.y,dc.z),this._attrPosition.needsUpdate=!0,super.updateMatrixWorld(n)}};function vI(n,e){return e.set(n.elements[12],n.elements[13],n.elements[14])}var jte=new D,Zte=new D;function Qte(n,e){return n.decompose(jte,e,Zte),e}function Vy(n){return n.invert?n.invert():n.inverse(),n}var PR=class{constructor(n,e){this.destination=n,this.source=e,this.weight=1}},Kte=new D,Jte=new D,$te=new D,ene=new ft,tne=new ft,nne=new ft,ine=class extends PR{get aimAxis(){return this._aimAxis}set aimAxis(n){this._aimAxis=n,this._v3AimAxis.set(n==="PositiveX"?1:n==="NegativeX"?-1:0,n==="PositiveY"?1:n==="NegativeY"?-1:0,n==="PositiveZ"?1:n==="NegativeZ"?-1:0)}get dependencies(){const n=new Set([this.source]);return this.destination.parent&&n.add(this.destination.parent),n}constructor(n,e){super(n,e),this._aimAxis="PositiveX",this._v3AimAxis=new D(1,0,0),this._dstRestQuat=new ft}setInitState(){this._dstRestQuat.copy(this.destination.quaternion)}update(){this.destination.updateWorldMatrix(!0,!1),this.source.updateWorldMatrix(!0,!1);const n=ene.identity(),e=tne.identity();this.destination.parent&&(Qte(this.destination.parent.matrixWorld,n),Vy(e.copy(n)));const t=Kte.copy(this._v3AimAxis).applyQuaternion(this._dstRestQuat).applyQuaternion(n),i=vI(this.source.matrixWorld,Jte).sub(vI(this.destination.matrixWorld,$te)).normalize(),r=nne.setFromUnitVectors(t,i).premultiply(e).multiply(n).multiply(this._dstRestQuat);this.destination.quaternion.copy(this._dstRestQuat).slerp(r,this.weight)}};function rne(n,e){const t=[n];let i=n.parent;for(;i!==null;)t.unshift(i),i=i.parent;t.forEach(r=>{e(r)})}var ane=class{constructor(){this._constraints=new Set,this._objectConstraintsMap=new Map}get constraints(){return this._constraints}addConstraint(n){this._constraints.add(n);let e=this._objectConstraintsMap.get(n.destination);e==null&&(e=new Set,this._objectConstraintsMap.set(n.destination,e)),e.add(n)}deleteConstraint(n){this._constraints.delete(n),this._objectConstraintsMap.get(n.destination).delete(n)}setInitState(){const n=new Set,e=new Set;for(const t of this._constraints)this._processConstraint(t,n,e,i=>i.setInitState())}update(){const n=new Set,e=new Set;for(const t of this._constraints)this._processConstraint(t,n,e,i=>i.update())}_processConstraint(n,e,t,i){if(t.has(n))return;if(e.has(n))throw new Error("VRMNodeConstraintManager: Circular dependency detected while updating constraints");e.add(n);const r=n.dependencies;for(const a of r)rne(a,s=>{const o=this._objectConstraintsMap.get(s);if(o)for(const l of o)this._processConstraint(l,e,t,i)});i(n),t.add(n)}},sne=new ft,one=new ft,lne=class extends PR{get dependencies(){return new Set([this.source])}constructor(n,e){super(n,e),this._dstRestQuat=new ft,this._invSrcRestQuat=new ft}setInitState(){this._dstRestQuat.copy(this.destination.quaternion),Vy(this._invSrcRestQuat.copy(this.source.quaternion))}update(){const n=sne.copy(this._invSrcRestQuat).multiply(this.source.quaternion),e=one.copy(this._dstRestQuat).multiply(n);this.destination.quaternion.copy(this._dstRestQuat).slerp(e,this.weight)}},cne=new D,une=new ft,hne=new ft,dne=class extends PR{get rollAxis(){return this._rollAxis}set rollAxis(n){this._rollAxis=n,this._v3RollAxis.set(n==="X"?1:0,n==="Y"?1:0,n==="Z"?1:0)}get dependencies(){return new Set([this.source])}constructor(n,e){super(n,e),this._rollAxis="X",this._v3RollAxis=new D(1,0,0),this._dstRestQuat=new ft,this._invDstRestQuat=new ft,this._invSrcRestQuatMulDstRestQuat=new ft}setInitState(){this._dstRestQuat.copy(this.destination.quaternion),Vy(this._invDstRestQuat.copy(this._dstRestQuat)),Vy(this._invSrcRestQuatMulDstRestQuat.copy(this.source.quaternion)).multiply(this._dstRestQuat)}update(){const n=une.copy(this._invDstRestQuat).multiply(this.source.quaternion).multiply(this._invSrcRestQuatMulDstRestQuat),e=cne.copy(this._v3RollAxis).applyQuaternion(n),i=hne.setFromUnitVectors(e,this._v3RollAxis).premultiply(this._dstRestQuat).multiply(n);this.destination.quaternion.copy(this._dstRestQuat).slerp(i,this.weight)}},fne=new Set(["1.0","1.0-beta"]),Dz=class C0{get name(){return C0.EXTENSION_NAME}constructor(e,t){this.parser=e,this.helperRoot=t==null?void 0:t.helperRoot}afterRoot(e){return gI(this,null,function*(){e.userData.vrmNodeConstraintManager=yield this._import(e)})}_import(e){return gI(this,null,function*(){var t;const i=this.parser.json;if(!(((t=i.extensionsUsed)==null?void 0:t.indexOf(C0.EXTENSION_NAME))!==-1))return null;const a=new ane,s=yield this.parser.getDependencies("node");return s.forEach((o,l)=>{var u;const d=i.nodes[l],f=(u=d==null?void 0:d.extensions)==null?void 0:u[C0.EXTENSION_NAME];if(f==null)return;const p=f.specVersion;if(!fne.has(p)){console.warn(`VRMNodeConstraintLoaderPlugin: Unknown ${C0.EXTENSION_NAME} specVersion "${p}"`);return}const m=f.constraint;if(m.roll!=null){const v=this._importRollConstraint(o,s,m.roll);a.addConstraint(v)}else if(m.aim!=null){const v=this._importAimConstraint(o,s,m.aim);a.addConstraint(v)}else if(m.rotation!=null){const v=this._importRotationConstraint(o,s,m.rotation);a.addConstraint(v)}}),e.scene.updateMatrixWorld(),a.setInitState(),a})}_importRollConstraint(e,t,i){const{source:r,rollAxis:a,weight:s}=i,o=t[r],l=new dne(e,o);if(a!=null&&(l.rollAxis=a),s!=null&&(l.weight=s),this.helperRoot){const u=new Bb(l);this.helperRoot.add(u)}return l}_importAimConstraint(e,t,i){const{source:r,aimAxis:a,weight:s}=i,o=t[r],l=new ine(e,o);if(a!=null&&(l.aimAxis=a),s!=null&&(l.weight=s),this.helperRoot){const u=new Bb(l);this.helperRoot.add(u)}return l}_importRotationConstraint(e,t,i){const{source:r,weight:a}=i,s=t[r],o=new lne(e,s);if(a!=null&&(o.weight=a),this.helperRoot){const l=new Bb(o);this.helperRoot.add(l)}return o}};Dz.EXTENSION_NAME="VRMC_node_constraint";var pne=Dz,dx=(n,e,t)=>new Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())}),zR=class{},Fb=new D,ju=new D,Nz=class extends zR{get type(){return"capsule"}constructor(n){var e,t,i,r;super(),this.offset=(e=n==null?void 0:n.offset)!=null?e:new D(0,0,0),this.tail=(t=n==null?void 0:n.tail)!=null?t:new D(0,0,0),this.radius=(i=n==null?void 0:n.radius)!=null?i:0,this.inside=(r=n==null?void 0:n.inside)!=null?r:!1}calculateCollision(n,e,t,i){Fb.setFromMatrixPosition(n),ju.subVectors(this.tail,this.offset).applyMatrix4(n),ju.sub(Fb);const r=ju.lengthSq();i.copy(e).sub(Fb);const a=ju.dot(i);a<=0||(r<=a||ju.multiplyScalar(a/r),i.sub(ju));const s=i.length(),o=this.inside?this.radius-t-s:s-t-this.radius;return o<0&&(i.multiplyScalar(1/s),this.inside&&i.negate()),o}},Hb=new D,_I=new Mt,Oz=class extends zR{get type(){return"plane"}constructor(n){var e,t;super(),this.offset=(e=n==null?void 0:n.offset)!=null?e:new D(0,0,0),this.normal=(t=n==null?void 0:n.normal)!=null?t:new D(0,0,1)}calculateCollision(n,e,t,i){i.setFromMatrixPosition(n),i.negate().add(e),_I.getNormalMatrix(n),Hb.copy(this.normal).applyNormalMatrix(_I).normalize();const r=i.dot(Hb)-t;return i.copy(Hb),r}},mne=new D,Lz=class extends zR{get type(){return"sphere"}constructor(n){var e,t,i;super(),this.offset=(e=n==null?void 0:n.offset)!=null?e:new D(0,0,0),this.radius=(t=n==null?void 0:n.radius)!=null?t:0,this.inside=(i=n==null?void 0:n.inside)!=null?i:!1}calculateCollision(n,e,t,i){i.subVectors(e,mne.setFromMatrixPosition(n));const r=i.length(),a=this.inside?this.radius-t-r:r-t-this.radius;return a<0&&(i.multiplyScalar(1/r),this.inside&&i.negate()),a}},_o=new D,gne=class extends Ct{constructor(n){super(),this.worldScale=1,this._currentRadius=0,this._currentOffset=new D,this._currentTail=new D,this._shape=n,this._attrPos=new bt(new Float32Array(396),3),this.setAttribute("position",this._attrPos),this._attrIndex=new bt(new Uint16Array(264),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let n=!1;const e=this._shape.radius/this.worldScale;this._currentRadius!==e&&(this._currentRadius=e,n=!0),this._currentOffset.equals(this._shape.offset)||(this._currentOffset.copy(this._shape.offset),n=!0);const t=_o.copy(this._shape.tail).divideScalar(this.worldScale);this._currentTail.distanceToSquared(t)>1e-10&&(this._currentTail.copy(t),n=!0),n&&this._buildPosition()}_buildPosition(){_o.copy(this._currentTail).sub(this._currentOffset);const n=_o.length()/this._currentRadius;for(let i=0;i<=16;i++){const r=i/16*Math.PI;this._attrPos.setXYZ(i,-Math.sin(r),-Math.cos(r),0),this._attrPos.setXYZ(17+i,n+Math.sin(r),Math.cos(r),0),this._attrPos.setXYZ(34+i,-Math.sin(r),0,-Math.cos(r)),this._attrPos.setXYZ(51+i,n+Math.sin(r),0,Math.cos(r))}for(let i=0;i<32;i++){const r=i/16*Math.PI;this._attrPos.setXYZ(68+i,0,Math.sin(r),Math.cos(r)),this._attrPos.setXYZ(100+i,n,Math.sin(r),Math.cos(r))}const e=Math.atan2(_o.y,Math.sqrt(_o.x*_o.x+_o.z*_o.z)),t=-Math.atan2(_o.z,_o.x);this.rotateZ(e),this.rotateY(t),this.scale(this._currentRadius,this._currentRadius,this._currentRadius),this.translate(this._currentOffset.x,this._currentOffset.y,this._currentOffset.z),this._attrPos.needsUpdate=!0}_buildIndex(){for(let n=0;n<34;n++){const e=(n+1)%34;this._attrIndex.setXY(n*2,n,e),this._attrIndex.setXY(68+n*2,34+n,34+e)}for(let n=0;n<32;n++){const e=(n+1)%32;this._attrIndex.setXY(136+n*2,68+n,68+e),this._attrIndex.setXY(200+n*2,100+n,100+e)}this._attrIndex.needsUpdate=!0}},vne=class extends Ct{constructor(n){super(),this.worldScale=1,this._currentOffset=new D,this._currentNormal=new D,this._shape=n,this._attrPos=new bt(new Float32Array(6*3),3),this.setAttribute("position",this._attrPos),this._attrIndex=new bt(new Uint16Array(10),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let n=!1;this._currentOffset.equals(this._shape.offset)||(this._currentOffset.copy(this._shape.offset),n=!0),this._currentNormal.equals(this._shape.normal)||(this._currentNormal.copy(this._shape.normal),n=!0),n&&this._buildPosition()}_buildPosition(){this._attrPos.setXYZ(0,-.5,-.5,0),this._attrPos.setXYZ(1,.5,-.5,0),this._attrPos.setXYZ(2,.5,.5,0),this._attrPos.setXYZ(3,-.5,.5,0),this._attrPos.setXYZ(4,0,0,0),this._attrPos.setXYZ(5,0,0,.25),this.translate(this._currentOffset.x,this._currentOffset.y,this._currentOffset.z),this.lookAt(this._currentNormal),this._attrPos.needsUpdate=!0}_buildIndex(){this._attrIndex.setXY(0,0,1),this._attrIndex.setXY(2,1,2),this._attrIndex.setXY(4,2,3),this._attrIndex.setXY(6,3,0),this._attrIndex.setXY(8,4,5),this._attrIndex.needsUpdate=!0}},_ne=class extends Ct{constructor(n){super(),this.worldScale=1,this._currentRadius=0,this._currentOffset=new D,this._shape=n,this._attrPos=new bt(new Float32Array(32*3*3),3),this.setAttribute("position",this._attrPos),this._attrIndex=new bt(new Uint16Array(64*3),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let n=!1;const e=this._shape.radius/this.worldScale;this._currentRadius!==e&&(this._currentRadius=e,n=!0),this._currentOffset.equals(this._shape.offset)||(this._currentOffset.copy(this._shape.offset),n=!0),n&&this._buildPosition()}_buildPosition(){for(let n=0;n<32;n++){const e=n/16*Math.PI;this._attrPos.setXYZ(n,Math.cos(e),Math.sin(e),0),this._attrPos.setXYZ(32+n,0,Math.cos(e),Math.sin(e)),this._attrPos.setXYZ(64+n,Math.sin(e),0,Math.cos(e))}this.scale(this._currentRadius,this._currentRadius,this._currentRadius),this.translate(this._currentOffset.x,this._currentOffset.y,this._currentOffset.z),this._attrPos.needsUpdate=!0}_buildIndex(){for(let n=0;n<32;n++){const e=(n+1)%32;this._attrIndex.setXY(n*2,n,e),this._attrIndex.setXY(64+n*2,32+n,32+e),this._attrIndex.setXY(128+n*2,64+n,64+e)}this._attrIndex.needsUpdate=!0}},xne=new D,Vb=class extends Xi{constructor(n){if(super(),this.matrixAutoUpdate=!1,this.collider=n,this.collider.shape instanceof Lz)this._geometry=new _ne(this.collider.shape);else if(this.collider.shape instanceof Nz)this._geometry=new gne(this.collider.shape);else if(this.collider.shape instanceof Oz)this._geometry=new vne(this.collider.shape);else throw new Error("VRMSpringBoneColliderHelper: Unknown collider shape type detected");const e=new Yi({color:16711935,depthTest:!1,depthWrite:!1});this._line=new va(this._geometry,e),this.add(this._line)}dispose(){this._geometry.dispose()}updateMatrixWorld(n){this.collider.updateWorldMatrix(!0,!1),this.matrix.copy(this.collider.matrixWorld);const e=this.matrix.elements;this._geometry.worldScale=xne.set(e[0],e[1],e[2]).length(),this._geometry.update(),super.updateMatrixWorld(n)}},yne=class extends Ct{constructor(n){super(),this.worldScale=1,this._currentRadius=0,this._currentTail=new D,this._springBone=n,this._attrPos=new bt(new Float32Array(294),3),this.setAttribute("position",this._attrPos),this._attrIndex=new bt(new Uint16Array(194),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let n=!1;const e=this._springBone.settings.hitRadius/this.worldScale;this._currentRadius!==e&&(this._currentRadius=e,n=!0),this._currentTail.equals(this._springBone.initialLocalChildPosition)||(this._currentTail.copy(this._springBone.initialLocalChildPosition),n=!0),n&&this._buildPosition()}_buildPosition(){for(let n=0;n<32;n++){const e=n/16*Math.PI;this._attrPos.setXYZ(n,Math.cos(e),Math.sin(e),0),this._attrPos.setXYZ(32+n,0,Math.cos(e),Math.sin(e)),this._attrPos.setXYZ(64+n,Math.sin(e),0,Math.cos(e))}this.scale(this._currentRadius,this._currentRadius,this._currentRadius),this.translate(this._currentTail.x,this._currentTail.y,this._currentTail.z),this._attrPos.setXYZ(96,0,0,0),this._attrPos.setXYZ(97,this._currentTail.x,this._currentTail.y,this._currentTail.z),this._attrPos.needsUpdate=!0}_buildIndex(){for(let n=0;n<32;n++){const e=(n+1)%32;this._attrIndex.setXY(n*2,n,e),this._attrIndex.setXY(64+n*2,32+n,32+e),this._attrIndex.setXY(128+n*2,64+n,64+e)}this._attrIndex.setXY(192,96,97),this._attrIndex.needsUpdate=!0}},Sne=new D,Tne=class extends Xi{constructor(n){super(),this.matrixAutoUpdate=!1,this.springBone=n,this._geometry=new yne(this.springBone);const e=new Yi({color:16776960,depthTest:!1,depthWrite:!1});this._line=new va(this._geometry,e),this.add(this._line)}dispose(){this._geometry.dispose()}updateMatrixWorld(n){this.springBone.bone.updateWorldMatrix(!0,!1),this.matrix.copy(this.springBone.bone.matrixWorld);const e=this.matrix.elements;this._geometry.worldScale=Sne.set(e[0],e[1],e[2]).length(),this._geometry.update(),super.updateMatrixWorld(n)}},Gb=class extends Xt{constructor(n){super(),this.colliderMatrix=new Me,this.shape=n}updateWorldMatrix(n,e){super.updateWorldMatrix(n,e),Ene(this.colliderMatrix,this.matrixWorld,this.shape.offset)}};function Ene(n,e,t){const i=e.elements;n.copy(e),t&&(n.elements[12]=i[0]*t.x+i[4]*t.y+i[8]*t.z+i[12],n.elements[13]=i[1]*t.x+i[5]*t.y+i[9]*t.z+i[13],n.elements[14]=i[2]*t.x+i[6]*t.y+i[10]*t.z+i[14])}var bne=new Me;function Mne(n){return n.invert?n.invert():n.getInverse(bne.copy(n)),n}var Ane=class{constructor(n){this._inverseCache=new Me,this._shouldUpdateInverse=!0,this.matrix=n;const e={set:(t,i,r)=>(this._shouldUpdateInverse=!0,t[i]=r,!0)};this._originalElements=n.elements,n.elements=new Proxy(n.elements,e)}get inverse(){return this._shouldUpdateInverse&&(Mne(this._inverseCache.copy(this.matrix)),this._shouldUpdateInverse=!1),this._inverseCache}revert(){this.matrix.elements=this._originalElements}},kb=new Me,cf=new D,$m=new D,e0=new D,t0=new D,wne=new Me,Rne=class{constructor(n,e,t={},i=[]){this._currentTail=new D,this._prevTail=new D,this._boneAxis=new D,this._worldSpaceBoneLength=0,this._center=null,this._initialLocalMatrix=new Me,this._initialLocalRotation=new ft,this._initialLocalChildPosition=new D;var r,a,s,o,l,u;this.bone=n,this.bone.matrixAutoUpdate=!1,this.child=e,this.settings={hitRadius:(r=t.hitRadius)!=null?r:0,stiffness:(a=t.stiffness)!=null?a:1,gravityPower:(s=t.gravityPower)!=null?s:0,gravityDir:(l=(o=t.gravityDir)==null?void 0:o.clone())!=null?l:new D(0,-1,0),dragForce:(u=t.dragForce)!=null?u:.4},this.colliderGroups=i}get dependencies(){const n=new Set,e=this.bone.parent;e&&n.add(e);for(let t=0;t{e(r)})}function uA(n,e){n.children.forEach(t=>{e(t)||uA(t,e)})}function Dne(n){var e;const t=new Map;for(const i of n){let r=i;do{const a=((e=t.get(r))!=null?e:0)+1;if(a===n.size)return r;t.set(r,a),r=r.parent}while(r!==null)}return null}var xI=class{constructor(){this._joints=new Set,this._sortedJoints=[],this._hasWarnedCircularDependency=!1,this._ancestors=[],this._objectSpringBonesMap=new Map,this._isSortedJointsDirty=!1,this._relevantChildrenUpdated=this._relevantChildrenUpdated.bind(this)}get joints(){return this._joints}get springBones(){return console.warn("VRMSpringBoneManager: springBones is deprecated. use joints instead."),this._joints}get colliderGroups(){const n=new Set;return this._joints.forEach(e=>{e.colliderGroups.forEach(t=>{n.add(t)})}),Array.from(n)}get colliders(){const n=new Set;return this.colliderGroups.forEach(e=>{e.colliders.forEach(t=>{n.add(t)})}),Array.from(n)}addJoint(n){this._joints.add(n);let e=this._objectSpringBonesMap.get(n.bone);e==null&&(e=new Set,this._objectSpringBonesMap.set(n.bone,e)),e.add(n),this._isSortedJointsDirty=!0}addSpringBone(n){console.warn("VRMSpringBoneManager: addSpringBone() is deprecated. use addJoint() instead."),this.addJoint(n)}deleteJoint(n){this._joints.delete(n),this._objectSpringBonesMap.get(n.bone).delete(n),this._isSortedJointsDirty=!0}deleteSpringBone(n){console.warn("VRMSpringBoneManager: deleteSpringBone() is deprecated. use deleteJoint() instead."),this.deleteJoint(n)}setInitState(){this._sortJoints();for(let n=0;n{var s,o;return((o=(s=this._objectSpringBonesMap.get(a))==null?void 0:s.size)!=null?o:0)>0?!0:(this._ancestors.push(a),!1)})),this._isSortedJointsDirty=!1}_insertJointSort(n,e,t,i,r){if(t.has(n))return;if(e.has(n)){this._hasWarnedCircularDependency||(console.warn("VRMSpringBoneManager: Circular dependency detected"),this._hasWarnedCircularDependency=!0);return}e.add(n);const a=n.dependencies;for(const s of a){let o=!1,l=null;Cne(s,u=>{const d=this._objectSpringBonesMap.get(u);if(d)for(const f of d)o=!0,this._insertJointSort(f,e,t,i,r);else o||(l=u)}),l&&r.add(l)}i.push(n),t.add(n)}_relevantChildrenUpdated(n){var e,t;return((t=(e=this._objectSpringBonesMap.get(n))==null?void 0:e.size)!=null?t:0)>0?!0:(n.updateWorldMatrix(!1,!1),!1)}},yI="VRMC_springBone_extended_collider",Nne=new Set(["1.0","1.0-beta"]),One=new Set(["1.0"]),Iz=class Af{get name(){return Af.EXTENSION_NAME}constructor(e,t){var i;this.parser=e,this.jointHelperRoot=t==null?void 0:t.jointHelperRoot,this.colliderHelperRoot=t==null?void 0:t.colliderHelperRoot,this.useExtendedColliders=(i=t==null?void 0:t.useExtendedColliders)!=null?i:!0}afterRoot(e){return dx(this,null,function*(){e.userData.vrmSpringBoneManager=yield this._import(e)})}_import(e){return dx(this,null,function*(){const t=yield this._v1Import(e);if(t!=null)return t;const i=yield this._v0Import(e);return i??null})}_v1Import(e){return dx(this,null,function*(){var t,i,r,a,s;const o=e.parser.json;if(!(((t=o.extensionsUsed)==null?void 0:t.indexOf(Af.EXTENSION_NAME))!==-1))return null;const u=new xI,d=yield e.parser.getDependencies("node"),f=(i=o.extensions)==null?void 0:i[Af.EXTENSION_NAME];if(!f)return null;const p=f.specVersion;if(!Nne.has(p))return console.warn(`VRMSpringBoneLoaderPlugin: Unknown ${Af.EXTENSION_NAME} specVersion "${p}"`),null;const m=(r=f.colliders)==null?void 0:r.map((x,S)=>{var _,T,E,b,R,w,L,U,N,C,z,W,K,oe,ae;const X=d[x.node];if(X==null)return console.warn(`VRMSpringBoneLoaderPlugin: The collider #${S} attempted to use the node #${x.node} but not found`),null;const te=x.shape,Q=(_=x.extensions)==null?void 0:_[yI];if(this.useExtendedColliders&&Q!=null){const ce=Q.specVersion;if(!One.has(ce))console.warn(`VRMSpringBoneLoaderPlugin: Unknown ${yI} specVersion "${ce}". Fallbacking to the ${Af.EXTENSION_NAME} definition`);else{const se=Q.shape;if(se.sphere)return this._importSphereCollider(X,{offset:new D().fromArray((T=se.sphere.offset)!=null?T:[0,0,0]),radius:(E=se.sphere.radius)!=null?E:0,inside:(b=se.sphere.inside)!=null?b:!1});if(se.capsule)return this._importCapsuleCollider(X,{offset:new D().fromArray((R=se.capsule.offset)!=null?R:[0,0,0]),radius:(w=se.capsule.radius)!=null?w:0,tail:new D().fromArray((L=se.capsule.tail)!=null?L:[0,0,0]),inside:(U=se.capsule.inside)!=null?U:!1});if(se.plane)return this._importPlaneCollider(X,{offset:new D().fromArray((N=se.plane.offset)!=null?N:[0,0,0]),normal:new D().fromArray((C=se.plane.normal)!=null?C:[0,0,1])})}}if(te.sphere)return this._importSphereCollider(X,{offset:new D().fromArray((z=te.sphere.offset)!=null?z:[0,0,0]),radius:(W=te.sphere.radius)!=null?W:0,inside:!1});if(te.capsule)return this._importCapsuleCollider(X,{offset:new D().fromArray((K=te.capsule.offset)!=null?K:[0,0,0]),radius:(oe=te.capsule.radius)!=null?oe:0,tail:new D().fromArray((ae=te.capsule.tail)!=null?ae:[0,0,0]),inside:!1});throw new Error(`VRMSpringBoneLoaderPlugin: The collider #${S} has no valid shape`)}),v=(a=f.colliderGroups)==null?void 0:a.map((x,S)=>{var _;return{colliders:((_=x.colliders)!=null?_:[]).flatMap(E=>{const b=m==null?void 0:m[E];return b??(console.warn(`VRMSpringBoneLoaderPlugin: The colliderGroup #${S} attempted to use a collider #${E} but not found`),[])}),name:x.name}});return(s=f.springs)==null||s.forEach((x,S)=>{var _;const T=x.joints,E=(_=x.colliderGroups)==null?void 0:_.map(w=>{const L=v==null?void 0:v[w];if(L==null)throw new Error(`VRMSpringBoneLoaderPlugin: The spring #${S} attempted to use a colliderGroup ${w} but not found`);return L}),b=x.center!=null?d[x.center]:void 0;let R;T.forEach(w=>{if(R){const L=R.node,U=d[L],N=w.node,C=d[N],z={hitRadius:R.hitRadius,dragForce:R.dragForce,gravityPower:R.gravityPower,stiffness:R.stiffness,gravityDir:R.gravityDir!=null?new D().fromArray(R.gravityDir):void 0},W=this._importJoint(U,C,z,E);b&&(W.center=b),u.addJoint(W)}R=w})}),u.setInitState(),u})}_v0Import(e){return dx(this,null,function*(){var t,i,r;const a=e.parser.json;if(!(((t=a.extensionsUsed)==null?void 0:t.indexOf("VRM"))!==-1))return null;const o=(i=a.extensions)==null?void 0:i.VRM,l=o==null?void 0:o.secondaryAnimation;if(!l)return null;const u=l==null?void 0:l.boneGroups;if(!u)return null;const d=new xI,f=yield e.parser.getDependencies("node"),p=(r=l.colliderGroups)==null?void 0:r.map(m=>{var v;const x=f[m.node];return{colliders:((v=m.colliders)!=null?v:[]).map((_,T)=>{var E,b,R;const w=new D(0,0,0);return _.offset&&w.set((E=_.offset.x)!=null?E:0,(b=_.offset.y)!=null?b:0,_.offset.z?-_.offset.z:0),this._importSphereCollider(x,{offset:w,radius:(R=_.radius)!=null?R:0,inside:!1})})}});return u==null||u.forEach((m,v)=>{const x=m.bones;x&&x.forEach(S=>{var _,T,E,b;const R=f[S],w=new D;m.gravityDir?w.set((_=m.gravityDir.x)!=null?_:0,(T=m.gravityDir.y)!=null?T:0,(E=m.gravityDir.z)!=null?E:0):w.set(0,-1,0);const L=m.center!=null?f[m.center]:void 0,U={hitRadius:m.hitRadius,dragForce:m.dragForce,gravityPower:m.gravityPower,stiffness:m.stiffiness,gravityDir:w},N=(b=m.colliderGroups)==null?void 0:b.map(C=>{const z=p==null?void 0:p[C];if(z==null)throw new Error(`VRMSpringBoneLoaderPlugin: The spring #${v} attempted to use a colliderGroup ${C} but not found`);return z});R.traverse(C=>{var z;const W=(z=C.children[0])!=null?z:null,K=this._importJoint(C,W,U,N);L&&(K.center=L),d.addJoint(K)})})}),e.scene.updateMatrixWorld(),d.setInitState(),d})}_importJoint(e,t,i,r){const a=new Rne(e,t,i,r);if(this.jointHelperRoot){const s=new Tne(a);this.jointHelperRoot.add(s),s.renderOrder=this.jointHelperRoot.renderOrder}return a}_importSphereCollider(e,t){const i=new Lz(t),r=new Gb(i);if(e.add(r),this.colliderHelperRoot){const a=new Vb(r);this.colliderHelperRoot.add(a),a.renderOrder=this.colliderHelperRoot.renderOrder}return r}_importCapsuleCollider(e,t){const i=new Nz(t),r=new Gb(i);if(e.add(r),this.colliderHelperRoot){const a=new Vb(r);this.colliderHelperRoot.add(a),a.renderOrder=this.colliderHelperRoot.renderOrder}return r}_importPlaneCollider(e,t){const i=new Oz(t),r=new Gb(i);if(e.add(r),this.colliderHelperRoot){const a=new Vb(r);this.colliderHelperRoot.add(a),a.renderOrder=this.colliderHelperRoot.renderOrder}return r}};Iz.EXTENSION_NAME="VRMC_springBone";var Lne=Iz,Ine=class{get name(){return"VRMLoaderPlugin"}constructor(n,e){var t,i,r,a,s,o,l,u,d,f;this.parser=n;const p=e==null?void 0:e.helperRoot,m=e==null?void 0:e.autoUpdateHumanBones;this.expressionPlugin=(t=e==null?void 0:e.expressionPlugin)!=null?t:new Qee(n),this.firstPersonPlugin=(i=e==null?void 0:e.firstPersonPlugin)!=null?i:new Jee(n),this.humanoidPlugin=(r=e==null?void 0:e.humanoidPlugin)!=null?r:new ate(n,{helperRoot:p,autoUpdateHumanBones:m}),this.lookAtPlugin=(a=e==null?void 0:e.lookAtPlugin)!=null?a:new yte(n,{helperRoot:p}),this.metaPlugin=(s=e==null?void 0:e.metaPlugin)!=null?s:new Ete(n),this.mtoonMaterialPlugin=(o=e==null?void 0:e.mtoonMaterialPlugin)!=null?o:new Bte(n),this.materialsHDREmissiveMultiplierPlugin=(l=e==null?void 0:e.materialsHDREmissiveMultiplierPlugin)!=null?l:new Hte(n),this.materialsV0CompatPlugin=(u=e==null?void 0:e.materialsV0CompatPlugin)!=null?u:new Yte(n),this.springBonePlugin=(d=e==null?void 0:e.springBonePlugin)!=null?d:new Lne(n,{colliderHelperRoot:p,jointHelperRoot:p}),this.nodeConstraintPlugin=(f=e==null?void 0:e.nodeConstraintPlugin)!=null?f:new pne(n,{helperRoot:p})}beforeRoot(){return cx(this,null,function*(){yield this.materialsV0CompatPlugin.beforeRoot(),yield this.mtoonMaterialPlugin.beforeRoot()})}loadMesh(n){return cx(this,null,function*(){return yield this.mtoonMaterialPlugin.loadMesh(n)})}getMaterialType(n){const e=this.mtoonMaterialPlugin.getMaterialType(n);return e??null}extendMaterialParams(n,e){return cx(this,null,function*(){yield this.materialsHDREmissiveMultiplierPlugin.extendMaterialParams(n,e),yield this.mtoonMaterialPlugin.extendMaterialParams(n,e)})}afterRoot(n){return cx(this,null,function*(){yield this.metaPlugin.afterRoot(n),yield this.humanoidPlugin.afterRoot(n),yield this.expressionPlugin.afterRoot(n),yield this.lookAtPlugin.afterRoot(n),yield this.firstPersonPlugin.afterRoot(n),yield this.springBonePlugin.afterRoot(n),yield this.nodeConstraintPlugin.afterRoot(n),yield this.mtoonMaterialPlugin.afterRoot(n);const e=n.userData.vrmMeta,t=n.userData.vrmHumanoid;if(e&&t){const i=new Mte({scene:n.scene,expressionManager:n.userData.vrmExpressionManager,firstPerson:n.userData.vrmFirstPerson,humanoid:t,lookAt:n.userData.vrmLookAt,meta:e,materials:n.userData.vrmMToonMaterials,springBoneManager:n.userData.vrmSpringBoneManager,nodeConstraintManager:n.userData.vrmNodeConstraintManager});n.userData.vrm=i}})}};function Une(n){const e=new Set;return n.traverse(t=>{if(!t.isMesh)return;const i=t;e.add(i)}),e}function SI(n,e,t){if(e.size===1){const s=e.values().next().value;if(s.weight===1)return n[s.index]}const i=new Float32Array(n[0].count*3);let r=0;if(t)r=1;else for(const s of e)r+=s.weight;for(const s of e){const o=n[s.index],l=s.weight/r;for(let u=0;ud.getOrCreate(N)).join(","),L=`${b};${_};${w}`;let U=o.get(L);U==null&&(U=E.clone(),Gne(U,R,v),o.set(L,U)),T.geometry.setAttribute("skinIndex",U)}for(const T of m)T.bind(S,new Me)}}function Bne(n){const e=new Set;return n.traverse(t=>{if(!t.isSkinnedMesh)return;const i=t;e.add(i)}),e}function Fne(n,e){const t=new Set;for(let i=0;it)return!1;return!0}var Wb=class{constructor(){this._objectIndexMap=new Map,this._index=0}get(n){return this._objectIndexMap.get(n)}getOrCreate(n){let e=this._objectIndexMap.get(n);return e==null&&(e=this._index,this._objectIndexMap.set(n,e),this._index++),e}};function Wne(n){var e,t,i,r;const a=new Ct;a.name=n.name,a.setIndex(n.index);for(const[s,o]of Object.entries(n.attributes))a.setAttribute(s,o);for(const[s,o]of Object.entries(n.morphAttributes)){const l=s;a.morphAttributes[l]=o.concat()}a.morphTargetsRelative=n.morphTargetsRelative,a.groups=[];for(const s of n.groups)a.addGroup(s.start,s.count,s.materialIndex);return a.boundingSphere=(t=(e=n.boundingSphere)==null?void 0:e.clone())!=null?t:null,a.boundingBox=(r=(i=n.boundingBox)==null?void 0:i.clone())!=null?r:null,a.drawRange.start=n.drawRange.start,a.drawRange.count=n.drawRange.count,a.userData=n.userData,a}function TI(n){if(Object.values(n).forEach(e=>{e!=null&&e.isTexture&&e.dispose()}),n.isShaderMaterial){const e=n.uniforms;e&&Object.values(e).forEach(t=>{const i=t.value;i!=null&&i.isTexture&&i.dispose()})}n.dispose()}function Xne(n){const e=n.geometry;e&&e.dispose();const t=n.skeleton;t&&t.dispose();const i=n.material;i&&(Array.isArray(i)?i.forEach(r=>TI(r)):i&&TI(i))}function qne(n){n.traverse(Xne)}function Yne(n,e){var t,i;console.warn("VRMUtils.removeUnnecessaryJoints: removeUnnecessaryJoints is deprecated. Use combineSkeletons instead. combineSkeletons contributes more to the performance improvement. This function will be removed in the next major version.");const r=(t=e==null?void 0:e.experimentalSameBoneCounts)!=null?t:!1,a=[];n.traverse(l=>{l.type==="SkinnedMesh"&&a.push(l)});const s=new Map;let o=0;for(const l of a){const d=l.geometry.getAttribute("skinIndex");if(s.has(d))continue;const f=new Map,p=new Map;for(let m=0;m{var i,r,a,s;if(!t.isMesh)return;const o=t,l=o.geometry,u=l.index;if(u==null)return;const d=e.get(l);if(d!=null){o.geometry=d;return}const f=Object.values(l.attributes)[0].count,p=new Array(f);let m=0;const v=u.array;for(let b=0;b{T.addGroup(b.start,b.count,b.materialIndex)}),T.boundingBox=(r=(i=l.boundingBox)==null?void 0:i.clone())!=null?r:null,T.boundingSphere=(s=(a=l.boundingSphere)==null?void 0:a.clone())!=null?s:null,T.setDrawRange(l.drawRange.start,l.drawRange.count),T.userData=l.userData,e.set(l,T);{const b=u.array,R=new b.constructor(b.length);for(let w=0;w{const R=l.attributes[b];if(R.isInterleavedBufferAttribute)throw new Error("removeUnnecessaryVertices: InterleavedBufferAttribute is not supported");const w=R.array,{itemSize:L,normalized:U}=R,N=new w.constructor(S.length*L);S.forEach((C,z)=>{for(let W=0;W{for(let ae=0;aeK===0),T.morphAttributes[w][L]=new bt(W,C,z)}}E&&(T.morphAttributes={}),o.geometry=T}),Array.from(e.keys()).forEach(t=>{t.dispose()})}function Zne(n){var e;((e=n.meta)==null?void 0:e.metaVersion)==="0"&&(n.scene.rotation.y=Math.PI)}var rd=class{constructor(){}};rd.combineMorphs=Pne;rd.combineSkeletons=zne;rd.deepDispose=qne;rd.removeUnnecessaryJoints=Yne;rd.removeUnnecessaryVertices=jne;rd.rotateVRM0=Zne;/*! +`;t.vertexShader=r+t.vertexShader,t.fragmentShader=r+t.fragmentShader,i<154&&(t.fragmentShader=t.fragmentShader.replace("#include ","#include "))}}get color(){return this.uniforms.litFactor.value}set color(n){this.uniforms.litFactor.value=n}get map(){return this.uniforms.map.value}set map(n){this.uniforms.map.value=n}get normalMap(){return this.uniforms.normalMap.value}set normalMap(n){this.uniforms.normalMap.value=n}get normalScale(){return this.uniforms.normalScale.value}set normalScale(n){this.uniforms.normalScale.value=n}get emissive(){return this.uniforms.emissive.value}set emissive(n){this.uniforms.emissive.value=n}get emissiveIntensity(){return this.uniforms.emissiveIntensity.value}set emissiveIntensity(n){this.uniforms.emissiveIntensity.value=n}get emissiveMap(){return this.uniforms.emissiveMap.value}set emissiveMap(n){this.uniforms.emissiveMap.value=n}get shadeColorFactor(){return this.uniforms.shadeColorFactor.value}set shadeColorFactor(n){this.uniforms.shadeColorFactor.value=n}get shadeMultiplyTexture(){return this.uniforms.shadeMultiplyTexture.value}set shadeMultiplyTexture(n){this.uniforms.shadeMultiplyTexture.value=n}get shadingShiftFactor(){return this.uniforms.shadingShiftFactor.value}set shadingShiftFactor(n){this.uniforms.shadingShiftFactor.value=n}get shadingShiftTexture(){return this.uniforms.shadingShiftTexture.value}set shadingShiftTexture(n){this.uniforms.shadingShiftTexture.value=n}get shadingShiftTextureScale(){return this.uniforms.shadingShiftTextureScale.value}set shadingShiftTextureScale(n){this.uniforms.shadingShiftTextureScale.value=n}get shadingToonyFactor(){return this.uniforms.shadingToonyFactor.value}set shadingToonyFactor(n){this.uniforms.shadingToonyFactor.value=n}get giEqualizationFactor(){return this.uniforms.giEqualizationFactor.value}set giEqualizationFactor(n){this.uniforms.giEqualizationFactor.value=n}get matcapFactor(){return this.uniforms.matcapFactor.value}set matcapFactor(n){this.uniforms.matcapFactor.value=n}get matcapTexture(){return this.uniforms.matcapTexture.value}set matcapTexture(n){this.uniforms.matcapTexture.value=n}get parametricRimColorFactor(){return this.uniforms.parametricRimColorFactor.value}set parametricRimColorFactor(n){this.uniforms.parametricRimColorFactor.value=n}get rimMultiplyTexture(){return this.uniforms.rimMultiplyTexture.value}set rimMultiplyTexture(n){this.uniforms.rimMultiplyTexture.value=n}get rimLightingMixFactor(){return this.uniforms.rimLightingMixFactor.value}set rimLightingMixFactor(n){this.uniforms.rimLightingMixFactor.value=n}get parametricRimFresnelPowerFactor(){return this.uniforms.parametricRimFresnelPowerFactor.value}set parametricRimFresnelPowerFactor(n){this.uniforms.parametricRimFresnelPowerFactor.value=n}get parametricRimLiftFactor(){return this.uniforms.parametricRimLiftFactor.value}set parametricRimLiftFactor(n){this.uniforms.parametricRimLiftFactor.value=n}get outlineWidthMultiplyTexture(){return this.uniforms.outlineWidthMultiplyTexture.value}set outlineWidthMultiplyTexture(n){this.uniforms.outlineWidthMultiplyTexture.value=n}get outlineWidthFactor(){return this.uniforms.outlineWidthFactor.value}set outlineWidthFactor(n){this.uniforms.outlineWidthFactor.value=n}get outlineColorFactor(){return this.uniforms.outlineColorFactor.value}set outlineColorFactor(n){this.uniforms.outlineColorFactor.value=n}get outlineLightingMixFactor(){return this.uniforms.outlineLightingMixFactor.value}set outlineLightingMixFactor(n){this.uniforms.outlineLightingMixFactor.value=n}get uvAnimationMaskTexture(){return this.uniforms.uvAnimationMaskTexture.value}set uvAnimationMaskTexture(n){this.uniforms.uvAnimationMaskTexture.value=n}get uvAnimationScrollXOffset(){return this.uniforms.uvAnimationScrollXOffset.value}set uvAnimationScrollXOffset(n){this.uniforms.uvAnimationScrollXOffset.value=n}get uvAnimationScrollYOffset(){return this.uniforms.uvAnimationScrollYOffset.value}set uvAnimationScrollYOffset(n){this.uniforms.uvAnimationScrollYOffset.value=n}get uvAnimationRotationPhase(){return this.uniforms.uvAnimationRotationPhase.value}set uvAnimationRotationPhase(n){this.uniforms.uvAnimationRotationPhase.value=n}get ignoreVertexColor(){return this._ignoreVertexColor}set ignoreVertexColor(n){this._ignoreVertexColor=n,this.needsUpdate=!0}get v0CompatShade(){return this._v0CompatShade}set v0CompatShade(n){this._v0CompatShade=n,this.needsUpdate=!0}get debugMode(){return this._debugMode}set debugMode(n){this._debugMode=n,this.needsUpdate=!0}get outlineWidthMode(){return this._outlineWidthMode}set outlineWidthMode(n){this._outlineWidthMode=n,this.needsUpdate=!0}get isOutline(){return this._isOutline}set isOutline(n){this._isOutline=n,this.needsUpdate=!0}get isMToonMaterial(){return!0}update(n){this._uploadUniformsWorkaround(),this._updateUVAnimation(n)}copy(n){return super.copy(n),this.map=n.map,this.normalMap=n.normalMap,this.emissiveMap=n.emissiveMap,this.shadeMultiplyTexture=n.shadeMultiplyTexture,this.shadingShiftTexture=n.shadingShiftTexture,this.matcapTexture=n.matcapTexture,this.rimMultiplyTexture=n.rimMultiplyTexture,this.outlineWidthMultiplyTexture=n.outlineWidthMultiplyTexture,this.uvAnimationMaskTexture=n.uvAnimationMaskTexture,this.normalMapType=n.normalMapType,this.uvAnimationScrollXSpeedFactor=n.uvAnimationScrollXSpeedFactor,this.uvAnimationScrollYSpeedFactor=n.uvAnimationScrollYSpeedFactor,this.uvAnimationRotationSpeedFactor=n.uvAnimationRotationSpeedFactor,this.ignoreVertexColor=n.ignoreVertexColor,this.v0CompatShade=n.v0CompatShade,this.debugMode=n.debugMode,this.outlineWidthMode=n.outlineWidthMode,this.isOutline=n.isOutline,this.needsUpdate=!0,this}_updateUVAnimation(n){this.uniforms.uvAnimationScrollXOffset.value+=n*this.uvAnimationScrollXSpeedFactor,this.uniforms.uvAnimationScrollYOffset.value+=n*this.uvAnimationScrollYSpeedFactor,this.uniforms.uvAnimationRotationPhase.value+=n*this.uvAnimationRotationSpeedFactor,this.uniforms.alphaTest.value=this.alphaTest,this.uniformsNeedUpdate=!0}_uploadUniformsWorkaround(){this.uniforms.opacity.value=this.opacity,this._updateTextureMatrix(this.uniforms.map,this.uniforms.mapUvTransform),this._updateTextureMatrix(this.uniforms.normalMap,this.uniforms.normalMapUvTransform),this._updateTextureMatrix(this.uniforms.emissiveMap,this.uniforms.emissiveMapUvTransform),this._updateTextureMatrix(this.uniforms.shadeMultiplyTexture,this.uniforms.shadeMultiplyTextureUvTransform),this._updateTextureMatrix(this.uniforms.shadingShiftTexture,this.uniforms.shadingShiftTextureUvTransform),this._updateTextureMatrix(this.uniforms.matcapTexture,this.uniforms.matcapTextureUvTransform),this._updateTextureMatrix(this.uniforms.rimMultiplyTexture,this.uniforms.rimMultiplyTextureUvTransform),this._updateTextureMatrix(this.uniforms.outlineWidthMultiplyTexture,this.uniforms.outlineWidthMultiplyTextureUvTransform),this._updateTextureMatrix(this.uniforms.uvAnimationMaskTexture,this.uniforms.uvAnimationMaskTextureUvTransform),this.uniformsNeedUpdate=!0}_generateDefines(){const n=parseInt($s,10),e=this.outlineWidthMultiplyTexture!==null,t=this.map!==null||this.normalMap!==null||this.emissiveMap!==null||this.shadeMultiplyTexture!==null||this.shadingShiftTexture!==null||this.rimMultiplyTexture!==null||this.uvAnimationMaskTexture!==null;return{THREE_VRM_THREE_REVISION:n,OUTLINE:this._isOutline,MTOON_USE_UV:e||t,MTOON_UVS_VERTEX_ONLY:e&&!t,V0_COMPAT_SHADE:this._v0CompatShade,USE_SHADEMULTIPLYTEXTURE:this.shadeMultiplyTexture!==null,USE_SHADINGSHIFTTEXTURE:this.shadingShiftTexture!==null,USE_MATCAPTEXTURE:this.matcapTexture!==null,USE_RIMMULTIPLYTEXTURE:this.rimMultiplyTexture!==null,USE_OUTLINEWIDTHMULTIPLYTEXTURE:this._isOutline&&this.outlineWidthMultiplyTexture!==null,USE_UVANIMATIONMASKTEXTURE:this.uvAnimationMaskTexture!==null,IGNORE_VERTEX_COLOR:this._ignoreVertexColor===!0,DEBUG_NORMAL:this._debugMode==="normal",DEBUG_LITSHADERATE:this._debugMode==="litShadeRate",DEBUG_UV:this._debugMode==="uv",OUTLINE_WIDTH_SCREEN:this._isOutline&&this._outlineWidthMode===dI.ScreenCoordinates}}_updateTextureMatrix(n,e){n.value&&(n.value.matrixAutoUpdate&&n.value.updateMatrix(),e.value.copy(n.value.matrix))}},zte=new Set(["1.0","1.0-beta"]),Rz=class p1{get name(){return p1.EXTENSION_NAME}constructor(e,t={}){var i,r,a,s;this.parser=e,this.materialType=(i=t.materialType)!=null?i:Pte,this.renderOrderOffset=(r=t.renderOrderOffset)!=null?r:0,this.v0CompatShade=(a=t.v0CompatShade)!=null?a:!1,this.debugMode=(s=t.debugMode)!=null?s:"none",this._mToonMaterialSet=new Set}beforeRoot(){return gh(this,null,function*(){this._removeUnlitExtensionIfMToonExists()})}afterRoot(e){return gh(this,null,function*(){e.userData.vrmMToonMaterials=Array.from(this._mToonMaterialSet)})}getMaterialType(e){return this._getMToonExtension(e)?this.materialType:null}extendMaterialParams(e,t){const i=this._getMToonExtension(e);return i?this._extendMaterialParams(i,t):null}loadMesh(e){return gh(this,null,function*(){var t;const i=this.parser,a=(t=i.json.meshes)==null?void 0:t[e];if(a==null)throw new Error(`MToonMaterialLoaderPlugin: Attempt to use meshes[${e}] of glTF but the mesh doesn't exist`);const s=a.primitives,o=yield i.loadMesh(e);if(s.length===1){const l=o,u=s[0].material;u!=null&&this._setupPrimitive(l,u)}else{const l=o;for(let u=0;u{var s;this._getMToonExtension(a)&&((s=r.extensions)!=null&&s.KHR_materials_unlit)&&delete r.extensions.KHR_materials_unlit})}_getMToonExtension(e){var t,i;const s=(t=this.parser.json.materials)==null?void 0:t[e];if(s==null){console.warn(`MToonMaterialLoaderPlugin: Attempt to use materials[${e}] of glTF but the material doesn't exist`);return}const o=(i=s.extensions)==null?void 0:i[p1.EXTENSION_NAME];if(o==null)return;const l=o.specVersion;if(!zte.has(l)){console.warn(`MToonMaterialLoaderPlugin: Unknown ${p1.EXTENSION_NAME} specVersion "${l}"`);return}return o}_extendMaterialParams(e,t){return gh(this,null,function*(){var i;delete t.metalness,delete t.roughness;const r=new Nte(this.parser,t);r.assignPrimitive("transparentWithZWrite",e.transparentWithZWrite),r.assignColor("shadeColorFactor",e.shadeColorFactor),r.assignTexture("shadeMultiplyTexture",e.shadeMultiplyTexture,!0),r.assignPrimitive("shadingShiftFactor",e.shadingShiftFactor),r.assignTexture("shadingShiftTexture",e.shadingShiftTexture,!0),r.assignPrimitive("shadingShiftTextureScale",(i=e.shadingShiftTexture)==null?void 0:i.scale),r.assignPrimitive("shadingToonyFactor",e.shadingToonyFactor),r.assignPrimitive("giEqualizationFactor",e.giEqualizationFactor),r.assignColor("matcapFactor",e.matcapFactor),r.assignTexture("matcapTexture",e.matcapTexture,!0),r.assignColor("parametricRimColorFactor",e.parametricRimColorFactor),r.assignTexture("rimMultiplyTexture",e.rimMultiplyTexture,!0),r.assignPrimitive("rimLightingMixFactor",e.rimLightingMixFactor),r.assignPrimitive("parametricRimFresnelPowerFactor",e.parametricRimFresnelPowerFactor),r.assignPrimitive("parametricRimLiftFactor",e.parametricRimLiftFactor),r.assignPrimitive("outlineWidthMode",e.outlineWidthMode),r.assignPrimitive("outlineWidthFactor",e.outlineWidthFactor),r.assignTexture("outlineWidthMultiplyTexture",e.outlineWidthMultiplyTexture,!1),r.assignColor("outlineColorFactor",e.outlineColorFactor),r.assignPrimitive("outlineLightingMixFactor",e.outlineLightingMixFactor),r.assignTexture("uvAnimationMaskTexture",e.uvAnimationMaskTexture,!1),r.assignPrimitive("uvAnimationScrollXSpeedFactor",e.uvAnimationScrollXSpeedFactor),r.assignPrimitive("uvAnimationScrollYSpeedFactor",e.uvAnimationScrollYSpeedFactor),r.assignPrimitive("uvAnimationRotationSpeedFactor",e.uvAnimationRotationSpeedFactor),r.assignPrimitive("v0CompatShade",this.v0CompatShade),r.assignPrimitive("debugMode",this.debugMode),yield r.pending})}_setupPrimitive(e,t){const i=this._getMToonExtension(t);if(i){const r=this._parseRenderOrder(i);e.renderOrder=r+this.renderOrderOffset,this._generateOutline(e),this._addToMaterialSet(e);return}}_shouldGenerateOutline(e){return typeof e.outlineWidthMode=="string"&&e.outlineWidthMode!=="none"&&typeof e.outlineWidthFactor=="number"&&e.outlineWidthFactor>0}_generateOutline(e){const t=e.material;if(!(t instanceof ei)||!this._shouldGenerateOutline(t))return;e.material=[t];const i=t.clone();i.name+=" (Outline)",i.isOutline=!0,i.side=ki,e.material.push(i);const r=e.geometry,a=r.index?r.index.count:r.attributes.position.count/3;r.addGroup(0,a,0),r.addGroup(0,a,1)}_addToMaterialSet(e){const t=e.material,i=new Set;Array.isArray(t)?t.forEach(r=>i.add(r)):i.add(t);for(const r of i)this._mToonMaterialSet.add(r)}_parseRenderOrder(e){var t;return(e.transparentWithZWrite?0:19)+((t=e.renderQueueOffsetNumber)!=null?t:0)}};Rz.EXTENSION_NAME="VRMC_materials_mtoon";var Bte=Rz,Fte=(n,e,t)=>new Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())}),Cz=class cA{get name(){return cA.EXTENSION_NAME}constructor(e){this.parser=e}extendMaterialParams(e,t){return Fte(this,null,function*(){const i=this._getHDREmissiveMultiplierExtension(e);if(i==null)return;console.warn("VRMMaterialsHDREmissiveMultiplierLoaderPlugin: `VRMC_materials_hdr_emissiveMultiplier` is archived. Use `KHR_materials_emissive_strength` instead.");const r=i.emissiveMultiplier;t.emissiveIntensity=r})}_getHDREmissiveMultiplierExtension(e){var t,i;const s=(t=this.parser.json.materials)==null?void 0:t[e];if(s==null){console.warn(`VRMMaterialsHDREmissiveMultiplierLoaderPlugin: Attempt to use materials[${e}] of glTF but the material doesn't exist`);return}const o=(i=s.extensions)==null?void 0:i[cA.EXTENSION_NAME];if(o!=null)return o}};Cz.EXTENSION_NAME="VRMC_materials_hdr_emissiveMultiplier";var Hte=Cz,Vte=Object.defineProperty,Gte=Object.defineProperties,kte=Object.getOwnPropertyDescriptors,fI=Object.getOwnPropertySymbols,Wte=Object.prototype.hasOwnProperty,Xte=Object.prototype.propertyIsEnumerable,pI=(n,e,t)=>e in n?Vte(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,vo=(n,e)=>{for(var t in e||(e={}))Wte.call(e,t)&&pI(n,t,e[t]);if(fI)for(var t of fI(e))Xte.call(e,t)&&pI(n,t,e[t]);return n},mI=(n,e)=>Gte(n,kte(e)),qte=(n,e,t)=>new Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())});function lf(n){return Math.pow(n,2.2)}var Yte=class{get name(){return"VRMMaterialsV0CompatPlugin"}constructor(n){var e;this.parser=n,this._renderQueueMapTransparent=new Map,this._renderQueueMapTransparentZWrite=new Map;const t=this.parser.json;t.extensionsUsed=(e=t.extensionsUsed)!=null?e:[],t.extensionsUsed.indexOf("KHR_texture_transform")===-1&&t.extensionsUsed.push("KHR_texture_transform")}beforeRoot(){return qte(this,null,function*(){var n;const e=this.parser.json,t=(n=e.extensions)==null?void 0:n.VRM,i=t==null?void 0:t.materialProperties;i&&(this._populateRenderQueueMap(i),i.forEach((r,a)=>{var s,o;const l=(s=e.materials)==null?void 0:s[a];if(l==null){console.warn(`VRMMaterialsV0CompatPlugin: Attempt to use materials[${a}] of glTF but the material doesn't exist`);return}if(r.shader==="VRM/MToon"){const u=this._parseV0MToonProperties(r,l);e.materials[a]=u}else if((o=r.shader)!=null&&o.startsWith("VRM/Unlit")){const u=this._parseV0UnlitProperties(r,l);e.materials[a]=u}else r.shader==="VRM_USE_GLTFSHADER"||console.warn(`VRMMaterialsV0CompatPlugin: Unknown shader: ${r.shader}`)}))})}_parseV0MToonProperties(n,e){var t,i,r,a,s,o,l,u,d,f,p,m,v,x,S,_,T,E,b,R,w,L,U,N,C,z,W,K,oe,ae,X,te,Q,ce,se,De,Xe,nt,tt,xt,ve,we,Ze,de,it,wt,lt,Qe,Ee,V,Ae,Oe,Ve,Fe,$e;const Je=(i=(t=n.keywordMap)==null?void 0:t._ALPHABLEND_ON)!=null?i:!1,k=((r=n.floatProperties)==null?void 0:r._ZWrite)===1&&Je,P=this._v0ParseRenderQueue(n),he=(s=(a=n.keywordMap)==null?void 0:a._ALPHATEST_ON)!=null?s:!1,be=Je?"BLEND":he?"MASK":"OPAQUE",Ie=he?(l=(o=n.floatProperties)==null?void 0:o._Cutoff)!=null?l:.5:void 0,yt=((d=(u=n.floatProperties)==null?void 0:u._CullMode)!=null?d:2)===0,je=this._portTextureTransform(n),Tt=((p=(f=n.vectorProperties)==null?void 0:f._Color)!=null?p:[1,1,1,1]).map((I,G)=>G===3?I:lf(I)),vt=(m=n.textureProperties)==null?void 0:m._MainTex,Ue=vt!=null?{index:vt,extensions:vo({},je)}:void 0,He=(x=(v=n.floatProperties)==null?void 0:v._BumpScale)!=null?x:1,pt=(S=n.textureProperties)==null?void 0:S._BumpMap,J=pt!=null?{index:pt,scale:He,extensions:vo({},je)}:void 0,me=((T=(_=n.vectorProperties)==null?void 0:_._EmissionColor)!=null?T:[0,0,0,1]).map(lf),Le=(E=n.textureProperties)==null?void 0:E._EmissionMap,j=Le!=null?{index:Le,extensions:vo({},je)}:void 0,ke=((R=(b=n.vectorProperties)==null?void 0:b._ShadeColor)!=null?R:[.97,.81,.86,1]).map(lf),ge=(w=n.textureProperties)==null?void 0:w._ShadeTexture,We=ge!=null?{index:ge,extensions:vo({},je)}:void 0;let Ge=(U=(L=n.floatProperties)==null?void 0:L._ShadeShift)!=null?U:0,Re=(C=(N=n.floatProperties)==null?void 0:N._ShadeToony)!=null?C:.9;Re=ht.lerp(Re,1,.5+.5*Ge),Ge=-Ge-(1-Re);const at=(W=(z=n.floatProperties)==null?void 0:z._IndirectLightIntensity)!=null?W:.1,Et=at?1-at:void 0,Gt=(K=n.textureProperties)==null?void 0:K._SphereAdd,kt=Gt!=null?[1,1,1]:void 0,mi=Gt!=null?{index:Gt}:void 0,gi=(ae=(oe=n.floatProperties)==null?void 0:oe._RimLightingMix)!=null?ae:0,Po=(X=n.textureProperties)==null?void 0:X._RimTexture,ro=Po!=null?{index:Po,extensions:vo({},je)}:void 0,ao=((Q=(te=n.vectorProperties)==null?void 0:te._RimColor)!=null?Q:[0,0,0,1]).map(lf),Li=(se=(ce=n.floatProperties)==null?void 0:ce._RimFresnelPower)!=null?se:1,so=(Xe=(De=n.floatProperties)==null?void 0:De._RimLift)!=null?Xe:0,Er=["none","worldCoordinates","screenCoordinates"][(tt=(nt=n.floatProperties)==null?void 0:nt._OutlineWidthMode)!=null?tt:0];let er=(ve=(xt=n.floatProperties)==null?void 0:xt._OutlineWidth)!=null?ve:0;er=.01*er;const $r=(we=n.textureProperties)==null?void 0:we._OutlineWidthTexture,Un=$r!=null?{index:$r,extensions:vo({},je)}:void 0,Ja=((de=(Ze=n.vectorProperties)==null?void 0:Ze._OutlineColor)!=null?de:[0,0,0]).map(lf),lo=((wt=(it=n.floatProperties)==null?void 0:it._OutlineColorMode)!=null?wt:0)===1?(Qe=(lt=n.floatProperties)==null?void 0:lt._OutlineLightingMix)!=null?Qe:1:0,zo=(Ee=n.textureProperties)==null?void 0:Ee._UvAnimMaskTexture,Sa=zo!=null?{index:zo,extensions:vo({},je)}:void 0,br=(Ae=(V=n.floatProperties)==null?void 0:V._UvAnimScrollX)!=null?Ae:0;let O=(Ve=(Oe=n.floatProperties)==null?void 0:Oe._UvAnimScrollY)!=null?Ve:0;O!=null&&(O=-O);const B=($e=(Fe=n.floatProperties)==null?void 0:Fe._UvAnimRotation)!=null?$e:0,Y={specVersion:"1.0",transparentWithZWrite:k,renderQueueOffsetNumber:P,shadeColorFactor:ke,shadeMultiplyTexture:We,shadingShiftFactor:Ge,shadingToonyFactor:Re,giEqualizationFactor:Et,matcapFactor:kt,matcapTexture:mi,rimLightingMixFactor:gi,rimMultiplyTexture:ro,parametricRimColorFactor:ao,parametricRimFresnelPowerFactor:Li,parametricRimLiftFactor:so,outlineWidthMode:Er,outlineWidthFactor:er,outlineWidthMultiplyTexture:Un,outlineColorFactor:Ja,outlineLightingMixFactor:lo,uvAnimationMaskTexture:Sa,uvAnimationScrollXSpeedFactor:br,uvAnimationScrollYSpeedFactor:O,uvAnimationRotationSpeedFactor:B};return mI(vo({},e),{pbrMetallicRoughness:{baseColorFactor:Tt,baseColorTexture:Ue},normalTexture:J,emissiveTexture:j,emissiveFactor:me,alphaMode:be,alphaCutoff:Ie,doubleSided:yt,extensions:{VRMC_materials_mtoon:Y}})}_parseV0UnlitProperties(n,e){var t,i,r,a,s;const o=n.shader==="VRM/UnlitTransparentZWrite",l=n.shader==="VRM/UnlitTransparent"||o,u=this._v0ParseRenderQueue(n),d=n.shader==="VRM/UnlitCutout",f=l?"BLEND":d?"MASK":"OPAQUE",p=d?(i=(t=n.floatProperties)==null?void 0:t._Cutoff)!=null?i:.5:void 0,m=this._portTextureTransform(n),v=((a=(r=n.vectorProperties)==null?void 0:r._Color)!=null?a:[1,1,1,1]).map(lf),x=(s=n.textureProperties)==null?void 0:s._MainTex,S=x!=null?{index:x,extensions:vo({},m)}:void 0,_={specVersion:"1.0",transparentWithZWrite:o,renderQueueOffsetNumber:u,shadeColorFactor:v,shadeMultiplyTexture:S};return mI(vo({},e),{pbrMetallicRoughness:{baseColorFactor:v,baseColorTexture:S},alphaMode:f,alphaCutoff:p,extensions:{VRMC_materials_mtoon:_}})}_portTextureTransform(n){var e,t,i,r,a;const s=(e=n.vectorProperties)==null?void 0:e._MainTex;if(s==null)return{};const o=[(t=s==null?void 0:s[0])!=null?t:0,(i=s==null?void 0:s[1])!=null?i:0],l=[(r=s==null?void 0:s[2])!=null?r:1,(a=s==null?void 0:s[3])!=null?a:1];return o[1]=1-l[1]-o[1],{KHR_texture_transform:{offset:o,scale:l}}}_v0ParseRenderQueue(n){var e,t;const i=n.shader==="VRM/UnlitTransparentZWrite",r=((e=n.keywordMap)==null?void 0:e._ALPHABLEND_ON)!=null||n.shader==="VRM/UnlitTransparent"||i,a=((t=n.floatProperties)==null?void 0:t._ZWrite)===1||i;let s=0;if(r){const o=n.renderQueue;o!=null&&(a?s=this._renderQueueMapTransparentZWrite.get(o):s=this._renderQueueMapTransparent.get(o))}return s}_populateRenderQueueMap(n){const e=new Set,t=new Set;n.forEach(i=>{var r,a;const s=i.shader==="VRM/UnlitTransparentZWrite",o=((r=i.keywordMap)==null?void 0:r._ALPHABLEND_ON)!=null||i.shader==="VRM/UnlitTransparent"||s,l=((a=i.floatProperties)==null?void 0:a._ZWrite)===1||s;if(o){const u=i.renderQueue;u!=null&&(l?t.add(u):e.add(u))}}),e.size>10&&console.warn(`VRMMaterialsV0CompatPlugin: This VRM uses ${e.size} render queues for Transparent materials while VRM 1.0 only supports up to 10 render queues. The model might not be rendered correctly.`),t.size>10&&console.warn(`VRMMaterialsV0CompatPlugin: This VRM uses ${t.size} render queues for TransparentZWrite materials while VRM 1.0 only supports up to 10 render queues. The model might not be rendered correctly.`),Array.from(e).sort().forEach((i,r)=>{const a=Math.min(Math.max(r-e.size+1,-9),0);this._renderQueueMapTransparent.set(i,a)}),Array.from(t).sort().forEach((i,r)=>{const a=Math.min(Math.max(r,0),9);this._renderQueueMapTransparentZWrite.set(i,a)})}},gI=(n,e,t)=>new Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())}),dc=new D,Bb=class extends Xi{constructor(n){super(),this._attrPosition=new bt(new Float32Array([0,0,0,0,0,0]),3),this._attrPosition.setUsage(R9);const e=new Ct;e.setAttribute("position",this._attrPosition);const t=new Yi({color:16711935,depthTest:!1,depthWrite:!1});this._line=new Oo(e,t),this.add(this._line),this.constraint=n}updateMatrixWorld(n){dc.setFromMatrixPosition(this.constraint.destination.matrixWorld),this._attrPosition.setXYZ(0,dc.x,dc.y,dc.z),this.constraint.source&&dc.setFromMatrixPosition(this.constraint.source.matrixWorld),this._attrPosition.setXYZ(1,dc.x,dc.y,dc.z),this._attrPosition.needsUpdate=!0,super.updateMatrixWorld(n)}};function vI(n,e){return e.set(n.elements[12],n.elements[13],n.elements[14])}var jte=new D,Zte=new D;function Qte(n,e){return n.decompose(jte,e,Zte),e}function Vy(n){return n.invert?n.invert():n.inverse(),n}var PR=class{constructor(n,e){this.destination=n,this.source=e,this.weight=1}},Kte=new D,Jte=new D,$te=new D,ene=new ft,tne=new ft,nne=new ft,ine=class extends PR{get aimAxis(){return this._aimAxis}set aimAxis(n){this._aimAxis=n,this._v3AimAxis.set(n==="PositiveX"?1:n==="NegativeX"?-1:0,n==="PositiveY"?1:n==="NegativeY"?-1:0,n==="PositiveZ"?1:n==="NegativeZ"?-1:0)}get dependencies(){const n=new Set([this.source]);return this.destination.parent&&n.add(this.destination.parent),n}constructor(n,e){super(n,e),this._aimAxis="PositiveX",this._v3AimAxis=new D(1,0,0),this._dstRestQuat=new ft}setInitState(){this._dstRestQuat.copy(this.destination.quaternion)}update(){this.destination.updateWorldMatrix(!0,!1),this.source.updateWorldMatrix(!0,!1);const n=ene.identity(),e=tne.identity();this.destination.parent&&(Qte(this.destination.parent.matrixWorld,n),Vy(e.copy(n)));const t=Kte.copy(this._v3AimAxis).applyQuaternion(this._dstRestQuat).applyQuaternion(n),i=vI(this.source.matrixWorld,Jte).sub(vI(this.destination.matrixWorld,$te)).normalize(),r=nne.setFromUnitVectors(t,i).premultiply(e).multiply(n).multiply(this._dstRestQuat);this.destination.quaternion.copy(this._dstRestQuat).slerp(r,this.weight)}};function rne(n,e){const t=[n];let i=n.parent;for(;i!==null;)t.unshift(i),i=i.parent;t.forEach(r=>{e(r)})}var ane=class{constructor(){this._constraints=new Set,this._objectConstraintsMap=new Map}get constraints(){return this._constraints}addConstraint(n){this._constraints.add(n);let e=this._objectConstraintsMap.get(n.destination);e==null&&(e=new Set,this._objectConstraintsMap.set(n.destination,e)),e.add(n)}deleteConstraint(n){this._constraints.delete(n),this._objectConstraintsMap.get(n.destination).delete(n)}setInitState(){const n=new Set,e=new Set;for(const t of this._constraints)this._processConstraint(t,n,e,i=>i.setInitState())}update(){const n=new Set,e=new Set;for(const t of this._constraints)this._processConstraint(t,n,e,i=>i.update())}_processConstraint(n,e,t,i){if(t.has(n))return;if(e.has(n))throw new Error("VRMNodeConstraintManager: Circular dependency detected while updating constraints");e.add(n);const r=n.dependencies;for(const a of r)rne(a,s=>{const o=this._objectConstraintsMap.get(s);if(o)for(const l of o)this._processConstraint(l,e,t,i)});i(n),t.add(n)}},sne=new ft,one=new ft,lne=class extends PR{get dependencies(){return new Set([this.source])}constructor(n,e){super(n,e),this._dstRestQuat=new ft,this._invSrcRestQuat=new ft}setInitState(){this._dstRestQuat.copy(this.destination.quaternion),Vy(this._invSrcRestQuat.copy(this.source.quaternion))}update(){const n=sne.copy(this._invSrcRestQuat).multiply(this.source.quaternion),e=one.copy(this._dstRestQuat).multiply(n);this.destination.quaternion.copy(this._dstRestQuat).slerp(e,this.weight)}},cne=new D,une=new ft,hne=new ft,dne=class extends PR{get rollAxis(){return this._rollAxis}set rollAxis(n){this._rollAxis=n,this._v3RollAxis.set(n==="X"?1:0,n==="Y"?1:0,n==="Z"?1:0)}get dependencies(){return new Set([this.source])}constructor(n,e){super(n,e),this._rollAxis="X",this._v3RollAxis=new D(1,0,0),this._dstRestQuat=new ft,this._invDstRestQuat=new ft,this._invSrcRestQuatMulDstRestQuat=new ft}setInitState(){this._dstRestQuat.copy(this.destination.quaternion),Vy(this._invDstRestQuat.copy(this._dstRestQuat)),Vy(this._invSrcRestQuatMulDstRestQuat.copy(this.source.quaternion)).multiply(this._dstRestQuat)}update(){const n=une.copy(this._invDstRestQuat).multiply(this.source.quaternion).multiply(this._invSrcRestQuatMulDstRestQuat),e=cne.copy(this._v3RollAxis).applyQuaternion(n),i=hne.setFromUnitVectors(e,this._v3RollAxis).premultiply(this._dstRestQuat).multiply(n);this.destination.quaternion.copy(this._dstRestQuat).slerp(i,this.weight)}},fne=new Set(["1.0","1.0-beta"]),Dz=class C0{get name(){return C0.EXTENSION_NAME}constructor(e,t){this.parser=e,this.helperRoot=t==null?void 0:t.helperRoot}afterRoot(e){return gI(this,null,function*(){e.userData.vrmNodeConstraintManager=yield this._import(e)})}_import(e){return gI(this,null,function*(){var t;const i=this.parser.json;if(!(((t=i.extensionsUsed)==null?void 0:t.indexOf(C0.EXTENSION_NAME))!==-1))return null;const a=new ane,s=yield this.parser.getDependencies("node");return s.forEach((o,l)=>{var u;const d=i.nodes[l],f=(u=d==null?void 0:d.extensions)==null?void 0:u[C0.EXTENSION_NAME];if(f==null)return;const p=f.specVersion;if(!fne.has(p)){console.warn(`VRMNodeConstraintLoaderPlugin: Unknown ${C0.EXTENSION_NAME} specVersion "${p}"`);return}const m=f.constraint;if(m.roll!=null){const v=this._importRollConstraint(o,s,m.roll);a.addConstraint(v)}else if(m.aim!=null){const v=this._importAimConstraint(o,s,m.aim);a.addConstraint(v)}else if(m.rotation!=null){const v=this._importRotationConstraint(o,s,m.rotation);a.addConstraint(v)}}),e.scene.updateMatrixWorld(),a.setInitState(),a})}_importRollConstraint(e,t,i){const{source:r,rollAxis:a,weight:s}=i,o=t[r],l=new dne(e,o);if(a!=null&&(l.rollAxis=a),s!=null&&(l.weight=s),this.helperRoot){const u=new Bb(l);this.helperRoot.add(u)}return l}_importAimConstraint(e,t,i){const{source:r,aimAxis:a,weight:s}=i,o=t[r],l=new ine(e,o);if(a!=null&&(l.aimAxis=a),s!=null&&(l.weight=s),this.helperRoot){const u=new Bb(l);this.helperRoot.add(u)}return l}_importRotationConstraint(e,t,i){const{source:r,weight:a}=i,s=t[r],o=new lne(e,s);if(a!=null&&(o.weight=a),this.helperRoot){const l=new Bb(o);this.helperRoot.add(l)}return o}};Dz.EXTENSION_NAME="VRMC_node_constraint";var pne=Dz,dx=(n,e,t)=>new Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())}),zR=class{},Fb=new D,ju=new D,Nz=class extends zR{get type(){return"capsule"}constructor(n){var e,t,i,r;super(),this.offset=(e=n==null?void 0:n.offset)!=null?e:new D(0,0,0),this.tail=(t=n==null?void 0:n.tail)!=null?t:new D(0,0,0),this.radius=(i=n==null?void 0:n.radius)!=null?i:0,this.inside=(r=n==null?void 0:n.inside)!=null?r:!1}calculateCollision(n,e,t,i){Fb.setFromMatrixPosition(n),ju.subVectors(this.tail,this.offset).applyMatrix4(n),ju.sub(Fb);const r=ju.lengthSq();i.copy(e).sub(Fb);const a=ju.dot(i);a<=0||(r<=a||ju.multiplyScalar(a/r),i.sub(ju));const s=i.length(),o=this.inside?this.radius-t-s:s-t-this.radius;return o<0&&(i.multiplyScalar(1/s),this.inside&&i.negate()),o}},Hb=new D,_I=new Mt,Oz=class extends zR{get type(){return"plane"}constructor(n){var e,t;super(),this.offset=(e=n==null?void 0:n.offset)!=null?e:new D(0,0,0),this.normal=(t=n==null?void 0:n.normal)!=null?t:new D(0,0,1)}calculateCollision(n,e,t,i){i.setFromMatrixPosition(n),i.negate().add(e),_I.getNormalMatrix(n),Hb.copy(this.normal).applyNormalMatrix(_I).normalize();const r=i.dot(Hb)-t;return i.copy(Hb),r}},mne=new D,Lz=class extends zR{get type(){return"sphere"}constructor(n){var e,t,i;super(),this.offset=(e=n==null?void 0:n.offset)!=null?e:new D(0,0,0),this.radius=(t=n==null?void 0:n.radius)!=null?t:0,this.inside=(i=n==null?void 0:n.inside)!=null?i:!1}calculateCollision(n,e,t,i){i.subVectors(e,mne.setFromMatrixPosition(n));const r=i.length(),a=this.inside?this.radius-t-r:r-t-this.radius;return a<0&&(i.multiplyScalar(1/r),this.inside&&i.negate()),a}},_o=new D,gne=class extends Ct{constructor(n){super(),this.worldScale=1,this._currentRadius=0,this._currentOffset=new D,this._currentTail=new D,this._shape=n,this._attrPos=new bt(new Float32Array(396),3),this.setAttribute("position",this._attrPos),this._attrIndex=new bt(new Uint16Array(264),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let n=!1;const e=this._shape.radius/this.worldScale;this._currentRadius!==e&&(this._currentRadius=e,n=!0),this._currentOffset.equals(this._shape.offset)||(this._currentOffset.copy(this._shape.offset),n=!0);const t=_o.copy(this._shape.tail).divideScalar(this.worldScale);this._currentTail.distanceToSquared(t)>1e-10&&(this._currentTail.copy(t),n=!0),n&&this._buildPosition()}_buildPosition(){_o.copy(this._currentTail).sub(this._currentOffset);const n=_o.length()/this._currentRadius;for(let i=0;i<=16;i++){const r=i/16*Math.PI;this._attrPos.setXYZ(i,-Math.sin(r),-Math.cos(r),0),this._attrPos.setXYZ(17+i,n+Math.sin(r),Math.cos(r),0),this._attrPos.setXYZ(34+i,-Math.sin(r),0,-Math.cos(r)),this._attrPos.setXYZ(51+i,n+Math.sin(r),0,Math.cos(r))}for(let i=0;i<32;i++){const r=i/16*Math.PI;this._attrPos.setXYZ(68+i,0,Math.sin(r),Math.cos(r)),this._attrPos.setXYZ(100+i,n,Math.sin(r),Math.cos(r))}const e=Math.atan2(_o.y,Math.sqrt(_o.x*_o.x+_o.z*_o.z)),t=-Math.atan2(_o.z,_o.x);this.rotateZ(e),this.rotateY(t),this.scale(this._currentRadius,this._currentRadius,this._currentRadius),this.translate(this._currentOffset.x,this._currentOffset.y,this._currentOffset.z),this._attrPos.needsUpdate=!0}_buildIndex(){for(let n=0;n<34;n++){const e=(n+1)%34;this._attrIndex.setXY(n*2,n,e),this._attrIndex.setXY(68+n*2,34+n,34+e)}for(let n=0;n<32;n++){const e=(n+1)%32;this._attrIndex.setXY(136+n*2,68+n,68+e),this._attrIndex.setXY(200+n*2,100+n,100+e)}this._attrIndex.needsUpdate=!0}},vne=class extends Ct{constructor(n){super(),this.worldScale=1,this._currentOffset=new D,this._currentNormal=new D,this._shape=n,this._attrPos=new bt(new Float32Array(6*3),3),this.setAttribute("position",this._attrPos),this._attrIndex=new bt(new Uint16Array(10),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let n=!1;this._currentOffset.equals(this._shape.offset)||(this._currentOffset.copy(this._shape.offset),n=!0),this._currentNormal.equals(this._shape.normal)||(this._currentNormal.copy(this._shape.normal),n=!0),n&&this._buildPosition()}_buildPosition(){this._attrPos.setXYZ(0,-.5,-.5,0),this._attrPos.setXYZ(1,.5,-.5,0),this._attrPos.setXYZ(2,.5,.5,0),this._attrPos.setXYZ(3,-.5,.5,0),this._attrPos.setXYZ(4,0,0,0),this._attrPos.setXYZ(5,0,0,.25),this.translate(this._currentOffset.x,this._currentOffset.y,this._currentOffset.z),this.lookAt(this._currentNormal),this._attrPos.needsUpdate=!0}_buildIndex(){this._attrIndex.setXY(0,0,1),this._attrIndex.setXY(2,1,2),this._attrIndex.setXY(4,2,3),this._attrIndex.setXY(6,3,0),this._attrIndex.setXY(8,4,5),this._attrIndex.needsUpdate=!0}},_ne=class extends Ct{constructor(n){super(),this.worldScale=1,this._currentRadius=0,this._currentOffset=new D,this._shape=n,this._attrPos=new bt(new Float32Array(32*3*3),3),this.setAttribute("position",this._attrPos),this._attrIndex=new bt(new Uint16Array(64*3),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let n=!1;const e=this._shape.radius/this.worldScale;this._currentRadius!==e&&(this._currentRadius=e,n=!0),this._currentOffset.equals(this._shape.offset)||(this._currentOffset.copy(this._shape.offset),n=!0),n&&this._buildPosition()}_buildPosition(){for(let n=0;n<32;n++){const e=n/16*Math.PI;this._attrPos.setXYZ(n,Math.cos(e),Math.sin(e),0),this._attrPos.setXYZ(32+n,0,Math.cos(e),Math.sin(e)),this._attrPos.setXYZ(64+n,Math.sin(e),0,Math.cos(e))}this.scale(this._currentRadius,this._currentRadius,this._currentRadius),this.translate(this._currentOffset.x,this._currentOffset.y,this._currentOffset.z),this._attrPos.needsUpdate=!0}_buildIndex(){for(let n=0;n<32;n++){const e=(n+1)%32;this._attrIndex.setXY(n*2,n,e),this._attrIndex.setXY(64+n*2,32+n,32+e),this._attrIndex.setXY(128+n*2,64+n,64+e)}this._attrIndex.needsUpdate=!0}},xne=new D,Vb=class extends Xi{constructor(n){if(super(),this.matrixAutoUpdate=!1,this.collider=n,this.collider.shape instanceof Lz)this._geometry=new _ne(this.collider.shape);else if(this.collider.shape instanceof Nz)this._geometry=new gne(this.collider.shape);else if(this.collider.shape instanceof Oz)this._geometry=new vne(this.collider.shape);else throw new Error("VRMSpringBoneColliderHelper: Unknown collider shape type detected");const e=new Yi({color:16711935,depthTest:!1,depthWrite:!1});this._line=new va(this._geometry,e),this.add(this._line)}dispose(){this._geometry.dispose()}updateMatrixWorld(n){this.collider.updateWorldMatrix(!0,!1),this.matrix.copy(this.collider.matrixWorld);const e=this.matrix.elements;this._geometry.worldScale=xne.set(e[0],e[1],e[2]).length(),this._geometry.update(),super.updateMatrixWorld(n)}},yne=class extends Ct{constructor(n){super(),this.worldScale=1,this._currentRadius=0,this._currentTail=new D,this._springBone=n,this._attrPos=new bt(new Float32Array(294),3),this.setAttribute("position",this._attrPos),this._attrIndex=new bt(new Uint16Array(194),1),this.setIndex(this._attrIndex),this._buildIndex(),this.update()}update(){let n=!1;const e=this._springBone.settings.hitRadius/this.worldScale;this._currentRadius!==e&&(this._currentRadius=e,n=!0),this._currentTail.equals(this._springBone.initialLocalChildPosition)||(this._currentTail.copy(this._springBone.initialLocalChildPosition),n=!0),n&&this._buildPosition()}_buildPosition(){for(let n=0;n<32;n++){const e=n/16*Math.PI;this._attrPos.setXYZ(n,Math.cos(e),Math.sin(e),0),this._attrPos.setXYZ(32+n,0,Math.cos(e),Math.sin(e)),this._attrPos.setXYZ(64+n,Math.sin(e),0,Math.cos(e))}this.scale(this._currentRadius,this._currentRadius,this._currentRadius),this.translate(this._currentTail.x,this._currentTail.y,this._currentTail.z),this._attrPos.setXYZ(96,0,0,0),this._attrPos.setXYZ(97,this._currentTail.x,this._currentTail.y,this._currentTail.z),this._attrPos.needsUpdate=!0}_buildIndex(){for(let n=0;n<32;n++){const e=(n+1)%32;this._attrIndex.setXY(n*2,n,e),this._attrIndex.setXY(64+n*2,32+n,32+e),this._attrIndex.setXY(128+n*2,64+n,64+e)}this._attrIndex.setXY(192,96,97),this._attrIndex.needsUpdate=!0}},Sne=new D,Tne=class extends Xi{constructor(n){super(),this.matrixAutoUpdate=!1,this.springBone=n,this._geometry=new yne(this.springBone);const e=new Yi({color:16776960,depthTest:!1,depthWrite:!1});this._line=new va(this._geometry,e),this.add(this._line)}dispose(){this._geometry.dispose()}updateMatrixWorld(n){this.springBone.bone.updateWorldMatrix(!0,!1),this.matrix.copy(this.springBone.bone.matrixWorld);const e=this.matrix.elements;this._geometry.worldScale=Sne.set(e[0],e[1],e[2]).length(),this._geometry.update(),super.updateMatrixWorld(n)}},Gb=class extends Xt{constructor(n){super(),this.colliderMatrix=new Me,this.shape=n}updateWorldMatrix(n,e){super.updateWorldMatrix(n,e),Ene(this.colliderMatrix,this.matrixWorld,this.shape.offset)}};function Ene(n,e,t){const i=e.elements;n.copy(e),t&&(n.elements[12]=i[0]*t.x+i[4]*t.y+i[8]*t.z+i[12],n.elements[13]=i[1]*t.x+i[5]*t.y+i[9]*t.z+i[13],n.elements[14]=i[2]*t.x+i[6]*t.y+i[10]*t.z+i[14])}var bne=new Me;function Mne(n){return n.invert?n.invert():n.getInverse(bne.copy(n)),n}var Ane=class{constructor(n){this._inverseCache=new Me,this._shouldUpdateInverse=!0,this.matrix=n;const e={set:(t,i,r)=>(this._shouldUpdateInverse=!0,t[i]=r,!0)};this._originalElements=n.elements,n.elements=new Proxy(n.elements,e)}get inverse(){return this._shouldUpdateInverse&&(Mne(this._inverseCache.copy(this.matrix)),this._shouldUpdateInverse=!1),this._inverseCache}revert(){this.matrix.elements=this._originalElements}},kb=new Me,cf=new D,$m=new D,e0=new D,t0=new D,wne=new Me,Rne=class{constructor(n,e,t={},i=[]){this._currentTail=new D,this._prevTail=new D,this._boneAxis=new D,this._worldSpaceBoneLength=0,this._center=null,this._initialLocalMatrix=new Me,this._initialLocalRotation=new ft,this._initialLocalChildPosition=new D;var r,a,s,o,l,u;this.bone=n,this.bone.matrixAutoUpdate=!1,this.child=e,this.settings={hitRadius:(r=t.hitRadius)!=null?r:0,stiffness:(a=t.stiffness)!=null?a:1,gravityPower:(s=t.gravityPower)!=null?s:0,gravityDir:(l=(o=t.gravityDir)==null?void 0:o.clone())!=null?l:new D(0,-1,0),dragForce:(u=t.dragForce)!=null?u:.4},this.colliderGroups=i}get dependencies(){const n=new Set,e=this.bone.parent;e&&n.add(e);for(let t=0;t{e(r)})}function uA(n,e){n.children.forEach(t=>{e(t)||uA(t,e)})}function Dne(n){var e;const t=new Map;for(const i of n){let r=i;do{const a=((e=t.get(r))!=null?e:0)+1;if(a===n.size)return r;t.set(r,a),r=r.parent}while(r!==null)}return null}var xI=class{constructor(){this._joints=new Set,this._sortedJoints=[],this._hasWarnedCircularDependency=!1,this._ancestors=[],this._objectSpringBonesMap=new Map,this._isSortedJointsDirty=!1,this._relevantChildrenUpdated=this._relevantChildrenUpdated.bind(this)}get joints(){return this._joints}get springBones(){return console.warn("VRMSpringBoneManager: springBones is deprecated. use joints instead."),this._joints}get colliderGroups(){const n=new Set;return this._joints.forEach(e=>{e.colliderGroups.forEach(t=>{n.add(t)})}),Array.from(n)}get colliders(){const n=new Set;return this.colliderGroups.forEach(e=>{e.colliders.forEach(t=>{n.add(t)})}),Array.from(n)}addJoint(n){this._joints.add(n);let e=this._objectSpringBonesMap.get(n.bone);e==null&&(e=new Set,this._objectSpringBonesMap.set(n.bone,e)),e.add(n),this._isSortedJointsDirty=!0}addSpringBone(n){console.warn("VRMSpringBoneManager: addSpringBone() is deprecated. use addJoint() instead."),this.addJoint(n)}deleteJoint(n){this._joints.delete(n),this._objectSpringBonesMap.get(n.bone).delete(n),this._isSortedJointsDirty=!0}deleteSpringBone(n){console.warn("VRMSpringBoneManager: deleteSpringBone() is deprecated. use deleteJoint() instead."),this.deleteJoint(n)}setInitState(){this._sortJoints();for(let n=0;n{var s,o;return((o=(s=this._objectSpringBonesMap.get(a))==null?void 0:s.size)!=null?o:0)>0?!0:(this._ancestors.push(a),!1)})),this._isSortedJointsDirty=!1}_insertJointSort(n,e,t,i,r){if(t.has(n))return;if(e.has(n)){this._hasWarnedCircularDependency||(console.warn("VRMSpringBoneManager: Circular dependency detected"),this._hasWarnedCircularDependency=!0);return}e.add(n);const a=n.dependencies;for(const s of a){let o=!1,l=null;Cne(s,u=>{const d=this._objectSpringBonesMap.get(u);if(d)for(const f of d)o=!0,this._insertJointSort(f,e,t,i,r);else o||(l=u)}),l&&r.add(l)}i.push(n),t.add(n)}_relevantChildrenUpdated(n){var e,t;return((t=(e=this._objectSpringBonesMap.get(n))==null?void 0:e.size)!=null?t:0)>0?!0:(n.updateWorldMatrix(!1,!1),!1)}},yI="VRMC_springBone_extended_collider",Nne=new Set(["1.0","1.0-beta"]),One=new Set(["1.0"]),Iz=class Af{get name(){return Af.EXTENSION_NAME}constructor(e,t){var i;this.parser=e,this.jointHelperRoot=t==null?void 0:t.jointHelperRoot,this.colliderHelperRoot=t==null?void 0:t.colliderHelperRoot,this.useExtendedColliders=(i=t==null?void 0:t.useExtendedColliders)!=null?i:!0}afterRoot(e){return dx(this,null,function*(){e.userData.vrmSpringBoneManager=yield this._import(e)})}_import(e){return dx(this,null,function*(){const t=yield this._v1Import(e);if(t!=null)return t;const i=yield this._v0Import(e);return i??null})}_v1Import(e){return dx(this,null,function*(){var t,i,r,a,s;const o=e.parser.json;if(!(((t=o.extensionsUsed)==null?void 0:t.indexOf(Af.EXTENSION_NAME))!==-1))return null;const u=new xI,d=yield e.parser.getDependencies("node"),f=(i=o.extensions)==null?void 0:i[Af.EXTENSION_NAME];if(!f)return null;const p=f.specVersion;if(!Nne.has(p))return console.warn(`VRMSpringBoneLoaderPlugin: Unknown ${Af.EXTENSION_NAME} specVersion "${p}"`),null;const m=(r=f.colliders)==null?void 0:r.map((x,S)=>{var _,T,E,b,R,w,L,U,N,C,z,W,K,oe,ae;const X=d[x.node];if(X==null)return console.warn(`VRMSpringBoneLoaderPlugin: The collider #${S} attempted to use the node #${x.node} but not found`),null;const te=x.shape,Q=(_=x.extensions)==null?void 0:_[yI];if(this.useExtendedColliders&&Q!=null){const ce=Q.specVersion;if(!One.has(ce))console.warn(`VRMSpringBoneLoaderPlugin: Unknown ${yI} specVersion "${ce}". Fallbacking to the ${Af.EXTENSION_NAME} definition`);else{const se=Q.shape;if(se.sphere)return this._importSphereCollider(X,{offset:new D().fromArray((T=se.sphere.offset)!=null?T:[0,0,0]),radius:(E=se.sphere.radius)!=null?E:0,inside:(b=se.sphere.inside)!=null?b:!1});if(se.capsule)return this._importCapsuleCollider(X,{offset:new D().fromArray((R=se.capsule.offset)!=null?R:[0,0,0]),radius:(w=se.capsule.radius)!=null?w:0,tail:new D().fromArray((L=se.capsule.tail)!=null?L:[0,0,0]),inside:(U=se.capsule.inside)!=null?U:!1});if(se.plane)return this._importPlaneCollider(X,{offset:new D().fromArray((N=se.plane.offset)!=null?N:[0,0,0]),normal:new D().fromArray((C=se.plane.normal)!=null?C:[0,0,1])})}}if(te.sphere)return this._importSphereCollider(X,{offset:new D().fromArray((z=te.sphere.offset)!=null?z:[0,0,0]),radius:(W=te.sphere.radius)!=null?W:0,inside:!1});if(te.capsule)return this._importCapsuleCollider(X,{offset:new D().fromArray((K=te.capsule.offset)!=null?K:[0,0,0]),radius:(oe=te.capsule.radius)!=null?oe:0,tail:new D().fromArray((ae=te.capsule.tail)!=null?ae:[0,0,0]),inside:!1});throw new Error(`VRMSpringBoneLoaderPlugin: The collider #${S} has no valid shape`)}),v=(a=f.colliderGroups)==null?void 0:a.map((x,S)=>{var _;return{colliders:((_=x.colliders)!=null?_:[]).flatMap(E=>{const b=m==null?void 0:m[E];return b??(console.warn(`VRMSpringBoneLoaderPlugin: The colliderGroup #${S} attempted to use a collider #${E} but not found`),[])}),name:x.name}});return(s=f.springs)==null||s.forEach((x,S)=>{var _;const T=x.joints,E=(_=x.colliderGroups)==null?void 0:_.map(w=>{const L=v==null?void 0:v[w];if(L==null)throw new Error(`VRMSpringBoneLoaderPlugin: The spring #${S} attempted to use a colliderGroup ${w} but not found`);return L}),b=x.center!=null?d[x.center]:void 0;let R;T.forEach(w=>{if(R){const L=R.node,U=d[L],N=w.node,C=d[N],z={hitRadius:R.hitRadius,dragForce:R.dragForce,gravityPower:R.gravityPower,stiffness:R.stiffness,gravityDir:R.gravityDir!=null?new D().fromArray(R.gravityDir):void 0},W=this._importJoint(U,C,z,E);b&&(W.center=b),u.addJoint(W)}R=w})}),u.setInitState(),u})}_v0Import(e){return dx(this,null,function*(){var t,i,r;const a=e.parser.json;if(!(((t=a.extensionsUsed)==null?void 0:t.indexOf("VRM"))!==-1))return null;const o=(i=a.extensions)==null?void 0:i.VRM,l=o==null?void 0:o.secondaryAnimation;if(!l)return null;const u=l==null?void 0:l.boneGroups;if(!u)return null;const d=new xI,f=yield e.parser.getDependencies("node"),p=(r=l.colliderGroups)==null?void 0:r.map(m=>{var v;const x=f[m.node];return{colliders:((v=m.colliders)!=null?v:[]).map((_,T)=>{var E,b,R;const w=new D(0,0,0);return _.offset&&w.set((E=_.offset.x)!=null?E:0,(b=_.offset.y)!=null?b:0,_.offset.z?-_.offset.z:0),this._importSphereCollider(x,{offset:w,radius:(R=_.radius)!=null?R:0,inside:!1})})}});return u==null||u.forEach((m,v)=>{const x=m.bones;x&&x.forEach(S=>{var _,T,E,b;const R=f[S],w=new D;m.gravityDir?w.set((_=m.gravityDir.x)!=null?_:0,(T=m.gravityDir.y)!=null?T:0,(E=m.gravityDir.z)!=null?E:0):w.set(0,-1,0);const L=m.center!=null?f[m.center]:void 0,U={hitRadius:m.hitRadius,dragForce:m.dragForce,gravityPower:m.gravityPower,stiffness:m.stiffiness,gravityDir:w},N=(b=m.colliderGroups)==null?void 0:b.map(C=>{const z=p==null?void 0:p[C];if(z==null)throw new Error(`VRMSpringBoneLoaderPlugin: The spring #${v} attempted to use a colliderGroup ${C} but not found`);return z});R.traverse(C=>{var z;const W=(z=C.children[0])!=null?z:null,K=this._importJoint(C,W,U,N);L&&(K.center=L),d.addJoint(K)})})}),e.scene.updateMatrixWorld(),d.setInitState(),d})}_importJoint(e,t,i,r){const a=new Rne(e,t,i,r);if(this.jointHelperRoot){const s=new Tne(a);this.jointHelperRoot.add(s),s.renderOrder=this.jointHelperRoot.renderOrder}return a}_importSphereCollider(e,t){const i=new Lz(t),r=new Gb(i);if(e.add(r),this.colliderHelperRoot){const a=new Vb(r);this.colliderHelperRoot.add(a),a.renderOrder=this.colliderHelperRoot.renderOrder}return r}_importCapsuleCollider(e,t){const i=new Nz(t),r=new Gb(i);if(e.add(r),this.colliderHelperRoot){const a=new Vb(r);this.colliderHelperRoot.add(a),a.renderOrder=this.colliderHelperRoot.renderOrder}return r}_importPlaneCollider(e,t){const i=new Oz(t),r=new Gb(i);if(e.add(r),this.colliderHelperRoot){const a=new Vb(r);this.colliderHelperRoot.add(a),a.renderOrder=this.colliderHelperRoot.renderOrder}return r}};Iz.EXTENSION_NAME="VRMC_springBone";var Lne=Iz,Ine=class{get name(){return"VRMLoaderPlugin"}constructor(n,e){var t,i,r,a,s,o,l,u,d,f;this.parser=n;const p=e==null?void 0:e.helperRoot,m=e==null?void 0:e.autoUpdateHumanBones;this.expressionPlugin=(t=e==null?void 0:e.expressionPlugin)!=null?t:new Qee(n),this.firstPersonPlugin=(i=e==null?void 0:e.firstPersonPlugin)!=null?i:new Jee(n),this.humanoidPlugin=(r=e==null?void 0:e.humanoidPlugin)!=null?r:new ate(n,{helperRoot:p,autoUpdateHumanBones:m}),this.lookAtPlugin=(a=e==null?void 0:e.lookAtPlugin)!=null?a:new yte(n,{helperRoot:p}),this.metaPlugin=(s=e==null?void 0:e.metaPlugin)!=null?s:new Ete(n),this.mtoonMaterialPlugin=(o=e==null?void 0:e.mtoonMaterialPlugin)!=null?o:new Bte(n),this.materialsHDREmissiveMultiplierPlugin=(l=e==null?void 0:e.materialsHDREmissiveMultiplierPlugin)!=null?l:new Hte(n),this.materialsV0CompatPlugin=(u=e==null?void 0:e.materialsV0CompatPlugin)!=null?u:new Yte(n),this.springBonePlugin=(d=e==null?void 0:e.springBonePlugin)!=null?d:new Lne(n,{colliderHelperRoot:p,jointHelperRoot:p}),this.nodeConstraintPlugin=(f=e==null?void 0:e.nodeConstraintPlugin)!=null?f:new pne(n,{helperRoot:p})}beforeRoot(){return cx(this,null,function*(){yield this.materialsV0CompatPlugin.beforeRoot(),yield this.mtoonMaterialPlugin.beforeRoot()})}loadMesh(n){return cx(this,null,function*(){return yield this.mtoonMaterialPlugin.loadMesh(n)})}getMaterialType(n){const e=this.mtoonMaterialPlugin.getMaterialType(n);return e??null}extendMaterialParams(n,e){return cx(this,null,function*(){yield this.materialsHDREmissiveMultiplierPlugin.extendMaterialParams(n,e),yield this.mtoonMaterialPlugin.extendMaterialParams(n,e)})}afterRoot(n){return cx(this,null,function*(){yield this.metaPlugin.afterRoot(n),yield this.humanoidPlugin.afterRoot(n),yield this.expressionPlugin.afterRoot(n),yield this.lookAtPlugin.afterRoot(n),yield this.firstPersonPlugin.afterRoot(n),yield this.springBonePlugin.afterRoot(n),yield this.nodeConstraintPlugin.afterRoot(n),yield this.mtoonMaterialPlugin.afterRoot(n);const e=n.userData.vrmMeta,t=n.userData.vrmHumanoid;if(e&&t){const i=new Mte({scene:n.scene,expressionManager:n.userData.vrmExpressionManager,firstPerson:n.userData.vrmFirstPerson,humanoid:t,lookAt:n.userData.vrmLookAt,meta:e,materials:n.userData.vrmMToonMaterials,springBoneManager:n.userData.vrmSpringBoneManager,nodeConstraintManager:n.userData.vrmNodeConstraintManager});n.userData.vrm=i}})}};function Une(n){const e=new Set;return n.traverse(t=>{if(!t.isMesh)return;const i=t;e.add(i)}),e}function SI(n,e,t){if(e.size===1){const s=e.values().next().value;if(s.weight===1)return n[s.index]}const i=new Float32Array(n[0].count*3);let r=0;if(t)r=1;else for(const s of e)r+=s.weight;for(const s of e){const o=n[s.index],l=s.weight/r;for(let u=0;ud.getOrCreate(N)).join(","),L=`${b};${_};${w}`;let U=o.get(L);U==null&&(U=E.clone(),Gne(U,R,v),o.set(L,U)),T.geometry.setAttribute("skinIndex",U)}for(const T of m)T.bind(S,new Me)}}function Bne(n){const e=new Set;return n.traverse(t=>{if(!t.isSkinnedMesh)return;const i=t;e.add(i)}),e}function Fne(n,e){const t=new Set;for(let i=0;it)return!1;return!0}var Wb=class{constructor(){this._objectIndexMap=new Map,this._index=0}get(n){return this._objectIndexMap.get(n)}getOrCreate(n){let e=this._objectIndexMap.get(n);return e==null&&(e=this._index,this._objectIndexMap.set(n,e),this._index++),e}};function Wne(n){var e,t,i,r;const a=new Ct;a.name=n.name,a.setIndex(n.index);for(const[s,o]of Object.entries(n.attributes))a.setAttribute(s,o);for(const[s,o]of Object.entries(n.morphAttributes)){const l=s;a.morphAttributes[l]=o.concat()}a.morphTargetsRelative=n.morphTargetsRelative,a.groups=[];for(const s of n.groups)a.addGroup(s.start,s.count,s.materialIndex);return a.boundingSphere=(t=(e=n.boundingSphere)==null?void 0:e.clone())!=null?t:null,a.boundingBox=(r=(i=n.boundingBox)==null?void 0:i.clone())!=null?r:null,a.drawRange.start=n.drawRange.start,a.drawRange.count=n.drawRange.count,a.userData=n.userData,a}function TI(n){if(Object.values(n).forEach(e=>{e!=null&&e.isTexture&&e.dispose()}),n.isShaderMaterial){const e=n.uniforms;e&&Object.values(e).forEach(t=>{const i=t.value;i!=null&&i.isTexture&&i.dispose()})}n.dispose()}function Xne(n){const e=n.geometry;e&&e.dispose();const t=n.skeleton;t&&t.dispose();const i=n.material;i&&(Array.isArray(i)?i.forEach(r=>TI(r)):i&&TI(i))}function qne(n){n.traverse(Xne)}function Yne(n,e){var t,i;console.warn("VRMUtils.removeUnnecessaryJoints: removeUnnecessaryJoints is deprecated. Use combineSkeletons instead. combineSkeletons contributes more to the performance improvement. This function will be removed in the next major version.");const r=(t=e==null?void 0:e.experimentalSameBoneCounts)!=null?t:!1,a=[];n.traverse(l=>{l.type==="SkinnedMesh"&&a.push(l)});const s=new Map;let o=0;for(const l of a){const d=l.geometry.getAttribute("skinIndex");if(s.has(d))continue;const f=new Map,p=new Map;for(let m=0;m{var i,r,a,s;if(!t.isMesh)return;const o=t,l=o.geometry,u=l.index;if(u==null)return;const d=e.get(l);if(d!=null){o.geometry=d;return}const f=Object.values(l.attributes)[0].count,p=new Array(f);let m=0;const v=u.array;for(let b=0;b{T.addGroup(b.start,b.count,b.materialIndex)}),T.boundingBox=(r=(i=l.boundingBox)==null?void 0:i.clone())!=null?r:null,T.boundingSphere=(s=(a=l.boundingSphere)==null?void 0:a.clone())!=null?s:null,T.setDrawRange(l.drawRange.start,l.drawRange.count),T.userData=l.userData,e.set(l,T);{const b=u.array,R=new b.constructor(b.length);for(let w=0;w{const R=l.attributes[b];if(R.isInterleavedBufferAttribute)throw new Error("removeUnnecessaryVertices: InterleavedBufferAttribute is not supported");const w=R.array,{itemSize:L,normalized:U}=R,N=new w.constructor(S.length*L);S.forEach((C,z)=>{for(let W=0;W{for(let ae=0;aeK===0),T.morphAttributes[w][L]=new bt(W,C,z)}}E&&(T.morphAttributes={}),o.geometry=T}),Array.from(e.keys()).forEach(t=>{t.dispose()})}function Zne(n){var e;((e=n.meta)==null?void 0:e.metaVersion)==="0"&&(n.scene.rotation.y=Math.PI)}var rd=class{constructor(){}};rd.combineMorphs=Pne;rd.combineSkeletons=zne;rd.deepDispose=qne;rd.removeUnnecessaryJoints=Yne;rd.removeUnnecessaryVertices=jne;rd.rotateVRM0=Zne;/*! * @pixiv/three-vrm-core v3.4.4 * The implementation of core features of VRM, for @pixiv/three-vrm * @@ -5029,14 +5029,14 @@ void main() { * Copyright (c) 2019-2025 pixiv Inc. * @pixiv/three-vrm-animation is distributed under MIT License * https://github.com/pixiv/three-vrm/blob/release/LICENSE - */var EI=(n,e,t)=>new Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())}),Qne={Aa:"aa",Ih:"ih",Ou:"ou",Ee:"ee",Oh:"oh",Blink:"blink",Happy:"happy",Angry:"angry",Sad:"sad",Relaxed:"relaxed",LookUp:"lookUp",Surprised:"surprised",LookDown:"lookDown",LookLeft:"lookLeft",LookRight:"lookRight",BlinkLeft:"blinkLeft",BlinkRight:"blinkRight",Neutral:"neutral"};new Ye;new re;new D;new D;var bI={hips:null,spine:"hips",chest:"spine",upperChest:"chest",neck:"upperChest",head:"neck",leftEye:"head",rightEye:"head",jaw:"head",leftUpperLeg:"hips",leftLowerLeg:"leftUpperLeg",leftFoot:"leftLowerLeg",leftToes:"leftFoot",rightUpperLeg:"hips",rightLowerLeg:"rightUpperLeg",rightFoot:"rightLowerLeg",rightToes:"rightFoot",leftShoulder:"upperChest",leftUpperArm:"leftShoulder",leftLowerArm:"leftUpperArm",leftHand:"leftLowerArm",rightShoulder:"upperChest",rightUpperArm:"rightShoulder",rightLowerArm:"rightUpperArm",rightHand:"rightLowerArm",leftThumbMetacarpal:"leftHand",leftThumbProximal:"leftThumbMetacarpal",leftThumbDistal:"leftThumbProximal",leftIndexProximal:"leftHand",leftIndexIntermediate:"leftIndexProximal",leftIndexDistal:"leftIndexIntermediate",leftMiddleProximal:"leftHand",leftMiddleIntermediate:"leftMiddleProximal",leftMiddleDistal:"leftMiddleIntermediate",leftRingProximal:"leftHand",leftRingIntermediate:"leftRingProximal",leftRingDistal:"leftRingIntermediate",leftLittleProximal:"leftHand",leftLittleIntermediate:"leftLittleProximal",leftLittleDistal:"leftLittleIntermediate",rightThumbMetacarpal:"rightHand",rightThumbProximal:"rightThumbMetacarpal",rightThumbDistal:"rightThumbProximal",rightIndexProximal:"rightHand",rightIndexIntermediate:"rightIndexProximal",rightIndexDistal:"rightIndexIntermediate",rightMiddleProximal:"rightHand",rightMiddleIntermediate:"rightMiddleProximal",rightMiddleDistal:"rightMiddleIntermediate",rightRingProximal:"rightHand",rightRingIntermediate:"rightRingProximal",rightRingDistal:"rightRingIntermediate",rightLittleProximal:"rightHand",rightLittleIntermediate:"rightLittleProximal",rightLittleDistal:"rightLittleIntermediate"};function Kne(n){return n.invert?n.invert():n.inverse(),n}new D;new D;new D;new D;new D;new D(0,1,0);var Jne=new D,$ne=new D;function eie(n,e){return n.matrixWorld.decompose(Jne,e,$ne),e}function Xb(n){return[Math.atan2(-n.z,n.x),Math.atan2(n.y,Math.sqrt(n.x*n.x+n.z*n.z))]}function MI(n){const e=Math.round(n/2/Math.PI);return n-2*Math.PI*e}var AI=new D(0,0,1),tie=new D,nie=new D,iie=new D,rie=new ft,qb=new ft,wI=new ft,aie=new ft,Yb=new Ai,Pz=class zz{constructor(e,t){this.offsetFromHeadBone=new D,this.autoUpdate=!0,this.faceFront=new D(0,0,1),this.humanoid=e,this.applier=t,this._yaw=0,this._pitch=0,this._needsUpdate=!0,this._restHeadWorldQuaternion=this.getLookAtWorldQuaternion(new ft)}get yaw(){return this._yaw}set yaw(e){this._yaw=e,this._needsUpdate=!0}get pitch(){return this._pitch}set pitch(e){this._pitch=e,this._needsUpdate=!0}get euler(){return console.warn("VRMLookAt: euler is deprecated. use getEuler() instead."),this.getEuler(new Ai)}getEuler(e){return e.set(lt.DEG2RAD*this._pitch,lt.DEG2RAD*this._yaw,0,"YXZ")}copy(e){if(this.humanoid!==e.humanoid)throw new Error("VRMLookAt: humanoid must be same in order to copy");return this.offsetFromHeadBone.copy(e.offsetFromHeadBone),this.applier=e.applier,this.autoUpdate=e.autoUpdate,this.target=e.target,this.faceFront.copy(e.faceFront),this}clone(){return new zz(this.humanoid,this.applier).copy(this)}reset(){this._yaw=0,this._pitch=0,this._needsUpdate=!0}getLookAtWorldPosition(e){const t=this.humanoid.getRawBoneNode("head");return e.copy(this.offsetFromHeadBone).applyMatrix4(t.matrixWorld)}getLookAtWorldQuaternion(e){const t=this.humanoid.getRawBoneNode("head");return eie(t,e)}getFaceFrontQuaternion(e){if(this.faceFront.distanceToSquared(AI)<.01)return e.copy(this._restHeadWorldQuaternion).invert();const[t,i]=Xb(this.faceFront);return Yb.set(0,.5*Math.PI+t,i,"YZX"),e.setFromEuler(Yb).premultiply(aie.copy(this._restHeadWorldQuaternion).invert())}getLookAtWorldDirection(e){return this.getLookAtWorldQuaternion(qb),this.getFaceFrontQuaternion(wI),e.copy(AI).applyQuaternion(qb).applyQuaternion(wI).applyEuler(this.getEuler(Yb))}lookAt(e){const t=rie.copy(this._restHeadWorldQuaternion).multiply(Kne(this.getLookAtWorldQuaternion(qb))),i=this.getLookAtWorldPosition(nie),r=iie.copy(e).sub(i).applyQuaternion(t).normalize(),[a,s]=Xb(this.faceFront),[o,l]=Xb(r),u=MI(o-a),d=MI(s-l);this._yaw=lt.RAD2DEG*u,this._pitch=lt.RAD2DEG*d,this._needsUpdate=!0}update(e){this.target!=null&&this.autoUpdate&&this.lookAt(this.target.getWorldPosition(tie)),this._needsUpdate&&(this._needsUpdate=!1,this.applier.applyYawPitch(this._yaw,this._pitch))}};Pz.EULER_ORDER="YXZ";var sie=Pz;new D(0,0,1);new Ai(0,0,0,"YXZ");var RI=180/Math.PI,jb=new Ai,CI=class extends Xt{constructor(n){super(),this.vrmLookAt=n,this.type="VRMLookAtQuaternionProxy";const e=this.rotation._onChangeCallback;this.rotation._onChange(()=>{e(),this._applyToLookAt()});const t=this.quaternion._onChangeCallback;this.quaternion._onChange(()=>{t(),this._applyToLookAt()})}_applyToLookAt(){jb.setFromQuaternion(this.quaternion,sie.EULER_ORDER),this.vrmLookAt.yaw=RI*jb.y,this.vrmLookAt.pitch=RI*jb.x}};function oie(n,e,t){var i,r;const a=new Map,s=new Map;for(const[o,l]of n.humanoidTracks.rotation.entries()){const u=(i=e.getNormalizedBoneNode(o))==null?void 0:i.name;if(u!=null){const d=new nu(`${u}.quaternion`,l.times,l.values.map((f,p)=>t==="0"&&p%2===0?-f:f));s.set(o,d)}}for(const[o,l]of n.humanoidTracks.translation.entries()){const u=(r=e.getNormalizedBoneNode(o))==null?void 0:r.name;if(u!=null){const d=n.restHipsPosition.y,p=e.normalizedRestPose.hips.position[1]/d,m=l.clone();m.values=m.values.map((v,x)=>(t==="0"&&x%3!==1?-v:v)*p),m.name=`${u}.position`,a.set(o,m)}}return{translation:a,rotation:s}}function lie(n,e){const t=new Map,i=new Map;for(const[r,a]of n.expressionTracks.preset.entries()){const s=e.getExpressionTrackName(r);if(s!=null){const o=a.clone();o.name=s,t.set(r,o)}}for(const[r,a]of n.expressionTracks.custom.entries()){const s=e.getExpressionTrackName(r);if(s!=null){const o=a.clone();o.name=s,i.set(r,o)}}return{preset:t,custom:i}}function cie(n,e){if(n.lookAtTrack==null)return null;const t=n.lookAtTrack.clone();return t.name=e,t}function uie(n,e){const t=[],i=oie(n,e.humanoid,e.meta.metaVersion);if(t.push(...i.translation.values()),t.push(...i.rotation.values()),e.expressionManager!=null){const r=lie(n,e.expressionManager);t.push(...r.preset.values()),t.push(...r.custom.values())}if(e.lookAt!=null){let r=e.scene.children.find(s=>s instanceof CI);r==null?(console.warn("createVRMAnimationClip: VRMLookAtQuaternionProxy is not found. Creating a new one automatically. To suppress this warning, create a VRMLookAtQuaternionProxy manually"),r=new CI(e.lookAt),r.name="VRMLookAtQuaternionProxy",e.scene.add(r)):r.name===""&&(console.warn("createVRMAnimationClip: VRMLookAtQuaternionProxy is found but its name is not set. Setting the name automatically. To suppress this warning, set the name manually"),r.name="VRMLookAtQuaternionProxy");const a=cie(n,`${r.name}.quaternion`);a!=null&&t.push(a)}return new Vh("Clip",n.duration,t)}var hie=class{constructor(){this.duration=0,this.restHipsPosition=new D,this.humanoidTracks={translation:new Map,rotation:new Map},this.expressionTracks={preset:new Map,custom:new Map},this.lookAtTrack=null}};function DI(n,e){const t=n.length,i=[];let r=[],a=0;for(let s=0;s{const _=r.animations[S],T=this._parseAnimation(x,_,l,u);return T.restHipsPosition=p,T});n.userData.vrmAnimations=v})}_createNodeMap(n){var e,t,i,r,a;const s=new Map,o=new Map,l=(e=n.humanoid)==null?void 0:e.humanBones;l&&Object.entries(l).forEach(([p,m])=>{const v=m==null?void 0:m.node;v!=null&&s.set(v,p)});const u=(t=n.expressions)==null?void 0:t.preset;u&&Object.entries(u).forEach(([p,m])=>{const v=m==null?void 0:m.node;v!=null&&o.set(v,p)});const d=(i=n.expressions)==null?void 0:i.custom;d&&Object.entries(d).forEach(([p,m])=>{const{node:v}=m;o.set(v,p)});const f=(a=(r=n.lookAt)==null?void 0:r.node)!=null?a:null;return{humanoidIndexToName:s,expressionsIndexToName:o,lookAtIndex:f}}_createBoneWorldMatrixMap(n,e){return EI(this,null,function*(){var t,i;n.scene.updateWorldMatrix(!1,!0);const r=yield n.parser.getDependencies("node"),a=new Map;if(e.humanoid==null)return a;for(const[s,o]of Object.entries(e.humanoid.humanBones)){const l=o==null?void 0:o.node;if(l!=null){const u=r[l];a.set(s,u.matrixWorld),s==="hips"&&a.set("hipsParent",(i=(t=u.parent)==null?void 0:t.matrixWorld)!=null?i:die)}}return a})}_parseAnimation(n,e,t,i){const r=n.tracks,a=e.channels,s=new hie;return s.duration=n.duration,a.forEach((o,l)=>{const{node:u,path:d}=o.target,f=r[l];if(u==null)return;const p=t.humanoidIndexToName.get(u);if(p!=null){let v=bI[p];for(;v!=null&&i.get(v)==null;)v=bI[v];if(v==null&&(v="hipsParent"),d==="translation")if(p!=="hips")console.warn(`The loading animation contains a translation track for ${p}, which is not permitted in the VRMC_vrm_animation spec. ignoring the track`);else{const x=i.get("hipsParent"),S=DI(f.values,3).flatMap(T=>n0.fromArray(T).applyMatrix4(x).toArray()),_=f.clone();_.values=new Float32Array(S),s.humanoidTracks.translation.set(p,_)}else if(d==="rotation"){const x=i.get(p),S=i.get(v);x.decompose(n0,Zb,n0),Zb.invert(),S.decompose(n0,NI,n0);const _=DI(f.values,4).flatMap(E=>fie.fromArray(E).premultiply(NI).multiply(Zb).toArray()),T=f.clone();T.values=new Float32Array(_),s.humanoidTracks.rotation.set(p,T)}else throw new Error(`Invalid path "${d}"`);return}const m=t.expressionsIndexToName.get(u);if(m!=null){if(d==="translation"){const v=f.times,x=new Float32Array(f.values.length/3);for(let _=0;_new Promise((i,r)=>{var a=l=>{try{o(t.next(l))}catch(u){r(u)}},s=l=>{try{o(t.throw(l))}catch(u){r(u)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(a,s);o((t=t.apply(n,e)).next())}),Qne={Aa:"aa",Ih:"ih",Ou:"ou",Ee:"ee",Oh:"oh",Blink:"blink",Happy:"happy",Angry:"angry",Sad:"sad",Relaxed:"relaxed",LookUp:"lookUp",Surprised:"surprised",LookDown:"lookDown",LookLeft:"lookLeft",LookRight:"lookRight",BlinkLeft:"blinkLeft",BlinkRight:"blinkRight",Neutral:"neutral"};new Ye;new re;new D;new D;var bI={hips:null,spine:"hips",chest:"spine",upperChest:"chest",neck:"upperChest",head:"neck",leftEye:"head",rightEye:"head",jaw:"head",leftUpperLeg:"hips",leftLowerLeg:"leftUpperLeg",leftFoot:"leftLowerLeg",leftToes:"leftFoot",rightUpperLeg:"hips",rightLowerLeg:"rightUpperLeg",rightFoot:"rightLowerLeg",rightToes:"rightFoot",leftShoulder:"upperChest",leftUpperArm:"leftShoulder",leftLowerArm:"leftUpperArm",leftHand:"leftLowerArm",rightShoulder:"upperChest",rightUpperArm:"rightShoulder",rightLowerArm:"rightUpperArm",rightHand:"rightLowerArm",leftThumbMetacarpal:"leftHand",leftThumbProximal:"leftThumbMetacarpal",leftThumbDistal:"leftThumbProximal",leftIndexProximal:"leftHand",leftIndexIntermediate:"leftIndexProximal",leftIndexDistal:"leftIndexIntermediate",leftMiddleProximal:"leftHand",leftMiddleIntermediate:"leftMiddleProximal",leftMiddleDistal:"leftMiddleIntermediate",leftRingProximal:"leftHand",leftRingIntermediate:"leftRingProximal",leftRingDistal:"leftRingIntermediate",leftLittleProximal:"leftHand",leftLittleIntermediate:"leftLittleProximal",leftLittleDistal:"leftLittleIntermediate",rightThumbMetacarpal:"rightHand",rightThumbProximal:"rightThumbMetacarpal",rightThumbDistal:"rightThumbProximal",rightIndexProximal:"rightHand",rightIndexIntermediate:"rightIndexProximal",rightIndexDistal:"rightIndexIntermediate",rightMiddleProximal:"rightHand",rightMiddleIntermediate:"rightMiddleProximal",rightMiddleDistal:"rightMiddleIntermediate",rightRingProximal:"rightHand",rightRingIntermediate:"rightRingProximal",rightRingDistal:"rightRingIntermediate",rightLittleProximal:"rightHand",rightLittleIntermediate:"rightLittleProximal",rightLittleDistal:"rightLittleIntermediate"};function Kne(n){return n.invert?n.invert():n.inverse(),n}new D;new D;new D;new D;new D;new D(0,1,0);var Jne=new D,$ne=new D;function eie(n,e){return n.matrixWorld.decompose(Jne,e,$ne),e}function Xb(n){return[Math.atan2(-n.z,n.x),Math.atan2(n.y,Math.sqrt(n.x*n.x+n.z*n.z))]}function MI(n){const e=Math.round(n/2/Math.PI);return n-2*Math.PI*e}var AI=new D(0,0,1),tie=new D,nie=new D,iie=new D,rie=new ft,qb=new ft,wI=new ft,aie=new ft,Yb=new Ai,Pz=class zz{constructor(e,t){this.offsetFromHeadBone=new D,this.autoUpdate=!0,this.faceFront=new D(0,0,1),this.humanoid=e,this.applier=t,this._yaw=0,this._pitch=0,this._needsUpdate=!0,this._restHeadWorldQuaternion=this.getLookAtWorldQuaternion(new ft)}get yaw(){return this._yaw}set yaw(e){this._yaw=e,this._needsUpdate=!0}get pitch(){return this._pitch}set pitch(e){this._pitch=e,this._needsUpdate=!0}get euler(){return console.warn("VRMLookAt: euler is deprecated. use getEuler() instead."),this.getEuler(new Ai)}getEuler(e){return e.set(ht.DEG2RAD*this._pitch,ht.DEG2RAD*this._yaw,0,"YXZ")}copy(e){if(this.humanoid!==e.humanoid)throw new Error("VRMLookAt: humanoid must be same in order to copy");return this.offsetFromHeadBone.copy(e.offsetFromHeadBone),this.applier=e.applier,this.autoUpdate=e.autoUpdate,this.target=e.target,this.faceFront.copy(e.faceFront),this}clone(){return new zz(this.humanoid,this.applier).copy(this)}reset(){this._yaw=0,this._pitch=0,this._needsUpdate=!0}getLookAtWorldPosition(e){const t=this.humanoid.getRawBoneNode("head");return e.copy(this.offsetFromHeadBone).applyMatrix4(t.matrixWorld)}getLookAtWorldQuaternion(e){const t=this.humanoid.getRawBoneNode("head");return eie(t,e)}getFaceFrontQuaternion(e){if(this.faceFront.distanceToSquared(AI)<.01)return e.copy(this._restHeadWorldQuaternion).invert();const[t,i]=Xb(this.faceFront);return Yb.set(0,.5*Math.PI+t,i,"YZX"),e.setFromEuler(Yb).premultiply(aie.copy(this._restHeadWorldQuaternion).invert())}getLookAtWorldDirection(e){return this.getLookAtWorldQuaternion(qb),this.getFaceFrontQuaternion(wI),e.copy(AI).applyQuaternion(qb).applyQuaternion(wI).applyEuler(this.getEuler(Yb))}lookAt(e){const t=rie.copy(this._restHeadWorldQuaternion).multiply(Kne(this.getLookAtWorldQuaternion(qb))),i=this.getLookAtWorldPosition(nie),r=iie.copy(e).sub(i).applyQuaternion(t).normalize(),[a,s]=Xb(this.faceFront),[o,l]=Xb(r),u=MI(o-a),d=MI(s-l);this._yaw=ht.RAD2DEG*u,this._pitch=ht.RAD2DEG*d,this._needsUpdate=!0}update(e){this.target!=null&&this.autoUpdate&&this.lookAt(this.target.getWorldPosition(tie)),this._needsUpdate&&(this._needsUpdate=!1,this.applier.applyYawPitch(this._yaw,this._pitch))}};Pz.EULER_ORDER="YXZ";var sie=Pz;new D(0,0,1);new Ai(0,0,0,"YXZ");var RI=180/Math.PI,jb=new Ai,CI=class extends Xt{constructor(n){super(),this.vrmLookAt=n,this.type="VRMLookAtQuaternionProxy";const e=this.rotation._onChangeCallback;this.rotation._onChange(()=>{e(),this._applyToLookAt()});const t=this.quaternion._onChangeCallback;this.quaternion._onChange(()=>{t(),this._applyToLookAt()})}_applyToLookAt(){jb.setFromQuaternion(this.quaternion,sie.EULER_ORDER),this.vrmLookAt.yaw=RI*jb.y,this.vrmLookAt.pitch=RI*jb.x}};function oie(n,e,t){var i,r;const a=new Map,s=new Map;for(const[o,l]of n.humanoidTracks.rotation.entries()){const u=(i=e.getNormalizedBoneNode(o))==null?void 0:i.name;if(u!=null){const d=new nu(`${u}.quaternion`,l.times,l.values.map((f,p)=>t==="0"&&p%2===0?-f:f));s.set(o,d)}}for(const[o,l]of n.humanoidTracks.translation.entries()){const u=(r=e.getNormalizedBoneNode(o))==null?void 0:r.name;if(u!=null){const d=n.restHipsPosition.y,p=e.normalizedRestPose.hips.position[1]/d,m=l.clone();m.values=m.values.map((v,x)=>(t==="0"&&x%3!==1?-v:v)*p),m.name=`${u}.position`,a.set(o,m)}}return{translation:a,rotation:s}}function lie(n,e){const t=new Map,i=new Map;for(const[r,a]of n.expressionTracks.preset.entries()){const s=e.getExpressionTrackName(r);if(s!=null){const o=a.clone();o.name=s,t.set(r,o)}}for(const[r,a]of n.expressionTracks.custom.entries()){const s=e.getExpressionTrackName(r);if(s!=null){const o=a.clone();o.name=s,i.set(r,o)}}return{preset:t,custom:i}}function cie(n,e){if(n.lookAtTrack==null)return null;const t=n.lookAtTrack.clone();return t.name=e,t}function uie(n,e){const t=[],i=oie(n,e.humanoid,e.meta.metaVersion);if(t.push(...i.translation.values()),t.push(...i.rotation.values()),e.expressionManager!=null){const r=lie(n,e.expressionManager);t.push(...r.preset.values()),t.push(...r.custom.values())}if(e.lookAt!=null){let r=e.scene.children.find(s=>s instanceof CI);r==null?(console.warn("createVRMAnimationClip: VRMLookAtQuaternionProxy is not found. Creating a new one automatically. To suppress this warning, create a VRMLookAtQuaternionProxy manually"),r=new CI(e.lookAt),r.name="VRMLookAtQuaternionProxy",e.scene.add(r)):r.name===""&&(console.warn("createVRMAnimationClip: VRMLookAtQuaternionProxy is found but its name is not set. Setting the name automatically. To suppress this warning, set the name manually"),r.name="VRMLookAtQuaternionProxy");const a=cie(n,`${r.name}.quaternion`);a!=null&&t.push(a)}return new Vh("Clip",n.duration,t)}var hie=class{constructor(){this.duration=0,this.restHipsPosition=new D,this.humanoidTracks={translation:new Map,rotation:new Map},this.expressionTracks={preset:new Map,custom:new Map},this.lookAtTrack=null}};function DI(n,e){const t=n.length,i=[];let r=[],a=0;for(let s=0;s{const _=r.animations[S],T=this._parseAnimation(x,_,l,u);return T.restHipsPosition=p,T});n.userData.vrmAnimations=v})}_createNodeMap(n){var e,t,i,r,a;const s=new Map,o=new Map,l=(e=n.humanoid)==null?void 0:e.humanBones;l&&Object.entries(l).forEach(([p,m])=>{const v=m==null?void 0:m.node;v!=null&&s.set(v,p)});const u=(t=n.expressions)==null?void 0:t.preset;u&&Object.entries(u).forEach(([p,m])=>{const v=m==null?void 0:m.node;v!=null&&o.set(v,p)});const d=(i=n.expressions)==null?void 0:i.custom;d&&Object.entries(d).forEach(([p,m])=>{const{node:v}=m;o.set(v,p)});const f=(a=(r=n.lookAt)==null?void 0:r.node)!=null?a:null;return{humanoidIndexToName:s,expressionsIndexToName:o,lookAtIndex:f}}_createBoneWorldMatrixMap(n,e){return EI(this,null,function*(){var t,i;n.scene.updateWorldMatrix(!1,!0);const r=yield n.parser.getDependencies("node"),a=new Map;if(e.humanoid==null)return a;for(const[s,o]of Object.entries(e.humanoid.humanBones)){const l=o==null?void 0:o.node;if(l!=null){const u=r[l];a.set(s,u.matrixWorld),s==="hips"&&a.set("hipsParent",(i=(t=u.parent)==null?void 0:t.matrixWorld)!=null?i:die)}}return a})}_parseAnimation(n,e,t,i){const r=n.tracks,a=e.channels,s=new hie;return s.duration=n.duration,a.forEach((o,l)=>{const{node:u,path:d}=o.target,f=r[l];if(u==null)return;const p=t.humanoidIndexToName.get(u);if(p!=null){let v=bI[p];for(;v!=null&&i.get(v)==null;)v=bI[v];if(v==null&&(v="hipsParent"),d==="translation")if(p!=="hips")console.warn(`The loading animation contains a translation track for ${p}, which is not permitted in the VRMC_vrm_animation spec. ignoring the track`);else{const x=i.get("hipsParent"),S=DI(f.values,3).flatMap(T=>n0.fromArray(T).applyMatrix4(x).toArray()),_=f.clone();_.values=new Float32Array(S),s.humanoidTracks.translation.set(p,_)}else if(d==="rotation"){const x=i.get(p),S=i.get(v);x.decompose(n0,Zb,n0),Zb.invert(),S.decompose(n0,NI,n0);const _=DI(f.values,4).flatMap(E=>fie.fromArray(E).premultiply(NI).multiply(Zb).toArray()),T=f.clone();T.values=new Float32Array(_),s.humanoidTracks.rotation.set(p,T)}else throw new Error(`Invalid path "${d}"`);return}const m=t.expressionsIndexToName.get(u);if(m!=null){if(d==="translation"){const v=f.times,x=new Float32Array(f.values.length/3);for(let _=0;_e in n?vie(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,xie=(n,e,t)=>(_ie(n,e+"",t),t);class yie{constructor(){xie(this,"_listeners")}addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;const i=this._listeners;return i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;const r=this._listeners[e];if(r!==void 0){const a=r.indexOf(t);a!==-1&&r.splice(a,1)}}dispatchEvent(e){if(this._listeners===void 0)return;const i=this._listeners[e.type];if(i!==void 0){e.target=this;const r=i.slice(0);for(let a=0,s=r.length;ae in n?Sie(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,Lt=(n,e,t)=>(Tie(n,typeof e!="symbol"?e+"":e,t),t);const fx=new Pr,OI=new xs,Eie=Math.cos(70*(Math.PI/180)),LI=(n,e)=>(n%e+e)%e;let bie=class extends yie{constructor(e,t){super(),Lt(this,"object"),Lt(this,"domElement"),Lt(this,"enabled",!0),Lt(this,"target",new D),Lt(this,"minDistance",0),Lt(this,"maxDistance",1/0),Lt(this,"minZoom",0),Lt(this,"maxZoom",1/0),Lt(this,"minPolarAngle",0),Lt(this,"maxPolarAngle",Math.PI),Lt(this,"minAzimuthAngle",-1/0),Lt(this,"maxAzimuthAngle",1/0),Lt(this,"enableDamping",!1),Lt(this,"dampingFactor",.05),Lt(this,"enableZoom",!0),Lt(this,"zoomSpeed",1),Lt(this,"enableRotate",!0),Lt(this,"rotateSpeed",1),Lt(this,"enablePan",!0),Lt(this,"panSpeed",1),Lt(this,"screenSpacePanning",!0),Lt(this,"keyPanSpeed",7),Lt(this,"zoomToCursor",!1),Lt(this,"autoRotate",!1),Lt(this,"autoRotateSpeed",2),Lt(this,"reverseOrbit",!1),Lt(this,"reverseHorizontalOrbit",!1),Lt(this,"reverseVerticalOrbit",!1),Lt(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),Lt(this,"mouseButtons",{LEFT:rh.ROTATE,MIDDLE:rh.DOLLY,RIGHT:rh.PAN}),Lt(this,"touches",{ONE:ah.ROTATE,TWO:ah.DOLLY_PAN}),Lt(this,"target0"),Lt(this,"position0"),Lt(this,"zoom0"),Lt(this,"_domElementKeyEvents",null),Lt(this,"getPolarAngle"),Lt(this,"getAzimuthalAngle"),Lt(this,"setPolarAngle"),Lt(this,"setAzimuthalAngle"),Lt(this,"getDistance"),Lt(this,"getZoomScale"),Lt(this,"listenToKeyEvents"),Lt(this,"stopListenToKeyEvents"),Lt(this,"saveState"),Lt(this,"reset"),Lt(this,"update"),Lt(this,"connect"),Lt(this,"dispose"),Lt(this,"dollyIn"),Lt(this,"dollyOut"),Lt(this,"getScale"),Lt(this,"setScale"),this.object=e,this.domElement=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>d.phi,this.getAzimuthalAngle=()=>d.theta,this.setPolarAngle=J=>{let me=LI(J,2*Math.PI),Le=d.phi;Le<0&&(Le+=2*Math.PI),me<0&&(me+=2*Math.PI);let j=Math.abs(me-Le);2*Math.PI-j{let me=LI(J,2*Math.PI),Le=d.theta;Le<0&&(Le+=2*Math.PI),me<0&&(me+=2*Math.PI);let j=Math.abs(me-Le);2*Math.PI-ji.object.position.distanceTo(i.target),this.listenToKeyEvents=J=>{J.addEventListener("keydown",Se),this._domElementKeyEvents=J},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener("keydown",Se),this._domElementKeyEvents=null},this.saveState=()=>{i.target0.copy(i.target),i.position0.copy(i.object.position),i.zoom0=i.object.zoom},this.reset=()=>{i.target.copy(i.target0),i.object.position.copy(i.position0),i.object.zoom=i.zoom0,i.object.updateProjectionMatrix(),i.dispatchEvent(r),i.update(),l=o.NONE},this.update=(()=>{const J=new D,me=new D(0,1,0),Le=new ft().setFromUnitVectors(e.up,me),j=Le.clone().invert(),ke=new D,ge=new ft,We=2*Math.PI;return function(){const Re=i.object.position;Le.setFromUnitVectors(e.up,me),j.copy(Le).invert(),J.copy(Re).sub(i.target),J.applyQuaternion(Le),d.setFromVector3(J),i.autoRotate&&l===o.NONE&&oe(W()),i.enableDamping?(d.theta+=f.theta*i.dampingFactor,d.phi+=f.phi*i.dampingFactor):(d.theta+=f.theta,d.phi+=f.phi);let at=i.minAzimuthAngle,Et=i.maxAzimuthAngle;isFinite(at)&&isFinite(Et)&&(at<-Math.PI?at+=We:at>Math.PI&&(at-=We),Et<-Math.PI?Et+=We:Et>Math.PI&&(Et-=We),at<=Et?d.theta=Math.max(at,Math.min(Et,d.theta)):d.theta=d.theta>(at+Et)/2?Math.max(at,d.theta):Math.min(Et,d.theta)),d.phi=Math.max(i.minPolarAngle,Math.min(i.maxPolarAngle,d.phi)),d.makeSafe(),i.enableDamping===!0?i.target.addScaledVector(m,i.dampingFactor):i.target.add(m),i.zoomToCursor&&N||i.object.isOrthographicCamera?d.radius=nt(d.radius):d.radius=nt(d.radius*p),J.setFromSpherical(d),J.applyQuaternion(j),Re.copy(i.target).add(J),i.object.matrixAutoUpdate||i.object.updateMatrix(),i.object.lookAt(i.target),i.enableDamping===!0?(f.theta*=1-i.dampingFactor,f.phi*=1-i.dampingFactor,m.multiplyScalar(1-i.dampingFactor)):(f.set(0,0,0),m.set(0,0,0));let Gt=!1;if(i.zoomToCursor&&N){let kt=null;if(i.object instanceof si&&i.object.isPerspectiveCamera){const mi=J.length();kt=nt(mi*p);const gi=mi-kt;i.object.position.addScaledVector(L,gi),i.object.updateMatrixWorld()}else if(i.object.isOrthographicCamera){const mi=new D(U.x,U.y,0);mi.unproject(i.object),i.object.zoom=Math.max(i.minZoom,Math.min(i.maxZoom,i.object.zoom/p)),i.object.updateProjectionMatrix(),Gt=!0;const gi=new D(U.x,U.y,0);gi.unproject(i.object),i.object.position.sub(gi).add(mi),i.object.updateMatrixWorld(),kt=J.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),i.zoomToCursor=!1;kt!==null&&(i.screenSpacePanning?i.target.set(0,0,-1).transformDirection(i.object.matrix).multiplyScalar(kt).add(i.object.position):(fx.origin.copy(i.object.position),fx.direction.set(0,0,-1).transformDirection(i.object.matrix),Math.abs(i.object.up.dot(fx.direction))u||8*(1-ge.dot(i.object.quaternion))>u?(i.dispatchEvent(r),ke.copy(i.object.position),ge.copy(i.object.quaternion),Gt=!1,!0):!1}})(),this.connect=J=>{i.domElement=J,i.domElement.style.touchAction="none",i.domElement.addEventListener("contextmenu",Tt),i.domElement.addEventListener("pointerdown",ht),i.domElement.addEventListener("pointercancel",P),i.domElement.addEventListener("wheel",Ie)},this.dispose=()=>{var J,me,Le,j,ke,ge;i.domElement&&(i.domElement.style.touchAction="auto"),(J=i.domElement)==null||J.removeEventListener("contextmenu",Tt),(me=i.domElement)==null||me.removeEventListener("pointerdown",ht),(Le=i.domElement)==null||Le.removeEventListener("pointercancel",P),(j=i.domElement)==null||j.removeEventListener("wheel",Ie),(ke=i.domElement)==null||ke.ownerDocument.removeEventListener("pointermove",k),(ge=i.domElement)==null||ge.ownerDocument.removeEventListener("pointerup",P),i._domElementKeyEvents!==null&&i._domElementKeyEvents.removeEventListener("keydown",Se)};const i=this,r={type:"change"},a={type:"start"},s={type:"end"},o={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let l=o.NONE;const u=1e-6,d=new Iy,f=new Iy;let p=1;const m=new D,v=new re,x=new re,S=new re,_=new re,T=new re,E=new re,b=new re,R=new re,w=new re,L=new D,U=new re;let N=!1;const C=[],z={};function W(){return 2*Math.PI/60/60*i.autoRotateSpeed}function K(){return Math.pow(.95,i.zoomSpeed)}function oe(J){i.reverseOrbit||i.reverseHorizontalOrbit?f.theta+=J:f.theta-=J}function ae(J){i.reverseOrbit||i.reverseVerticalOrbit?f.phi+=J:f.phi-=J}const X=(()=>{const J=new D;return function(Le,j){J.setFromMatrixColumn(j,0),J.multiplyScalar(-Le),m.add(J)}})(),te=(()=>{const J=new D;return function(Le,j){i.screenSpacePanning===!0?J.setFromMatrixColumn(j,1):(J.setFromMatrixColumn(j,0),J.crossVectors(i.object.up,J)),J.multiplyScalar(Le),m.add(J)}})(),Q=(()=>{const J=new D;return function(Le,j){const ke=i.domElement;if(ke&&i.object instanceof si&&i.object.isPerspectiveCamera){const ge=i.object.position;J.copy(ge).sub(i.target);let We=J.length();We*=Math.tan(i.object.fov/2*Math.PI/180),X(2*Le*We/ke.clientHeight,i.object.matrix),te(2*j*We/ke.clientHeight,i.object.matrix)}else ke&&i.object instanceof Za&&i.object.isOrthographicCamera?(X(Le*(i.object.right-i.object.left)/i.object.zoom/ke.clientWidth,i.object.matrix),te(j*(i.object.top-i.object.bottom)/i.object.zoom/ke.clientHeight,i.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),i.enablePan=!1)}})();function ce(J){i.object instanceof si&&i.object.isPerspectiveCamera||i.object instanceof Za&&i.object.isOrthographicCamera?p=J:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),i.enableZoom=!1)}function se(J){ce(p/J)}function De(J){ce(p*J)}function Xe(J){if(!i.zoomToCursor||!i.domElement)return;N=!0;const me=i.domElement.getBoundingClientRect(),Le=J.clientX-me.left,j=J.clientY-me.top,ke=me.width,ge=me.height;U.x=Le/ke*2-1,U.y=-(j/ge)*2+1,L.set(U.x,U.y,1).unproject(i.object).sub(i.object.position).normalize()}function nt(J){return Math.max(i.minDistance,Math.min(i.maxDistance,J))}function tt(J){v.set(J.clientX,J.clientY)}function xt(J){Xe(J),b.set(J.clientX,J.clientY)}function ve(J){_.set(J.clientX,J.clientY)}function we(J){x.set(J.clientX,J.clientY),S.subVectors(x,v).multiplyScalar(i.rotateSpeed);const me=i.domElement;me&&(oe(2*Math.PI*S.x/me.clientHeight),ae(2*Math.PI*S.y/me.clientHeight)),v.copy(x),i.update()}function Ze(J){R.set(J.clientX,J.clientY),w.subVectors(R,b),w.y>0?se(K()):w.y<0&&De(K()),b.copy(R),i.update()}function de(J){T.set(J.clientX,J.clientY),E.subVectors(T,_).multiplyScalar(i.panSpeed),Q(E.x,E.y),_.copy(T),i.update()}function it(J){Xe(J),J.deltaY<0?De(K()):J.deltaY>0&&se(K()),i.update()}function wt(J){let me=!1;switch(J.code){case i.keys.UP:Q(0,i.keyPanSpeed),me=!0;break;case i.keys.BOTTOM:Q(0,-i.keyPanSpeed),me=!0;break;case i.keys.LEFT:Q(i.keyPanSpeed,0),me=!0;break;case i.keys.RIGHT:Q(-i.keyPanSpeed,0),me=!0;break}me&&(J.preventDefault(),i.update())}function ct(){if(C.length==1)v.set(C[0].pageX,C[0].pageY);else{const J=.5*(C[0].pageX+C[1].pageX),me=.5*(C[0].pageY+C[1].pageY);v.set(J,me)}}function Qe(){if(C.length==1)_.set(C[0].pageX,C[0].pageY);else{const J=.5*(C[0].pageX+C[1].pageX),me=.5*(C[0].pageY+C[1].pageY);_.set(J,me)}}function Ee(){const J=C[0].pageX-C[1].pageX,me=C[0].pageY-C[1].pageY,Le=Math.sqrt(J*J+me*me);b.set(0,Le)}function V(){i.enableZoom&&Ee(),i.enablePan&&Qe()}function Ae(){i.enableZoom&&Ee(),i.enableRotate&&ct()}function Oe(J){if(C.length==1)x.set(J.pageX,J.pageY);else{const Le=pt(J),j=.5*(J.pageX+Le.x),ke=.5*(J.pageY+Le.y);x.set(j,ke)}S.subVectors(x,v).multiplyScalar(i.rotateSpeed);const me=i.domElement;me&&(oe(2*Math.PI*S.x/me.clientHeight),ae(2*Math.PI*S.y/me.clientHeight)),v.copy(x)}function Ve(J){if(C.length==1)T.set(J.pageX,J.pageY);else{const me=pt(J),Le=.5*(J.pageX+me.x),j=.5*(J.pageY+me.y);T.set(Le,j)}E.subVectors(T,_).multiplyScalar(i.panSpeed),Q(E.x,E.y),_.copy(T)}function Fe(J){const me=pt(J),Le=J.pageX-me.x,j=J.pageY-me.y,ke=Math.sqrt(Le*Le+j*j);R.set(0,ke),w.set(0,Math.pow(R.y/b.y,i.zoomSpeed)),se(w.y),b.copy(R)}function $e(J){i.enableZoom&&Fe(J),i.enablePan&&Ve(J)}function Je(J){i.enableZoom&&Fe(J),i.enableRotate&&Oe(J)}function ht(J){var me,Le;i.enabled!==!1&&(C.length===0&&((me=i.domElement)==null||me.ownerDocument.addEventListener("pointermove",k),(Le=i.domElement)==null||Le.ownerDocument.addEventListener("pointerup",P)),vt(J),J.pointerType==="touch"?yt(J):he(J))}function k(J){i.enabled!==!1&&(J.pointerType==="touch"?je(J):be(J))}function P(J){var me,Le,j;Ue(J),C.length===0&&((me=i.domElement)==null||me.releasePointerCapture(J.pointerId),(Le=i.domElement)==null||Le.ownerDocument.removeEventListener("pointermove",k),(j=i.domElement)==null||j.ownerDocument.removeEventListener("pointerup",P)),i.dispatchEvent(s),l=o.NONE}function he(J){let me;switch(J.button){case 0:me=i.mouseButtons.LEFT;break;case 1:me=i.mouseButtons.MIDDLE;break;case 2:me=i.mouseButtons.RIGHT;break;default:me=-1}switch(me){case rh.DOLLY:if(i.enableZoom===!1)return;xt(J),l=o.DOLLY;break;case rh.ROTATE:if(J.ctrlKey||J.metaKey||J.shiftKey){if(i.enablePan===!1)return;ve(J),l=o.PAN}else{if(i.enableRotate===!1)return;tt(J),l=o.ROTATE}break;case rh.PAN:if(J.ctrlKey||J.metaKey||J.shiftKey){if(i.enableRotate===!1)return;tt(J),l=o.ROTATE}else{if(i.enablePan===!1)return;ve(J),l=o.PAN}break;default:l=o.NONE}l!==o.NONE&&i.dispatchEvent(a)}function be(J){if(i.enabled!==!1)switch(l){case o.ROTATE:if(i.enableRotate===!1)return;we(J);break;case o.DOLLY:if(i.enableZoom===!1)return;Ze(J);break;case o.PAN:if(i.enablePan===!1)return;de(J);break}}function Ie(J){i.enabled===!1||i.enableZoom===!1||l!==o.NONE&&l!==o.ROTATE||(J.preventDefault(),i.dispatchEvent(a),it(J),i.dispatchEvent(s))}function Se(J){i.enabled===!1||i.enablePan===!1||wt(J)}function yt(J){switch(He(J),C.length){case 1:switch(i.touches.ONE){case ah.ROTATE:if(i.enableRotate===!1)return;ct(),l=o.TOUCH_ROTATE;break;case ah.PAN:if(i.enablePan===!1)return;Qe(),l=o.TOUCH_PAN;break;default:l=o.NONE}break;case 2:switch(i.touches.TWO){case ah.DOLLY_PAN:if(i.enableZoom===!1&&i.enablePan===!1)return;V(),l=o.TOUCH_DOLLY_PAN;break;case ah.DOLLY_ROTATE:if(i.enableZoom===!1&&i.enableRotate===!1)return;Ae(),l=o.TOUCH_DOLLY_ROTATE;break;default:l=o.NONE}break;default:l=o.NONE}l!==o.NONE&&i.dispatchEvent(a)}function je(J){switch(He(J),l){case o.TOUCH_ROTATE:if(i.enableRotate===!1)return;Oe(J),i.update();break;case o.TOUCH_PAN:if(i.enablePan===!1)return;Ve(J),i.update();break;case o.TOUCH_DOLLY_PAN:if(i.enableZoom===!1&&i.enablePan===!1)return;$e(J),i.update();break;case o.TOUCH_DOLLY_ROTATE:if(i.enableZoom===!1&&i.enableRotate===!1)return;Je(J),i.update();break;default:l=o.NONE}}function Tt(J){i.enabled!==!1&&J.preventDefault()}function vt(J){C.push(J)}function Ue(J){delete z[J.pointerId];for(let me=0;me{De(J),i.update()},this.dollyOut=(J=K())=>{se(J),i.update()},this.getScale=()=>p,this.setScale=J=>{ce(J),i.update()},this.getZoomScale=()=>K(),t!==void 0&&this.connect(t),this.update()}};function Mie(n,e,t){const i=pn(m=>m.size),r=pn(m=>m.viewport),a=typeof n=="number"?n:i.width*r.dpr,s=i.height*r.dpr,o=(typeof n=="number"?t:n)||{},{samples:l=0,depth:u,...d}=o,f=u??o.depthBuffer,p=ie.useMemo(()=>{const m=new pi(a,s,{minFilter:Bt,magFilter:Bt,type:Jn,...d});return f&&(m.depthTexture=new iv(a,s,fi)),m.samples=l,m},[]);return ie.useLayoutEffect(()=>{p.setSize(a,s),l&&(p.samples=l)},[l,p,a,s]),ie.useEffect(()=>()=>p.dispose(),[]),p}const Aie=n=>typeof n=="function",Bz=ie.forwardRef(({envMap:n,resolution:e=256,frames:t=1/0,makeDefault:i,children:r,...a},s)=>{const o=pn(({set:S})=>S),l=pn(({camera:S})=>S),u=pn(({size:S})=>S),d=ie.useRef(null);ie.useImperativeHandle(s,()=>d.current,[]);const f=ie.useRef(null),p=Mie(e);ie.useLayoutEffect(()=>{a.manual||(d.current.aspect=u.width/u.height)},[u,a]),ie.useLayoutEffect(()=>{d.current.updateProjectionMatrix()});let m=0,v=null;const x=Aie(r);return _a(S=>{x&&(t===1/0||m{if(i){const S=l;return o(()=>({camera:d.current})),()=>o(()=>({camera:S}))}},[d,i,o]),ie.createElement(ie.Fragment,null,ie.createElement("perspectiveCamera",ky({ref:d},a),!x&&r),ie.createElement("group",{ref:f},x&&r(p.texture)))}),wie=ie.forwardRef(({makeDefault:n,camera:e,regress:t,domElement:i,enableDamping:r=!0,keyEvents:a=!1,onChange:s,onStart:o,onEnd:l,...u},d)=>{const f=pn(w=>w.invalidate),p=pn(w=>w.camera),m=pn(w=>w.gl),v=pn(w=>w.events),x=pn(w=>w.setEvents),S=pn(w=>w.set),_=pn(w=>w.get),T=pn(w=>w.performance),E=e||p,b=i||v.connected||m.domElement,R=ie.useMemo(()=>new bie(E),[E]);return _a(()=>{R.enabled&&R.update()},-1),ie.useEffect(()=>(a&&R.connect(a===!0?b:a),R.connect(b),()=>void R.dispose()),[a,b,t,R,f]),ie.useEffect(()=>{const w=N=>{f(),t&&T.regress(),s&&s(N)},L=N=>{o&&o(N)},U=N=>{l&&l(N)};return R.addEventListener("change",w),R.addEventListener("start",L),R.addEventListener("end",U),()=>{R.removeEventListener("start",L),R.removeEventListener("end",U),R.removeEventListener("change",w)}},[s,o,l,R,f,x]),ie.useEffect(()=>{if(n){const w=_().controls;return S({controls:R}),()=>S({controls:w})}},[n,R]),ie.createElement("primitive",ky({ref:d,object:R,enableDamping:r},u))});/** + */function ky(){return ky=Object.assign?Object.assign.bind():function(n){for(var e=1;ee in n?vie(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,xie=(n,e,t)=>(_ie(n,e+"",t),t);class yie{constructor(){xie(this,"_listeners")}addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;const i=this._listeners;return i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;const r=this._listeners[e];if(r!==void 0){const a=r.indexOf(t);a!==-1&&r.splice(a,1)}}dispatchEvent(e){if(this._listeners===void 0)return;const i=this._listeners[e.type];if(i!==void 0){e.target=this;const r=i.slice(0);for(let a=0,s=r.length;ae in n?Sie(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,Lt=(n,e,t)=>(Tie(n,typeof e!="symbol"?e+"":e,t),t);const fx=new Pr,OI=new xs,Eie=Math.cos(70*(Math.PI/180)),LI=(n,e)=>(n%e+e)%e;let bie=class extends yie{constructor(e,t){super(),Lt(this,"object"),Lt(this,"domElement"),Lt(this,"enabled",!0),Lt(this,"target",new D),Lt(this,"minDistance",0),Lt(this,"maxDistance",1/0),Lt(this,"minZoom",0),Lt(this,"maxZoom",1/0),Lt(this,"minPolarAngle",0),Lt(this,"maxPolarAngle",Math.PI),Lt(this,"minAzimuthAngle",-1/0),Lt(this,"maxAzimuthAngle",1/0),Lt(this,"enableDamping",!1),Lt(this,"dampingFactor",.05),Lt(this,"enableZoom",!0),Lt(this,"zoomSpeed",1),Lt(this,"enableRotate",!0),Lt(this,"rotateSpeed",1),Lt(this,"enablePan",!0),Lt(this,"panSpeed",1),Lt(this,"screenSpacePanning",!0),Lt(this,"keyPanSpeed",7),Lt(this,"zoomToCursor",!1),Lt(this,"autoRotate",!1),Lt(this,"autoRotateSpeed",2),Lt(this,"reverseOrbit",!1),Lt(this,"reverseHorizontalOrbit",!1),Lt(this,"reverseVerticalOrbit",!1),Lt(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),Lt(this,"mouseButtons",{LEFT:rh.ROTATE,MIDDLE:rh.DOLLY,RIGHT:rh.PAN}),Lt(this,"touches",{ONE:ah.ROTATE,TWO:ah.DOLLY_PAN}),Lt(this,"target0"),Lt(this,"position0"),Lt(this,"zoom0"),Lt(this,"_domElementKeyEvents",null),Lt(this,"getPolarAngle"),Lt(this,"getAzimuthalAngle"),Lt(this,"setPolarAngle"),Lt(this,"setAzimuthalAngle"),Lt(this,"getDistance"),Lt(this,"getZoomScale"),Lt(this,"listenToKeyEvents"),Lt(this,"stopListenToKeyEvents"),Lt(this,"saveState"),Lt(this,"reset"),Lt(this,"update"),Lt(this,"connect"),Lt(this,"dispose"),Lt(this,"dollyIn"),Lt(this,"dollyOut"),Lt(this,"getScale"),Lt(this,"setScale"),this.object=e,this.domElement=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>d.phi,this.getAzimuthalAngle=()=>d.theta,this.setPolarAngle=J=>{let me=LI(J,2*Math.PI),Le=d.phi;Le<0&&(Le+=2*Math.PI),me<0&&(me+=2*Math.PI);let j=Math.abs(me-Le);2*Math.PI-j{let me=LI(J,2*Math.PI),Le=d.theta;Le<0&&(Le+=2*Math.PI),me<0&&(me+=2*Math.PI);let j=Math.abs(me-Le);2*Math.PI-ji.object.position.distanceTo(i.target),this.listenToKeyEvents=J=>{J.addEventListener("keydown",Se),this._domElementKeyEvents=J},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener("keydown",Se),this._domElementKeyEvents=null},this.saveState=()=>{i.target0.copy(i.target),i.position0.copy(i.object.position),i.zoom0=i.object.zoom},this.reset=()=>{i.target.copy(i.target0),i.object.position.copy(i.position0),i.object.zoom=i.zoom0,i.object.updateProjectionMatrix(),i.dispatchEvent(r),i.update(),l=o.NONE},this.update=(()=>{const J=new D,me=new D(0,1,0),Le=new ft().setFromUnitVectors(e.up,me),j=Le.clone().invert(),ke=new D,ge=new ft,We=2*Math.PI;return function(){const Re=i.object.position;Le.setFromUnitVectors(e.up,me),j.copy(Le).invert(),J.copy(Re).sub(i.target),J.applyQuaternion(Le),d.setFromVector3(J),i.autoRotate&&l===o.NONE&&oe(W()),i.enableDamping?(d.theta+=f.theta*i.dampingFactor,d.phi+=f.phi*i.dampingFactor):(d.theta+=f.theta,d.phi+=f.phi);let at=i.minAzimuthAngle,Et=i.maxAzimuthAngle;isFinite(at)&&isFinite(Et)&&(at<-Math.PI?at+=We:at>Math.PI&&(at-=We),Et<-Math.PI?Et+=We:Et>Math.PI&&(Et-=We),at<=Et?d.theta=Math.max(at,Math.min(Et,d.theta)):d.theta=d.theta>(at+Et)/2?Math.max(at,d.theta):Math.min(Et,d.theta)),d.phi=Math.max(i.minPolarAngle,Math.min(i.maxPolarAngle,d.phi)),d.makeSafe(),i.enableDamping===!0?i.target.addScaledVector(m,i.dampingFactor):i.target.add(m),i.zoomToCursor&&N||i.object.isOrthographicCamera?d.radius=nt(d.radius):d.radius=nt(d.radius*p),J.setFromSpherical(d),J.applyQuaternion(j),Re.copy(i.target).add(J),i.object.matrixAutoUpdate||i.object.updateMatrix(),i.object.lookAt(i.target),i.enableDamping===!0?(f.theta*=1-i.dampingFactor,f.phi*=1-i.dampingFactor,m.multiplyScalar(1-i.dampingFactor)):(f.set(0,0,0),m.set(0,0,0));let Gt=!1;if(i.zoomToCursor&&N){let kt=null;if(i.object instanceof si&&i.object.isPerspectiveCamera){const mi=J.length();kt=nt(mi*p);const gi=mi-kt;i.object.position.addScaledVector(L,gi),i.object.updateMatrixWorld()}else if(i.object.isOrthographicCamera){const mi=new D(U.x,U.y,0);mi.unproject(i.object),i.object.zoom=Math.max(i.minZoom,Math.min(i.maxZoom,i.object.zoom/p)),i.object.updateProjectionMatrix(),Gt=!0;const gi=new D(U.x,U.y,0);gi.unproject(i.object),i.object.position.sub(gi).add(mi),i.object.updateMatrixWorld(),kt=J.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),i.zoomToCursor=!1;kt!==null&&(i.screenSpacePanning?i.target.set(0,0,-1).transformDirection(i.object.matrix).multiplyScalar(kt).add(i.object.position):(fx.origin.copy(i.object.position),fx.direction.set(0,0,-1).transformDirection(i.object.matrix),Math.abs(i.object.up.dot(fx.direction))u||8*(1-ge.dot(i.object.quaternion))>u?(i.dispatchEvent(r),ke.copy(i.object.position),ge.copy(i.object.quaternion),Gt=!1,!0):!1}})(),this.connect=J=>{i.domElement=J,i.domElement.style.touchAction="none",i.domElement.addEventListener("contextmenu",Tt),i.domElement.addEventListener("pointerdown",ut),i.domElement.addEventListener("pointercancel",P),i.domElement.addEventListener("wheel",Ie)},this.dispose=()=>{var J,me,Le,j,ke,ge;i.domElement&&(i.domElement.style.touchAction="auto"),(J=i.domElement)==null||J.removeEventListener("contextmenu",Tt),(me=i.domElement)==null||me.removeEventListener("pointerdown",ut),(Le=i.domElement)==null||Le.removeEventListener("pointercancel",P),(j=i.domElement)==null||j.removeEventListener("wheel",Ie),(ke=i.domElement)==null||ke.ownerDocument.removeEventListener("pointermove",k),(ge=i.domElement)==null||ge.ownerDocument.removeEventListener("pointerup",P),i._domElementKeyEvents!==null&&i._domElementKeyEvents.removeEventListener("keydown",Se)};const i=this,r={type:"change"},a={type:"start"},s={type:"end"},o={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let l=o.NONE;const u=1e-6,d=new Iy,f=new Iy;let p=1;const m=new D,v=new re,x=new re,S=new re,_=new re,T=new re,E=new re,b=new re,R=new re,w=new re,L=new D,U=new re;let N=!1;const C=[],z={};function W(){return 2*Math.PI/60/60*i.autoRotateSpeed}function K(){return Math.pow(.95,i.zoomSpeed)}function oe(J){i.reverseOrbit||i.reverseHorizontalOrbit?f.theta+=J:f.theta-=J}function ae(J){i.reverseOrbit||i.reverseVerticalOrbit?f.phi+=J:f.phi-=J}const X=(()=>{const J=new D;return function(Le,j){J.setFromMatrixColumn(j,0),J.multiplyScalar(-Le),m.add(J)}})(),te=(()=>{const J=new D;return function(Le,j){i.screenSpacePanning===!0?J.setFromMatrixColumn(j,1):(J.setFromMatrixColumn(j,0),J.crossVectors(i.object.up,J)),J.multiplyScalar(Le),m.add(J)}})(),Q=(()=>{const J=new D;return function(Le,j){const ke=i.domElement;if(ke&&i.object instanceof si&&i.object.isPerspectiveCamera){const ge=i.object.position;J.copy(ge).sub(i.target);let We=J.length();We*=Math.tan(i.object.fov/2*Math.PI/180),X(2*Le*We/ke.clientHeight,i.object.matrix),te(2*j*We/ke.clientHeight,i.object.matrix)}else ke&&i.object instanceof Za&&i.object.isOrthographicCamera?(X(Le*(i.object.right-i.object.left)/i.object.zoom/ke.clientWidth,i.object.matrix),te(j*(i.object.top-i.object.bottom)/i.object.zoom/ke.clientHeight,i.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),i.enablePan=!1)}})();function ce(J){i.object instanceof si&&i.object.isPerspectiveCamera||i.object instanceof Za&&i.object.isOrthographicCamera?p=J:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),i.enableZoom=!1)}function se(J){ce(p/J)}function De(J){ce(p*J)}function Xe(J){if(!i.zoomToCursor||!i.domElement)return;N=!0;const me=i.domElement.getBoundingClientRect(),Le=J.clientX-me.left,j=J.clientY-me.top,ke=me.width,ge=me.height;U.x=Le/ke*2-1,U.y=-(j/ge)*2+1,L.set(U.x,U.y,1).unproject(i.object).sub(i.object.position).normalize()}function nt(J){return Math.max(i.minDistance,Math.min(i.maxDistance,J))}function tt(J){v.set(J.clientX,J.clientY)}function xt(J){Xe(J),b.set(J.clientX,J.clientY)}function ve(J){_.set(J.clientX,J.clientY)}function we(J){x.set(J.clientX,J.clientY),S.subVectors(x,v).multiplyScalar(i.rotateSpeed);const me=i.domElement;me&&(oe(2*Math.PI*S.x/me.clientHeight),ae(2*Math.PI*S.y/me.clientHeight)),v.copy(x),i.update()}function Ze(J){R.set(J.clientX,J.clientY),w.subVectors(R,b),w.y>0?se(K()):w.y<0&&De(K()),b.copy(R),i.update()}function de(J){T.set(J.clientX,J.clientY),E.subVectors(T,_).multiplyScalar(i.panSpeed),Q(E.x,E.y),_.copy(T),i.update()}function it(J){Xe(J),J.deltaY<0?De(K()):J.deltaY>0&&se(K()),i.update()}function wt(J){let me=!1;switch(J.code){case i.keys.UP:Q(0,i.keyPanSpeed),me=!0;break;case i.keys.BOTTOM:Q(0,-i.keyPanSpeed),me=!0;break;case i.keys.LEFT:Q(i.keyPanSpeed,0),me=!0;break;case i.keys.RIGHT:Q(-i.keyPanSpeed,0),me=!0;break}me&&(J.preventDefault(),i.update())}function lt(){if(C.length==1)v.set(C[0].pageX,C[0].pageY);else{const J=.5*(C[0].pageX+C[1].pageX),me=.5*(C[0].pageY+C[1].pageY);v.set(J,me)}}function Qe(){if(C.length==1)_.set(C[0].pageX,C[0].pageY);else{const J=.5*(C[0].pageX+C[1].pageX),me=.5*(C[0].pageY+C[1].pageY);_.set(J,me)}}function Ee(){const J=C[0].pageX-C[1].pageX,me=C[0].pageY-C[1].pageY,Le=Math.sqrt(J*J+me*me);b.set(0,Le)}function V(){i.enableZoom&&Ee(),i.enablePan&&Qe()}function Ae(){i.enableZoom&&Ee(),i.enableRotate&<()}function Oe(J){if(C.length==1)x.set(J.pageX,J.pageY);else{const Le=pt(J),j=.5*(J.pageX+Le.x),ke=.5*(J.pageY+Le.y);x.set(j,ke)}S.subVectors(x,v).multiplyScalar(i.rotateSpeed);const me=i.domElement;me&&(oe(2*Math.PI*S.x/me.clientHeight),ae(2*Math.PI*S.y/me.clientHeight)),v.copy(x)}function Ve(J){if(C.length==1)T.set(J.pageX,J.pageY);else{const me=pt(J),Le=.5*(J.pageX+me.x),j=.5*(J.pageY+me.y);T.set(Le,j)}E.subVectors(T,_).multiplyScalar(i.panSpeed),Q(E.x,E.y),_.copy(T)}function Fe(J){const me=pt(J),Le=J.pageX-me.x,j=J.pageY-me.y,ke=Math.sqrt(Le*Le+j*j);R.set(0,ke),w.set(0,Math.pow(R.y/b.y,i.zoomSpeed)),se(w.y),b.copy(R)}function $e(J){i.enableZoom&&Fe(J),i.enablePan&&Ve(J)}function Je(J){i.enableZoom&&Fe(J),i.enableRotate&&Oe(J)}function ut(J){var me,Le;i.enabled!==!1&&(C.length===0&&((me=i.domElement)==null||me.ownerDocument.addEventListener("pointermove",k),(Le=i.domElement)==null||Le.ownerDocument.addEventListener("pointerup",P)),vt(J),J.pointerType==="touch"?yt(J):he(J))}function k(J){i.enabled!==!1&&(J.pointerType==="touch"?je(J):be(J))}function P(J){var me,Le,j;Ue(J),C.length===0&&((me=i.domElement)==null||me.releasePointerCapture(J.pointerId),(Le=i.domElement)==null||Le.ownerDocument.removeEventListener("pointermove",k),(j=i.domElement)==null||j.ownerDocument.removeEventListener("pointerup",P)),i.dispatchEvent(s),l=o.NONE}function he(J){let me;switch(J.button){case 0:me=i.mouseButtons.LEFT;break;case 1:me=i.mouseButtons.MIDDLE;break;case 2:me=i.mouseButtons.RIGHT;break;default:me=-1}switch(me){case rh.DOLLY:if(i.enableZoom===!1)return;xt(J),l=o.DOLLY;break;case rh.ROTATE:if(J.ctrlKey||J.metaKey||J.shiftKey){if(i.enablePan===!1)return;ve(J),l=o.PAN}else{if(i.enableRotate===!1)return;tt(J),l=o.ROTATE}break;case rh.PAN:if(J.ctrlKey||J.metaKey||J.shiftKey){if(i.enableRotate===!1)return;tt(J),l=o.ROTATE}else{if(i.enablePan===!1)return;ve(J),l=o.PAN}break;default:l=o.NONE}l!==o.NONE&&i.dispatchEvent(a)}function be(J){if(i.enabled!==!1)switch(l){case o.ROTATE:if(i.enableRotate===!1)return;we(J);break;case o.DOLLY:if(i.enableZoom===!1)return;Ze(J);break;case o.PAN:if(i.enablePan===!1)return;de(J);break}}function Ie(J){i.enabled===!1||i.enableZoom===!1||l!==o.NONE&&l!==o.ROTATE||(J.preventDefault(),i.dispatchEvent(a),it(J),i.dispatchEvent(s))}function Se(J){i.enabled===!1||i.enablePan===!1||wt(J)}function yt(J){switch(He(J),C.length){case 1:switch(i.touches.ONE){case ah.ROTATE:if(i.enableRotate===!1)return;lt(),l=o.TOUCH_ROTATE;break;case ah.PAN:if(i.enablePan===!1)return;Qe(),l=o.TOUCH_PAN;break;default:l=o.NONE}break;case 2:switch(i.touches.TWO){case ah.DOLLY_PAN:if(i.enableZoom===!1&&i.enablePan===!1)return;V(),l=o.TOUCH_DOLLY_PAN;break;case ah.DOLLY_ROTATE:if(i.enableZoom===!1&&i.enableRotate===!1)return;Ae(),l=o.TOUCH_DOLLY_ROTATE;break;default:l=o.NONE}break;default:l=o.NONE}l!==o.NONE&&i.dispatchEvent(a)}function je(J){switch(He(J),l){case o.TOUCH_ROTATE:if(i.enableRotate===!1)return;Oe(J),i.update();break;case o.TOUCH_PAN:if(i.enablePan===!1)return;Ve(J),i.update();break;case o.TOUCH_DOLLY_PAN:if(i.enableZoom===!1&&i.enablePan===!1)return;$e(J),i.update();break;case o.TOUCH_DOLLY_ROTATE:if(i.enableZoom===!1&&i.enableRotate===!1)return;Je(J),i.update();break;default:l=o.NONE}}function Tt(J){i.enabled!==!1&&J.preventDefault()}function vt(J){C.push(J)}function Ue(J){delete z[J.pointerId];for(let me=0;me{De(J),i.update()},this.dollyOut=(J=K())=>{se(J),i.update()},this.getScale=()=>p,this.setScale=J=>{ce(J),i.update()},this.getZoomScale=()=>K(),t!==void 0&&this.connect(t),this.update()}};function Mie(n,e,t){const i=pn(m=>m.size),r=pn(m=>m.viewport),a=typeof n=="number"?n:i.width*r.dpr,s=i.height*r.dpr,o=(typeof n=="number"?t:n)||{},{samples:l=0,depth:u,...d}=o,f=u??o.depthBuffer,p=ie.useMemo(()=>{const m=new pi(a,s,{minFilter:Bt,magFilter:Bt,type:Jn,...d});return f&&(m.depthTexture=new iv(a,s,fi)),m.samples=l,m},[]);return ie.useLayoutEffect(()=>{p.setSize(a,s),l&&(p.samples=l)},[l,p,a,s]),ie.useEffect(()=>()=>p.dispose(),[]),p}const Aie=n=>typeof n=="function",Bz=ie.forwardRef(({envMap:n,resolution:e=256,frames:t=1/0,makeDefault:i,children:r,...a},s)=>{const o=pn(({set:S})=>S),l=pn(({camera:S})=>S),u=pn(({size:S})=>S),d=ie.useRef(null);ie.useImperativeHandle(s,()=>d.current,[]);const f=ie.useRef(null),p=Mie(e);ie.useLayoutEffect(()=>{a.manual||(d.current.aspect=u.width/u.height)},[u,a]),ie.useLayoutEffect(()=>{d.current.updateProjectionMatrix()});let m=0,v=null;const x=Aie(r);return _a(S=>{x&&(t===1/0||m{if(i){const S=l;return o(()=>({camera:d.current})),()=>o(()=>({camera:S}))}},[d,i,o]),ie.createElement(ie.Fragment,null,ie.createElement("perspectiveCamera",ky({ref:d},a),!x&&r),ie.createElement("group",{ref:f},x&&r(p.texture)))}),wie=ie.forwardRef(({makeDefault:n,camera:e,regress:t,domElement:i,enableDamping:r=!0,keyEvents:a=!1,onChange:s,onStart:o,onEnd:l,...u},d)=>{const f=pn(w=>w.invalidate),p=pn(w=>w.camera),m=pn(w=>w.gl),v=pn(w=>w.events),x=pn(w=>w.setEvents),S=pn(w=>w.set),_=pn(w=>w.get),T=pn(w=>w.performance),E=e||p,b=i||v.connected||m.domElement,R=ie.useMemo(()=>new bie(E),[E]);return _a(()=>{R.enabled&&R.update()},-1),ie.useEffect(()=>(a&&R.connect(a===!0?b:a),R.connect(b),()=>void R.dispose()),[a,b,t,R,f]),ie.useEffect(()=>{const w=N=>{f(),t&&T.regress(),s&&s(N)},L=N=>{o&&o(N)},U=N=>{l&&l(N)};return R.addEventListener("change",w),R.addEventListener("start",L),R.addEventListener("end",U),()=>{R.removeEventListener("start",L),R.removeEventListener("end",U),R.removeEventListener("change",w)}},[s,o,l,R,f,x]),ie.useEffect(()=>{if(n){const w=_().controls;return S({controls:R}),()=>S({controls:w})}},[n,R]),ie.createElement("primitive",ky({ref:d,object:R,enableDamping:r},u))});/** * postprocessing v6.38.0 build Sat Nov 08 2025 * https://github.com/pmndrs/postprocessing * Copyright 2015-2025 Raoul van Rüschen @@ -5232,7 +5232,7 @@ fflate - fast JavaScript compression/decompression Licensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE version 0.8.2 -*/var Es=Uint8Array,Gf=Uint16Array,Yre=Int32Array,Wz=new Es([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Xz=new Es([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),jre=new Es([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),qz=function(n,e){for(var t=new Gf(31),i=0;i<31;++i)t[i]=e+=1<>1|(oi&21845)<<1;pc=(pc&52428)>>2|(pc&13107)<<2,pc=(pc&61680)>>4|(pc&3855)<<4,mA[oi]=((pc&65280)>>8|(pc&255)<<8)>>1}var ag=function(n,e,t){for(var i=n.length,r=0,a=new Gf(e);r>l]=u}else for(o=new Gf(i),r=0;r>15-n[r]);return o},hv=new Es(288);for(var oi=0;oi<144;++oi)hv[oi]=8;for(var oi=144;oi<256;++oi)hv[oi]=9;for(var oi=256;oi<280;++oi)hv[oi]=7;for(var oi=280;oi<288;++oi)hv[oi]=8;var Zz=new Es(32);for(var oi=0;oi<32;++oi)Zz[oi]=5;var Jre=ag(hv,9,1),$re=ag(Zz,5,1),eM=function(n){for(var e=n[0],t=1;te&&(e=n[t]);return e},Hs=function(n,e,t){var i=e/8|0;return(n[i]|n[i+1]<<8)>>(e&7)&t},tM=function(n,e){var t=e/8|0;return(n[t]|n[t+1]<<8|n[t+2]<<16)>>(e&7)},eae=function(n){return(n+7)/8|0},tae=function(n,e,t){return(t==null||t>n.length)&&(t=n.length),new Es(n.subarray(e,t))},nae=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],qs=function(n,e,t){var i=new Error(e||nae[n]);if(i.code=n,Error.captureStackTrace&&Error.captureStackTrace(i,qs),!t)throw i;return i},iae=function(n,e,t,i){var r=n.length,a=0;if(!r||e.f&&!e.l)return t||new Es(0);var s=!t,o=s||e.i!=2,l=e.i;s&&(t=new Es(r*3));var u=function(wt){var ct=t.length;if(wt>ct){var Qe=new Es(Math.max(ct*2,wt));Qe.set(t),t=Qe}},d=e.f||0,f=e.p||0,p=e.b||0,m=e.l,v=e.d,x=e.m,S=e.n,_=r*8;do{if(!m){d=Hs(n,f,1);var T=Hs(n,f+1,3);if(f+=3,T)if(T==1)m=Jre,v=$re,x=9,S=5;else if(T==2){var w=Hs(n,f,31)+257,L=Hs(n,f+10,15)+4,U=w+Hs(n,f+5,31)+1;f+=14;for(var N=new Es(U),C=new Es(19),z=0;z>4;if(E<16)N[z++]=E;else{var X=0,te=0;for(E==16?(te=3+Hs(n,f,3),f+=2,X=N[z-1]):E==17?(te=3+Hs(n,f,7),f+=3):E==18&&(te=11+Hs(n,f,127),f+=7);te--;)N[z++]=X}}var Q=N.subarray(0,w),ce=N.subarray(w);x=eM(Q),S=eM(ce),m=ag(Q,x,1),v=ag(ce,S,1)}else qs(1);else{var E=eae(f)+4,b=n[E-4]|n[E-3]<<8,R=E+b;if(R>r){l&&qs(0);break}o&&u(p+b),t.set(n.subarray(E,R),p),e.b=p+=b,e.p=f=R*8,e.f=d;continue}if(f>_){l&&qs(0);break}}o&&u(p+131072);for(var se=(1<>4;if(f+=X&15,f>_){l&&qs(0);break}if(X||qs(2),nt<256)t[p++]=nt;else if(nt==256){Xe=f,m=null;break}else{var tt=nt-254;if(nt>264){var z=nt-257,xt=Wz[z];tt=Hs(n,f,(1<>4;ve||qs(3),f+=ve&15;var ce=Kre[we];if(we>3){var xt=Xz[we];ce+=tM(n,f)&(1<_){l&&qs(0);break}o&&u(p+131072);var Ze=p+tt;if(p>4>7||(n[0]<<8|n[1])%31)&&qs(6,"invalid zlib data"),(n[1]>>5&1)==1&&qs(6,"invalid zlib data: "+(n[1]&32?"need":"unexpected")+" dictionary"),(n[1]>>3&4)+2};function mx(n,e){return iae(n.subarray(aae(n),-4),{i:2},e,e)}var sae=typeof TextDecoder<"u"&&new TextDecoder,oae=0;try{sae.decode(rae,{stream:!0}),oae=1}catch{}class Qz extends h7{constructor(e){super(e),this.type=Jn,this.outputFormat=ai}parse(e){const N=Math.pow(2.7182818,2.2);function C(O,B){let Y=0;for(let G=0;G<65536;++G)(G==0||O[G>>3]&1<<(G&7))&&(B[Y++]=G);const I=Y-1;for(;Y<65536;)B[Y++]=0;return I}function z(O){for(let B=0;B<16384;B++)O[B]={},O[B].len=0,O[B].lit=0,O[B].p=null}const W={l:0,c:0,lc:0};function K(O,B,Y,I,G){for(;Y>Y&(1<0;--Y){const I=B+oe[Y]>>1;oe[Y]=B,B=I}for(let Y=0;Y<65537;++Y){const I=O[Y];I>0&&(O[Y]=I|oe[I]++<<6)}}function X(O,B,Y,I,G,Z){const F=B;let q=0,ne=0;for(;I<=G;I++){if(F.value-B.value>Y)return!1;K(6,q,ne,O,F);const le=W.l;if(q=W.c,ne=W.lc,Z[I]=le,le==63){if(F.value-B.value>Y)throw new Error("Something wrong with hufUnpackEncTable");K(8,q,ne,O,F);let pe=W.l+6;if(q=W.c,ne=W.lc,I+pe>G+1)throw new Error("Something wrong with hufUnpackEncTable");for(;pe--;)Z[I++]=0;I--}else if(le>=59){let pe=le-59+2;if(I+pe>G+1)throw new Error("Something wrong with hufUnpackEncTable");for(;pe--;)Z[I++]=0;I--}}ae(Z)}function te(O){return O&63}function Q(O){return O>>6}function ce(O,B,Y,I){for(;B<=Y;B++){const G=Q(O[B]),Z=te(O[B]);if(G>>Z)throw new Error("Invalid table entry");if(Z>14){const F=I[G>>Z-14];if(F.len)throw new Error("Invalid table entry");if(F.lit++,F.p){const q=F.p;F.p=new Array(F.lit);for(let ne=0;ne0;q--){const ne=I[(G<<14-Z)+F];if(ne.len||ne.p)throw new Error("Invalid table entry");ne.len=Z,ne.lit=B,F++}}}return!0}const se={c:0,lc:0};function De(O,B,Y,I){O=O<<8|J(Y,I),B+=8,se.c=O,se.lc=B}const Xe={c:0,lc:0};function nt(O,B,Y,I,G,Z,F,q,ne){if(O==B){I<8&&(De(Y,I,G,Z),Y=se.c,I=se.lc),I-=8;let le=Y>>I;if(le=new Uint8Array([le])[0],q.value+le>ne)return!1;const pe=F[q.value-1];for(;le-- >0;)F[q.value++]=pe}else if(q.value32767?B-65536:B}const ve={a:0,b:0};function we(O,B){const Y=xt(O),G=xt(B),Z=Y+(G&1)+(G>>1),F=Z,q=Z-G;ve.a=F,ve.b=q}function Ze(O,B){const Y=tt(O),I=tt(B),G=Y-(I>>1)&65535,Z=I+G-32768&65535;ve.a=Z,ve.b=G}function de(O,B,Y,I,G,Z,F){const q=F<16384,ne=Y>G?G:Y;let le=1,pe,xe;for(;le<=ne;)le<<=1;for(le>>=1,pe=le,le>>=1;le>=1;){xe=0;const Te=xe+Z*(G-pe),Ce=Z*le,ze=Z*pe,Be=I*le,qe=I*pe;let ut,At,Rt,mt;for(;xe<=Te;xe+=ze){let Dt=xe;const st=xe+I*(Y-pe);for(;Dt<=st;Dt+=qe){const Kt=Dt+Be,Pn=Dt+Ce,Yt=Pn+Be;q?(we(O[Dt+B],O[Pn+B]),ut=ve.a,Rt=ve.b,we(O[Kt+B],O[Yt+B]),At=ve.a,mt=ve.b,we(ut,At),O[Dt+B]=ve.a,O[Kt+B]=ve.b,we(Rt,mt),O[Pn+B]=ve.a,O[Yt+B]=ve.b):(Ze(O[Dt+B],O[Pn+B]),ut=ve.a,Rt=ve.b,Ze(O[Kt+B],O[Yt+B]),At=ve.a,mt=ve.b,Ze(ut,At),O[Dt+B]=ve.a,O[Kt+B]=ve.b,Ze(Rt,mt),O[Pn+B]=ve.a,O[Yt+B]=ve.b)}if(Y&le){const Kt=Dt+Ce;q?we(O[Dt+B],O[Kt+B]):Ze(O[Dt+B],O[Kt+B]),ut=ve.a,O[Kt+B]=ve.b,O[Dt+B]=ut}}if(G&le){let Dt=xe;const st=xe+I*(Y-pe);for(;Dt<=st;Dt+=qe){const Kt=Dt+Be;q?we(O[Dt+B],O[Kt+B]):Ze(O[Dt+B],O[Kt+B]),ut=ve.a,O[Kt+B]=ve.b,O[Dt+B]=ut}}pe=le,le>>=1}return xe}function it(O,B,Y,I,G,Z,F,q,ne){let le=0,pe=0;const xe=F,Te=Math.trunc(I.value+(G+7)/8);for(;I.value=14;){const ze=le>>pe-14&16383,Be=B[ze];if(Be.len)pe-=Be.len,nt(Be.lit,Z,le,pe,Y,I,q,ne,xe),le=Xe.c,pe=Xe.lc;else{if(!Be.p)throw new Error("hufDecode issues");let qe;for(qe=0;qe=ut&&Q(O[Be.p[qe]])==(le>>pe-ut&(1<>=Ce,pe-=Ce;pe>0;){const ze=B[le<<14-pe&16383];if(ze.len)pe-=ze.len,nt(ze.lit,Z,le,pe,Y,I,q,ne,xe),le=Xe.c,pe=Xe.lc;else throw new Error("hufDecode issues")}return!0}function wt(O,B,Y,I,G,Z){const F={value:0},q=Y.value,ne=pt(B,Y),le=pt(B,Y);Y.value+=4;const pe=pt(B,Y);if(Y.value+=4,ne<0||ne>=65537||le<0||le>=65537)throw new Error("Something wrong with HUF_ENCSIZE");const xe=new Array(65537),Te=new Array(16384);z(Te);const Ce=I-(Y.value-q);if(X(O,Y,Ce,ne,le,xe),pe>8*(I-(Y.value-q)))throw new Error("Something wrong with hufUncompress");ce(xe,ne,le,Te),it(xe,Te,O,Y,pe,le,Z,G,F)}function ct(O,B,Y){for(let I=0;IZ||(B[G++]=O[Y++],G>Z));)B[G++]=O[I++]}function V(O){let B=O.byteLength;const Y=new Array;let I=0;const G=new DataView(O);for(;B>0;){const Z=G.getInt8(I++);if(Z<0){const F=-Z;B-=F+1;for(let q=0;q>8==255?G+=I&255:(Y[G]=I,G++),O.value++}function Fe(O,B){B[0]=ge(O[0]),B[1]=ge(O[1]),B[2]=ge(O[5]),B[3]=ge(O[6]),B[4]=ge(O[14]),B[5]=ge(O[15]),B[6]=ge(O[27]),B[7]=ge(O[28]),B[8]=ge(O[2]),B[9]=ge(O[4]),B[10]=ge(O[7]),B[11]=ge(O[13]),B[12]=ge(O[16]),B[13]=ge(O[26]),B[14]=ge(O[29]),B[15]=ge(O[42]),B[16]=ge(O[3]),B[17]=ge(O[8]),B[18]=ge(O[12]),B[19]=ge(O[17]),B[20]=ge(O[25]),B[21]=ge(O[30]),B[22]=ge(O[41]),B[23]=ge(O[43]),B[24]=ge(O[9]),B[25]=ge(O[11]),B[26]=ge(O[18]),B[27]=ge(O[24]),B[28]=ge(O[31]),B[29]=ge(O[40]),B[30]=ge(O[44]),B[31]=ge(O[53]),B[32]=ge(O[10]),B[33]=ge(O[19]),B[34]=ge(O[23]),B[35]=ge(O[32]),B[36]=ge(O[39]),B[37]=ge(O[45]),B[38]=ge(O[52]),B[39]=ge(O[54]),B[40]=ge(O[20]),B[41]=ge(O[22]),B[42]=ge(O[33]),B[43]=ge(O[38]),B[44]=ge(O[46]),B[45]=ge(O[51]),B[46]=ge(O[55]),B[47]=ge(O[60]),B[48]=ge(O[21]),B[49]=ge(O[34]),B[50]=ge(O[37]),B[51]=ge(O[47]),B[52]=ge(O[50]),B[53]=ge(O[56]),B[54]=ge(O[59]),B[55]=ge(O[61]),B[56]=ge(O[35]),B[57]=ge(O[36]),B[58]=ge(O[48]),B[59]=ge(O[49]),B[60]=ge(O[57]),B[61]=ge(O[58]),B[62]=ge(O[62]),B[63]=ge(O[63])}function $e(O){const B=.5*Math.cos(.7853975),Y=.5*Math.cos(3.14159/16),I=.5*Math.cos(3.14159/8),G=.5*Math.cos(3*3.14159/16),Z=.5*Math.cos(5*3.14159/16),F=.5*Math.cos(3*3.14159/8),q=.5*Math.cos(7*3.14159/16),ne=new Array(4),le=new Array(4),pe=new Array(4),xe=new Array(4);for(let Te=0;Te<8;++Te){const Ce=Te*8;ne[0]=I*O[Ce+2],ne[1]=F*O[Ce+2],ne[2]=I*O[Ce+6],ne[3]=F*O[Ce+6],le[0]=Y*O[Ce+1]+G*O[Ce+3]+Z*O[Ce+5]+q*O[Ce+7],le[1]=G*O[Ce+1]-q*O[Ce+3]-Y*O[Ce+5]-Z*O[Ce+7],le[2]=Z*O[Ce+1]-Y*O[Ce+3]+q*O[Ce+5]+G*O[Ce+7],le[3]=q*O[Ce+1]-Z*O[Ce+3]+G*O[Ce+5]-Y*O[Ce+7],pe[0]=B*(O[Ce+0]+O[Ce+4]),pe[3]=B*(O[Ce+0]-O[Ce+4]),pe[1]=ne[0]+ne[3],pe[2]=ne[1]-ne[2],xe[0]=pe[0]+pe[1],xe[1]=pe[3]+pe[2],xe[2]=pe[3]-pe[2],xe[3]=pe[0]-pe[1],O[Ce+0]=xe[0]+le[0],O[Ce+1]=xe[1]+le[1],O[Ce+2]=xe[2]+le[2],O[Ce+3]=xe[3]+le[3],O[Ce+4]=xe[3]-le[3],O[Ce+5]=xe[2]-le[2],O[Ce+6]=xe[1]-le[1],O[Ce+7]=xe[0]-le[0]}for(let Te=0;Te<8;++Te)ne[0]=I*O[16+Te],ne[1]=F*O[16+Te],ne[2]=I*O[48+Te],ne[3]=F*O[48+Te],le[0]=Y*O[8+Te]+G*O[24+Te]+Z*O[40+Te]+q*O[56+Te],le[1]=G*O[8+Te]-q*O[24+Te]-Y*O[40+Te]-Z*O[56+Te],le[2]=Z*O[8+Te]-Y*O[24+Te]+q*O[40+Te]+G*O[56+Te],le[3]=q*O[8+Te]-Z*O[24+Te]+G*O[40+Te]-Y*O[56+Te],pe[0]=B*(O[Te]+O[32+Te]),pe[3]=B*(O[Te]-O[32+Te]),pe[1]=ne[0]+ne[3],pe[2]=ne[1]-ne[2],xe[0]=pe[0]+pe[1],xe[1]=pe[3]+pe[2],xe[2]=pe[3]-pe[2],xe[3]=pe[0]-pe[1],O[0+Te]=xe[0]+le[0],O[8+Te]=xe[1]+le[1],O[16+Te]=xe[2]+le[2],O[24+Te]=xe[3]+le[3],O[32+Te]=xe[3]-le[3],O[40+Te]=xe[2]-le[2],O[48+Te]=xe[1]-le[1],O[56+Te]=xe[0]-le[0]}function Je(O){for(let B=0;B<64;++B){const Y=O[0][B],I=O[1][B],G=O[2][B];O[0][B]=Y+1.5747*G,O[1][B]=Y-.1873*I-.4682*G,O[2][B]=Y+1.8556*I}}function ht(O,B,Y){for(let I=0;I<64;++I)B[Y+I]=H3.toHalfFloat(k(O[I]))}function k(O){return O<=1?Math.sign(O)*Math.pow(Math.abs(O),2.2):Math.sign(O)*Math.pow(N,Math.abs(O)-1)}function P(O){return new DataView(O.array.buffer,O.offset.value,O.size)}function he(O){const B=O.viewer.buffer.slice(O.offset.value,O.offset.value+O.size),Y=new Uint8Array(V(B)),I=new Uint8Array(Y.length);return Qe(Y),Ee(Y,I),new DataView(I.buffer)}function be(O){const B=O.array.slice(O.offset.value,O.offset.value+O.size),Y=mx(B),I=new Uint8Array(Y.length);return Qe(Y),Ee(Y,I),new DataView(I.buffer)}function Ie(O){const B=O.viewer,Y={value:O.offset.value},I=new Uint16Array(O.columns*O.lines*(O.inputChannels.length*O.type)),G=new Uint8Array(8192);let Z=0;const F=new Array(O.inputChannels.length);for(let ze=0,Be=O.inputChannels.length;ze=8192)throw new Error("Something is wrong with PIZ_COMPRESSION BITMAP_SIZE");if(q<=ne)for(let ze=0;ze0;){const Be=je(B.buffer,Y),qe=me(B,Y),ut=qe>>2&3,At=(qe>>4)-1,Rt=new Int8Array([At])[0],mt=me(B,Y);Z.push({name:Be,index:Rt,type:mt,compression:ut}),F-=Be.length+3}const q=Sa.channels,ne=new Array(O.inputChannels.length);for(let Be=0;Be=0&&(le.idx[At.index]=Be),qe.offset=Be)}}let pe,xe,Te;if(G.acCompressedSize>0)switch(G.acCompression){case 0:pe=new Uint16Array(G.totalAcUncompressedCount),wt(O.array,B,Y,G.acCompressedSize,pe,G.totalAcUncompressedCount);break;case 1:const Be=O.array.slice(Y.value,Y.value+G.totalAcUncompressedCount),qe=mx(Be);pe=new Uint16Array(qe.buffer),Y.value+=G.totalAcUncompressedCount;break}if(G.dcCompressedSize>0){const Be={array:O.array,offset:Y,size:G.dcCompressedSize};xe=new Uint16Array(be(Be).buffer),Y.value+=G.dcCompressedSize}if(G.rleRawSize>0){const Be=O.array.slice(Y.value,Y.value+G.rleCompressedSize),qe=mx(Be);Te=V(qe.buffer),Y.value+=G.rleCompressedSize}let Ce=0;const ze=new Array(ne.length);for(let Be=0;Be>10,Y=O&1023;return(O>>15?-1:1)*(B?B===31?Y?NaN:1/0:Math.pow(2,B-15)*(1+Y/1024):6103515625e-14*(Y/1024))}function We(O,B){const Y=O.getUint16(B.value,!0);return B.value+=2,Y}function Ge(O,B){return ge(We(O,B))}function Re(O,B,Y,I){const G=Y.value,Z=[];for(;Y.value>4]}}function Po(O,B){const Y=j(O,B),I=j(O,B);return[Y,I]}function ro(O,B){const Y=j(O,B),I=j(O,B),G=j(O,B);return[Y,I,G]}function ao(O,B,Y,I,G){if(I==="string"||I==="stringvector"||I==="iccProfile")return Tt(B,Y,G);if(I==="chlist")return Re(O,B,Y,G);if(I==="chromaticities")return at(O,Y);if(I==="compression")return Et(O,Y);if(I==="box2i")return Gt(O,Y);if(I==="envmap")return mi(O,Y);if(I==="tiledesc")return gi(O,Y);if(I==="lineOrder")return kt(O,Y);if(I==="float")return j(O,Y);if(I==="v2f")return Po(O,Y);if(I==="v3f")return ro(O,Y);if(I==="int")return He(O,Y);if(I==="rational")return vt(O,Y);if(I==="timecode")return Ue(O,Y);if(I==="preview")return Y.value+=G,"skipped";Y.value+=G}function Li(O,B){const Y=Math.log2(O);return B=="ROUND_DOWN"?Math.floor(Y):Math.ceil(Y)}function so(O,B,Y){let I=0;switch(O.levelMode){case"ONE_LEVEL":I=1;break;case"MIPMAP_LEVELS":I=Li(Math.max(B,Y),O.roundingMode)+1;break;case"RIPMAP_LEVELS":throw new Error("THREE.EXRLoader: RIPMAP_LEVELS tiles currently unsupported.")}return I}function Er(O,B,Y,I){const G=new Array(O);for(let Z=0;ZO.width?O.width-F:O.blockWidth,O.lines=q+O.blockHeight>O.height?O.height-q:O.blockHeight;const ne=O.columns*O.totalBytes,pe=O.sizeO.height?O.height-G:O.blockHeight;const Z=O.columns*O.totalBytes,q=O.size=O.height)continue;const xe=ne*Z,Te=(O.height-1-pe)*O.outLineWidth;for(let Ce=0;CeTe:F.scanOrder=Te=>F.height-1-Te,O.spec.singleTile){F.blockHeight=O.tiles.ySize,F.blockWidth=O.tiles.xSize;const Te=so(O.tiles,F.width,F.height),Ce=Er(Te,F.width,O.tiles.xSize,O.tiles.roundingMode),ze=Er(Te,F.height,O.tiles.ySize,O.tiles.roundingMode);F.tileCount=Ce[0]*ze[0];for(let Be=0;Be{Wy(s instanceof ArrayBuffer);try{t(s)}catch(o){r!=null?r(o):console.error(o),this.manager.itemError(e)}},i,r)}};function Kz(n){var e,t;return n instanceof uT?n.getContext().getExtension("OES_texture_float_linear")!=null:((t=(e=n.backend).hasFeature)==null?void 0:t.call(e,"float32-filterable"))??!1}const cae=128,uae=128,hae=64,dae="9627216cc50057994c98a2118f3c4a23765d43b9",Jz=`https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/${dae}/packages/core/assets/stbn.bin`,fae="This is not an object",pae="This is not a Float16Array object",WI="This constructor is not a subclass of Float16Array",$z="The constructor property value is not an object",mae="Species constructor didn't return TypedArray object",gae="Derived constructor created TypedArray object which was too small length",sg="Attempting to access detached ArrayBuffer",gA="Cannot convert undefined or null to object",vA="Cannot mix BigInt and other types, use explicit conversions",XI="@@iterator property is not callable",qI="Reduce of empty array with no initial value",vae="The comparison function must be either a function or undefined",nM="Offset is out of bounds";function ti(n){return(e,...t)=>ua(n,e,t)}function em(n,e){return ti(Ip(n,e).get)}const{apply:ua,construct:N0,defineProperty:_ae,get:iM,getOwnPropertyDescriptor:Ip,getPrototypeOf:dv,has:_A,ownKeys:eB,set:YI,setPrototypeOf:tB}=Reflect,xae=Proxy,{EPSILON:yae,MAX_SAFE_INTEGER:jI,isFinite:nB,isNaN:Up}=Number,{iterator:Lo,species:Sae,toStringTag:VR,for:Tae}=Symbol,Pp=Object,{create:fT,defineProperty:fv,freeze:Eae,is:ZI}=Pp,xA=Pp.prototype,bae=xA.__lookupGetter__?ti(xA.__lookupGetter__):(n,e)=>{if(n==null)throw hi(gA);let t=Pp(n);do{const i=Ip(t,e);if(i!==void 0)return Tl(i,"get")?i.get:void 0}while((t=dv(t))!==null)},Tl=Pp.hasOwn||ti(xA.hasOwnProperty),iB=Array,rB=iB.isArray,pT=iB.prototype,Mae=ti(pT.join),Aae=ti(pT.push),wae=ti(pT.toLocaleString),GR=pT[Lo],Rae=ti(GR),{abs:Cae,trunc:aB}=Math,mT=ArrayBuffer,Dae=mT.isView,sB=mT.prototype,Nae=ti(sB.slice),Oae=em(sB,"byteLength"),yA=typeof SharedArrayBuffer<"u"?SharedArrayBuffer:null,Lae=yA&&em(yA.prototype,"byteLength"),kR=dv(Uint8Array),Iae=kR.from,dr=kR.prototype,Uae=dr[Lo],Pae=ti(dr.keys),zae=ti(dr.values),Bae=ti(dr.entries),Fae=ti(dr.set),QI=ti(dr.reverse),Hae=ti(dr.fill),Vae=ti(dr.copyWithin),KI=ti(dr.sort),i0=ti(dr.slice),Gae=ti(dr.subarray),sr=em(dr,"buffer"),Zu=em(dr,"byteOffset"),Mn=em(dr,"length"),oB=em(dr,VR),kae=Uint8Array,za=Uint16Array,JI=(...n)=>ua(Iae,za,n),WR=Uint32Array,Wae=Float32Array,Wh=dv([][Lo]()),gT=ti(Wh.next),Xae=ti(function*(){}().next),qae=dv(Wh),Yae=DataView.prototype,jae=ti(Yae.getUint16),hi=TypeError,rM=RangeError,lB=WeakSet,cB=lB.prototype,Zae=ti(cB.add),Qae=ti(cB.has),vT=WeakMap,XR=vT.prototype,Xy=ti(XR.get),Kae=ti(XR.has),qR=ti(XR.set),uB=new vT,Jae=fT(null,{next:{value:function(){const n=Xy(uB,this);return gT(n)}},[Lo]:{value:function(){return this}}});function O0(n){if(n[Lo]===GR&&Wh.next===gT)return n;const e=fT(Jae);return qR(uB,e,Rae(n)),e}const hB=new vT,dB=fT(qae,{next:{value:function(){const n=Xy(hB,this);return Xae(n)},writable:!0,configurable:!0}});for(const n of eB(Wh))n!=="next"&&fv(dB,n,Ip(Wh,n));function $I(n){const e=fT(dB);return qR(hB,e,n),e}function qy(n){return n!==null&&typeof n=="object"||typeof n=="function"}function e5(n){return n!==null&&typeof n=="object"}function Yy(n){return oB(n)!==void 0}function SA(n){const e=oB(n);return e==="BigInt64Array"||e==="BigUint64Array"}function $ae(n){try{return rB(n)?!1:(Oae(n),!0)}catch{return!1}}function fB(n){if(yA===null)return!1;try{return Lae(n),!0}catch{return!1}}function ese(n){return $ae(n)||fB(n)}function t5(n){return rB(n)?n[Lo]===GR&&Wh.next===gT:!1}function tse(n){return Yy(n)?n[Lo]===Uae&&Wh.next===gT:!1}function gx(n){if(typeof n!="string")return!1;const e=+n;return n!==e+""||!nB(e)?!1:e===aB(e)}const jy=Tae("__Float16Array__");function nse(n){if(!e5(n))return!1;const e=dv(n);if(!e5(e))return!1;const t=e.constructor;if(t===void 0)return!1;if(!qy(t))throw hi($z);return _A(t,jy)}const TA=1/yae;function ise(n){return n+TA-TA}const pB=6103515625e-14,rse=65504,mB=.0009765625,n5=mB*pB,ase=mB*TA;function sse(n){const e=+n;if(!nB(e)||e===0)return e;const t=e>0?1:-1,i=Cae(e);if(irse||Up(a)?t*(1/0):t*a}const gB=new mT(4),vB=new Wae(gB),_B=new WR(gB),Gs=new za(512),ks=new kae(512);for(let n=0;n<256;++n){const e=n-127;e<-24?(Gs[n]=0,Gs[n|256]=32768,ks[n]=24,ks[n|256]=24):e<-14?(Gs[n]=1024>>-e-14,Gs[n|256]=1024>>-e-14|32768,ks[n]=-e-1,ks[n|256]=-e-1):e<=15?(Gs[n]=e+15<<10,Gs[n|256]=e+15<<10|32768,ks[n]=13,ks[n|256]=13):e<128?(Gs[n]=31744,Gs[n|256]=64512,ks[n]=24,ks[n|256]=24):(Gs[n]=31744,Gs[n|256]=64512,ks[n]=13,ks[n|256]=13)}function So(n){vB[0]=sse(n);const e=_B[0],t=e>>23&511;return Gs[t]+((e&8388607)>>ks[t])}const YR=new WR(2048);for(let n=1;n<1024;++n){let e=n<<13,t=0;for(;!(e&8388608);)e<<=1,t-=8388608;e&=-8388609,t+=947912704,YR[n]=e|t}for(let n=1024;n<2048;++n)YR[n]=939524096+(n-1024<<13);const tm=new WR(64);for(let n=1;n<31;++n)tm[n]=n<<23;tm[31]=1199570944;tm[32]=2147483648;for(let n=33;n<63;++n)tm[n]=2147483648+(n-32<<23);tm[63]=3347054592;const xB=new za(64);for(let n=1;n<64;++n)n!==32&&(xB[n]=1024);function Cn(n){const e=n>>10;return _B[0]=YR[xB[e]+(n&1023)]+tm[e],vB[0]}function ml(n){const e=+n;return Up(e)||e===0?0:aB(e)}function aM(n){const e=ml(n);return e<0?0:ee)return 1;if(n===0&&e===0){const r=ZI(n,0),a=ZI(e,0);if(!r&&a)return-1;if(r&&!a)return 1}return 0}const jR=2,Zy=new vT;function kf(n){return Kae(Zy,n)||!Dae(n)&&nse(n)}function bn(n){if(!kf(n))throw hi(pae)}function _x(n,e){const t=kf(n),i=Yy(n);if(!t&&!i)throw hi(mae);if(typeof e=="number"){let r;if(t){const a=$t(n);r=Mn(a)}else r=Mn(n);if(r=0?r:i+r;if(!(a<0||a>=i))return Cn(t[a])}with(e,t){bn(this);const i=$t(this),r=Mn(i),a=ml(e),s=a>=0?a:r+a,o=+t;if(s<0||s>=r)throw rM(nM);const l=new za(sr(i),Zu(i),Mn(i)),u=new or(sr(i0(l))),d=$t(u);return d[s]=So(o),u}map(e,...t){bn(this);const i=$t(this),r=Mn(i),a=t[0],s=vx(i,or);if(s===or){const l=new or(r),u=$t(l);for(let d=0;d=0;--o)a=e(a,Cn(i[o]),o,this);return a}forEach(e,...t){bn(this);const i=$t(this),r=Mn(i),a=t[0];for(let s=0;s=0;--s){const o=Cn(i[s]);if(ua(e,a,[o,s,this]))return o}}findLastIndex(e,...t){bn(this);const i=$t(this),r=Mn(i),a=t[0];for(let s=r-1;s>=0;--s){const o=Cn(i[s]);if(ua(e,a,[o,s,this]))return s}return-1}every(e,...t){bn(this);const i=$t(this),r=Mn(i),a=t[0];for(let s=0;sa)throw rM(nM);for(let l=0;li(Cn(r),Cn(a))),this}toSorted(e){bn(this);const t=$t(this);if(e!==void 0&&typeof e!="function")throw new hi(vae);const i=e!==void 0?e:i5,r=new za(sr(t),Zu(t),Mn(t)),a=new or(sr(i0(r))),s=$t(a);return KI(s,(o,l)=>i(Cn(o),Cn(l))),a}slice(e,t){bn(this);const i=$t(this),r=vx(i,or);if(r===or){const v=new za(sr(i),Zu(i),Mn(i));return new or(sr(i0(v,e,t)))}const a=Mn(i),s=ml(e),o=t===void 0?a:ml(t);let l;s===-1/0?l=0:s<0?l=a+s>0?a+s:0:l=a0?a+o:0:u=a0?u-l:0,f=new r(d);if(_x(f,d),d===0)return f;const p=sr(i);if(og(p))throw hi(sg);let m=0;for(;l=1?ml(t[0]):r-1;if(a===-1/0)return-1;a>=0?a=a=0;--s)if(Tl(i,s)&&Cn(i[s])===e)return s;return-1}includes(e,...t){bn(this);const i=$t(this),r=Mn(i);let a=ml(t[0]);if(a===1/0)return!1;a<0&&(a+=r,a<0&&(a=0));const s=Up(e);for(let o=a;o{try{t(this.parser(s))}catch(o){r!=null?r(o):console.error(o),this.manager.itemError(e)}},i,r)}};function use(n){const e=n instanceof Int8Array?CS:n instanceof Uint8Array||n instanceof Uint8ClampedArray?Ni:n instanceof Int16Array?DS:n instanceof Uint16Array?Uh:n instanceof Int32Array?$g:n instanceof Uint32Array?to:n instanceof Vl?Jn:n instanceof Float32Array||n instanceof Float64Array?fi:null;return Wy(e!=null),e}let ch=class extends wi{constructor(e,t,i={},r){super(r),this.textureClass=e,this.parser=t,this.options={format:ai,minFilter:Bt,magFilter:Bt,...i}}load(e,t,i,r){const a=new this.textureClass,s=new cse(this.parser,this.manager);return s.setRequestHeader(this.requestHeader),s.setPath(this.path),s.setWithCredentials(this.withCredentials),s.load(e,o=>{a.image.data=o instanceof Vl?new Uint16Array(o.buffer):o;const{width:l,height:u,depth:d,...f}=this.options;l!=null&&(a.image.width=l),u!=null&&(a.image.height=u),"depth"in a.image&&d!=null&&(a.image.depth=d),a.type=use(o),Object.assign(a,f),a.needsUpdate=!0,t==null||t(a)},i,r),a}};const zg=lt.clamp;lt.euclideanModulo;lt.inverseLerp;const SB=lt.lerp,oh=lt.degToRad;lt.radToDeg;lt.isPowerOfTwo;lt.ceilPowerOfTwo;lt.floorPowerOfTwo;lt.normalize;function hse(n,e,t,i=0,r=1){return lt.mapLinear(n,e,t,i,r)}function dse(n){return Math.min(Math.max(n,0),1)}function gn(n){return(e,t)=>{e instanceof ei?Object.defineProperty(e,t,{enumerable:!0,get(){var i;return((i=this.defines)==null?void 0:i[n])!=null},set(i){var r;i!==this[t]&&(i?(this.defines??(this.defines={}),this.defines[n]="1"):(r=this.defines)==null||delete r[n],this.needsUpdate=!0)}}):Object.defineProperty(e,t,{enumerable:!0,get(){return this.defines.has(n)},set(i){i!==this[t]&&(i?this.defines.set(n,"1"):this.defines.delete(n),this.setChanged())}})}}function ad(n,{min:e=Number.MIN_SAFE_INTEGER,max:t=Number.MAX_SAFE_INTEGER}={}){return(i,r)=>{i instanceof ei?Object.defineProperty(i,r,{enumerable:!0,get(){var s;const a=(s=this.defines)==null?void 0:s[n];return a!=null?parseInt(a,10):0},set(a){const s=this[r];a!==s&&(this.defines??(this.defines={}),this.defines[n]=zg(a,e,t).toFixed(0),this.needsUpdate=!0)}}):Object.defineProperty(i,r,{enumerable:!0,get(){const a=this.defines.get(n);return a!=null?parseInt(a,10):0},set(a){const s=this[r];a!==s&&(this.defines.set(n,zg(a,e,t).toFixed(0)),this.setChanged())}})}}function ZR(n,{min:e=-1/0,max:t=1/0,precision:i=7}={}){return(r,a)=>{r instanceof ei?Object.defineProperty(r,a,{enumerable:!0,get(){var o;const s=(o=this.defines)==null?void 0:o[n];return s!=null?parseFloat(s):0},set(s){const o=this[a];s!==o&&(this.defines??(this.defines={}),this.defines[n]=zg(s,e,t).toFixed(i),this.needsUpdate=!0)}}):Object.defineProperty(r,a,{enumerable:!0,get(){const s=this.defines.get(n);return s!=null?parseFloat(s):0},set(s){const o=this[a];s!==o&&(this.defines.set(n,zg(s,e,t).toFixed(i)),this.setChanged())}})}}function TB(n,{validate:e}={}){return(t,i)=>{t instanceof ei?Object.defineProperty(t,i,{enumerable:!0,get(){var r;return((r=this.defines)==null?void 0:r[n])??""},set(r){if(r!==this[i]){if((e==null?void 0:e(r))===!1){console.error(`Expression validation failed: ${r}`);return}this.defines??(this.defines={}),this.defines[n]=r,this.needsUpdate=!0}}}):Object.defineProperty(t,i,{enumerable:!0,get(){return this.defines.get(n)??""},set(r){if(r!==this[i]){if((e==null?void 0:e(r))===!1){console.error(`Expression validation failed: ${r}`);return}this.defines.set(n,r),this.setChanged()}}})}}function a5(n,...e){const t={};for(let i=0;ir[s],set:o=>{r[s]=o}}}return Object.defineProperties(n,t),n}function s5(n,e,t){const i={};for(const r of t)i[r]={enumerable:!0,get:()=>e.uniforms[r].value,set:a=>{e.uniforms[r].value=a}};return Object.defineProperties(n,i),n}class sM extends wi{constructor(e={},t){super(t),this.options=e}load(e,t,i,r){const{width:a,height:s,depth:o}=this.options,l=new ws(null,a,s,o),u=new Qz(this.manager);return u.setRequestHeader(this.requestHeader),u.setPath(this.path),u.setWithCredentials(this.withCredentials),u.load(e,d=>{const{image:f}=d;l.image={data:f.data,width:a??f.width,height:s??f.height,depth:o??Math.sqrt(f.height)},l.type=d.type,l.format=d.format,l.colorSpace=d.colorSpace,l.needsUpdate=!0;try{t==null||t(l)}catch(p){r!=null?r(p):console.error(p),this.manager.itemError(e)}},i,r),l}}class o5 extends wi{constructor(e={},t){super(t),this.options=e}load(e,t,i,r){const{width:a,height:s}=this.options,o=new Ur(null,a,s),l=new Qz(this.manager);return l.setRequestHeader(this.requestHeader),l.setPath(this.path),l.setWithCredentials(this.withCredentials),l.load(e,u=>{const{image:d}=u;o.image={data:d.data,width:a??d.width,height:s??d.height},o.type=u.type,o.format=u.format,o.colorSpace=u.colorSpace,o.needsUpdate=!0;try{t==null||t(o)}catch(f){r!=null?r(f):console.error(f),this.manager.itemError(e)}},i,r),o}}const oM=1e-6,xx=new D,yx=new D,sl=new D,r0=new D,lM=new D,fse=new D,pse=new Me,mse=new ft,gse=new Pr;let vse=class EB{constructor(e=0,t=0,i=0,r=0){this.distance=e,this.heading=t,this.pitch=i,this.roll=r}get distance(){return this._distance}set distance(e){this._distance=Math.max(e,oM)}get pitch(){return this._pitch}set pitch(e){this._pitch=zg(e,-Math.PI/2+oM,Math.PI/2-oM)}set(e,t,i,r){return this.distance=e,this.heading=t,this.pitch=i,r!=null&&(this.roll=r),this}clone(){return new EB(this.distance,this.heading,this.pitch,this.roll)}copy(e){return this.distance=e.distance,this.heading=e.heading,this.pitch=e.pitch,this.roll=e.roll,this}equals(e){return e.distance===this.distance&&e.heading===this.heading&&e.pitch===this.pitch&&e.roll===this.roll}decompose(e,t,i,r,a=kh.WGS84){a.getEastNorthUpVectors(e,xx,yx,sl),r==null||r.copy(sl);const s=r0.copy(xx).multiplyScalar(Math.cos(this.heading)).add(lM.copy(yx).multiplyScalar(Math.sin(this.heading))).multiplyScalar(Math.cos(this.pitch)).add(lM.copy(sl).multiplyScalar(Math.sin(this.pitch))).normalize().multiplyScalar(this.distance);if(t.copy(e).sub(s),this.roll!==0){const o=r0.copy(e).sub(t).normalize();sl.applyQuaternion(mse.setFromAxisAngle(o,this.roll))}i.setFromRotationMatrix(pse.lookAt(t,e,sl))}setFromCamera(e,t=kh.WGS84){const i=r0.setFromMatrixPosition(e.matrixWorld),r=lM.set(0,0,.5).unproject(e).sub(i).normalize(),a=t.getIntersection(gse.set(i,r));if(a==null)return;this.distance=i.distanceTo(a),t.getEastNorthUpVectors(a,xx,yx,sl),this.heading=Math.atan2(yx.dot(r),xx.dot(r)),this.pitch=Math.asin(sl.dot(r));const s=r0.copy(e.up).applyQuaternion(e.quaternion),o=fse.copy(r).multiplyScalar(-s.dot(r)).add(s).normalize(),l=r0.copy(r).multiplyScalar(-sl.dot(r)).add(sl).normalize(),u=l.dot(o),d=r.dot(l.cross(o));return this.roll=Math.atan2(d,u),this}};const _se=/^[ \t]*#include +"([\w\d./]+)"/gm;function Wr(n,e){return n.replace(_se,(t,i)=>{const r=i.split("/").reduce((a,s)=>typeof a!="string"&&a!=null?a[s]:void 0,e);if(typeof r!="string")throw new Error(`Could not find include for ${i}.`);return Wr(r,e)})}let Sx;function xse(){if(Sx!=null)return Sx;const n=new Uint32Array([268435456]);return Sx=new Uint8Array(n.buffer,n.byteOffset,n.byteLength)[0]===0,Sx}function yse(n,e,t,i=!0){if(i===xse())return new e(n);const r=Object.assign(new DataView(n),{getFloat16(s,o){return lse(this,s,o)}}),a=new e(r.byteLength/e.BYTES_PER_ELEMENT);for(let s=0,o=0;snew Uint8Array(n),a0=(n,e)=>yse(n,Vl,"getFloat16",e);class MB extends ch{constructor(e){super(ws,bB,{format:Qs,minFilter:Yn,magFilter:Yn,wrapS:Ir,wrapT:Ir,wrapR:Ir,width:cae,height:uae,depth:hae},e)}}const Sse=/#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*i)\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Tse(n,e,t,i){let r="";for(let a=parseInt(e,10);a>1|(oi&21845)<<1;pc=(pc&52428)>>2|(pc&13107)<<2,pc=(pc&61680)>>4|(pc&3855)<<4,mA[oi]=((pc&65280)>>8|(pc&255)<<8)>>1}var ag=function(n,e,t){for(var i=n.length,r=0,a=new Gf(e);r>l]=u}else for(o=new Gf(i),r=0;r>15-n[r]);return o},hv=new Es(288);for(var oi=0;oi<144;++oi)hv[oi]=8;for(var oi=144;oi<256;++oi)hv[oi]=9;for(var oi=256;oi<280;++oi)hv[oi]=7;for(var oi=280;oi<288;++oi)hv[oi]=8;var Zz=new Es(32);for(var oi=0;oi<32;++oi)Zz[oi]=5;var Jre=ag(hv,9,1),$re=ag(Zz,5,1),eM=function(n){for(var e=n[0],t=1;te&&(e=n[t]);return e},Hs=function(n,e,t){var i=e/8|0;return(n[i]|n[i+1]<<8)>>(e&7)&t},tM=function(n,e){var t=e/8|0;return(n[t]|n[t+1]<<8|n[t+2]<<16)>>(e&7)},eae=function(n){return(n+7)/8|0},tae=function(n,e,t){return(t==null||t>n.length)&&(t=n.length),new Es(n.subarray(e,t))},nae=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],qs=function(n,e,t){var i=new Error(e||nae[n]);if(i.code=n,Error.captureStackTrace&&Error.captureStackTrace(i,qs),!t)throw i;return i},iae=function(n,e,t,i){var r=n.length,a=0;if(!r||e.f&&!e.l)return t||new Es(0);var s=!t,o=s||e.i!=2,l=e.i;s&&(t=new Es(r*3));var u=function(wt){var lt=t.length;if(wt>lt){var Qe=new Es(Math.max(lt*2,wt));Qe.set(t),t=Qe}},d=e.f||0,f=e.p||0,p=e.b||0,m=e.l,v=e.d,x=e.m,S=e.n,_=r*8;do{if(!m){d=Hs(n,f,1);var T=Hs(n,f+1,3);if(f+=3,T)if(T==1)m=Jre,v=$re,x=9,S=5;else if(T==2){var w=Hs(n,f,31)+257,L=Hs(n,f+10,15)+4,U=w+Hs(n,f+5,31)+1;f+=14;for(var N=new Es(U),C=new Es(19),z=0;z>4;if(E<16)N[z++]=E;else{var X=0,te=0;for(E==16?(te=3+Hs(n,f,3),f+=2,X=N[z-1]):E==17?(te=3+Hs(n,f,7),f+=3):E==18&&(te=11+Hs(n,f,127),f+=7);te--;)N[z++]=X}}var Q=N.subarray(0,w),ce=N.subarray(w);x=eM(Q),S=eM(ce),m=ag(Q,x,1),v=ag(ce,S,1)}else qs(1);else{var E=eae(f)+4,b=n[E-4]|n[E-3]<<8,R=E+b;if(R>r){l&&qs(0);break}o&&u(p+b),t.set(n.subarray(E,R),p),e.b=p+=b,e.p=f=R*8,e.f=d;continue}if(f>_){l&&qs(0);break}}o&&u(p+131072);for(var se=(1<>4;if(f+=X&15,f>_){l&&qs(0);break}if(X||qs(2),nt<256)t[p++]=nt;else if(nt==256){Xe=f,m=null;break}else{var tt=nt-254;if(nt>264){var z=nt-257,xt=Wz[z];tt=Hs(n,f,(1<>4;ve||qs(3),f+=ve&15;var ce=Kre[we];if(we>3){var xt=Xz[we];ce+=tM(n,f)&(1<_){l&&qs(0);break}o&&u(p+131072);var Ze=p+tt;if(p>4>7||(n[0]<<8|n[1])%31)&&qs(6,"invalid zlib data"),(n[1]>>5&1)==1&&qs(6,"invalid zlib data: "+(n[1]&32?"need":"unexpected")+" dictionary"),(n[1]>>3&4)+2};function mx(n,e){return iae(n.subarray(aae(n),-4),{i:2},e,e)}var sae=typeof TextDecoder<"u"&&new TextDecoder,oae=0;try{sae.decode(rae,{stream:!0}),oae=1}catch{}class Qz extends h7{constructor(e){super(e),this.type=Jn,this.outputFormat=ai}parse(e){const N=Math.pow(2.7182818,2.2);function C(O,B){let Y=0;for(let G=0;G<65536;++G)(G==0||O[G>>3]&1<<(G&7))&&(B[Y++]=G);const I=Y-1;for(;Y<65536;)B[Y++]=0;return I}function z(O){for(let B=0;B<16384;B++)O[B]={},O[B].len=0,O[B].lit=0,O[B].p=null}const W={l:0,c:0,lc:0};function K(O,B,Y,I,G){for(;Y>Y&(1<0;--Y){const I=B+oe[Y]>>1;oe[Y]=B,B=I}for(let Y=0;Y<65537;++Y){const I=O[Y];I>0&&(O[Y]=I|oe[I]++<<6)}}function X(O,B,Y,I,G,Z){const F=B;let q=0,ne=0;for(;I<=G;I++){if(F.value-B.value>Y)return!1;K(6,q,ne,O,F);const le=W.l;if(q=W.c,ne=W.lc,Z[I]=le,le==63){if(F.value-B.value>Y)throw new Error("Something wrong with hufUnpackEncTable");K(8,q,ne,O,F);let pe=W.l+6;if(q=W.c,ne=W.lc,I+pe>G+1)throw new Error("Something wrong with hufUnpackEncTable");for(;pe--;)Z[I++]=0;I--}else if(le>=59){let pe=le-59+2;if(I+pe>G+1)throw new Error("Something wrong with hufUnpackEncTable");for(;pe--;)Z[I++]=0;I--}}ae(Z)}function te(O){return O&63}function Q(O){return O>>6}function ce(O,B,Y,I){for(;B<=Y;B++){const G=Q(O[B]),Z=te(O[B]);if(G>>Z)throw new Error("Invalid table entry");if(Z>14){const F=I[G>>Z-14];if(F.len)throw new Error("Invalid table entry");if(F.lit++,F.p){const q=F.p;F.p=new Array(F.lit);for(let ne=0;ne0;q--){const ne=I[(G<<14-Z)+F];if(ne.len||ne.p)throw new Error("Invalid table entry");ne.len=Z,ne.lit=B,F++}}}return!0}const se={c:0,lc:0};function De(O,B,Y,I){O=O<<8|J(Y,I),B+=8,se.c=O,se.lc=B}const Xe={c:0,lc:0};function nt(O,B,Y,I,G,Z,F,q,ne){if(O==B){I<8&&(De(Y,I,G,Z),Y=se.c,I=se.lc),I-=8;let le=Y>>I;if(le=new Uint8Array([le])[0],q.value+le>ne)return!1;const pe=F[q.value-1];for(;le-- >0;)F[q.value++]=pe}else if(q.value32767?B-65536:B}const ve={a:0,b:0};function we(O,B){const Y=xt(O),G=xt(B),Z=Y+(G&1)+(G>>1),F=Z,q=Z-G;ve.a=F,ve.b=q}function Ze(O,B){const Y=tt(O),I=tt(B),G=Y-(I>>1)&65535,Z=I+G-32768&65535;ve.a=Z,ve.b=G}function de(O,B,Y,I,G,Z,F){const q=F<16384,ne=Y>G?G:Y;let le=1,pe,xe;for(;le<=ne;)le<<=1;for(le>>=1,pe=le,le>>=1;le>=1;){xe=0;const Te=xe+Z*(G-pe),Ce=Z*le,ze=Z*pe,Be=I*le,qe=I*pe;let ct,At,Rt,mt;for(;xe<=Te;xe+=ze){let Dt=xe;const st=xe+I*(Y-pe);for(;Dt<=st;Dt+=qe){const Kt=Dt+Be,Pn=Dt+Ce,Yt=Pn+Be;q?(we(O[Dt+B],O[Pn+B]),ct=ve.a,Rt=ve.b,we(O[Kt+B],O[Yt+B]),At=ve.a,mt=ve.b,we(ct,At),O[Dt+B]=ve.a,O[Kt+B]=ve.b,we(Rt,mt),O[Pn+B]=ve.a,O[Yt+B]=ve.b):(Ze(O[Dt+B],O[Pn+B]),ct=ve.a,Rt=ve.b,Ze(O[Kt+B],O[Yt+B]),At=ve.a,mt=ve.b,Ze(ct,At),O[Dt+B]=ve.a,O[Kt+B]=ve.b,Ze(Rt,mt),O[Pn+B]=ve.a,O[Yt+B]=ve.b)}if(Y&le){const Kt=Dt+Ce;q?we(O[Dt+B],O[Kt+B]):Ze(O[Dt+B],O[Kt+B]),ct=ve.a,O[Kt+B]=ve.b,O[Dt+B]=ct}}if(G&le){let Dt=xe;const st=xe+I*(Y-pe);for(;Dt<=st;Dt+=qe){const Kt=Dt+Be;q?we(O[Dt+B],O[Kt+B]):Ze(O[Dt+B],O[Kt+B]),ct=ve.a,O[Kt+B]=ve.b,O[Dt+B]=ct}}pe=le,le>>=1}return xe}function it(O,B,Y,I,G,Z,F,q,ne){let le=0,pe=0;const xe=F,Te=Math.trunc(I.value+(G+7)/8);for(;I.value=14;){const ze=le>>pe-14&16383,Be=B[ze];if(Be.len)pe-=Be.len,nt(Be.lit,Z,le,pe,Y,I,q,ne,xe),le=Xe.c,pe=Xe.lc;else{if(!Be.p)throw new Error("hufDecode issues");let qe;for(qe=0;qe=ct&&Q(O[Be.p[qe]])==(le>>pe-ct&(1<>=Ce,pe-=Ce;pe>0;){const ze=B[le<<14-pe&16383];if(ze.len)pe-=ze.len,nt(ze.lit,Z,le,pe,Y,I,q,ne,xe),le=Xe.c,pe=Xe.lc;else throw new Error("hufDecode issues")}return!0}function wt(O,B,Y,I,G,Z){const F={value:0},q=Y.value,ne=pt(B,Y),le=pt(B,Y);Y.value+=4;const pe=pt(B,Y);if(Y.value+=4,ne<0||ne>=65537||le<0||le>=65537)throw new Error("Something wrong with HUF_ENCSIZE");const xe=new Array(65537),Te=new Array(16384);z(Te);const Ce=I-(Y.value-q);if(X(O,Y,Ce,ne,le,xe),pe>8*(I-(Y.value-q)))throw new Error("Something wrong with hufUncompress");ce(xe,ne,le,Te),it(xe,Te,O,Y,pe,le,Z,G,F)}function lt(O,B,Y){for(let I=0;IZ||(B[G++]=O[Y++],G>Z));)B[G++]=O[I++]}function V(O){let B=O.byteLength;const Y=new Array;let I=0;const G=new DataView(O);for(;B>0;){const Z=G.getInt8(I++);if(Z<0){const F=-Z;B-=F+1;for(let q=0;q>8==255?G+=I&255:(Y[G]=I,G++),O.value++}function Fe(O,B){B[0]=ge(O[0]),B[1]=ge(O[1]),B[2]=ge(O[5]),B[3]=ge(O[6]),B[4]=ge(O[14]),B[5]=ge(O[15]),B[6]=ge(O[27]),B[7]=ge(O[28]),B[8]=ge(O[2]),B[9]=ge(O[4]),B[10]=ge(O[7]),B[11]=ge(O[13]),B[12]=ge(O[16]),B[13]=ge(O[26]),B[14]=ge(O[29]),B[15]=ge(O[42]),B[16]=ge(O[3]),B[17]=ge(O[8]),B[18]=ge(O[12]),B[19]=ge(O[17]),B[20]=ge(O[25]),B[21]=ge(O[30]),B[22]=ge(O[41]),B[23]=ge(O[43]),B[24]=ge(O[9]),B[25]=ge(O[11]),B[26]=ge(O[18]),B[27]=ge(O[24]),B[28]=ge(O[31]),B[29]=ge(O[40]),B[30]=ge(O[44]),B[31]=ge(O[53]),B[32]=ge(O[10]),B[33]=ge(O[19]),B[34]=ge(O[23]),B[35]=ge(O[32]),B[36]=ge(O[39]),B[37]=ge(O[45]),B[38]=ge(O[52]),B[39]=ge(O[54]),B[40]=ge(O[20]),B[41]=ge(O[22]),B[42]=ge(O[33]),B[43]=ge(O[38]),B[44]=ge(O[46]),B[45]=ge(O[51]),B[46]=ge(O[55]),B[47]=ge(O[60]),B[48]=ge(O[21]),B[49]=ge(O[34]),B[50]=ge(O[37]),B[51]=ge(O[47]),B[52]=ge(O[50]),B[53]=ge(O[56]),B[54]=ge(O[59]),B[55]=ge(O[61]),B[56]=ge(O[35]),B[57]=ge(O[36]),B[58]=ge(O[48]),B[59]=ge(O[49]),B[60]=ge(O[57]),B[61]=ge(O[58]),B[62]=ge(O[62]),B[63]=ge(O[63])}function $e(O){const B=.5*Math.cos(.7853975),Y=.5*Math.cos(3.14159/16),I=.5*Math.cos(3.14159/8),G=.5*Math.cos(3*3.14159/16),Z=.5*Math.cos(5*3.14159/16),F=.5*Math.cos(3*3.14159/8),q=.5*Math.cos(7*3.14159/16),ne=new Array(4),le=new Array(4),pe=new Array(4),xe=new Array(4);for(let Te=0;Te<8;++Te){const Ce=Te*8;ne[0]=I*O[Ce+2],ne[1]=F*O[Ce+2],ne[2]=I*O[Ce+6],ne[3]=F*O[Ce+6],le[0]=Y*O[Ce+1]+G*O[Ce+3]+Z*O[Ce+5]+q*O[Ce+7],le[1]=G*O[Ce+1]-q*O[Ce+3]-Y*O[Ce+5]-Z*O[Ce+7],le[2]=Z*O[Ce+1]-Y*O[Ce+3]+q*O[Ce+5]+G*O[Ce+7],le[3]=q*O[Ce+1]-Z*O[Ce+3]+G*O[Ce+5]-Y*O[Ce+7],pe[0]=B*(O[Ce+0]+O[Ce+4]),pe[3]=B*(O[Ce+0]-O[Ce+4]),pe[1]=ne[0]+ne[3],pe[2]=ne[1]-ne[2],xe[0]=pe[0]+pe[1],xe[1]=pe[3]+pe[2],xe[2]=pe[3]-pe[2],xe[3]=pe[0]-pe[1],O[Ce+0]=xe[0]+le[0],O[Ce+1]=xe[1]+le[1],O[Ce+2]=xe[2]+le[2],O[Ce+3]=xe[3]+le[3],O[Ce+4]=xe[3]-le[3],O[Ce+5]=xe[2]-le[2],O[Ce+6]=xe[1]-le[1],O[Ce+7]=xe[0]-le[0]}for(let Te=0;Te<8;++Te)ne[0]=I*O[16+Te],ne[1]=F*O[16+Te],ne[2]=I*O[48+Te],ne[3]=F*O[48+Te],le[0]=Y*O[8+Te]+G*O[24+Te]+Z*O[40+Te]+q*O[56+Te],le[1]=G*O[8+Te]-q*O[24+Te]-Y*O[40+Te]-Z*O[56+Te],le[2]=Z*O[8+Te]-Y*O[24+Te]+q*O[40+Te]+G*O[56+Te],le[3]=q*O[8+Te]-Z*O[24+Te]+G*O[40+Te]-Y*O[56+Te],pe[0]=B*(O[Te]+O[32+Te]),pe[3]=B*(O[Te]-O[32+Te]),pe[1]=ne[0]+ne[3],pe[2]=ne[1]-ne[2],xe[0]=pe[0]+pe[1],xe[1]=pe[3]+pe[2],xe[2]=pe[3]-pe[2],xe[3]=pe[0]-pe[1],O[0+Te]=xe[0]+le[0],O[8+Te]=xe[1]+le[1],O[16+Te]=xe[2]+le[2],O[24+Te]=xe[3]+le[3],O[32+Te]=xe[3]-le[3],O[40+Te]=xe[2]-le[2],O[48+Te]=xe[1]-le[1],O[56+Te]=xe[0]-le[0]}function Je(O){for(let B=0;B<64;++B){const Y=O[0][B],I=O[1][B],G=O[2][B];O[0][B]=Y+1.5747*G,O[1][B]=Y-.1873*I-.4682*G,O[2][B]=Y+1.8556*I}}function ut(O,B,Y){for(let I=0;I<64;++I)B[Y+I]=H3.toHalfFloat(k(O[I]))}function k(O){return O<=1?Math.sign(O)*Math.pow(Math.abs(O),2.2):Math.sign(O)*Math.pow(N,Math.abs(O)-1)}function P(O){return new DataView(O.array.buffer,O.offset.value,O.size)}function he(O){const B=O.viewer.buffer.slice(O.offset.value,O.offset.value+O.size),Y=new Uint8Array(V(B)),I=new Uint8Array(Y.length);return Qe(Y),Ee(Y,I),new DataView(I.buffer)}function be(O){const B=O.array.slice(O.offset.value,O.offset.value+O.size),Y=mx(B),I=new Uint8Array(Y.length);return Qe(Y),Ee(Y,I),new DataView(I.buffer)}function Ie(O){const B=O.viewer,Y={value:O.offset.value},I=new Uint16Array(O.columns*O.lines*(O.inputChannels.length*O.type)),G=new Uint8Array(8192);let Z=0;const F=new Array(O.inputChannels.length);for(let ze=0,Be=O.inputChannels.length;ze=8192)throw new Error("Something is wrong with PIZ_COMPRESSION BITMAP_SIZE");if(q<=ne)for(let ze=0;ze0;){const Be=je(B.buffer,Y),qe=me(B,Y),ct=qe>>2&3,At=(qe>>4)-1,Rt=new Int8Array([At])[0],mt=me(B,Y);Z.push({name:Be,index:Rt,type:mt,compression:ct}),F-=Be.length+3}const q=Sa.channels,ne=new Array(O.inputChannels.length);for(let Be=0;Be=0&&(le.idx[At.index]=Be),qe.offset=Be)}}let pe,xe,Te;if(G.acCompressedSize>0)switch(G.acCompression){case 0:pe=new Uint16Array(G.totalAcUncompressedCount),wt(O.array,B,Y,G.acCompressedSize,pe,G.totalAcUncompressedCount);break;case 1:const Be=O.array.slice(Y.value,Y.value+G.totalAcUncompressedCount),qe=mx(Be);pe=new Uint16Array(qe.buffer),Y.value+=G.totalAcUncompressedCount;break}if(G.dcCompressedSize>0){const Be={array:O.array,offset:Y,size:G.dcCompressedSize};xe=new Uint16Array(be(Be).buffer),Y.value+=G.dcCompressedSize}if(G.rleRawSize>0){const Be=O.array.slice(Y.value,Y.value+G.rleCompressedSize),qe=mx(Be);Te=V(qe.buffer),Y.value+=G.rleCompressedSize}let Ce=0;const ze=new Array(ne.length);for(let Be=0;Be>10,Y=O&1023;return(O>>15?-1:1)*(B?B===31?Y?NaN:1/0:Math.pow(2,B-15)*(1+Y/1024):6103515625e-14*(Y/1024))}function We(O,B){const Y=O.getUint16(B.value,!0);return B.value+=2,Y}function Ge(O,B){return ge(We(O,B))}function Re(O,B,Y,I){const G=Y.value,Z=[];for(;Y.value>4]}}function Po(O,B){const Y=j(O,B),I=j(O,B);return[Y,I]}function ro(O,B){const Y=j(O,B),I=j(O,B),G=j(O,B);return[Y,I,G]}function ao(O,B,Y,I,G){if(I==="string"||I==="stringvector"||I==="iccProfile")return Tt(B,Y,G);if(I==="chlist")return Re(O,B,Y,G);if(I==="chromaticities")return at(O,Y);if(I==="compression")return Et(O,Y);if(I==="box2i")return Gt(O,Y);if(I==="envmap")return mi(O,Y);if(I==="tiledesc")return gi(O,Y);if(I==="lineOrder")return kt(O,Y);if(I==="float")return j(O,Y);if(I==="v2f")return Po(O,Y);if(I==="v3f")return ro(O,Y);if(I==="int")return He(O,Y);if(I==="rational")return vt(O,Y);if(I==="timecode")return Ue(O,Y);if(I==="preview")return Y.value+=G,"skipped";Y.value+=G}function Li(O,B){const Y=Math.log2(O);return B=="ROUND_DOWN"?Math.floor(Y):Math.ceil(Y)}function so(O,B,Y){let I=0;switch(O.levelMode){case"ONE_LEVEL":I=1;break;case"MIPMAP_LEVELS":I=Li(Math.max(B,Y),O.roundingMode)+1;break;case"RIPMAP_LEVELS":throw new Error("THREE.EXRLoader: RIPMAP_LEVELS tiles currently unsupported.")}return I}function Er(O,B,Y,I){const G=new Array(O);for(let Z=0;ZO.width?O.width-F:O.blockWidth,O.lines=q+O.blockHeight>O.height?O.height-q:O.blockHeight;const ne=O.columns*O.totalBytes,pe=O.sizeO.height?O.height-G:O.blockHeight;const Z=O.columns*O.totalBytes,q=O.size=O.height)continue;const xe=ne*Z,Te=(O.height-1-pe)*O.outLineWidth;for(let Ce=0;CeTe:F.scanOrder=Te=>F.height-1-Te,O.spec.singleTile){F.blockHeight=O.tiles.ySize,F.blockWidth=O.tiles.xSize;const Te=so(O.tiles,F.width,F.height),Ce=Er(Te,F.width,O.tiles.xSize,O.tiles.roundingMode),ze=Er(Te,F.height,O.tiles.ySize,O.tiles.roundingMode);F.tileCount=Ce[0]*ze[0];for(let Be=0;Be{Wy(s instanceof ArrayBuffer);try{t(s)}catch(o){r!=null?r(o):console.error(o),this.manager.itemError(e)}},i,r)}};function Kz(n){var e,t;return n instanceof uT?n.getContext().getExtension("OES_texture_float_linear")!=null:((t=(e=n.backend).hasFeature)==null?void 0:t.call(e,"float32-filterable"))??!1}const cae=128,uae=128,hae=64,dae="9627216cc50057994c98a2118f3c4a23765d43b9",Jz=`https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/${dae}/packages/core/assets/stbn.bin`,fae="This is not an object",pae="This is not a Float16Array object",WI="This constructor is not a subclass of Float16Array",$z="The constructor property value is not an object",mae="Species constructor didn't return TypedArray object",gae="Derived constructor created TypedArray object which was too small length",sg="Attempting to access detached ArrayBuffer",gA="Cannot convert undefined or null to object",vA="Cannot mix BigInt and other types, use explicit conversions",XI="@@iterator property is not callable",qI="Reduce of empty array with no initial value",vae="The comparison function must be either a function or undefined",nM="Offset is out of bounds";function ti(n){return(e,...t)=>ua(n,e,t)}function em(n,e){return ti(Ip(n,e).get)}const{apply:ua,construct:N0,defineProperty:_ae,get:iM,getOwnPropertyDescriptor:Ip,getPrototypeOf:dv,has:_A,ownKeys:eB,set:YI,setPrototypeOf:tB}=Reflect,xae=Proxy,{EPSILON:yae,MAX_SAFE_INTEGER:jI,isFinite:nB,isNaN:Up}=Number,{iterator:Lo,species:Sae,toStringTag:VR,for:Tae}=Symbol,Pp=Object,{create:fT,defineProperty:fv,freeze:Eae,is:ZI}=Pp,xA=Pp.prototype,bae=xA.__lookupGetter__?ti(xA.__lookupGetter__):(n,e)=>{if(n==null)throw hi(gA);let t=Pp(n);do{const i=Ip(t,e);if(i!==void 0)return Tl(i,"get")?i.get:void 0}while((t=dv(t))!==null)},Tl=Pp.hasOwn||ti(xA.hasOwnProperty),iB=Array,rB=iB.isArray,pT=iB.prototype,Mae=ti(pT.join),Aae=ti(pT.push),wae=ti(pT.toLocaleString),GR=pT[Lo],Rae=ti(GR),{abs:Cae,trunc:aB}=Math,mT=ArrayBuffer,Dae=mT.isView,sB=mT.prototype,Nae=ti(sB.slice),Oae=em(sB,"byteLength"),yA=typeof SharedArrayBuffer<"u"?SharedArrayBuffer:null,Lae=yA&&em(yA.prototype,"byteLength"),kR=dv(Uint8Array),Iae=kR.from,dr=kR.prototype,Uae=dr[Lo],Pae=ti(dr.keys),zae=ti(dr.values),Bae=ti(dr.entries),Fae=ti(dr.set),QI=ti(dr.reverse),Hae=ti(dr.fill),Vae=ti(dr.copyWithin),KI=ti(dr.sort),i0=ti(dr.slice),Gae=ti(dr.subarray),sr=em(dr,"buffer"),Zu=em(dr,"byteOffset"),Mn=em(dr,"length"),oB=em(dr,VR),kae=Uint8Array,za=Uint16Array,JI=(...n)=>ua(Iae,za,n),WR=Uint32Array,Wae=Float32Array,Wh=dv([][Lo]()),gT=ti(Wh.next),Xae=ti(function*(){}().next),qae=dv(Wh),Yae=DataView.prototype,jae=ti(Yae.getUint16),hi=TypeError,rM=RangeError,lB=WeakSet,cB=lB.prototype,Zae=ti(cB.add),Qae=ti(cB.has),vT=WeakMap,XR=vT.prototype,Xy=ti(XR.get),Kae=ti(XR.has),qR=ti(XR.set),uB=new vT,Jae=fT(null,{next:{value:function(){const n=Xy(uB,this);return gT(n)}},[Lo]:{value:function(){return this}}});function O0(n){if(n[Lo]===GR&&Wh.next===gT)return n;const e=fT(Jae);return qR(uB,e,Rae(n)),e}const hB=new vT,dB=fT(qae,{next:{value:function(){const n=Xy(hB,this);return Xae(n)},writable:!0,configurable:!0}});for(const n of eB(Wh))n!=="next"&&fv(dB,n,Ip(Wh,n));function $I(n){const e=fT(dB);return qR(hB,e,n),e}function qy(n){return n!==null&&typeof n=="object"||typeof n=="function"}function e5(n){return n!==null&&typeof n=="object"}function Yy(n){return oB(n)!==void 0}function SA(n){const e=oB(n);return e==="BigInt64Array"||e==="BigUint64Array"}function $ae(n){try{return rB(n)?!1:(Oae(n),!0)}catch{return!1}}function fB(n){if(yA===null)return!1;try{return Lae(n),!0}catch{return!1}}function ese(n){return $ae(n)||fB(n)}function t5(n){return rB(n)?n[Lo]===GR&&Wh.next===gT:!1}function tse(n){return Yy(n)?n[Lo]===Uae&&Wh.next===gT:!1}function gx(n){if(typeof n!="string")return!1;const e=+n;return n!==e+""||!nB(e)?!1:e===aB(e)}const jy=Tae("__Float16Array__");function nse(n){if(!e5(n))return!1;const e=dv(n);if(!e5(e))return!1;const t=e.constructor;if(t===void 0)return!1;if(!qy(t))throw hi($z);return _A(t,jy)}const TA=1/yae;function ise(n){return n+TA-TA}const pB=6103515625e-14,rse=65504,mB=.0009765625,n5=mB*pB,ase=mB*TA;function sse(n){const e=+n;if(!nB(e)||e===0)return e;const t=e>0?1:-1,i=Cae(e);if(irse||Up(a)?t*(1/0):t*a}const gB=new mT(4),vB=new Wae(gB),_B=new WR(gB),Gs=new za(512),ks=new kae(512);for(let n=0;n<256;++n){const e=n-127;e<-24?(Gs[n]=0,Gs[n|256]=32768,ks[n]=24,ks[n|256]=24):e<-14?(Gs[n]=1024>>-e-14,Gs[n|256]=1024>>-e-14|32768,ks[n]=-e-1,ks[n|256]=-e-1):e<=15?(Gs[n]=e+15<<10,Gs[n|256]=e+15<<10|32768,ks[n]=13,ks[n|256]=13):e<128?(Gs[n]=31744,Gs[n|256]=64512,ks[n]=24,ks[n|256]=24):(Gs[n]=31744,Gs[n|256]=64512,ks[n]=13,ks[n|256]=13)}function So(n){vB[0]=sse(n);const e=_B[0],t=e>>23&511;return Gs[t]+((e&8388607)>>ks[t])}const YR=new WR(2048);for(let n=1;n<1024;++n){let e=n<<13,t=0;for(;!(e&8388608);)e<<=1,t-=8388608;e&=-8388609,t+=947912704,YR[n]=e|t}for(let n=1024;n<2048;++n)YR[n]=939524096+(n-1024<<13);const tm=new WR(64);for(let n=1;n<31;++n)tm[n]=n<<23;tm[31]=1199570944;tm[32]=2147483648;for(let n=33;n<63;++n)tm[n]=2147483648+(n-32<<23);tm[63]=3347054592;const xB=new za(64);for(let n=1;n<64;++n)n!==32&&(xB[n]=1024);function Cn(n){const e=n>>10;return _B[0]=YR[xB[e]+(n&1023)]+tm[e],vB[0]}function ml(n){const e=+n;return Up(e)||e===0?0:aB(e)}function aM(n){const e=ml(n);return e<0?0:ee)return 1;if(n===0&&e===0){const r=ZI(n,0),a=ZI(e,0);if(!r&&a)return-1;if(r&&!a)return 1}return 0}const jR=2,Zy=new vT;function kf(n){return Kae(Zy,n)||!Dae(n)&&nse(n)}function bn(n){if(!kf(n))throw hi(pae)}function _x(n,e){const t=kf(n),i=Yy(n);if(!t&&!i)throw hi(mae);if(typeof e=="number"){let r;if(t){const a=$t(n);r=Mn(a)}else r=Mn(n);if(r=0?r:i+r;if(!(a<0||a>=i))return Cn(t[a])}with(e,t){bn(this);const i=$t(this),r=Mn(i),a=ml(e),s=a>=0?a:r+a,o=+t;if(s<0||s>=r)throw rM(nM);const l=new za(sr(i),Zu(i),Mn(i)),u=new or(sr(i0(l))),d=$t(u);return d[s]=So(o),u}map(e,...t){bn(this);const i=$t(this),r=Mn(i),a=t[0],s=vx(i,or);if(s===or){const l=new or(r),u=$t(l);for(let d=0;d=0;--o)a=e(a,Cn(i[o]),o,this);return a}forEach(e,...t){bn(this);const i=$t(this),r=Mn(i),a=t[0];for(let s=0;s=0;--s){const o=Cn(i[s]);if(ua(e,a,[o,s,this]))return o}}findLastIndex(e,...t){bn(this);const i=$t(this),r=Mn(i),a=t[0];for(let s=r-1;s>=0;--s){const o=Cn(i[s]);if(ua(e,a,[o,s,this]))return s}return-1}every(e,...t){bn(this);const i=$t(this),r=Mn(i),a=t[0];for(let s=0;sa)throw rM(nM);for(let l=0;li(Cn(r),Cn(a))),this}toSorted(e){bn(this);const t=$t(this);if(e!==void 0&&typeof e!="function")throw new hi(vae);const i=e!==void 0?e:i5,r=new za(sr(t),Zu(t),Mn(t)),a=new or(sr(i0(r))),s=$t(a);return KI(s,(o,l)=>i(Cn(o),Cn(l))),a}slice(e,t){bn(this);const i=$t(this),r=vx(i,or);if(r===or){const v=new za(sr(i),Zu(i),Mn(i));return new or(sr(i0(v,e,t)))}const a=Mn(i),s=ml(e),o=t===void 0?a:ml(t);let l;s===-1/0?l=0:s<0?l=a+s>0?a+s:0:l=a0?a+o:0:u=a0?u-l:0,f=new r(d);if(_x(f,d),d===0)return f;const p=sr(i);if(og(p))throw hi(sg);let m=0;for(;l=1?ml(t[0]):r-1;if(a===-1/0)return-1;a>=0?a=a=0;--s)if(Tl(i,s)&&Cn(i[s])===e)return s;return-1}includes(e,...t){bn(this);const i=$t(this),r=Mn(i);let a=ml(t[0]);if(a===1/0)return!1;a<0&&(a+=r,a<0&&(a=0));const s=Up(e);for(let o=a;o{try{t(this.parser(s))}catch(o){r!=null?r(o):console.error(o),this.manager.itemError(e)}},i,r)}};function use(n){const e=n instanceof Int8Array?CS:n instanceof Uint8Array||n instanceof Uint8ClampedArray?Ni:n instanceof Int16Array?DS:n instanceof Uint16Array?Uh:n instanceof Int32Array?$g:n instanceof Uint32Array?to:n instanceof Vl?Jn:n instanceof Float32Array||n instanceof Float64Array?fi:null;return Wy(e!=null),e}let ch=class extends wi{constructor(e,t,i={},r){super(r),this.textureClass=e,this.parser=t,this.options={format:ai,minFilter:Bt,magFilter:Bt,...i}}load(e,t,i,r){const a=new this.textureClass,s=new cse(this.parser,this.manager);return s.setRequestHeader(this.requestHeader),s.setPath(this.path),s.setWithCredentials(this.withCredentials),s.load(e,o=>{a.image.data=o instanceof Vl?new Uint16Array(o.buffer):o;const{width:l,height:u,depth:d,...f}=this.options;l!=null&&(a.image.width=l),u!=null&&(a.image.height=u),"depth"in a.image&&d!=null&&(a.image.depth=d),a.type=use(o),Object.assign(a,f),a.needsUpdate=!0,t==null||t(a)},i,r),a}};const zg=ht.clamp;ht.euclideanModulo;ht.inverseLerp;const SB=ht.lerp,oh=ht.degToRad;ht.radToDeg;ht.isPowerOfTwo;ht.ceilPowerOfTwo;ht.floorPowerOfTwo;ht.normalize;function hse(n,e,t,i=0,r=1){return ht.mapLinear(n,e,t,i,r)}function dse(n){return Math.min(Math.max(n,0),1)}function gn(n){return(e,t)=>{e instanceof ei?Object.defineProperty(e,t,{enumerable:!0,get(){var i;return((i=this.defines)==null?void 0:i[n])!=null},set(i){var r;i!==this[t]&&(i?(this.defines??(this.defines={}),this.defines[n]="1"):(r=this.defines)==null||delete r[n],this.needsUpdate=!0)}}):Object.defineProperty(e,t,{enumerable:!0,get(){return this.defines.has(n)},set(i){i!==this[t]&&(i?this.defines.set(n,"1"):this.defines.delete(n),this.setChanged())}})}}function ad(n,{min:e=Number.MIN_SAFE_INTEGER,max:t=Number.MAX_SAFE_INTEGER}={}){return(i,r)=>{i instanceof ei?Object.defineProperty(i,r,{enumerable:!0,get(){var s;const a=(s=this.defines)==null?void 0:s[n];return a!=null?parseInt(a,10):0},set(a){const s=this[r];a!==s&&(this.defines??(this.defines={}),this.defines[n]=zg(a,e,t).toFixed(0),this.needsUpdate=!0)}}):Object.defineProperty(i,r,{enumerable:!0,get(){const a=this.defines.get(n);return a!=null?parseInt(a,10):0},set(a){const s=this[r];a!==s&&(this.defines.set(n,zg(a,e,t).toFixed(0)),this.setChanged())}})}}function ZR(n,{min:e=-1/0,max:t=1/0,precision:i=7}={}){return(r,a)=>{r instanceof ei?Object.defineProperty(r,a,{enumerable:!0,get(){var o;const s=(o=this.defines)==null?void 0:o[n];return s!=null?parseFloat(s):0},set(s){const o=this[a];s!==o&&(this.defines??(this.defines={}),this.defines[n]=zg(s,e,t).toFixed(i),this.needsUpdate=!0)}}):Object.defineProperty(r,a,{enumerable:!0,get(){const s=this.defines.get(n);return s!=null?parseFloat(s):0},set(s){const o=this[a];s!==o&&(this.defines.set(n,zg(s,e,t).toFixed(i)),this.setChanged())}})}}function TB(n,{validate:e}={}){return(t,i)=>{t instanceof ei?Object.defineProperty(t,i,{enumerable:!0,get(){var r;return((r=this.defines)==null?void 0:r[n])??""},set(r){if(r!==this[i]){if((e==null?void 0:e(r))===!1){console.error(`Expression validation failed: ${r}`);return}this.defines??(this.defines={}),this.defines[n]=r,this.needsUpdate=!0}}}):Object.defineProperty(t,i,{enumerable:!0,get(){return this.defines.get(n)??""},set(r){if(r!==this[i]){if((e==null?void 0:e(r))===!1){console.error(`Expression validation failed: ${r}`);return}this.defines.set(n,r),this.setChanged()}}})}}function a5(n,...e){const t={};for(let i=0;ir[s],set:o=>{r[s]=o}}}return Object.defineProperties(n,t),n}function s5(n,e,t){const i={};for(const r of t)i[r]={enumerable:!0,get:()=>e.uniforms[r].value,set:a=>{e.uniforms[r].value=a}};return Object.defineProperties(n,i),n}class sM extends wi{constructor(e={},t){super(t),this.options=e}load(e,t,i,r){const{width:a,height:s,depth:o}=this.options,l=new ws(null,a,s,o),u=new Qz(this.manager);return u.setRequestHeader(this.requestHeader),u.setPath(this.path),u.setWithCredentials(this.withCredentials),u.load(e,d=>{const{image:f}=d;l.image={data:f.data,width:a??f.width,height:s??f.height,depth:o??Math.sqrt(f.height)},l.type=d.type,l.format=d.format,l.colorSpace=d.colorSpace,l.needsUpdate=!0;try{t==null||t(l)}catch(p){r!=null?r(p):console.error(p),this.manager.itemError(e)}},i,r),l}}class o5 extends wi{constructor(e={},t){super(t),this.options=e}load(e,t,i,r){const{width:a,height:s}=this.options,o=new Ur(null,a,s),l=new Qz(this.manager);return l.setRequestHeader(this.requestHeader),l.setPath(this.path),l.setWithCredentials(this.withCredentials),l.load(e,u=>{const{image:d}=u;o.image={data:d.data,width:a??d.width,height:s??d.height},o.type=u.type,o.format=u.format,o.colorSpace=u.colorSpace,o.needsUpdate=!0;try{t==null||t(o)}catch(f){r!=null?r(f):console.error(f),this.manager.itemError(e)}},i,r),o}}const oM=1e-6,xx=new D,yx=new D,sl=new D,r0=new D,lM=new D,fse=new D,pse=new Me,mse=new ft,gse=new Pr;let vse=class EB{constructor(e=0,t=0,i=0,r=0){this.distance=e,this.heading=t,this.pitch=i,this.roll=r}get distance(){return this._distance}set distance(e){this._distance=Math.max(e,oM)}get pitch(){return this._pitch}set pitch(e){this._pitch=zg(e,-Math.PI/2+oM,Math.PI/2-oM)}set(e,t,i,r){return this.distance=e,this.heading=t,this.pitch=i,r!=null&&(this.roll=r),this}clone(){return new EB(this.distance,this.heading,this.pitch,this.roll)}copy(e){return this.distance=e.distance,this.heading=e.heading,this.pitch=e.pitch,this.roll=e.roll,this}equals(e){return e.distance===this.distance&&e.heading===this.heading&&e.pitch===this.pitch&&e.roll===this.roll}decompose(e,t,i,r,a=kh.WGS84){a.getEastNorthUpVectors(e,xx,yx,sl),r==null||r.copy(sl);const s=r0.copy(xx).multiplyScalar(Math.cos(this.heading)).add(lM.copy(yx).multiplyScalar(Math.sin(this.heading))).multiplyScalar(Math.cos(this.pitch)).add(lM.copy(sl).multiplyScalar(Math.sin(this.pitch))).normalize().multiplyScalar(this.distance);if(t.copy(e).sub(s),this.roll!==0){const o=r0.copy(e).sub(t).normalize();sl.applyQuaternion(mse.setFromAxisAngle(o,this.roll))}i.setFromRotationMatrix(pse.lookAt(t,e,sl))}setFromCamera(e,t=kh.WGS84){const i=r0.setFromMatrixPosition(e.matrixWorld),r=lM.set(0,0,.5).unproject(e).sub(i).normalize(),a=t.getIntersection(gse.set(i,r));if(a==null)return;this.distance=i.distanceTo(a),t.getEastNorthUpVectors(a,xx,yx,sl),this.heading=Math.atan2(yx.dot(r),xx.dot(r)),this.pitch=Math.asin(sl.dot(r));const s=r0.copy(e.up).applyQuaternion(e.quaternion),o=fse.copy(r).multiplyScalar(-s.dot(r)).add(s).normalize(),l=r0.copy(r).multiplyScalar(-sl.dot(r)).add(sl).normalize(),u=l.dot(o),d=r.dot(l.cross(o));return this.roll=Math.atan2(d,u),this}};const _se=/^[ \t]*#include +"([\w\d./]+)"/gm;function Wr(n,e){return n.replace(_se,(t,i)=>{const r=i.split("/").reduce((a,s)=>typeof a!="string"&&a!=null?a[s]:void 0,e);if(typeof r!="string")throw new Error(`Could not find include for ${i}.`);return Wr(r,e)})}let Sx;function xse(){if(Sx!=null)return Sx;const n=new Uint32Array([268435456]);return Sx=new Uint8Array(n.buffer,n.byteOffset,n.byteLength)[0]===0,Sx}function yse(n,e,t,i=!0){if(i===xse())return new e(n);const r=Object.assign(new DataView(n),{getFloat16(s,o){return lse(this,s,o)}}),a=new e(r.byteLength/e.BYTES_PER_ELEMENT);for(let s=0,o=0;snew Uint8Array(n),a0=(n,e)=>yse(n,Vl,"getFloat16",e);class MB extends ch{constructor(e){super(ws,bB,{format:Qs,minFilter:Yn,magFilter:Yn,wrapS:Ir,wrapT:Ir,wrapR:Ir,width:cae,height:uae,depth:hae},e)}}const Sse=/#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*i)\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Tse(n,e,t,i){let r="";for(let a=parseInt(e,10);a * @license MIT - */const Kse=173.1446326846693,Jse=14959787069098932e-8,Xh=.017453292519943295,$se=365.24217,c5=new Date("2000-01-01T12:00:00Z"),gl=2*Math.PI,mc=3600*(180/Math.PI),Wf=484813681109536e-20,eoe=10800*60,toe=2*eoe,noe=6378.1366,ioe=noe/Jse,roe=81.30056,$R=.0002959122082855911,bA=2825345909524226e-22,MA=8459715185680659e-23,AA=1292024916781969e-23,wA=1524358900784276e-23;function m1(n){if(!Number.isFinite(n))throw console.trace(),`Value is not a finite number: ${n}`;return n}function ff(n){return n-Math.floor(n)}var kn;(function(n){n.Sun="Sun",n.Moon="Moon",n.Mercury="Mercury",n.Venus="Venus",n.Earth="Earth",n.Mars="Mars",n.Jupiter="Jupiter",n.Saturn="Saturn",n.Uranus="Uranus",n.Neptune="Neptune",n.Pluto="Pluto",n.SSB="SSB",n.EMB="EMB",n.Star1="Star1",n.Star2="Star2",n.Star3="Star3",n.Star4="Star4",n.Star5="Star5",n.Star6="Star6",n.Star7="Star7",n.Star8="Star8"})(kn||(kn={}));const aoe=[kn.Star1,kn.Star2,kn.Star3,kn.Star4,kn.Star5,kn.Star6,kn.Star7,kn.Star8],soe=[{ra:0,dec:0,dist:0},{ra:0,dec:0,dist:0},{ra:0,dec:0,dist:0},{ra:0,dec:0,dist:0},{ra:0,dec:0,dist:0},{ra:0,dec:0,dist:0},{ra:0,dec:0,dist:0},{ra:0,dec:0,dist:0}];function ooe(n){const e=aoe.indexOf(n);return e>=0?soe[e]:null}function IB(n){const e=ooe(n);return e&&e.dist>0?e:null}var Bl;(function(n){n[n.From2000=0]="From2000",n[n.Into2000=1]="Into2000"})(Bl||(Bl={}));const Xf={Mercury:[[[[4.40250710144,0,0],[.40989414977,1.48302034195,26087.9031415742],[.050462942,4.47785489551,52175.8062831484],[.00855346844,1.16520322459,78263.70942472259],[.00165590362,4.11969163423,104351.61256629678],[.00034561897,.77930768443,130439.51570787099],[7583476e-11,3.71348404924,156527.41884944518]],[[26087.90313685529,0,0],[.01131199811,6.21874197797,26087.9031415742],[.00292242298,3.04449355541,52175.8062831484],[.00075775081,6.08568821653,78263.70942472259],[.00019676525,2.80965111777,104351.61256629678]]],[[[.11737528961,1.98357498767,26087.9031415742],[.02388076996,5.03738959686,52175.8062831484],[.01222839532,3.14159265359,0],[.0054325181,1.79644363964,78263.70942472259],[.0012977877,4.83232503958,104351.61256629678],[.00031866927,1.58088495658,130439.51570787099],[7963301e-11,4.60972126127,156527.41884944518]],[[.00274646065,3.95008450011,26087.9031415742],[.00099737713,3.14159265359,0]]],[[[.39528271651,0,0],[.07834131818,6.19233722598,26087.9031415742],[.00795525558,2.95989690104,52175.8062831484],[.00121281764,6.01064153797,78263.70942472259],[.00021921969,2.77820093972,104351.61256629678],[4354065e-11,5.82894543774,130439.51570787099]],[[.0021734774,4.65617158665,26087.9031415742],[.00044141826,1.42385544001,52175.8062831484]]]],Venus:[[[[3.17614666774,0,0],[.01353968419,5.59313319619,10213.285546211],[.00089891645,5.30650047764,20426.571092422],[5477194e-11,4.41630661466,7860.4193924392],[3455741e-11,2.6996444782,11790.6290886588],[2372061e-11,2.99377542079,3930.2096962196],[1317168e-11,5.18668228402,26.2983197998],[1664146e-11,4.25018630147,1577.3435424478],[1438387e-11,4.15745084182,9683.5945811164],[1200521e-11,6.15357116043,30639.856638633]],[[10213.28554621638,0,0],[.00095617813,2.4640651111,10213.285546211],[7787201e-11,.6247848222,20426.571092422]]],[[[.05923638472,.26702775812,10213.285546211],[.00040107978,1.14737178112,20426.571092422],[.00032814918,3.14159265359,0]],[[.00287821243,1.88964962838,10213.285546211]]],[[[.72334820891,0,0],[.00489824182,4.02151831717,10213.285546211],[1658058e-11,4.90206728031,20426.571092422],[1378043e-11,1.12846591367,11790.6290886588],[1632096e-11,2.84548795207,7860.4193924392],[498395e-11,2.58682193892,9683.5945811164],[221985e-11,2.01346696541,19367.1891622328],[237454e-11,2.55136053886,15720.8387848784]],[[.00034551041,.89198706276,10213.285546211]]]],Earth:[[[[1.75347045673,0,0],[.03341656453,4.66925680415,6283.0758499914],[.00034894275,4.62610242189,12566.1516999828],[3417572e-11,2.82886579754,3.523118349],[3497056e-11,2.74411783405,5753.3848848968],[3135899e-11,3.62767041756,77713.7714681205],[2676218e-11,4.41808345438,7860.4193924392],[2342691e-11,6.13516214446,3930.2096962196],[1273165e-11,2.03709657878,529.6909650946],[1324294e-11,.74246341673,11506.7697697936],[901854e-11,2.04505446477,26.2983197998],[1199167e-11,1.10962946234,1577.3435424478],[857223e-11,3.50849152283,398.1490034082],[779786e-11,1.17882681962,5223.6939198022],[99025e-10,5.23268072088,5884.9268465832],[753141e-11,2.53339052847,5507.5532386674],[505267e-11,4.58292599973,18849.2275499742],[492392e-11,4.20505711826,775.522611324],[356672e-11,2.91954114478,.0673103028],[284125e-11,1.89869240932,796.2980068164],[242879e-11,.34481445893,5486.777843175],[317087e-11,5.84901948512,11790.6290886588],[271112e-11,.31486255375,10977.078804699],[206217e-11,4.80646631478,2544.3144198834],[205478e-11,1.86953770281,5573.1428014331],[202318e-11,2.45767790232,6069.7767545534],[126225e-11,1.08295459501,20.7753954924],[155516e-11,.83306084617,213.299095438]],[[6283.0758499914,0,0],[.00206058863,2.67823455808,6283.0758499914],[4303419e-11,2.63512233481,12566.1516999828]],[[8721859e-11,1.07253635559,6283.0758499914]]],[[],[[.00227777722,3.4137662053,6283.0758499914],[3805678e-11,3.37063423795,12566.1516999828]]],[[[1.00013988784,0,0],[.01670699632,3.09846350258,6283.0758499914],[.00013956024,3.05524609456,12566.1516999828],[308372e-10,5.19846674381,77713.7714681205],[1628463e-11,1.17387558054,5753.3848848968],[1575572e-11,2.84685214877,7860.4193924392],[924799e-11,5.45292236722,11506.7697697936],[542439e-11,4.56409151453,3930.2096962196],[47211e-10,3.66100022149,5884.9268465832],[85831e-11,1.27079125277,161000.6857376741],[57056e-11,2.01374292245,83996.84731811189],[55736e-11,5.2415979917,71430.69561812909],[174844e-11,3.01193636733,18849.2275499742],[243181e-11,4.2734953079,11790.6290886588]],[[.00103018607,1.10748968172,6283.0758499914],[1721238e-11,1.06442300386,12566.1516999828]],[[4359385e-11,5.78455133808,6283.0758499914]]]],Mars:[[[[6.20347711581,0,0],[.18656368093,5.0503710027,3340.6124266998],[.01108216816,5.40099836344,6681.2248533996],[.00091798406,5.75478744667,10021.8372800994],[.00027744987,5.97049513147,3.523118349],[.00010610235,2.93958560338,2281.2304965106],[.00012315897,.84956094002,2810.9214616052],[8926784e-11,4.15697846427,.0172536522],[8715691e-11,6.11005153139,13362.4497067992],[6797556e-11,.36462229657,398.1490034082],[7774872e-11,3.33968761376,5621.8429232104],[3575078e-11,1.6618650571,2544.3144198834],[4161108e-11,.22814971327,2942.4634232916],[3075252e-11,.85696614132,191.4482661116],[2628117e-11,.64806124465,3337.0893083508],[2937546e-11,6.07893711402,.0673103028],[2389414e-11,5.03896442664,796.2980068164],[2579844e-11,.02996736156,3344.1355450488],[1528141e-11,1.14979301996,6151.533888305],[1798806e-11,.65634057445,529.6909650946],[1264357e-11,3.62275122593,5092.1519581158],[1286228e-11,3.06796065034,2146.1654164752],[1546404e-11,2.91579701718,1751.539531416],[1024902e-11,3.69334099279,8962.4553499102],[891566e-11,.18293837498,16703.062133499],[858759e-11,2.4009381194,2914.0142358238],[832715e-11,2.46418619474,3340.5951730476],[83272e-10,4.49495782139,3340.629680352],[712902e-11,3.66335473479,1059.3819301892],[748723e-11,3.82248614017,155.4203994342],[723861e-11,.67497311481,3738.761430108],[635548e-11,2.92182225127,8432.7643848156],[655162e-11,.48864064125,3127.3133312618],[550474e-11,3.81001042328,.9803210682],[55275e-10,4.47479317037,1748.016413067],[425966e-11,.55364317304,6283.0758499914],[415131e-11,.49662285038,213.299095438],[472167e-11,3.62547124025,1194.4470102246],[306551e-11,.38052848348,6684.7479717486],[312141e-11,.99853944405,6677.7017350506],[293198e-11,4.22131299634,20.7753954924],[302375e-11,4.48618007156,3532.0606928114],[274027e-11,.54222167059,3340.545116397],[281079e-11,5.88163521788,1349.8674096588],[231183e-11,1.28242156993,3870.3033917944],[283602e-11,5.7688543494,3149.1641605882],[236117e-11,5.75503217933,3333.498879699],[274033e-11,.13372524985,3340.6797370026],[299395e-11,2.78323740866,6254.6266625236]],[[3340.61242700512,0,0],[.01457554523,3.60433733236,3340.6124266998],[.00168414711,3.92318567804,6681.2248533996],[.00020622975,4.26108844583,10021.8372800994],[3452392e-11,4.7321039319,3.523118349],[2586332e-11,4.60670058555,13362.4497067992],[841535e-11,4.45864030426,2281.2304965106]],[[.00058152577,2.04961712429,3340.6124266998],[.00013459579,2.45738706163,6681.2248533996]]],[[[.03197134986,3.76832042431,3340.6124266998],[.00298033234,4.10616996305,6681.2248533996],[.00289104742,0,0],[.00031365539,4.4465105309,10021.8372800994],[34841e-9,4.7881254926,13362.4497067992]],[[.00217310991,6.04472194776,3340.6124266998],[.00020976948,3.14159265359,0],[.00012834709,1.60810667915,6681.2248533996]]],[[[1.53033488271,0,0],[.1418495316,3.47971283528,3340.6124266998],[.00660776362,3.81783443019,6681.2248533996],[.00046179117,4.15595316782,10021.8372800994],[8109733e-11,5.55958416318,2810.9214616052],[7485318e-11,1.77239078402,5621.8429232104],[5523191e-11,1.3643630377,2281.2304965106],[382516e-10,4.49407183687,13362.4497067992],[2306537e-11,.09081579001,2544.3144198834],[1999396e-11,5.36059617709,3337.0893083508],[2484394e-11,4.9254563992,2942.4634232916],[1960195e-11,4.74249437639,3344.1355450488],[1167119e-11,2.11260868341,5092.1519581158],[1102816e-11,5.00908403998,398.1490034082],[899066e-11,4.40791133207,529.6909650946],[992252e-11,5.83861961952,6151.533888305],[807354e-11,2.10217065501,1059.3819301892],[797915e-11,3.44839203899,796.2980068164],[740975e-11,1.49906336885,2146.1654164752]],[[.01107433345,2.03250524857,3340.6124266998],[.00103175887,2.37071847807,6681.2248533996],[128772e-9,0,0],[.0001081588,2.70888095665,10021.8372800994]],[[.00044242249,.47930604954,3340.6124266998],[8138042e-11,.86998389204,6681.2248533996]]]],Jupiter:[[[[.59954691494,0,0],[.09695898719,5.06191793158,529.6909650946],[.00573610142,1.44406205629,7.1135470008],[.00306389205,5.41734730184,1059.3819301892],[.00097178296,4.14264726552,632.7837393132],[.00072903078,3.64042916389,522.5774180938],[.00064263975,3.41145165351,103.0927742186],[.00039806064,2.29376740788,419.4846438752],[.00038857767,1.27231755835,316.3918696566],[.00027964629,1.7845459182,536.8045120954],[.0001358973,5.7748104079,1589.0728952838],[8246349e-11,3.5822792584,206.1855484372],[8768704e-11,3.63000308199,949.1756089698],[7368042e-11,5.0810119427,735.8765135318],[626315e-10,.02497628807,213.299095438],[6114062e-11,4.51319998626,1162.4747044078],[4905396e-11,1.32084470588,110.2063212194],[5305285e-11,1.30671216791,14.2270940016],[5305441e-11,4.18625634012,1052.2683831884],[4647248e-11,4.69958103684,3.9321532631],[3045023e-11,4.31676431084,426.598190876],[2609999e-11,1.56667394063,846.0828347512],[2028191e-11,1.06376530715,3.1813937377],[1764763e-11,2.14148655117,1066.49547719],[1722972e-11,3.88036268267,1265.5674786264],[1920945e-11,.97168196472,639.897286314],[1633223e-11,3.58201833555,515.463871093],[1431999e-11,4.29685556046,625.6701923124],[973272e-11,4.09764549134,95.9792272178]],[[529.69096508814,0,0],[.00489503243,4.2208293947,529.6909650946],[.00228917222,6.02646855621,7.1135470008],[.00030099479,4.54540782858,1059.3819301892],[.0002072092,5.45943156902,522.5774180938],[.00012103653,.16994816098,536.8045120954],[6067987e-11,4.42422292017,103.0927742186],[5433968e-11,3.98480737746,419.4846438752],[4237744e-11,5.89008707199,14.2270940016]],[[.00047233601,4.32148536482,7.1135470008],[.00030649436,2.929777887,529.6909650946],[.00014837605,3.14159265359,0]]],[[[.02268615702,3.55852606721,529.6909650946],[.00109971634,3.90809347197,1059.3819301892],[.00110090358,0,0],[8101428e-11,3.60509572885,522.5774180938],[6043996e-11,4.25883108339,1589.0728952838],[6437782e-11,.30627119215,536.8045120954]],[[.00078203446,1.52377859742,529.6909650946]]],[[[5.20887429326,0,0],[.25209327119,3.49108639871,529.6909650946],[.00610599976,3.84115365948,1059.3819301892],[.00282029458,2.57419881293,632.7837393132],[.00187647346,2.07590383214,522.5774180938],[.00086792905,.71001145545,419.4846438752],[.00072062974,.21465724607,536.8045120954],[.00065517248,5.9799588479,316.3918696566],[.00029134542,1.67759379655,103.0927742186],[.00030135335,2.16132003734,949.1756089698],[.00023453271,3.54023522184,735.8765135318],[.00022283743,4.19362594399,1589.0728952838],[.00023947298,.2745803748,7.1135470008],[.00013032614,2.96042965363,1162.4747044078],[970336e-10,1.90669633585,206.1855484372],[.00012749023,2.71550286592,1052.2683831884],[7057931e-11,2.18184839926,1265.5674786264],[6137703e-11,6.26418240033,846.0828347512],[2616976e-11,2.00994012876,1581.959348283]],[[.0127180152,2.64937512894,529.6909650946],[.00061661816,3.00076460387,1059.3819301892],[.00053443713,3.89717383175,522.5774180938],[.00031185171,4.88276958012,536.8045120954],[.00041390269,0,0]]]],Saturn:[[[[.87401354025,0,0],[.11107659762,3.96205090159,213.299095438],[.01414150957,4.58581516874,7.1135470008],[.00398379389,.52112032699,206.1855484372],[.00350769243,3.30329907896,426.598190876],[.00206816305,.24658372002,103.0927742186],[792713e-9,3.84007056878,220.4126424388],[.00023990355,4.66976924553,110.2063212194],[.00016573588,.43719228296,419.4846438752],[.00014906995,5.76903183869,316.3918696566],[.0001582029,.93809155235,632.7837393132],[.00014609559,1.56518472,3.9321532631],[.00013160301,4.44891291899,14.2270940016],[.00015053543,2.71669915667,639.897286314],[.00013005299,5.98119023644,11.0457002639],[.00010725067,3.12939523827,202.2533951741],[5863206e-11,.23656938524,529.6909650946],[5227757e-11,4.20783365759,3.1813937377],[6126317e-11,1.76328667907,277.0349937414],[5019687e-11,3.17787728405,433.7117378768],[459255e-10,.61977744975,199.0720014364],[4005867e-11,2.24479718502,63.7358983034],[2953796e-11,.98280366998,95.9792272178],[387367e-10,3.22283226966,138.5174968707],[2461186e-11,2.03163875071,735.8765135318],[3269484e-11,.77492638211,949.1756089698],[1758145e-11,3.2658010994,522.5774180938],[1640172e-11,5.5050445305,846.0828347512],[1391327e-11,4.02333150505,323.5054166574],[1580648e-11,4.37265307169,309.2783226558],[1123498e-11,2.83726798446,415.5524906121],[1017275e-11,3.71700135395,227.5261894396],[848642e-11,3.1915017083,209.3669421749]],[[213.2990952169,0,0],[.01297370862,1.82834923978,213.299095438],[.00564345393,2.88499717272,7.1135470008],[.00093734369,1.06311793502,426.598190876],[.00107674962,2.27769131009,206.1855484372],[.00040244455,2.04108104671,220.4126424388],[.00019941774,1.2795439047,103.0927742186],[.00010511678,2.7488034213,14.2270940016],[6416106e-11,.38238295041,639.897286314],[4848994e-11,2.43037610229,419.4846438752],[4056892e-11,2.92133209468,110.2063212194],[3768635e-11,3.6496533078,3.9321532631]],[[.0011644133,1.17988132879,7.1135470008],[.00091841837,.0732519584,213.299095438],[.00036661728,0,0],[.00015274496,4.06493179167,206.1855484372]]],[[[.04330678039,3.60284428399,213.299095438],[.00240348302,2.85238489373,426.598190876],[.00084745939,0,0],[.00030863357,3.48441504555,220.4126424388],[.00034116062,.57297307557,206.1855484372],[.0001473407,2.11846596715,639.897286314],[9916667e-11,5.79003188904,419.4846438752],[6993564e-11,4.7360468972,7.1135470008],[4807588e-11,5.43305312061,316.3918696566]],[[.00198927992,4.93901017903,213.299095438],[.00036947916,3.14159265359,0],[.00017966989,.5197943111,426.598190876]]],[[[9.55758135486,0,0],[.52921382865,2.39226219573,213.299095438],[.01873679867,5.2354960466,206.1855484372],[.01464663929,1.64763042902,426.598190876],[.00821891141,5.93520042303,316.3918696566],[.00547506923,5.0153261898,103.0927742186],[.0037168465,2.27114821115,220.4126424388],[.00361778765,3.13904301847,7.1135470008],[.00140617506,5.70406606781,632.7837393132],[.00108974848,3.29313390175,110.2063212194],[.00069006962,5.94099540992,419.4846438752],[.00061053367,.94037691801,639.897286314],[.00048913294,1.55733638681,202.2533951741],[.00034143772,.19519102597,277.0349937414],[.00032401773,5.47084567016,949.1756089698],[.00020936596,.46349251129,735.8765135318],[9796004e-11,5.20477537945,1265.5674786264],[.00011993338,5.98050967385,846.0828347512],[208393e-9,1.52102476129,433.7117378768],[.00015298404,3.0594381494,529.6909650946],[6465823e-11,.17732249942,1052.2683831884],[.00011380257,1.7310542704,522.5774180938],[3419618e-11,4.94550542171,1581.959348283]],[[.0618298134,.2584351148,213.299095438],[.00506577242,.71114625261,206.1855484372],[.00341394029,5.79635741658,426.598190876],[.00188491195,.47215589652,220.4126424388],[.00186261486,3.14159265359,0],[.00143891146,1.40744822888,7.1135470008]],[[.00436902572,4.78671677509,213.299095438]]]],Uranus:[[[[5.48129294297,0,0],[.09260408234,.89106421507,74.7815985673],[.01504247898,3.6271926092,1.4844727083],[.00365981674,1.89962179044,73.297125859],[.00272328168,3.35823706307,149.5631971346],[.00070328461,5.39254450063,63.7358983034],[.00068892678,6.09292483287,76.2660712756],[.00061998615,2.26952066061,2.9689454166],[.00061950719,2.85098872691,11.0457002639],[.0002646877,3.14152083966,71.8126531507],[.00025710476,6.11379840493,454.9093665273],[.0002107885,4.36059339067,148.0787244263],[.00017818647,1.74436930289,36.6485629295],[.00014613507,4.73732166022,3.9321532631],[.00011162509,5.8268179635,224.3447957019],[.0001099791,.48865004018,138.5174968707],[9527478e-11,2.95516862826,35.1640902212],[7545601e-11,5.236265824,109.9456887885],[4220241e-11,3.23328220918,70.8494453042],[40519e-9,2.277550173,151.0476698429],[3354596e-11,1.0654900738,4.4534181249],[2926718e-11,4.62903718891,9.5612275556],[349034e-10,5.48306144511,146.594251718],[3144069e-11,4.75199570434,77.7505439839],[2922333e-11,5.35235361027,85.8272988312],[2272788e-11,4.36600400036,70.3281804424],[2051219e-11,1.51773566586,.1118745846],[2148602e-11,.60745949945,38.1330356378],[1991643e-11,4.92437588682,277.0349937414],[1376226e-11,2.04283539351,65.2203710117],[1666902e-11,3.62744066769,380.12776796],[1284107e-11,3.11347961505,202.2533951741],[1150429e-11,.93343589092,3.1813937377],[1533221e-11,2.58594681212,52.6901980395],[1281604e-11,.54271272721,222.8603229936],[1372139e-11,4.19641530878,111.4301614968],[1221029e-11,.1990065003,108.4612160802],[946181e-11,1.19253165736,127.4717966068],[1150989e-11,4.17898916639,33.6796175129]],[[74.7815986091,0,0],[.00154332863,5.24158770553,74.7815985673],[.00024456474,1.71260334156,1.4844727083],[9258442e-11,.4282973235,11.0457002639],[8265977e-11,1.50218091379,63.7358983034],[915016e-10,1.41213765216,149.5631971346]]],[[[.01346277648,2.61877810547,74.7815985673],[623414e-9,5.08111189648,149.5631971346],[.00061601196,3.14159265359,0],[9963722e-11,1.61603805646,76.2660712756],[992616e-10,.57630380333,73.297125859]],[[.00034101978,.01321929936,74.7815985673]]],[[[19.21264847206,0,0],[.88784984413,5.60377527014,74.7815985673],[.03440836062,.32836099706,73.297125859],[.0205565386,1.7829515933,149.5631971346],[.0064932241,4.52247285911,76.2660712756],[.00602247865,3.86003823674,63.7358983034],[.00496404167,1.40139935333,454.9093665273],[.00338525369,1.58002770318,138.5174968707],[.00243509114,1.57086606044,71.8126531507],[.00190522303,1.99809394714,1.4844727083],[.00161858838,2.79137786799,148.0787244263],[.00143706183,1.38368544947,11.0457002639],[.00093192405,.17437220467,36.6485629295],[.00071424548,4.24509236074,224.3447957019],[.00089806014,3.66105364565,109.9456887885],[.00039009723,1.66971401684,70.8494453042],[.00046677296,1.39976401694,35.1640902212],[.00039025624,3.36234773834,277.0349937414],[.00036755274,3.88649278513,146.594251718],[.00030348723,.70100838798,151.0476698429],[.00029156413,3.180563367,77.7505439839],[.00022637073,.72518687029,529.6909650946],[.00011959076,1.7504339214,984.6003316219],[.00025620756,5.25656086672,380.12776796]],[[.01479896629,3.67205697578,74.7815985673]]]],Neptune:[[[[5.31188633046,0,0],[.0179847553,2.9010127389,38.1330356378],[.01019727652,.48580922867,1.4844727083],[.00124531845,4.83008090676,36.6485629295],[.00042064466,5.41054993053,2.9689454166],[.00037714584,6.09221808686,35.1640902212],[.00033784738,1.24488874087,76.2660712756],[.00016482741,7727998e-11,491.5579294568],[9198584e-11,4.93747051954,39.6175083461],[899425e-10,.27462171806,175.1660598002]],[[38.13303563957,0,0],[.00016604172,4.86323329249,1.4844727083],[.00015744045,2.27887427527,38.1330356378]]],[[[.03088622933,1.44104372644,38.1330356378],[.00027780087,5.91271884599,76.2660712756],[.00027623609,0,0],[.00015355489,2.52123799551,36.6485629295],[.00015448133,3.50877079215,39.6175083461]]],[[[30.07013205828,0,0],[.27062259632,1.32999459377,38.1330356378],[.01691764014,3.25186135653,36.6485629295],[.00807830553,5.18592878704,1.4844727083],[.0053776051,4.52113935896,35.1640902212],[.00495725141,1.5710564165,491.5579294568],[.00274571975,1.84552258866,175.1660598002],[.0001201232,1.92059384991,1021.2488945514],[.00121801746,5.79754470298,76.2660712756],[.00100896068,.3770272493,73.297125859],[.00135134092,3.37220609835,39.6175083461],[7571796e-11,1.07149207335,388.4651552382]]]]};function loe(n){var e,t,i,r,a,s,o;const l=2e3+(n-14)/$se;return l<-500?(e=(l-1820)/100,-20+32*e*e):l<500?(e=l/100,t=e*e,i=e*t,r=t*t,a=t*i,s=i*i,10583.6-1014.41*e+33.78311*t-5.952053*i-.1798452*r+.022174192*a+.0090316521*s):l<1600?(e=(l-1e3)/100,t=e*e,i=e*t,r=t*t,a=t*i,s=i*i,1574.2-556.01*e+71.23472*t+.319781*i-.8503463*r-.005050998*a+.0083572073*s):l<1700?(e=l-1600,t=e*e,i=e*t,120-.9808*e-.01532*t+i/7129):l<1800?(e=l-1700,t=e*e,i=e*t,r=t*t,8.83+.1603*e-.0059285*t+13336e-8*i-r/1174e3):l<1860?(e=l-1800,t=e*e,i=e*t,r=t*t,a=t*i,s=i*i,o=i*r,13.72-.332447*e+.0068612*t+.0041116*i-37436e-8*r+121272e-10*a-1699e-10*s+875e-12*o):l<1900?(e=l-1860,t=e*e,i=e*t,r=t*t,a=t*i,7.62+.5737*e-.251754*t+.01680668*i-.0004473624*r+a/233174):l<1920?(e=l-1900,t=e*e,i=e*t,r=t*t,-2.79+1.494119*e-.0598939*t+.0061966*i-197e-6*r):l<1941?(e=l-1920,t=e*e,i=e*t,21.2+.84493*e-.0761*t+.0020936*i):l<1961?(e=l-1950,t=e*e,i=e*t,29.07+.407*e-t/233+i/2547):l<1986?(e=l-1975,t=e*e,i=e*t,45.45+1.067*e-t/260-i/718):l<2005?(e=l-2e3,t=e*e,i=e*t,r=t*t,a=t*i,63.86+.3345*e-.060374*t+.0017275*i+651814e-9*r+2373599e-11*a):l<2050?(e=l-2e3,62.92+.32217*e+.005589*e*e):l<2150?(e=(l-1820)/100,-20+32*e*e-.5628*(2150-l)):(e=(l-1820)/100,-20+32*e*e)}let coe=loe;function u5(n){return n+coe(n)/86400}class Yc{constructor(e){if(e instanceof Yc){this.date=e.date,this.ut=e.ut,this.tt=e.tt;return}const t=1e3*3600*24;if(e instanceof Date&&Number.isFinite(e.getTime())){this.date=e,this.ut=(e.getTime()-c5.getTime())/t,this.tt=u5(this.ut);return}if(Number.isFinite(e)){this.date=new Date(c5.getTime()+e*t),this.ut=e,this.tt=u5(this.ut);return}throw"Argument must be a Date object, an AstroTime object, or a numeric UTC Julian date."}static FromTerrestrialTime(e){let t=new Yc(e);for(;;){const i=e-t.tt;if(Math.abs(i)<1e-12)return t;t=t.AddDays(i)}}toString(){return this.date.toISOString()}AddDays(e){return new Yc(this.ut+e)}}function sd(n){return n instanceof Yc?n:new Yc(n)}function uoe(n){function e(p){return p%toe*Wf}const t=n.tt/36525,i=e(128710479305e-5+t*1295965810481e-4),r=e(335779.526232+t*17395272628478e-4),a=e(107226070369e-5+t*1602961601209e-3),s=e(450160.398036-t*69628905431e-4);let o=Math.sin(s),l=Math.cos(s),u=(-172064161-174666*t)*o+33386*l,d=(92052331+9086*t)*l+15377*o,f=2*(r-a+s);return o=Math.sin(f),l=Math.cos(f),u+=(-13170906-1675*t)*o-13696*l,d+=(5730336-3015*t)*l-4587*o,f=2*(r+s),o=Math.sin(f),l=Math.cos(f),u+=(-2276413-234*t)*o+2796*l,d+=(978459-485*t)*l+1374*o,f=2*s,o=Math.sin(f),l=Math.cos(f),u+=(2074554+207*t)*o-698*l,d+=(-897492+470*t)*l-291*o,o=Math.sin(i),l=Math.cos(i),u+=(1475877-3633*t)*o+11817*l,d+=(73871-184*t)*l-1924*o,{dpsi:-135e-6+u*1e-7,deps:388e-6+d*1e-7}}function UB(n){var e=n.tt/36525,t=((((-434e-10*e-576e-9)*e+.0020034)*e-1831e-7)*e-46.836769)*e+84381.406;return t/3600}var Tx;function PB(n){if(!Tx||Math.abs(Tx.tt-n.tt)>1e-6){const e=uoe(n),t=UB(n),i=t+e.deps/3600;Tx={tt:n.tt,dpsi:e.dpsi,deps:e.deps,ee:e.dpsi*Math.cos(t*Xh)/15,mobl:t,tobl:i}}return Tx}function hoe(n,e){const t=n*Xh,i=Math.cos(t),r=Math.sin(t);return[e[0],e[1]*i-e[2]*r,e[1]*r+e[2]*i]}function doe(n,e){return hoe(UB(n),e)}function foe(n){const e=n.tt/36525;function t(ct,Qe){const Ee=[];let V;for(V=0;V<=Qe-ct;++V)Ee.push(0);return{min:ct,array:Ee}}function i(ct,Qe,Ee,V){const Ae=[];for(let Oe=0;Oe<=Qe-ct;++Oe)Ae.push(t(Ee,V));return{min:ct,array:Ae}}function r(ct,Qe,Ee){const V=ct.array[Qe-ct.min];return V.array[Ee-V.min]}function a(ct,Qe,Ee,V){const Ae=ct.array[Qe-ct.min];Ae.array[Ee-Ae.min]=V}let s,o,l,u,d,f,p,m,v,x,S,_,T,E,b,R,w,L,U,N,C,z,W,K=i(-6,6,1,4),oe=i(-6,6,1,4);function ae(ct,Qe){return r(K,ct,Qe)}function X(ct,Qe){return r(oe,ct,Qe)}function te(ct,Qe,Ee){return a(K,ct,Qe,Ee)}function Q(ct,Qe,Ee){return a(oe,ct,Qe,Ee)}function ce(ct,Qe,Ee,V,Ae){Ae(ct*Ee-Qe*V,Qe*Ee+ct*V)}function se(ct){return Math.sin(gl*ct)}p=e*e,v=0,W=0,S=0,_=3422.7;var De=se(.19833+.05611*e),Xe=se(.27869+.04508*e),nt=se(.16827-.36903*e),tt=se(.34734-5.37261*e),xt=se(.10498-5.37899*e),ve=se(.42681-.41855*e),we=se(.14943-5.37511*e);for(L=.84*De+.31*Xe+14.27*nt+7.26*tt+.28*xt+.24*ve,U=2.94*De+.31*Xe+14.27*nt+9.34*tt+1.12*xt+.83*ve,N=-6.4*De-1.89*ve,C=.21*De+.31*Xe+14.27*nt-88.7*tt-15.3*xt+.24*ve-1.86*we,z=L-N,m=-3332e-9*se(.59734-5.37261*e)-539e-9*se(.35498-5.37899*e)-64e-9*se(.39943-5.37511*e),T=gl*ff(.60643382+1336.85522467*e-313e-8*p)+L/mc,E=gl*ff(.37489701+1325.55240982*e+2565e-8*p)+U/mc,b=gl*ff(.99312619+99.99735956*e-44e-8*p)+N/mc,R=gl*ff(.25909118+1342.2278298*e-892e-8*p)+C/mc,w=gl*ff(.82736186+1236.85308708*e-397e-8*p)+z/mc,d=1;d<=4;++d){switch(d){case 1:l=E,o=4,u=1.000002208;break;case 2:l=b,o=3,u=.997504612-.002495388*e;break;case 3:l=R,o=4,u=1.000002708+139.978*m;break;case 4:l=w,o=6,u=1;break;default:throw`Internal error: I = ${d}`}for(te(0,d,1),te(1,d,Math.cos(l)*u),Q(0,d,0),Q(1,d,Math.sin(l)*u),f=2;f<=o;++f)ce(ae(f-1,d),X(f-1,d),ae(1,d),X(1,d),(ct,Qe)=>(te(f,d,ct),Q(f,d,Qe)));for(f=1;f<=o;++f)te(-f,d,ae(f,d)),Q(-f,d,-X(f,d))}function Ze(ct,Qe,Ee,V){for(var Ae={x:1,y:0},Oe=[0,ct,Qe,Ee,V],Ve=1;Ve<=4;++Ve)Oe[Ve]!==0&&ce(Ae.x,Ae.y,ae(Oe[Ve],Ve),X(Oe[Ve],Ve),(Fe,$e)=>(Ae.x=Fe,Ae.y=$e));return Ae}function de(ct,Qe,Ee,V,Ae,Oe,Ve,Fe){var $e=Ze(Ae,Oe,Ve,Fe);v+=ct*$e.y,W+=Qe*$e.y,S+=Ee*$e.x,_+=V*$e.x}de(13.902,14.06,-.001,.2607,0,0,0,4),de(.403,-4.01,.394,.0023,0,0,0,3),de(2369.912,2373.36,.601,28.2333,0,0,0,2),de(-125.154,-112.79,-.725,-.9781,0,0,0,1),de(1.979,6.98,-.445,.0433,1,0,0,4),de(191.953,192.72,.029,3.0861,1,0,0,2),de(-8.466,-13.51,.455,-.1093,1,0,0,1),de(22639.5,22609.07,.079,186.5398,1,0,0,0),de(18.609,3.59,-.094,.0118,1,0,0,-1),de(-4586.465,-4578.13,-.077,34.3117,1,0,0,-2),de(3.215,5.44,.192,-.0386,1,0,0,-3),de(-38.428,-38.64,.001,.6008,1,0,0,-4),de(-.393,-1.43,-.092,.0086,1,0,0,-6),de(-.289,-1.59,.123,-.0053,0,1,0,4),de(-24.42,-25.1,.04,-.3,0,1,0,2),de(18.023,17.93,.007,.1494,0,1,0,1),de(-668.146,-126.98,-1.302,-.3997,0,1,0,0),de(.56,.32,-.001,-.0037,0,1,0,-1),de(-165.145,-165.06,.054,1.9178,0,1,0,-2),de(-1.877,-6.46,-.416,.0339,0,1,0,-4),de(.213,1.02,-.074,.0054,2,0,0,4),de(14.387,14.78,-.017,.2833,2,0,0,2),de(-.586,-1.2,.054,-.01,2,0,0,1),de(769.016,767.96,.107,10.1657,2,0,0,0),de(1.75,2.01,-.018,.0155,2,0,0,-1),de(-211.656,-152.53,5.679,-.3039,2,0,0,-2),de(1.225,.91,-.03,-.0088,2,0,0,-3),de(-30.773,-34.07,-.308,.3722,2,0,0,-4),de(-.57,-1.4,-.074,.0109,2,0,0,-6),de(-2.921,-11.75,.787,-.0484,1,1,0,2),de(1.267,1.52,-.022,.0164,1,1,0,1),de(-109.673,-115.18,.461,-.949,1,1,0,0),de(-205.962,-182.36,2.056,1.4437,1,1,0,-2),de(.233,.36,.012,-.0025,1,1,0,-3),de(-4.391,-9.66,-.471,.0673,1,1,0,-4),de(.283,1.53,-.111,.006,1,-1,0,4),de(14.577,31.7,-1.54,.2302,1,-1,0,2),de(147.687,138.76,.679,1.1528,1,-1,0,0),de(-1.089,.55,.021,0,1,-1,0,-1),de(28.475,23.59,-.443,-.2257,1,-1,0,-2),de(-.276,-.38,-.006,-.0036,1,-1,0,-3),de(.636,2.27,.146,-.0102,1,-1,0,-4),de(-.189,-1.68,.131,-.0028,0,2,0,2),de(-7.486,-.66,-.037,-.0086,0,2,0,0),de(-8.096,-16.35,-.74,.0918,0,2,0,-2),de(-5.741,-.04,0,-9e-4,0,0,2,2),de(.255,0,0,0,0,0,2,1),de(-411.608,-.2,0,-.0124,0,0,2,0),de(.584,.84,0,.0071,0,0,2,-1),de(-55.173,-52.14,0,-.1052,0,0,2,-2),de(.254,.25,0,-.0017,0,0,2,-3),de(.025,-1.67,0,.0031,0,0,2,-4),de(1.06,2.96,-.166,.0243,3,0,0,2),de(36.124,50.64,-1.3,.6215,3,0,0,0),de(-13.193,-16.4,.258,-.1187,3,0,0,-2),de(-1.187,-.74,.042,.0074,3,0,0,-4),de(-.293,-.31,-.002,.0046,3,0,0,-6),de(-.29,-1.45,.116,-.0051,2,1,0,2),de(-7.649,-10.56,.259,-.1038,2,1,0,0),de(-8.627,-7.59,.078,-.0192,2,1,0,-2),de(-2.74,-2.54,.022,.0324,2,1,0,-4),de(1.181,3.32,-.212,.0213,2,-1,0,2),de(9.703,11.67,-.151,.1268,2,-1,0,0),de(-.352,-.37,.001,-.0028,2,-1,0,-1),de(-2.494,-1.17,-.003,-.0017,2,-1,0,-2),de(.36,.2,-.012,-.0043,2,-1,0,-4),de(-1.167,-1.25,.008,-.0106,1,2,0,0),de(-7.412,-6.12,.117,.0484,1,2,0,-2),de(-.311,-.65,-.032,.0044,1,2,0,-4),de(.757,1.82,-.105,.0112,1,-2,0,2),de(2.58,2.32,.027,.0196,1,-2,0,0),de(2.533,2.4,-.014,-.0212,1,-2,0,-2),de(-.344,-.57,-.025,.0036,0,3,0,-2),de(-.992,-.02,0,0,1,0,2,2),de(-45.099,-.02,0,-.001,1,0,2,0),de(-.179,-9.52,0,-.0833,1,0,2,-2),de(-.301,-.33,0,.0014,1,0,2,-4),de(-6.382,-3.37,0,-.0481,1,0,-2,2),de(39.528,85.13,0,-.7136,1,0,-2,0),de(9.366,.71,0,-.0112,1,0,-2,-2),de(.202,.02,0,0,1,0,-2,-4),de(.415,.1,0,.0013,0,1,2,0),de(-2.152,-2.26,0,-.0066,0,1,2,-2),de(-1.44,-1.3,0,.0014,0,1,-2,2),de(.384,-.04,0,0,0,1,-2,-2),de(1.938,3.6,-.145,.0401,4,0,0,0),de(-.952,-1.58,.052,-.013,4,0,0,-2),de(-.551,-.94,.032,-.0097,3,1,0,0),de(-.482,-.57,.005,-.0045,3,1,0,-2),de(.681,.96,-.026,.0115,3,-1,0,0),de(-.297,-.27,.002,-9e-4,2,2,0,-2),de(.254,.21,-.003,0,2,-2,0,-2),de(-.25,-.22,.004,.0014,1,3,0,-2),de(-3.996,0,0,4e-4,2,0,2,0),de(.557,-.75,0,-.009,2,0,2,-2),de(-.459,-.38,0,-.0053,2,0,-2,2),de(-1.298,.74,0,4e-4,2,0,-2,0),de(.538,1.14,0,-.0141,2,0,-2,-2),de(.263,.02,0,0,1,1,2,0),de(.426,.07,0,-6e-4,1,1,-2,-2),de(-.304,.03,0,3e-4,1,-1,2,0),de(-.372,-.19,0,-.0027,1,-1,-2,2),de(.418,0,0,0,0,0,4,0),de(-.33,-.04,0,0,3,0,2,0);function it(ct,Qe,Ee,V,Ae){return ct*Ze(Qe,Ee,V,Ae).y}x=0,x+=it(-526.069,0,0,1,-2),x+=it(-3.352,0,0,1,-4),x+=it(44.297,1,0,1,-2),x+=it(-6,1,0,1,-4),x+=it(20.599,-1,0,1,0),x+=it(-30.598,-1,0,1,-2),x+=it(-24.649,-2,0,1,0),x+=it(-2,-2,0,1,-2),x+=it(-22.571,0,1,1,-2),x+=it(10.985,0,-1,1,-2),v+=.82*se(.7736-62.5512*e)+.31*se(.0466-125.1025*e)+.35*se(.5785-25.1042*e)+.66*se(.4591+1335.8075*e)+.64*se(.313-91.568*e)+1.14*se(.148+1331.2898*e)+.21*se(.5918+1056.5859*e)+.44*se(.5784+1322.8595*e)+.24*se(.2275-5.7374*e)+.28*se(.2965+2.6929*e)+.33*se(.3132+6.3368*e),s=R+W/mc;let wt=(1.000002708+139.978*m)*(18518.511+1.189+S)*Math.sin(s)-6.24*Math.sin(3*s)+x;return{geo_eclip_lon:gl*ff((T+v/mc)/gl),geo_eclip_lat:Math.PI/(180*3600)*wt,distance_au:mc*ioe/(.999953253*_)}}function poe(n,e){return[n.rot[0][0]*e[0]+n.rot[1][0]*e[1]+n.rot[2][0]*e[2],n.rot[0][1]*e[0]+n.rot[1][1]*e[1]+n.rot[2][1]*e[2],n.rot[0][2]*e[0]+n.rot[1][2]*e[1]+n.rot[2][2]*e[2]]}function moe(n,e,t){const i=zB(e,t);return poe(i,n)}function zB(n,e){const t=n.tt/36525;let i=84381.406,r=((((-951e-10*t+132851e-9)*t-.00114045)*t-1.0790069)*t+5038.481507)*t,a=((((3337e-10*t-467e-9)*t-.00772503)*t+.0512623)*t-.025754)*t+i,s=((((-56e-9*t+170663e-9)*t-.00121197)*t-2.3814292)*t+10.556403)*t;i*=Wf,r*=Wf,a*=Wf,s*=Wf;const o=Math.sin(i),l=Math.cos(i),u=Math.sin(-r),d=Math.cos(-r),f=Math.sin(-a),p=Math.cos(-a),m=Math.sin(s),v=Math.cos(s),x=v*d-u*m*p,S=v*u*l+m*p*d*l-o*m*f,_=v*u*o+m*p*d*o+l*m*f,T=-m*d-u*v*p,E=-m*u*l+v*p*d*l-o*v*f,b=-m*u*o+v*p*d*o+l*v*f,R=u*f,w=-f*d*l-o*p,L=-f*d*o+p*l;if(e===Bl.Into2000)return new zp([[x,S,_],[T,E,b],[R,w,L]]);if(e===Bl.From2000)return new zp([[x,T,R],[S,E,w],[_,b,L]]);throw"Invalid precess direction"}function goe(n){const e=.779057273264+.00273781191135448*n.ut,t=n.ut%1;let i=360*((e+t)%1);return i<0&&(i+=360),i}let Ex;function voe(n){if(!Ex||Ex.tt!==n.tt){const e=n.tt/36525;let t=15*PB(n).ee;const i=goe(n);let r=((t+.014506+((((-368e-10*e-29956e-9)*e-44e-8)*e+1.3915817)*e+4612.156534)*e)/3600+i)%360/15;r<0&&(r+=24),Ex={tt:n.tt,st:r}}return Ex.st}function _oe(n){const e=sd(n);return voe(e)}function xoe(n,e){const t=PB(n),i=t.mobl*Xh,r=t.tobl*Xh,a=t.dpsi*Wf,s=Math.cos(i),o=Math.sin(i),l=Math.cos(r),u=Math.sin(r),d=Math.cos(a),f=Math.sin(a),p=d,m=-f*s,v=-f*o,x=f*l,S=d*s*l+o*u,_=d*o*l-s*u,T=f*u,E=d*s*u-o*l,b=d*o*u+s*l;if(e===Bl.From2000)return new zp([[p,x,T],[m,S,E],[v,_,b]]);if(e===Bl.Into2000)return new zp([[p,m,v],[x,S,_],[T,E,b]]);throw"Invalid precess direction"}let Js=class{constructor(e,t,i,r){this.x=e,this.y=t,this.z=i,this.t=r}Length(){return Math.hypot(this.x,this.y,this.z)}};class yoe{constructor(e,t,i,r,a,s,o){this.x=e,this.y=t,this.z=i,this.vx=r,this.vy=a,this.vz=s,this.t=o}}let Soe=class{constructor(e,t,i){this.lat=m1(e),this.lon=m1(t),this.dist=m1(i)}};class zp{constructor(e){this.rot=e}}function RA(n){const e=sd(n),t=foe(e),i=t.distance_au*Math.cos(t.geo_eclip_lat),r=[i*Math.cos(t.geo_eclip_lon),i*Math.sin(t.geo_eclip_lon),t.distance_au*Math.sin(t.geo_eclip_lat)],a=doe(e,r),s=moe(a,e,Bl.Into2000);return new Js(s[0],s[1],s[2],e)}function ap(n,e,t){let i=1,r=0;for(let a of n){let s=0;for(let[l,u,d]of a)s+=l*Math.cos(u+e*d);let o=i*s;t&&(o%=gl),r+=o,i*=e}return r}function cM(n,e){let t=1,i=0,r=0,a=0;for(let s of n){let o=0,l=0;for(let[u,d,f]of s){let p=d+e*f;o+=u*f*Math.sin(p),a>0&&(l+=u*Math.cos(p))}r+=a*i*l-t*o,i=t,t*=e,++a}return r}const L0=365250,CA=0,DA=1,NA=2;function OA(n){return new qh(n[0]+44036e-11*n[1]-190919e-12*n[2],-479966e-12*n[0]+.917482137087*n[1]-.397776982902*n[2],.397776982902*n[1]+.917482137087*n[2])}function BB(n,e,t){const i=t*Math.cos(e),r=Math.cos(n),a=Math.sin(n);return[i*r,i*a,t*Math.sin(e)]}function g1(n,e){const t=e.tt/L0,i=ap(n[CA],t,!0),r=ap(n[DA],t,!1),a=ap(n[NA],t,!1),s=BB(i,r,a);return OA(s).ToAstroVector(e)}function Toe(n,e){const t=e/L0,i=ap(n[CA],t,!0),r=ap(n[DA],t,!1),a=ap(n[NA],t,!1),s=cM(n[CA],t),o=cM(n[DA],t),l=cM(n[NA],t),u=Math.cos(i),d=Math.sin(i),f=Math.cos(r),p=Math.sin(r),m=+(l*f*u)-a*p*u*o-a*f*d*s,v=+(l*f*d)-a*p*d*o+a*f*u*s,x=+(l*p)+a*f*o,S=BB(i,r,a),_=[m/L0,v/L0,x/L0],T=OA(S),E=OA(_);return new Yh(e,T,E)}function bx(n,e,t,i){const r=i/(i+$R),a=g1(Xf[t],e);n.x+=r*a.x,n.y+=r*a.y,n.z+=r*a.z}function Eoe(n){const e=new Js(0,0,0,n);return bx(e,n,kn.Jupiter,bA),bx(e,n,kn.Saturn,MA),bx(e,n,kn.Uranus,AA),bx(e,n,kn.Neptune,wA),e}const LA=51,boe=29200,qf=146,vl=201,vh=[[-73e4,[-26.118207232108,-14.376168177825,3.384402515299],[.0016339372163656,-.0027861699588508,-.0013585880229445]],[-700800,[41.974905202127,-.448502952929,-12.770351505989],[.00073458569351457,.0022785014891658,.00048619778602049]],[-671600,[14.706930780744,44.269110540027,9.353698474772],[-.00210001479998,.00022295915939915,.00070143443551414]],[-642400,[-29.441003929957,-6.43016153057,6.858481011305],[.00084495803960544,-.0030783914758711,-.0012106305981192]],[-613200,[39.444396946234,-6.557989760571,-13.913760296463],[.0011480029005873,.0022400006880665,.00035168075922288]],[-584e3,[20.2303809507,43.266966657189,7.382966091923],[-.0019754081700585,.00053457141292226,.00075929169129793]],[-554800,[-30.65832536462,2.093818874552,9.880531138071],[61010603013347e-18,-.0031326500935382,-.00099346125151067]],[-525600,[35.737703251673,-12.587706024764,-14.677847247563],[.0015802939375649,.0021347678412429,.00019074436384343]],[-496400,[25.466295188546,41.367478338417,5.216476873382],[-.0018054401046468,.0008328308359951,.00080260156912107]],[-467200,[-29.847174904071,10.636426313081,12.297904180106],[-.00063257063052907,-.0029969577578221,-.00074476074151596]],[-438e3,[30.774692107687,-18.236637015304,-14.945535879896],[.0020113162005465,.0019353827024189,-20937793168297e-19]],[-408800,[30.243153324028,38.656267888503,2.938501750218],[-.0016052508674468,.0011183495337525,.00083333973416824]],[-379600,[-27.288984772533,18.643162147874,14.023633623329],[-.0011856388898191,-.0027170609282181,-.00049015526126399]],[-350400,[24.519605196774,-23.245756064727,-14.626862367368],[.0024322321483154,.0016062008146048,-.00023369181613312]],[-321200,[34.505274805875,35.125338586954,.557361475637],[-.0013824391637782,.0013833397561817,.00084823598806262]],[-292e3,[-23.275363915119,25.818514298769,15.055381588598],[-.0016062295460975,-.0023395961498533,-.00024377362639479]],[-262800,[17.050384798092,-27.180376290126,-13.608963321694],[.0028175521080578,.0011358749093955,-.00049548725258825]],[-233600,[38.093671910285,30.880588383337,-1.843688067413],[-.0011317697153459,.0016128814698472,.00084177586176055]],[-204400,[-18.197852930878,31.932869934309,15.438294826279],[-.0019117272501813,-.0019146495909842,-19657304369835e-18]],[-175200,[8.528924039997,-29.618422200048,-11.805400994258],[.0031034370787005,.0005139363329243,-.00077293066202546]],[-146e3,[40.94685725864,25.904973592021,-4.256336240499],[-.00083652705194051,.0018129497136404,.0008156422827306]],[-116800,[-12.326958895325,36.881883446292,15.217158258711],[-.0021166103705038,-.001481442003599,.00017401209844705]],[-87600,[-.633258375909,-30.018759794709,-9.17193287495],[.0032016994581737,-.00025279858672148,-.0010411088271861]],[-58400,[42.936048423883,20.344685584452,-6.588027007912],[-.00050525450073192,.0019910074335507,.00077440196540269]],[-29200,[-5.975910552974,40.61180995846,14.470131723673],[-.0022184202156107,-.0010562361130164,.00033652250216211]],[0,[-9.875369580774,-27.978926224737,-5.753711824704],[.0030287533248818,-.0011276087003636,-.0012651326732361]],[29200,[43.958831986165,14.214147973292,-8.808306227163],[-.00014717608981871,.0021404187242141,.00071486567806614]],[58400,[.67813676352,43.094461639362,13.243238780721],[-.0022358226110718,-.00063233636090933,.00047664798895648]],[87600,[-18.282602096834,-23.30503958666,-1.766620508028],[.0025567245263557,-.0019902940754171,-.0013943491701082]],[116800,[43.873338744526,7.700705617215,-10.814273666425],[.00023174803055677,.0022402163127924,.00062988756452032]],[146e3,[7.392949027906,44.382678951534,11.629500214854],[-.002193281545383,-.00021751799585364,.00059556516201114]],[175200,[-24.981690229261,-16.204012851426,2.466457544298],[.001819398914958,-.0026765419531201,-.0013848283502247]],[204400,[42.530187039511,.845935508021,-12.554907527683],[.00065059779150669,.0022725657282262,.00051133743202822]],[233600,[13.999526486822,44.462363044894,9.669418486465],[-.0021079296569252,.00017533423831993,.00069128485798076]],[262800,[-29.184024803031,-7.371243995762,6.493275957928],[.00093581363109681,-.0030610357109184,-.0012364201089345]],[292e3,[39.831980671753,-6.078405766765,-13.909815358656],[.0011117769689167,.0022362097830152,.00036230548231153]],[321200,[20.294955108476,43.417190420251,7.450091985932],[-.0019742157451535,.00053102050468554,.00075938408813008]],[350400,[-30.66999230216,2.318743558955,9.973480913858],[45605107450676e-18,-.0031308219926928,-.00099066533301924]],[379600,[35.626122155983,-12.897647509224,-14.777586508444],[.0016015684949743,.0021171931182284,.00018002516202204]],[408800,[26.133186148561,41.232139187599,5.00640132622],[-.0017857704419579,.00086046232702817,.00080614690298954]],[438e3,[-29.57674022923,11.863535943587,12.631323039872],[-.00072292830060955,-.0029587820140709,-.000708242964503]],[467200,[29.910805787391,-19.159019294,-15.013363865194],[.0020871080437997,.0018848372554514,-38528655083926e-18]],[496400,[31.375957451819,38.050372720763,2.433138343754],[-.0015546055556611,.0011699815465629,.00083565439266001]],[525600,[-26.360071336928,20.662505904952,14.414696258958],[-.0013142373118349,-.0026236647854842,-.00042542017598193]],[554800,[22.599441488648,-24.508879898306,-14.484045731468],[.0025454108304806,.0014917058755191,-.00030243665086079]],[584e3,[35.877864013014,33.894226366071,-.224524636277],[-.0012941245730845,.0014560427668319,.00084762160640137]],[613200,[-21.538149762417,28.204068269761,15.321973799534],[-.001731211740901,-.0021939631314577,-.0001631691327518]],[642400,[13.971521374415,-28.339941764789,-13.083792871886],[.0029334630526035,.00091860931752944,-.00059939422488627]],[671600,[39.526942044143,28.93989736011,-2.872799527539],[-.0010068481658095,.001702113288809,.00083578230511981]],[700800,[-15.576200701394,34.399412961275,15.466033737854],[-.0020098814612884,-.0017191109825989,70414782780416e-18]],[73e4,[4.24325283709,-30.118201690825,-10.707441231349],[.0031725847067411,.0001609846120227,-.00090672150593868]]];let qh=class _l{constructor(e,t,i){this.x=e,this.y=t,this.z=i}clone(){return new _l(this.x,this.y,this.z)}ToAstroVector(e){return new Js(this.x,this.y,this.z,e)}static zero(){return new _l(0,0,0)}quadrature(){return this.x*this.x+this.y*this.y+this.z*this.z}add(e){return new _l(this.x+e.x,this.y+e.y,this.z+e.z)}sub(e){return new _l(this.x-e.x,this.y-e.y,this.z-e.z)}incr(e){this.x+=e.x,this.y+=e.y,this.z+=e.z}decr(e){this.x-=e.x,this.y-=e.y,this.z-=e.z}mul(e){return new _l(e*this.x,e*this.y,e*this.z)}div(e){return new _l(this.x/e,this.y/e,this.z/e)}mean(e){return new _l((this.x+e.x)/2,(this.y+e.y)/2,(this.z+e.z)/2)}neg(){return new _l(-this.x,-this.y,-this.z)}};class Yh{constructor(e,t,i){this.tt=e,this.r=t,this.v=i}clone(){return new Yh(this.tt,this.r,this.v)}sub(e){return new Yh(this.tt,this.r.sub(e.r),this.v.sub(e.v))}}function Moe(n){let[e,[t,i,r],[a,s,o]]=n;return new Yh(e,new qh(t,i,r),new qh(a,s,o))}function Mx(n,e,t,i){const r=i/(i+$R),a=Toe(Xf[t],e);return n.r.incr(a.r.mul(r)),n.v.incr(a.v.mul(r)),a}function s0(n,e,t){const i=t.sub(n),r=i.quadrature();return i.mul(e/(r*Math.sqrt(r)))}class eC{constructor(e){let t=new Yh(e,new qh(0,0,0),new qh(0,0,0));this.Jupiter=Mx(t,e,kn.Jupiter,bA),this.Saturn=Mx(t,e,kn.Saturn,MA),this.Uranus=Mx(t,e,kn.Uranus,AA),this.Neptune=Mx(t,e,kn.Neptune,wA),this.Jupiter.r.decr(t.r),this.Jupiter.v.decr(t.v),this.Saturn.r.decr(t.r),this.Saturn.v.decr(t.v),this.Uranus.r.decr(t.r),this.Uranus.v.decr(t.v),this.Neptune.r.decr(t.r),this.Neptune.v.decr(t.v),this.Sun=new Yh(e,t.r.mul(-1),t.v.mul(-1))}Acceleration(e){let t=s0(e,$R,this.Sun.r);return t.incr(s0(e,bA,this.Jupiter.r)),t.incr(s0(e,MA,this.Saturn.r)),t.incr(s0(e,AA,this.Uranus.r)),t.incr(s0(e,wA,this.Neptune.r)),t}}let FB=class HB{constructor(e,t,i,r){this.tt=e,this.r=t,this.v=i,this.a=r}clone(){return new HB(this.tt,this.r.clone(),this.v.clone(),this.a.clone())}},VB=class{constructor(e,t){this.bary=e,this.grav=t}};function Jy(n,e,t,i){return new qh(e.x+n*(t.x+n*i.x/2),e.y+n*(t.y+n*i.y/2),e.z+n*(t.z+n*i.z/2))}function h5(n,e,t){return new qh(e.x+n*t.x,e.y+n*t.y,e.z+n*t.z)}function IA(n,e){const t=n-e.tt,i=new eC(n),r=Jy(t,e.r,e.v,e.a),a=i.Acceleration(r).mean(e.a),s=Jy(t,e.r,e.v,a),o=e.v.add(a.mul(t)),l=i.Acceleration(s),u=new FB(n,s,o,l);return new VB(i,u)}const Aoe=[];function GB(n,e){const t=Math.floor(n);return t<0?0:t>=e?e-1:t}function UA(n){const e=Moe(n),t=new eC(e.tt),i=e.r.add(t.Sun.r),r=e.v.add(t.Sun.v),a=t.Acceleration(i),s=new FB(e.tt,i,r,a);return new VB(t,s)}function woe(n,e){const t=vh[0][0];if(evh[LA-1][0])return null;const i=GB((e-t)/boe,LA-1);if(!n[i]){const a=n[i]=[];a[0]=UA(vh[i]).grav,a[vl-1]=UA(vh[i+1]).grav;let s,o=a[0].tt;for(s=1;s0;--s)r[s]=IA(o-=qf,r[s+1]).grav;for(s=vl-2;s>0;--s){const l=s/(vl-1);a[s].r=a[s].r.mul(1-l).add(r[s].r.mul(l)),a[s].v=a[s].v.mul(1-l).add(r[s].v.mul(l)),a[s].a=a[s].a.mul(1-l).add(r[s].a.mul(l))}}return n[i]}function d5(n,e,t){let i=UA(n);const r=Math.ceil((e-i.grav.tt)/t);for(let a=0;a1)throw"Object is too distant for light-travel solver.";const o=e.AddDays(-s);if(i=Math.abs(o.tt-t.tt),i<1e-9)return a;t=o}throw`Light-travel time solver did not converge: dt = ${i}`}class Doe{constructor(e,t,i,r){this.observerBody=e,this.targetBody=t,this.aberration=i,this.observerPos=r}Position(e){this.aberration&&(this.observerPos=lg(this.observerBody,e));const t=lg(this.targetBody,e);return new Js(t.x-this.observerPos.x,t.y-this.observerPos.y,t.z-this.observerPos.z,e)}}function Noe(n,e,t,i){const r=sd(n);if(IB(t)){const o=lg(t,r),l=lg(e,r);return new Js(o.x-l.x,o.y-l.y,o.z-l.z,r)}let a;a=lg(e,r);const s=new Doe(e,t,i,a);return Coe(o=>s.Position(o),r)}function Ooe(n,e,t){const i=sd(e);switch(n){case kn.Earth:return new Js(0,0,0,i);case kn.Moon:return RA(i);default:const r=Noe(i,kn.Earth,n,t);return r.t=i,r}}var f5;(function(n){n[n.Pericenter=0]="Pericenter",n[n.Apocenter=1]="Apocenter"})(f5||(f5={}));function Loe(n,e){return new zp([[e.rot[0][0]*n.rot[0][0]+e.rot[1][0]*n.rot[0][1]+e.rot[2][0]*n.rot[0][2],e.rot[0][1]*n.rot[0][0]+e.rot[1][1]*n.rot[0][1]+e.rot[2][1]*n.rot[0][2],e.rot[0][2]*n.rot[0][0]+e.rot[1][2]*n.rot[0][1]+e.rot[2][2]*n.rot[0][2]],[e.rot[0][0]*n.rot[1][0]+e.rot[1][0]*n.rot[1][1]+e.rot[2][0]*n.rot[1][2],e.rot[0][1]*n.rot[1][0]+e.rot[1][1]*n.rot[1][1]+e.rot[2][1]*n.rot[1][2],e.rot[0][2]*n.rot[1][0]+e.rot[1][2]*n.rot[1][1]+e.rot[2][2]*n.rot[1][2]],[e.rot[0][0]*n.rot[2][0]+e.rot[1][0]*n.rot[2][1]+e.rot[2][0]*n.rot[2][2],e.rot[0][1]*n.rot[2][0]+e.rot[1][1]*n.rot[2][1]+e.rot[2][1]*n.rot[2][2],e.rot[0][2]*n.rot[2][0]+e.rot[1][2]*n.rot[2][1]+e.rot[2][2]*n.rot[2][2]]])}function Ioe(n,e,t){const i=m1(t)*Xh,r=Math.cos(i),a=Math.sin(i),s=(e+1)%3,o=(e+2)%3,l=e;let u=[[0,0,0],[0,0,0],[0,0,0]];return u[s][s]=r*n.rot[s][s]-a*n.rot[s][o],u[s][o]=a*n.rot[s][s]+r*n.rot[s][o],u[s][l]=n.rot[s][l],u[o][s]=r*n.rot[o][s]-a*n.rot[o][o],u[o][o]=a*n.rot[o][s]+r*n.rot[o][o],u[o][l]=n.rot[o][l],u[l][s]=r*n.rot[l][s]-a*n.rot[l][o],u[l][o]=a*n.rot[l][s]+r*n.rot[l][o],u[l][l]=n.rot[l][l],new zp(u)}function Uoe(n,e){e=sd(e);const t=n.lat*Xh,i=n.lon*Xh,r=n.dist*Math.cos(t);return new Js(r*Math.cos(i),r*Math.sin(i),n.dist*Math.sin(t),e)}function Poe(n){n=sd(n);const e=zB(n,Bl.From2000),t=xoe(n,Bl.From2000);return Loe(e,t)}var p5;(function(n){n.Penumbral="penumbral",n.Partial="partial",n.Annular="annular",n.Total="total"})(p5||(p5={}));var m5;(function(n){n[n.Invalid=0]="Invalid",n[n.Ascending=1]="Ascending",n[n.Descending=-1]="Descending"})(m5||(m5={}));function tC(n){return n instanceof Yc?n:new Yc(n instanceof Date?n:new Date(n))}function zoe(n,e=new D){const{x:t,y:i,z:r}=n;return e.set(t,i,r)}function Boe(n,e=new Me){const[t,i,r]=n.rot;return e.set(t[0],i[0],r[0],0,t[1],i[1],r[1],0,t[2],i[2],r[2],0,0,0,0,1)}function Foe(n,e=new Me){const t=tC(n),i=Ioe(Poe(t),2,-15*_oe(t));return Boe(i,e)}function kB(n,e,t,i,r){const a=Ooe(n,e,!1);return zoe(a,t),i!=null,t.normalize()}function Hoe(n,e=new D,t){return kB(kn.Sun,tC(n),e,t)}function Voe(n,e=new D,t){return kB(kn.Moon,tC(n),e,t)}const Goe=`precision highp float; + */const Kse=173.1446326846693,Jse=14959787069098932e-8,Xh=.017453292519943295,$se=365.24217,c5=new Date("2000-01-01T12:00:00Z"),gl=2*Math.PI,mc=3600*(180/Math.PI),Wf=484813681109536e-20,eoe=10800*60,toe=2*eoe,noe=6378.1366,ioe=noe/Jse,roe=81.30056,$R=.0002959122082855911,bA=2825345909524226e-22,MA=8459715185680659e-23,AA=1292024916781969e-23,wA=1524358900784276e-23;function m1(n){if(!Number.isFinite(n))throw console.trace(),`Value is not a finite number: ${n}`;return n}function ff(n){return n-Math.floor(n)}var kn;(function(n){n.Sun="Sun",n.Moon="Moon",n.Mercury="Mercury",n.Venus="Venus",n.Earth="Earth",n.Mars="Mars",n.Jupiter="Jupiter",n.Saturn="Saturn",n.Uranus="Uranus",n.Neptune="Neptune",n.Pluto="Pluto",n.SSB="SSB",n.EMB="EMB",n.Star1="Star1",n.Star2="Star2",n.Star3="Star3",n.Star4="Star4",n.Star5="Star5",n.Star6="Star6",n.Star7="Star7",n.Star8="Star8"})(kn||(kn={}));const aoe=[kn.Star1,kn.Star2,kn.Star3,kn.Star4,kn.Star5,kn.Star6,kn.Star7,kn.Star8],soe=[{ra:0,dec:0,dist:0},{ra:0,dec:0,dist:0},{ra:0,dec:0,dist:0},{ra:0,dec:0,dist:0},{ra:0,dec:0,dist:0},{ra:0,dec:0,dist:0},{ra:0,dec:0,dist:0},{ra:0,dec:0,dist:0}];function ooe(n){const e=aoe.indexOf(n);return e>=0?soe[e]:null}function IB(n){const e=ooe(n);return e&&e.dist>0?e:null}var Bl;(function(n){n[n.From2000=0]="From2000",n[n.Into2000=1]="Into2000"})(Bl||(Bl={}));const Xf={Mercury:[[[[4.40250710144,0,0],[.40989414977,1.48302034195,26087.9031415742],[.050462942,4.47785489551,52175.8062831484],[.00855346844,1.16520322459,78263.70942472259],[.00165590362,4.11969163423,104351.61256629678],[.00034561897,.77930768443,130439.51570787099],[7583476e-11,3.71348404924,156527.41884944518]],[[26087.90313685529,0,0],[.01131199811,6.21874197797,26087.9031415742],[.00292242298,3.04449355541,52175.8062831484],[.00075775081,6.08568821653,78263.70942472259],[.00019676525,2.80965111777,104351.61256629678]]],[[[.11737528961,1.98357498767,26087.9031415742],[.02388076996,5.03738959686,52175.8062831484],[.01222839532,3.14159265359,0],[.0054325181,1.79644363964,78263.70942472259],[.0012977877,4.83232503958,104351.61256629678],[.00031866927,1.58088495658,130439.51570787099],[7963301e-11,4.60972126127,156527.41884944518]],[[.00274646065,3.95008450011,26087.9031415742],[.00099737713,3.14159265359,0]]],[[[.39528271651,0,0],[.07834131818,6.19233722598,26087.9031415742],[.00795525558,2.95989690104,52175.8062831484],[.00121281764,6.01064153797,78263.70942472259],[.00021921969,2.77820093972,104351.61256629678],[4354065e-11,5.82894543774,130439.51570787099]],[[.0021734774,4.65617158665,26087.9031415742],[.00044141826,1.42385544001,52175.8062831484]]]],Venus:[[[[3.17614666774,0,0],[.01353968419,5.59313319619,10213.285546211],[.00089891645,5.30650047764,20426.571092422],[5477194e-11,4.41630661466,7860.4193924392],[3455741e-11,2.6996444782,11790.6290886588],[2372061e-11,2.99377542079,3930.2096962196],[1317168e-11,5.18668228402,26.2983197998],[1664146e-11,4.25018630147,1577.3435424478],[1438387e-11,4.15745084182,9683.5945811164],[1200521e-11,6.15357116043,30639.856638633]],[[10213.28554621638,0,0],[.00095617813,2.4640651111,10213.285546211],[7787201e-11,.6247848222,20426.571092422]]],[[[.05923638472,.26702775812,10213.285546211],[.00040107978,1.14737178112,20426.571092422],[.00032814918,3.14159265359,0]],[[.00287821243,1.88964962838,10213.285546211]]],[[[.72334820891,0,0],[.00489824182,4.02151831717,10213.285546211],[1658058e-11,4.90206728031,20426.571092422],[1378043e-11,1.12846591367,11790.6290886588],[1632096e-11,2.84548795207,7860.4193924392],[498395e-11,2.58682193892,9683.5945811164],[221985e-11,2.01346696541,19367.1891622328],[237454e-11,2.55136053886,15720.8387848784]],[[.00034551041,.89198706276,10213.285546211]]]],Earth:[[[[1.75347045673,0,0],[.03341656453,4.66925680415,6283.0758499914],[.00034894275,4.62610242189,12566.1516999828],[3417572e-11,2.82886579754,3.523118349],[3497056e-11,2.74411783405,5753.3848848968],[3135899e-11,3.62767041756,77713.7714681205],[2676218e-11,4.41808345438,7860.4193924392],[2342691e-11,6.13516214446,3930.2096962196],[1273165e-11,2.03709657878,529.6909650946],[1324294e-11,.74246341673,11506.7697697936],[901854e-11,2.04505446477,26.2983197998],[1199167e-11,1.10962946234,1577.3435424478],[857223e-11,3.50849152283,398.1490034082],[779786e-11,1.17882681962,5223.6939198022],[99025e-10,5.23268072088,5884.9268465832],[753141e-11,2.53339052847,5507.5532386674],[505267e-11,4.58292599973,18849.2275499742],[492392e-11,4.20505711826,775.522611324],[356672e-11,2.91954114478,.0673103028],[284125e-11,1.89869240932,796.2980068164],[242879e-11,.34481445893,5486.777843175],[317087e-11,5.84901948512,11790.6290886588],[271112e-11,.31486255375,10977.078804699],[206217e-11,4.80646631478,2544.3144198834],[205478e-11,1.86953770281,5573.1428014331],[202318e-11,2.45767790232,6069.7767545534],[126225e-11,1.08295459501,20.7753954924],[155516e-11,.83306084617,213.299095438]],[[6283.0758499914,0,0],[.00206058863,2.67823455808,6283.0758499914],[4303419e-11,2.63512233481,12566.1516999828]],[[8721859e-11,1.07253635559,6283.0758499914]]],[[],[[.00227777722,3.4137662053,6283.0758499914],[3805678e-11,3.37063423795,12566.1516999828]]],[[[1.00013988784,0,0],[.01670699632,3.09846350258,6283.0758499914],[.00013956024,3.05524609456,12566.1516999828],[308372e-10,5.19846674381,77713.7714681205],[1628463e-11,1.17387558054,5753.3848848968],[1575572e-11,2.84685214877,7860.4193924392],[924799e-11,5.45292236722,11506.7697697936],[542439e-11,4.56409151453,3930.2096962196],[47211e-10,3.66100022149,5884.9268465832],[85831e-11,1.27079125277,161000.6857376741],[57056e-11,2.01374292245,83996.84731811189],[55736e-11,5.2415979917,71430.69561812909],[174844e-11,3.01193636733,18849.2275499742],[243181e-11,4.2734953079,11790.6290886588]],[[.00103018607,1.10748968172,6283.0758499914],[1721238e-11,1.06442300386,12566.1516999828]],[[4359385e-11,5.78455133808,6283.0758499914]]]],Mars:[[[[6.20347711581,0,0],[.18656368093,5.0503710027,3340.6124266998],[.01108216816,5.40099836344,6681.2248533996],[.00091798406,5.75478744667,10021.8372800994],[.00027744987,5.97049513147,3.523118349],[.00010610235,2.93958560338,2281.2304965106],[.00012315897,.84956094002,2810.9214616052],[8926784e-11,4.15697846427,.0172536522],[8715691e-11,6.11005153139,13362.4497067992],[6797556e-11,.36462229657,398.1490034082],[7774872e-11,3.33968761376,5621.8429232104],[3575078e-11,1.6618650571,2544.3144198834],[4161108e-11,.22814971327,2942.4634232916],[3075252e-11,.85696614132,191.4482661116],[2628117e-11,.64806124465,3337.0893083508],[2937546e-11,6.07893711402,.0673103028],[2389414e-11,5.03896442664,796.2980068164],[2579844e-11,.02996736156,3344.1355450488],[1528141e-11,1.14979301996,6151.533888305],[1798806e-11,.65634057445,529.6909650946],[1264357e-11,3.62275122593,5092.1519581158],[1286228e-11,3.06796065034,2146.1654164752],[1546404e-11,2.91579701718,1751.539531416],[1024902e-11,3.69334099279,8962.4553499102],[891566e-11,.18293837498,16703.062133499],[858759e-11,2.4009381194,2914.0142358238],[832715e-11,2.46418619474,3340.5951730476],[83272e-10,4.49495782139,3340.629680352],[712902e-11,3.66335473479,1059.3819301892],[748723e-11,3.82248614017,155.4203994342],[723861e-11,.67497311481,3738.761430108],[635548e-11,2.92182225127,8432.7643848156],[655162e-11,.48864064125,3127.3133312618],[550474e-11,3.81001042328,.9803210682],[55275e-10,4.47479317037,1748.016413067],[425966e-11,.55364317304,6283.0758499914],[415131e-11,.49662285038,213.299095438],[472167e-11,3.62547124025,1194.4470102246],[306551e-11,.38052848348,6684.7479717486],[312141e-11,.99853944405,6677.7017350506],[293198e-11,4.22131299634,20.7753954924],[302375e-11,4.48618007156,3532.0606928114],[274027e-11,.54222167059,3340.545116397],[281079e-11,5.88163521788,1349.8674096588],[231183e-11,1.28242156993,3870.3033917944],[283602e-11,5.7688543494,3149.1641605882],[236117e-11,5.75503217933,3333.498879699],[274033e-11,.13372524985,3340.6797370026],[299395e-11,2.78323740866,6254.6266625236]],[[3340.61242700512,0,0],[.01457554523,3.60433733236,3340.6124266998],[.00168414711,3.92318567804,6681.2248533996],[.00020622975,4.26108844583,10021.8372800994],[3452392e-11,4.7321039319,3.523118349],[2586332e-11,4.60670058555,13362.4497067992],[841535e-11,4.45864030426,2281.2304965106]],[[.00058152577,2.04961712429,3340.6124266998],[.00013459579,2.45738706163,6681.2248533996]]],[[[.03197134986,3.76832042431,3340.6124266998],[.00298033234,4.10616996305,6681.2248533996],[.00289104742,0,0],[.00031365539,4.4465105309,10021.8372800994],[34841e-9,4.7881254926,13362.4497067992]],[[.00217310991,6.04472194776,3340.6124266998],[.00020976948,3.14159265359,0],[.00012834709,1.60810667915,6681.2248533996]]],[[[1.53033488271,0,0],[.1418495316,3.47971283528,3340.6124266998],[.00660776362,3.81783443019,6681.2248533996],[.00046179117,4.15595316782,10021.8372800994],[8109733e-11,5.55958416318,2810.9214616052],[7485318e-11,1.77239078402,5621.8429232104],[5523191e-11,1.3643630377,2281.2304965106],[382516e-10,4.49407183687,13362.4497067992],[2306537e-11,.09081579001,2544.3144198834],[1999396e-11,5.36059617709,3337.0893083508],[2484394e-11,4.9254563992,2942.4634232916],[1960195e-11,4.74249437639,3344.1355450488],[1167119e-11,2.11260868341,5092.1519581158],[1102816e-11,5.00908403998,398.1490034082],[899066e-11,4.40791133207,529.6909650946],[992252e-11,5.83861961952,6151.533888305],[807354e-11,2.10217065501,1059.3819301892],[797915e-11,3.44839203899,796.2980068164],[740975e-11,1.49906336885,2146.1654164752]],[[.01107433345,2.03250524857,3340.6124266998],[.00103175887,2.37071847807,6681.2248533996],[128772e-9,0,0],[.0001081588,2.70888095665,10021.8372800994]],[[.00044242249,.47930604954,3340.6124266998],[8138042e-11,.86998389204,6681.2248533996]]]],Jupiter:[[[[.59954691494,0,0],[.09695898719,5.06191793158,529.6909650946],[.00573610142,1.44406205629,7.1135470008],[.00306389205,5.41734730184,1059.3819301892],[.00097178296,4.14264726552,632.7837393132],[.00072903078,3.64042916389,522.5774180938],[.00064263975,3.41145165351,103.0927742186],[.00039806064,2.29376740788,419.4846438752],[.00038857767,1.27231755835,316.3918696566],[.00027964629,1.7845459182,536.8045120954],[.0001358973,5.7748104079,1589.0728952838],[8246349e-11,3.5822792584,206.1855484372],[8768704e-11,3.63000308199,949.1756089698],[7368042e-11,5.0810119427,735.8765135318],[626315e-10,.02497628807,213.299095438],[6114062e-11,4.51319998626,1162.4747044078],[4905396e-11,1.32084470588,110.2063212194],[5305285e-11,1.30671216791,14.2270940016],[5305441e-11,4.18625634012,1052.2683831884],[4647248e-11,4.69958103684,3.9321532631],[3045023e-11,4.31676431084,426.598190876],[2609999e-11,1.56667394063,846.0828347512],[2028191e-11,1.06376530715,3.1813937377],[1764763e-11,2.14148655117,1066.49547719],[1722972e-11,3.88036268267,1265.5674786264],[1920945e-11,.97168196472,639.897286314],[1633223e-11,3.58201833555,515.463871093],[1431999e-11,4.29685556046,625.6701923124],[973272e-11,4.09764549134,95.9792272178]],[[529.69096508814,0,0],[.00489503243,4.2208293947,529.6909650946],[.00228917222,6.02646855621,7.1135470008],[.00030099479,4.54540782858,1059.3819301892],[.0002072092,5.45943156902,522.5774180938],[.00012103653,.16994816098,536.8045120954],[6067987e-11,4.42422292017,103.0927742186],[5433968e-11,3.98480737746,419.4846438752],[4237744e-11,5.89008707199,14.2270940016]],[[.00047233601,4.32148536482,7.1135470008],[.00030649436,2.929777887,529.6909650946],[.00014837605,3.14159265359,0]]],[[[.02268615702,3.55852606721,529.6909650946],[.00109971634,3.90809347197,1059.3819301892],[.00110090358,0,0],[8101428e-11,3.60509572885,522.5774180938],[6043996e-11,4.25883108339,1589.0728952838],[6437782e-11,.30627119215,536.8045120954]],[[.00078203446,1.52377859742,529.6909650946]]],[[[5.20887429326,0,0],[.25209327119,3.49108639871,529.6909650946],[.00610599976,3.84115365948,1059.3819301892],[.00282029458,2.57419881293,632.7837393132],[.00187647346,2.07590383214,522.5774180938],[.00086792905,.71001145545,419.4846438752],[.00072062974,.21465724607,536.8045120954],[.00065517248,5.9799588479,316.3918696566],[.00029134542,1.67759379655,103.0927742186],[.00030135335,2.16132003734,949.1756089698],[.00023453271,3.54023522184,735.8765135318],[.00022283743,4.19362594399,1589.0728952838],[.00023947298,.2745803748,7.1135470008],[.00013032614,2.96042965363,1162.4747044078],[970336e-10,1.90669633585,206.1855484372],[.00012749023,2.71550286592,1052.2683831884],[7057931e-11,2.18184839926,1265.5674786264],[6137703e-11,6.26418240033,846.0828347512],[2616976e-11,2.00994012876,1581.959348283]],[[.0127180152,2.64937512894,529.6909650946],[.00061661816,3.00076460387,1059.3819301892],[.00053443713,3.89717383175,522.5774180938],[.00031185171,4.88276958012,536.8045120954],[.00041390269,0,0]]]],Saturn:[[[[.87401354025,0,0],[.11107659762,3.96205090159,213.299095438],[.01414150957,4.58581516874,7.1135470008],[.00398379389,.52112032699,206.1855484372],[.00350769243,3.30329907896,426.598190876],[.00206816305,.24658372002,103.0927742186],[792713e-9,3.84007056878,220.4126424388],[.00023990355,4.66976924553,110.2063212194],[.00016573588,.43719228296,419.4846438752],[.00014906995,5.76903183869,316.3918696566],[.0001582029,.93809155235,632.7837393132],[.00014609559,1.56518472,3.9321532631],[.00013160301,4.44891291899,14.2270940016],[.00015053543,2.71669915667,639.897286314],[.00013005299,5.98119023644,11.0457002639],[.00010725067,3.12939523827,202.2533951741],[5863206e-11,.23656938524,529.6909650946],[5227757e-11,4.20783365759,3.1813937377],[6126317e-11,1.76328667907,277.0349937414],[5019687e-11,3.17787728405,433.7117378768],[459255e-10,.61977744975,199.0720014364],[4005867e-11,2.24479718502,63.7358983034],[2953796e-11,.98280366998,95.9792272178],[387367e-10,3.22283226966,138.5174968707],[2461186e-11,2.03163875071,735.8765135318],[3269484e-11,.77492638211,949.1756089698],[1758145e-11,3.2658010994,522.5774180938],[1640172e-11,5.5050445305,846.0828347512],[1391327e-11,4.02333150505,323.5054166574],[1580648e-11,4.37265307169,309.2783226558],[1123498e-11,2.83726798446,415.5524906121],[1017275e-11,3.71700135395,227.5261894396],[848642e-11,3.1915017083,209.3669421749]],[[213.2990952169,0,0],[.01297370862,1.82834923978,213.299095438],[.00564345393,2.88499717272,7.1135470008],[.00093734369,1.06311793502,426.598190876],[.00107674962,2.27769131009,206.1855484372],[.00040244455,2.04108104671,220.4126424388],[.00019941774,1.2795439047,103.0927742186],[.00010511678,2.7488034213,14.2270940016],[6416106e-11,.38238295041,639.897286314],[4848994e-11,2.43037610229,419.4846438752],[4056892e-11,2.92133209468,110.2063212194],[3768635e-11,3.6496533078,3.9321532631]],[[.0011644133,1.17988132879,7.1135470008],[.00091841837,.0732519584,213.299095438],[.00036661728,0,0],[.00015274496,4.06493179167,206.1855484372]]],[[[.04330678039,3.60284428399,213.299095438],[.00240348302,2.85238489373,426.598190876],[.00084745939,0,0],[.00030863357,3.48441504555,220.4126424388],[.00034116062,.57297307557,206.1855484372],[.0001473407,2.11846596715,639.897286314],[9916667e-11,5.79003188904,419.4846438752],[6993564e-11,4.7360468972,7.1135470008],[4807588e-11,5.43305312061,316.3918696566]],[[.00198927992,4.93901017903,213.299095438],[.00036947916,3.14159265359,0],[.00017966989,.5197943111,426.598190876]]],[[[9.55758135486,0,0],[.52921382865,2.39226219573,213.299095438],[.01873679867,5.2354960466,206.1855484372],[.01464663929,1.64763042902,426.598190876],[.00821891141,5.93520042303,316.3918696566],[.00547506923,5.0153261898,103.0927742186],[.0037168465,2.27114821115,220.4126424388],[.00361778765,3.13904301847,7.1135470008],[.00140617506,5.70406606781,632.7837393132],[.00108974848,3.29313390175,110.2063212194],[.00069006962,5.94099540992,419.4846438752],[.00061053367,.94037691801,639.897286314],[.00048913294,1.55733638681,202.2533951741],[.00034143772,.19519102597,277.0349937414],[.00032401773,5.47084567016,949.1756089698],[.00020936596,.46349251129,735.8765135318],[9796004e-11,5.20477537945,1265.5674786264],[.00011993338,5.98050967385,846.0828347512],[208393e-9,1.52102476129,433.7117378768],[.00015298404,3.0594381494,529.6909650946],[6465823e-11,.17732249942,1052.2683831884],[.00011380257,1.7310542704,522.5774180938],[3419618e-11,4.94550542171,1581.959348283]],[[.0618298134,.2584351148,213.299095438],[.00506577242,.71114625261,206.1855484372],[.00341394029,5.79635741658,426.598190876],[.00188491195,.47215589652,220.4126424388],[.00186261486,3.14159265359,0],[.00143891146,1.40744822888,7.1135470008]],[[.00436902572,4.78671677509,213.299095438]]]],Uranus:[[[[5.48129294297,0,0],[.09260408234,.89106421507,74.7815985673],[.01504247898,3.6271926092,1.4844727083],[.00365981674,1.89962179044,73.297125859],[.00272328168,3.35823706307,149.5631971346],[.00070328461,5.39254450063,63.7358983034],[.00068892678,6.09292483287,76.2660712756],[.00061998615,2.26952066061,2.9689454166],[.00061950719,2.85098872691,11.0457002639],[.0002646877,3.14152083966,71.8126531507],[.00025710476,6.11379840493,454.9093665273],[.0002107885,4.36059339067,148.0787244263],[.00017818647,1.74436930289,36.6485629295],[.00014613507,4.73732166022,3.9321532631],[.00011162509,5.8268179635,224.3447957019],[.0001099791,.48865004018,138.5174968707],[9527478e-11,2.95516862826,35.1640902212],[7545601e-11,5.236265824,109.9456887885],[4220241e-11,3.23328220918,70.8494453042],[40519e-9,2.277550173,151.0476698429],[3354596e-11,1.0654900738,4.4534181249],[2926718e-11,4.62903718891,9.5612275556],[349034e-10,5.48306144511,146.594251718],[3144069e-11,4.75199570434,77.7505439839],[2922333e-11,5.35235361027,85.8272988312],[2272788e-11,4.36600400036,70.3281804424],[2051219e-11,1.51773566586,.1118745846],[2148602e-11,.60745949945,38.1330356378],[1991643e-11,4.92437588682,277.0349937414],[1376226e-11,2.04283539351,65.2203710117],[1666902e-11,3.62744066769,380.12776796],[1284107e-11,3.11347961505,202.2533951741],[1150429e-11,.93343589092,3.1813937377],[1533221e-11,2.58594681212,52.6901980395],[1281604e-11,.54271272721,222.8603229936],[1372139e-11,4.19641530878,111.4301614968],[1221029e-11,.1990065003,108.4612160802],[946181e-11,1.19253165736,127.4717966068],[1150989e-11,4.17898916639,33.6796175129]],[[74.7815986091,0,0],[.00154332863,5.24158770553,74.7815985673],[.00024456474,1.71260334156,1.4844727083],[9258442e-11,.4282973235,11.0457002639],[8265977e-11,1.50218091379,63.7358983034],[915016e-10,1.41213765216,149.5631971346]]],[[[.01346277648,2.61877810547,74.7815985673],[623414e-9,5.08111189648,149.5631971346],[.00061601196,3.14159265359,0],[9963722e-11,1.61603805646,76.2660712756],[992616e-10,.57630380333,73.297125859]],[[.00034101978,.01321929936,74.7815985673]]],[[[19.21264847206,0,0],[.88784984413,5.60377527014,74.7815985673],[.03440836062,.32836099706,73.297125859],[.0205565386,1.7829515933,149.5631971346],[.0064932241,4.52247285911,76.2660712756],[.00602247865,3.86003823674,63.7358983034],[.00496404167,1.40139935333,454.9093665273],[.00338525369,1.58002770318,138.5174968707],[.00243509114,1.57086606044,71.8126531507],[.00190522303,1.99809394714,1.4844727083],[.00161858838,2.79137786799,148.0787244263],[.00143706183,1.38368544947,11.0457002639],[.00093192405,.17437220467,36.6485629295],[.00071424548,4.24509236074,224.3447957019],[.00089806014,3.66105364565,109.9456887885],[.00039009723,1.66971401684,70.8494453042],[.00046677296,1.39976401694,35.1640902212],[.00039025624,3.36234773834,277.0349937414],[.00036755274,3.88649278513,146.594251718],[.00030348723,.70100838798,151.0476698429],[.00029156413,3.180563367,77.7505439839],[.00022637073,.72518687029,529.6909650946],[.00011959076,1.7504339214,984.6003316219],[.00025620756,5.25656086672,380.12776796]],[[.01479896629,3.67205697578,74.7815985673]]]],Neptune:[[[[5.31188633046,0,0],[.0179847553,2.9010127389,38.1330356378],[.01019727652,.48580922867,1.4844727083],[.00124531845,4.83008090676,36.6485629295],[.00042064466,5.41054993053,2.9689454166],[.00037714584,6.09221808686,35.1640902212],[.00033784738,1.24488874087,76.2660712756],[.00016482741,7727998e-11,491.5579294568],[9198584e-11,4.93747051954,39.6175083461],[899425e-10,.27462171806,175.1660598002]],[[38.13303563957,0,0],[.00016604172,4.86323329249,1.4844727083],[.00015744045,2.27887427527,38.1330356378]]],[[[.03088622933,1.44104372644,38.1330356378],[.00027780087,5.91271884599,76.2660712756],[.00027623609,0,0],[.00015355489,2.52123799551,36.6485629295],[.00015448133,3.50877079215,39.6175083461]]],[[[30.07013205828,0,0],[.27062259632,1.32999459377,38.1330356378],[.01691764014,3.25186135653,36.6485629295],[.00807830553,5.18592878704,1.4844727083],[.0053776051,4.52113935896,35.1640902212],[.00495725141,1.5710564165,491.5579294568],[.00274571975,1.84552258866,175.1660598002],[.0001201232,1.92059384991,1021.2488945514],[.00121801746,5.79754470298,76.2660712756],[.00100896068,.3770272493,73.297125859],[.00135134092,3.37220609835,39.6175083461],[7571796e-11,1.07149207335,388.4651552382]]]]};function loe(n){var e,t,i,r,a,s,o;const l=2e3+(n-14)/$se;return l<-500?(e=(l-1820)/100,-20+32*e*e):l<500?(e=l/100,t=e*e,i=e*t,r=t*t,a=t*i,s=i*i,10583.6-1014.41*e+33.78311*t-5.952053*i-.1798452*r+.022174192*a+.0090316521*s):l<1600?(e=(l-1e3)/100,t=e*e,i=e*t,r=t*t,a=t*i,s=i*i,1574.2-556.01*e+71.23472*t+.319781*i-.8503463*r-.005050998*a+.0083572073*s):l<1700?(e=l-1600,t=e*e,i=e*t,120-.9808*e-.01532*t+i/7129):l<1800?(e=l-1700,t=e*e,i=e*t,r=t*t,8.83+.1603*e-.0059285*t+13336e-8*i-r/1174e3):l<1860?(e=l-1800,t=e*e,i=e*t,r=t*t,a=t*i,s=i*i,o=i*r,13.72-.332447*e+.0068612*t+.0041116*i-37436e-8*r+121272e-10*a-1699e-10*s+875e-12*o):l<1900?(e=l-1860,t=e*e,i=e*t,r=t*t,a=t*i,7.62+.5737*e-.251754*t+.01680668*i-.0004473624*r+a/233174):l<1920?(e=l-1900,t=e*e,i=e*t,r=t*t,-2.79+1.494119*e-.0598939*t+.0061966*i-197e-6*r):l<1941?(e=l-1920,t=e*e,i=e*t,21.2+.84493*e-.0761*t+.0020936*i):l<1961?(e=l-1950,t=e*e,i=e*t,29.07+.407*e-t/233+i/2547):l<1986?(e=l-1975,t=e*e,i=e*t,45.45+1.067*e-t/260-i/718):l<2005?(e=l-2e3,t=e*e,i=e*t,r=t*t,a=t*i,63.86+.3345*e-.060374*t+.0017275*i+651814e-9*r+2373599e-11*a):l<2050?(e=l-2e3,62.92+.32217*e+.005589*e*e):l<2150?(e=(l-1820)/100,-20+32*e*e-.5628*(2150-l)):(e=(l-1820)/100,-20+32*e*e)}let coe=loe;function u5(n){return n+coe(n)/86400}class Yc{constructor(e){if(e instanceof Yc){this.date=e.date,this.ut=e.ut,this.tt=e.tt;return}const t=1e3*3600*24;if(e instanceof Date&&Number.isFinite(e.getTime())){this.date=e,this.ut=(e.getTime()-c5.getTime())/t,this.tt=u5(this.ut);return}if(Number.isFinite(e)){this.date=new Date(c5.getTime()+e*t),this.ut=e,this.tt=u5(this.ut);return}throw"Argument must be a Date object, an AstroTime object, or a numeric UTC Julian date."}static FromTerrestrialTime(e){let t=new Yc(e);for(;;){const i=e-t.tt;if(Math.abs(i)<1e-12)return t;t=t.AddDays(i)}}toString(){return this.date.toISOString()}AddDays(e){return new Yc(this.ut+e)}}function sd(n){return n instanceof Yc?n:new Yc(n)}function uoe(n){function e(p){return p%toe*Wf}const t=n.tt/36525,i=e(128710479305e-5+t*1295965810481e-4),r=e(335779.526232+t*17395272628478e-4),a=e(107226070369e-5+t*1602961601209e-3),s=e(450160.398036-t*69628905431e-4);let o=Math.sin(s),l=Math.cos(s),u=(-172064161-174666*t)*o+33386*l,d=(92052331+9086*t)*l+15377*o,f=2*(r-a+s);return o=Math.sin(f),l=Math.cos(f),u+=(-13170906-1675*t)*o-13696*l,d+=(5730336-3015*t)*l-4587*o,f=2*(r+s),o=Math.sin(f),l=Math.cos(f),u+=(-2276413-234*t)*o+2796*l,d+=(978459-485*t)*l+1374*o,f=2*s,o=Math.sin(f),l=Math.cos(f),u+=(2074554+207*t)*o-698*l,d+=(-897492+470*t)*l-291*o,o=Math.sin(i),l=Math.cos(i),u+=(1475877-3633*t)*o+11817*l,d+=(73871-184*t)*l-1924*o,{dpsi:-135e-6+u*1e-7,deps:388e-6+d*1e-7}}function UB(n){var e=n.tt/36525,t=((((-434e-10*e-576e-9)*e+.0020034)*e-1831e-7)*e-46.836769)*e+84381.406;return t/3600}var Tx;function PB(n){if(!Tx||Math.abs(Tx.tt-n.tt)>1e-6){const e=uoe(n),t=UB(n),i=t+e.deps/3600;Tx={tt:n.tt,dpsi:e.dpsi,deps:e.deps,ee:e.dpsi*Math.cos(t*Xh)/15,mobl:t,tobl:i}}return Tx}function hoe(n,e){const t=n*Xh,i=Math.cos(t),r=Math.sin(t);return[e[0],e[1]*i-e[2]*r,e[1]*r+e[2]*i]}function doe(n,e){return hoe(UB(n),e)}function foe(n){const e=n.tt/36525;function t(lt,Qe){const Ee=[];let V;for(V=0;V<=Qe-lt;++V)Ee.push(0);return{min:lt,array:Ee}}function i(lt,Qe,Ee,V){const Ae=[];for(let Oe=0;Oe<=Qe-lt;++Oe)Ae.push(t(Ee,V));return{min:lt,array:Ae}}function r(lt,Qe,Ee){const V=lt.array[Qe-lt.min];return V.array[Ee-V.min]}function a(lt,Qe,Ee,V){const Ae=lt.array[Qe-lt.min];Ae.array[Ee-Ae.min]=V}let s,o,l,u,d,f,p,m,v,x,S,_,T,E,b,R,w,L,U,N,C,z,W,K=i(-6,6,1,4),oe=i(-6,6,1,4);function ae(lt,Qe){return r(K,lt,Qe)}function X(lt,Qe){return r(oe,lt,Qe)}function te(lt,Qe,Ee){return a(K,lt,Qe,Ee)}function Q(lt,Qe,Ee){return a(oe,lt,Qe,Ee)}function ce(lt,Qe,Ee,V,Ae){Ae(lt*Ee-Qe*V,Qe*Ee+lt*V)}function se(lt){return Math.sin(gl*lt)}p=e*e,v=0,W=0,S=0,_=3422.7;var De=se(.19833+.05611*e),Xe=se(.27869+.04508*e),nt=se(.16827-.36903*e),tt=se(.34734-5.37261*e),xt=se(.10498-5.37899*e),ve=se(.42681-.41855*e),we=se(.14943-5.37511*e);for(L=.84*De+.31*Xe+14.27*nt+7.26*tt+.28*xt+.24*ve,U=2.94*De+.31*Xe+14.27*nt+9.34*tt+1.12*xt+.83*ve,N=-6.4*De-1.89*ve,C=.21*De+.31*Xe+14.27*nt-88.7*tt-15.3*xt+.24*ve-1.86*we,z=L-N,m=-3332e-9*se(.59734-5.37261*e)-539e-9*se(.35498-5.37899*e)-64e-9*se(.39943-5.37511*e),T=gl*ff(.60643382+1336.85522467*e-313e-8*p)+L/mc,E=gl*ff(.37489701+1325.55240982*e+2565e-8*p)+U/mc,b=gl*ff(.99312619+99.99735956*e-44e-8*p)+N/mc,R=gl*ff(.25909118+1342.2278298*e-892e-8*p)+C/mc,w=gl*ff(.82736186+1236.85308708*e-397e-8*p)+z/mc,d=1;d<=4;++d){switch(d){case 1:l=E,o=4,u=1.000002208;break;case 2:l=b,o=3,u=.997504612-.002495388*e;break;case 3:l=R,o=4,u=1.000002708+139.978*m;break;case 4:l=w,o=6,u=1;break;default:throw`Internal error: I = ${d}`}for(te(0,d,1),te(1,d,Math.cos(l)*u),Q(0,d,0),Q(1,d,Math.sin(l)*u),f=2;f<=o;++f)ce(ae(f-1,d),X(f-1,d),ae(1,d),X(1,d),(lt,Qe)=>(te(f,d,lt),Q(f,d,Qe)));for(f=1;f<=o;++f)te(-f,d,ae(f,d)),Q(-f,d,-X(f,d))}function Ze(lt,Qe,Ee,V){for(var Ae={x:1,y:0},Oe=[0,lt,Qe,Ee,V],Ve=1;Ve<=4;++Ve)Oe[Ve]!==0&&ce(Ae.x,Ae.y,ae(Oe[Ve],Ve),X(Oe[Ve],Ve),(Fe,$e)=>(Ae.x=Fe,Ae.y=$e));return Ae}function de(lt,Qe,Ee,V,Ae,Oe,Ve,Fe){var $e=Ze(Ae,Oe,Ve,Fe);v+=lt*$e.y,W+=Qe*$e.y,S+=Ee*$e.x,_+=V*$e.x}de(13.902,14.06,-.001,.2607,0,0,0,4),de(.403,-4.01,.394,.0023,0,0,0,3),de(2369.912,2373.36,.601,28.2333,0,0,0,2),de(-125.154,-112.79,-.725,-.9781,0,0,0,1),de(1.979,6.98,-.445,.0433,1,0,0,4),de(191.953,192.72,.029,3.0861,1,0,0,2),de(-8.466,-13.51,.455,-.1093,1,0,0,1),de(22639.5,22609.07,.079,186.5398,1,0,0,0),de(18.609,3.59,-.094,.0118,1,0,0,-1),de(-4586.465,-4578.13,-.077,34.3117,1,0,0,-2),de(3.215,5.44,.192,-.0386,1,0,0,-3),de(-38.428,-38.64,.001,.6008,1,0,0,-4),de(-.393,-1.43,-.092,.0086,1,0,0,-6),de(-.289,-1.59,.123,-.0053,0,1,0,4),de(-24.42,-25.1,.04,-.3,0,1,0,2),de(18.023,17.93,.007,.1494,0,1,0,1),de(-668.146,-126.98,-1.302,-.3997,0,1,0,0),de(.56,.32,-.001,-.0037,0,1,0,-1),de(-165.145,-165.06,.054,1.9178,0,1,0,-2),de(-1.877,-6.46,-.416,.0339,0,1,0,-4),de(.213,1.02,-.074,.0054,2,0,0,4),de(14.387,14.78,-.017,.2833,2,0,0,2),de(-.586,-1.2,.054,-.01,2,0,0,1),de(769.016,767.96,.107,10.1657,2,0,0,0),de(1.75,2.01,-.018,.0155,2,0,0,-1),de(-211.656,-152.53,5.679,-.3039,2,0,0,-2),de(1.225,.91,-.03,-.0088,2,0,0,-3),de(-30.773,-34.07,-.308,.3722,2,0,0,-4),de(-.57,-1.4,-.074,.0109,2,0,0,-6),de(-2.921,-11.75,.787,-.0484,1,1,0,2),de(1.267,1.52,-.022,.0164,1,1,0,1),de(-109.673,-115.18,.461,-.949,1,1,0,0),de(-205.962,-182.36,2.056,1.4437,1,1,0,-2),de(.233,.36,.012,-.0025,1,1,0,-3),de(-4.391,-9.66,-.471,.0673,1,1,0,-4),de(.283,1.53,-.111,.006,1,-1,0,4),de(14.577,31.7,-1.54,.2302,1,-1,0,2),de(147.687,138.76,.679,1.1528,1,-1,0,0),de(-1.089,.55,.021,0,1,-1,0,-1),de(28.475,23.59,-.443,-.2257,1,-1,0,-2),de(-.276,-.38,-.006,-.0036,1,-1,0,-3),de(.636,2.27,.146,-.0102,1,-1,0,-4),de(-.189,-1.68,.131,-.0028,0,2,0,2),de(-7.486,-.66,-.037,-.0086,0,2,0,0),de(-8.096,-16.35,-.74,.0918,0,2,0,-2),de(-5.741,-.04,0,-9e-4,0,0,2,2),de(.255,0,0,0,0,0,2,1),de(-411.608,-.2,0,-.0124,0,0,2,0),de(.584,.84,0,.0071,0,0,2,-1),de(-55.173,-52.14,0,-.1052,0,0,2,-2),de(.254,.25,0,-.0017,0,0,2,-3),de(.025,-1.67,0,.0031,0,0,2,-4),de(1.06,2.96,-.166,.0243,3,0,0,2),de(36.124,50.64,-1.3,.6215,3,0,0,0),de(-13.193,-16.4,.258,-.1187,3,0,0,-2),de(-1.187,-.74,.042,.0074,3,0,0,-4),de(-.293,-.31,-.002,.0046,3,0,0,-6),de(-.29,-1.45,.116,-.0051,2,1,0,2),de(-7.649,-10.56,.259,-.1038,2,1,0,0),de(-8.627,-7.59,.078,-.0192,2,1,0,-2),de(-2.74,-2.54,.022,.0324,2,1,0,-4),de(1.181,3.32,-.212,.0213,2,-1,0,2),de(9.703,11.67,-.151,.1268,2,-1,0,0),de(-.352,-.37,.001,-.0028,2,-1,0,-1),de(-2.494,-1.17,-.003,-.0017,2,-1,0,-2),de(.36,.2,-.012,-.0043,2,-1,0,-4),de(-1.167,-1.25,.008,-.0106,1,2,0,0),de(-7.412,-6.12,.117,.0484,1,2,0,-2),de(-.311,-.65,-.032,.0044,1,2,0,-4),de(.757,1.82,-.105,.0112,1,-2,0,2),de(2.58,2.32,.027,.0196,1,-2,0,0),de(2.533,2.4,-.014,-.0212,1,-2,0,-2),de(-.344,-.57,-.025,.0036,0,3,0,-2),de(-.992,-.02,0,0,1,0,2,2),de(-45.099,-.02,0,-.001,1,0,2,0),de(-.179,-9.52,0,-.0833,1,0,2,-2),de(-.301,-.33,0,.0014,1,0,2,-4),de(-6.382,-3.37,0,-.0481,1,0,-2,2),de(39.528,85.13,0,-.7136,1,0,-2,0),de(9.366,.71,0,-.0112,1,0,-2,-2),de(.202,.02,0,0,1,0,-2,-4),de(.415,.1,0,.0013,0,1,2,0),de(-2.152,-2.26,0,-.0066,0,1,2,-2),de(-1.44,-1.3,0,.0014,0,1,-2,2),de(.384,-.04,0,0,0,1,-2,-2),de(1.938,3.6,-.145,.0401,4,0,0,0),de(-.952,-1.58,.052,-.013,4,0,0,-2),de(-.551,-.94,.032,-.0097,3,1,0,0),de(-.482,-.57,.005,-.0045,3,1,0,-2),de(.681,.96,-.026,.0115,3,-1,0,0),de(-.297,-.27,.002,-9e-4,2,2,0,-2),de(.254,.21,-.003,0,2,-2,0,-2),de(-.25,-.22,.004,.0014,1,3,0,-2),de(-3.996,0,0,4e-4,2,0,2,0),de(.557,-.75,0,-.009,2,0,2,-2),de(-.459,-.38,0,-.0053,2,0,-2,2),de(-1.298,.74,0,4e-4,2,0,-2,0),de(.538,1.14,0,-.0141,2,0,-2,-2),de(.263,.02,0,0,1,1,2,0),de(.426,.07,0,-6e-4,1,1,-2,-2),de(-.304,.03,0,3e-4,1,-1,2,0),de(-.372,-.19,0,-.0027,1,-1,-2,2),de(.418,0,0,0,0,0,4,0),de(-.33,-.04,0,0,3,0,2,0);function it(lt,Qe,Ee,V,Ae){return lt*Ze(Qe,Ee,V,Ae).y}x=0,x+=it(-526.069,0,0,1,-2),x+=it(-3.352,0,0,1,-4),x+=it(44.297,1,0,1,-2),x+=it(-6,1,0,1,-4),x+=it(20.599,-1,0,1,0),x+=it(-30.598,-1,0,1,-2),x+=it(-24.649,-2,0,1,0),x+=it(-2,-2,0,1,-2),x+=it(-22.571,0,1,1,-2),x+=it(10.985,0,-1,1,-2),v+=.82*se(.7736-62.5512*e)+.31*se(.0466-125.1025*e)+.35*se(.5785-25.1042*e)+.66*se(.4591+1335.8075*e)+.64*se(.313-91.568*e)+1.14*se(.148+1331.2898*e)+.21*se(.5918+1056.5859*e)+.44*se(.5784+1322.8595*e)+.24*se(.2275-5.7374*e)+.28*se(.2965+2.6929*e)+.33*se(.3132+6.3368*e),s=R+W/mc;let wt=(1.000002708+139.978*m)*(18518.511+1.189+S)*Math.sin(s)-6.24*Math.sin(3*s)+x;return{geo_eclip_lon:gl*ff((T+v/mc)/gl),geo_eclip_lat:Math.PI/(180*3600)*wt,distance_au:mc*ioe/(.999953253*_)}}function poe(n,e){return[n.rot[0][0]*e[0]+n.rot[1][0]*e[1]+n.rot[2][0]*e[2],n.rot[0][1]*e[0]+n.rot[1][1]*e[1]+n.rot[2][1]*e[2],n.rot[0][2]*e[0]+n.rot[1][2]*e[1]+n.rot[2][2]*e[2]]}function moe(n,e,t){const i=zB(e,t);return poe(i,n)}function zB(n,e){const t=n.tt/36525;let i=84381.406,r=((((-951e-10*t+132851e-9)*t-.00114045)*t-1.0790069)*t+5038.481507)*t,a=((((3337e-10*t-467e-9)*t-.00772503)*t+.0512623)*t-.025754)*t+i,s=((((-56e-9*t+170663e-9)*t-.00121197)*t-2.3814292)*t+10.556403)*t;i*=Wf,r*=Wf,a*=Wf,s*=Wf;const o=Math.sin(i),l=Math.cos(i),u=Math.sin(-r),d=Math.cos(-r),f=Math.sin(-a),p=Math.cos(-a),m=Math.sin(s),v=Math.cos(s),x=v*d-u*m*p,S=v*u*l+m*p*d*l-o*m*f,_=v*u*o+m*p*d*o+l*m*f,T=-m*d-u*v*p,E=-m*u*l+v*p*d*l-o*v*f,b=-m*u*o+v*p*d*o+l*v*f,R=u*f,w=-f*d*l-o*p,L=-f*d*o+p*l;if(e===Bl.Into2000)return new zp([[x,S,_],[T,E,b],[R,w,L]]);if(e===Bl.From2000)return new zp([[x,T,R],[S,E,w],[_,b,L]]);throw"Invalid precess direction"}function goe(n){const e=.779057273264+.00273781191135448*n.ut,t=n.ut%1;let i=360*((e+t)%1);return i<0&&(i+=360),i}let Ex;function voe(n){if(!Ex||Ex.tt!==n.tt){const e=n.tt/36525;let t=15*PB(n).ee;const i=goe(n);let r=((t+.014506+((((-368e-10*e-29956e-9)*e-44e-8)*e+1.3915817)*e+4612.156534)*e)/3600+i)%360/15;r<0&&(r+=24),Ex={tt:n.tt,st:r}}return Ex.st}function _oe(n){const e=sd(n);return voe(e)}function xoe(n,e){const t=PB(n),i=t.mobl*Xh,r=t.tobl*Xh,a=t.dpsi*Wf,s=Math.cos(i),o=Math.sin(i),l=Math.cos(r),u=Math.sin(r),d=Math.cos(a),f=Math.sin(a),p=d,m=-f*s,v=-f*o,x=f*l,S=d*s*l+o*u,_=d*o*l-s*u,T=f*u,E=d*s*u-o*l,b=d*o*u+s*l;if(e===Bl.From2000)return new zp([[p,x,T],[m,S,E],[v,_,b]]);if(e===Bl.Into2000)return new zp([[p,m,v],[x,S,_],[T,E,b]]);throw"Invalid precess direction"}let Js=class{constructor(e,t,i,r){this.x=e,this.y=t,this.z=i,this.t=r}Length(){return Math.hypot(this.x,this.y,this.z)}};class yoe{constructor(e,t,i,r,a,s,o){this.x=e,this.y=t,this.z=i,this.vx=r,this.vy=a,this.vz=s,this.t=o}}let Soe=class{constructor(e,t,i){this.lat=m1(e),this.lon=m1(t),this.dist=m1(i)}};class zp{constructor(e){this.rot=e}}function RA(n){const e=sd(n),t=foe(e),i=t.distance_au*Math.cos(t.geo_eclip_lat),r=[i*Math.cos(t.geo_eclip_lon),i*Math.sin(t.geo_eclip_lon),t.distance_au*Math.sin(t.geo_eclip_lat)],a=doe(e,r),s=moe(a,e,Bl.Into2000);return new Js(s[0],s[1],s[2],e)}function ap(n,e,t){let i=1,r=0;for(let a of n){let s=0;for(let[l,u,d]of a)s+=l*Math.cos(u+e*d);let o=i*s;t&&(o%=gl),r+=o,i*=e}return r}function cM(n,e){let t=1,i=0,r=0,a=0;for(let s of n){let o=0,l=0;for(let[u,d,f]of s){let p=d+e*f;o+=u*f*Math.sin(p),a>0&&(l+=u*Math.cos(p))}r+=a*i*l-t*o,i=t,t*=e,++a}return r}const L0=365250,CA=0,DA=1,NA=2;function OA(n){return new qh(n[0]+44036e-11*n[1]-190919e-12*n[2],-479966e-12*n[0]+.917482137087*n[1]-.397776982902*n[2],.397776982902*n[1]+.917482137087*n[2])}function BB(n,e,t){const i=t*Math.cos(e),r=Math.cos(n),a=Math.sin(n);return[i*r,i*a,t*Math.sin(e)]}function g1(n,e){const t=e.tt/L0,i=ap(n[CA],t,!0),r=ap(n[DA],t,!1),a=ap(n[NA],t,!1),s=BB(i,r,a);return OA(s).ToAstroVector(e)}function Toe(n,e){const t=e/L0,i=ap(n[CA],t,!0),r=ap(n[DA],t,!1),a=ap(n[NA],t,!1),s=cM(n[CA],t),o=cM(n[DA],t),l=cM(n[NA],t),u=Math.cos(i),d=Math.sin(i),f=Math.cos(r),p=Math.sin(r),m=+(l*f*u)-a*p*u*o-a*f*d*s,v=+(l*f*d)-a*p*d*o+a*f*u*s,x=+(l*p)+a*f*o,S=BB(i,r,a),_=[m/L0,v/L0,x/L0],T=OA(S),E=OA(_);return new Yh(e,T,E)}function bx(n,e,t,i){const r=i/(i+$R),a=g1(Xf[t],e);n.x+=r*a.x,n.y+=r*a.y,n.z+=r*a.z}function Eoe(n){const e=new Js(0,0,0,n);return bx(e,n,kn.Jupiter,bA),bx(e,n,kn.Saturn,MA),bx(e,n,kn.Uranus,AA),bx(e,n,kn.Neptune,wA),e}const LA=51,boe=29200,qf=146,vl=201,vh=[[-73e4,[-26.118207232108,-14.376168177825,3.384402515299],[.0016339372163656,-.0027861699588508,-.0013585880229445]],[-700800,[41.974905202127,-.448502952929,-12.770351505989],[.00073458569351457,.0022785014891658,.00048619778602049]],[-671600,[14.706930780744,44.269110540027,9.353698474772],[-.00210001479998,.00022295915939915,.00070143443551414]],[-642400,[-29.441003929957,-6.43016153057,6.858481011305],[.00084495803960544,-.0030783914758711,-.0012106305981192]],[-613200,[39.444396946234,-6.557989760571,-13.913760296463],[.0011480029005873,.0022400006880665,.00035168075922288]],[-584e3,[20.2303809507,43.266966657189,7.382966091923],[-.0019754081700585,.00053457141292226,.00075929169129793]],[-554800,[-30.65832536462,2.093818874552,9.880531138071],[61010603013347e-18,-.0031326500935382,-.00099346125151067]],[-525600,[35.737703251673,-12.587706024764,-14.677847247563],[.0015802939375649,.0021347678412429,.00019074436384343]],[-496400,[25.466295188546,41.367478338417,5.216476873382],[-.0018054401046468,.0008328308359951,.00080260156912107]],[-467200,[-29.847174904071,10.636426313081,12.297904180106],[-.00063257063052907,-.0029969577578221,-.00074476074151596]],[-438e3,[30.774692107687,-18.236637015304,-14.945535879896],[.0020113162005465,.0019353827024189,-20937793168297e-19]],[-408800,[30.243153324028,38.656267888503,2.938501750218],[-.0016052508674468,.0011183495337525,.00083333973416824]],[-379600,[-27.288984772533,18.643162147874,14.023633623329],[-.0011856388898191,-.0027170609282181,-.00049015526126399]],[-350400,[24.519605196774,-23.245756064727,-14.626862367368],[.0024322321483154,.0016062008146048,-.00023369181613312]],[-321200,[34.505274805875,35.125338586954,.557361475637],[-.0013824391637782,.0013833397561817,.00084823598806262]],[-292e3,[-23.275363915119,25.818514298769,15.055381588598],[-.0016062295460975,-.0023395961498533,-.00024377362639479]],[-262800,[17.050384798092,-27.180376290126,-13.608963321694],[.0028175521080578,.0011358749093955,-.00049548725258825]],[-233600,[38.093671910285,30.880588383337,-1.843688067413],[-.0011317697153459,.0016128814698472,.00084177586176055]],[-204400,[-18.197852930878,31.932869934309,15.438294826279],[-.0019117272501813,-.0019146495909842,-19657304369835e-18]],[-175200,[8.528924039997,-29.618422200048,-11.805400994258],[.0031034370787005,.0005139363329243,-.00077293066202546]],[-146e3,[40.94685725864,25.904973592021,-4.256336240499],[-.00083652705194051,.0018129497136404,.0008156422827306]],[-116800,[-12.326958895325,36.881883446292,15.217158258711],[-.0021166103705038,-.001481442003599,.00017401209844705]],[-87600,[-.633258375909,-30.018759794709,-9.17193287495],[.0032016994581737,-.00025279858672148,-.0010411088271861]],[-58400,[42.936048423883,20.344685584452,-6.588027007912],[-.00050525450073192,.0019910074335507,.00077440196540269]],[-29200,[-5.975910552974,40.61180995846,14.470131723673],[-.0022184202156107,-.0010562361130164,.00033652250216211]],[0,[-9.875369580774,-27.978926224737,-5.753711824704],[.0030287533248818,-.0011276087003636,-.0012651326732361]],[29200,[43.958831986165,14.214147973292,-8.808306227163],[-.00014717608981871,.0021404187242141,.00071486567806614]],[58400,[.67813676352,43.094461639362,13.243238780721],[-.0022358226110718,-.00063233636090933,.00047664798895648]],[87600,[-18.282602096834,-23.30503958666,-1.766620508028],[.0025567245263557,-.0019902940754171,-.0013943491701082]],[116800,[43.873338744526,7.700705617215,-10.814273666425],[.00023174803055677,.0022402163127924,.00062988756452032]],[146e3,[7.392949027906,44.382678951534,11.629500214854],[-.002193281545383,-.00021751799585364,.00059556516201114]],[175200,[-24.981690229261,-16.204012851426,2.466457544298],[.001819398914958,-.0026765419531201,-.0013848283502247]],[204400,[42.530187039511,.845935508021,-12.554907527683],[.00065059779150669,.0022725657282262,.00051133743202822]],[233600,[13.999526486822,44.462363044894,9.669418486465],[-.0021079296569252,.00017533423831993,.00069128485798076]],[262800,[-29.184024803031,-7.371243995762,6.493275957928],[.00093581363109681,-.0030610357109184,-.0012364201089345]],[292e3,[39.831980671753,-6.078405766765,-13.909815358656],[.0011117769689167,.0022362097830152,.00036230548231153]],[321200,[20.294955108476,43.417190420251,7.450091985932],[-.0019742157451535,.00053102050468554,.00075938408813008]],[350400,[-30.66999230216,2.318743558955,9.973480913858],[45605107450676e-18,-.0031308219926928,-.00099066533301924]],[379600,[35.626122155983,-12.897647509224,-14.777586508444],[.0016015684949743,.0021171931182284,.00018002516202204]],[408800,[26.133186148561,41.232139187599,5.00640132622],[-.0017857704419579,.00086046232702817,.00080614690298954]],[438e3,[-29.57674022923,11.863535943587,12.631323039872],[-.00072292830060955,-.0029587820140709,-.000708242964503]],[467200,[29.910805787391,-19.159019294,-15.013363865194],[.0020871080437997,.0018848372554514,-38528655083926e-18]],[496400,[31.375957451819,38.050372720763,2.433138343754],[-.0015546055556611,.0011699815465629,.00083565439266001]],[525600,[-26.360071336928,20.662505904952,14.414696258958],[-.0013142373118349,-.0026236647854842,-.00042542017598193]],[554800,[22.599441488648,-24.508879898306,-14.484045731468],[.0025454108304806,.0014917058755191,-.00030243665086079]],[584e3,[35.877864013014,33.894226366071,-.224524636277],[-.0012941245730845,.0014560427668319,.00084762160640137]],[613200,[-21.538149762417,28.204068269761,15.321973799534],[-.001731211740901,-.0021939631314577,-.0001631691327518]],[642400,[13.971521374415,-28.339941764789,-13.083792871886],[.0029334630526035,.00091860931752944,-.00059939422488627]],[671600,[39.526942044143,28.93989736011,-2.872799527539],[-.0010068481658095,.001702113288809,.00083578230511981]],[700800,[-15.576200701394,34.399412961275,15.466033737854],[-.0020098814612884,-.0017191109825989,70414782780416e-18]],[73e4,[4.24325283709,-30.118201690825,-10.707441231349],[.0031725847067411,.0001609846120227,-.00090672150593868]]];let qh=class _l{constructor(e,t,i){this.x=e,this.y=t,this.z=i}clone(){return new _l(this.x,this.y,this.z)}ToAstroVector(e){return new Js(this.x,this.y,this.z,e)}static zero(){return new _l(0,0,0)}quadrature(){return this.x*this.x+this.y*this.y+this.z*this.z}add(e){return new _l(this.x+e.x,this.y+e.y,this.z+e.z)}sub(e){return new _l(this.x-e.x,this.y-e.y,this.z-e.z)}incr(e){this.x+=e.x,this.y+=e.y,this.z+=e.z}decr(e){this.x-=e.x,this.y-=e.y,this.z-=e.z}mul(e){return new _l(e*this.x,e*this.y,e*this.z)}div(e){return new _l(this.x/e,this.y/e,this.z/e)}mean(e){return new _l((this.x+e.x)/2,(this.y+e.y)/2,(this.z+e.z)/2)}neg(){return new _l(-this.x,-this.y,-this.z)}};class Yh{constructor(e,t,i){this.tt=e,this.r=t,this.v=i}clone(){return new Yh(this.tt,this.r,this.v)}sub(e){return new Yh(this.tt,this.r.sub(e.r),this.v.sub(e.v))}}function Moe(n){let[e,[t,i,r],[a,s,o]]=n;return new Yh(e,new qh(t,i,r),new qh(a,s,o))}function Mx(n,e,t,i){const r=i/(i+$R),a=Toe(Xf[t],e);return n.r.incr(a.r.mul(r)),n.v.incr(a.v.mul(r)),a}function s0(n,e,t){const i=t.sub(n),r=i.quadrature();return i.mul(e/(r*Math.sqrt(r)))}class eC{constructor(e){let t=new Yh(e,new qh(0,0,0),new qh(0,0,0));this.Jupiter=Mx(t,e,kn.Jupiter,bA),this.Saturn=Mx(t,e,kn.Saturn,MA),this.Uranus=Mx(t,e,kn.Uranus,AA),this.Neptune=Mx(t,e,kn.Neptune,wA),this.Jupiter.r.decr(t.r),this.Jupiter.v.decr(t.v),this.Saturn.r.decr(t.r),this.Saturn.v.decr(t.v),this.Uranus.r.decr(t.r),this.Uranus.v.decr(t.v),this.Neptune.r.decr(t.r),this.Neptune.v.decr(t.v),this.Sun=new Yh(e,t.r.mul(-1),t.v.mul(-1))}Acceleration(e){let t=s0(e,$R,this.Sun.r);return t.incr(s0(e,bA,this.Jupiter.r)),t.incr(s0(e,MA,this.Saturn.r)),t.incr(s0(e,AA,this.Uranus.r)),t.incr(s0(e,wA,this.Neptune.r)),t}}let FB=class HB{constructor(e,t,i,r){this.tt=e,this.r=t,this.v=i,this.a=r}clone(){return new HB(this.tt,this.r.clone(),this.v.clone(),this.a.clone())}},VB=class{constructor(e,t){this.bary=e,this.grav=t}};function Jy(n,e,t,i){return new qh(e.x+n*(t.x+n*i.x/2),e.y+n*(t.y+n*i.y/2),e.z+n*(t.z+n*i.z/2))}function h5(n,e,t){return new qh(e.x+n*t.x,e.y+n*t.y,e.z+n*t.z)}function IA(n,e){const t=n-e.tt,i=new eC(n),r=Jy(t,e.r,e.v,e.a),a=i.Acceleration(r).mean(e.a),s=Jy(t,e.r,e.v,a),o=e.v.add(a.mul(t)),l=i.Acceleration(s),u=new FB(n,s,o,l);return new VB(i,u)}const Aoe=[];function GB(n,e){const t=Math.floor(n);return t<0?0:t>=e?e-1:t}function UA(n){const e=Moe(n),t=new eC(e.tt),i=e.r.add(t.Sun.r),r=e.v.add(t.Sun.v),a=t.Acceleration(i),s=new FB(e.tt,i,r,a);return new VB(t,s)}function woe(n,e){const t=vh[0][0];if(evh[LA-1][0])return null;const i=GB((e-t)/boe,LA-1);if(!n[i]){const a=n[i]=[];a[0]=UA(vh[i]).grav,a[vl-1]=UA(vh[i+1]).grav;let s,o=a[0].tt;for(s=1;s0;--s)r[s]=IA(o-=qf,r[s+1]).grav;for(s=vl-2;s>0;--s){const l=s/(vl-1);a[s].r=a[s].r.mul(1-l).add(r[s].r.mul(l)),a[s].v=a[s].v.mul(1-l).add(r[s].v.mul(l)),a[s].a=a[s].a.mul(1-l).add(r[s].a.mul(l))}}return n[i]}function d5(n,e,t){let i=UA(n);const r=Math.ceil((e-i.grav.tt)/t);for(let a=0;a1)throw"Object is too distant for light-travel solver.";const o=e.AddDays(-s);if(i=Math.abs(o.tt-t.tt),i<1e-9)return a;t=o}throw`Light-travel time solver did not converge: dt = ${i}`}class Doe{constructor(e,t,i,r){this.observerBody=e,this.targetBody=t,this.aberration=i,this.observerPos=r}Position(e){this.aberration&&(this.observerPos=lg(this.observerBody,e));const t=lg(this.targetBody,e);return new Js(t.x-this.observerPos.x,t.y-this.observerPos.y,t.z-this.observerPos.z,e)}}function Noe(n,e,t,i){const r=sd(n);if(IB(t)){const o=lg(t,r),l=lg(e,r);return new Js(o.x-l.x,o.y-l.y,o.z-l.z,r)}let a;a=lg(e,r);const s=new Doe(e,t,i,a);return Coe(o=>s.Position(o),r)}function Ooe(n,e,t){const i=sd(e);switch(n){case kn.Earth:return new Js(0,0,0,i);case kn.Moon:return RA(i);default:const r=Noe(i,kn.Earth,n,t);return r.t=i,r}}var f5;(function(n){n[n.Pericenter=0]="Pericenter",n[n.Apocenter=1]="Apocenter"})(f5||(f5={}));function Loe(n,e){return new zp([[e.rot[0][0]*n.rot[0][0]+e.rot[1][0]*n.rot[0][1]+e.rot[2][0]*n.rot[0][2],e.rot[0][1]*n.rot[0][0]+e.rot[1][1]*n.rot[0][1]+e.rot[2][1]*n.rot[0][2],e.rot[0][2]*n.rot[0][0]+e.rot[1][2]*n.rot[0][1]+e.rot[2][2]*n.rot[0][2]],[e.rot[0][0]*n.rot[1][0]+e.rot[1][0]*n.rot[1][1]+e.rot[2][0]*n.rot[1][2],e.rot[0][1]*n.rot[1][0]+e.rot[1][1]*n.rot[1][1]+e.rot[2][1]*n.rot[1][2],e.rot[0][2]*n.rot[1][0]+e.rot[1][2]*n.rot[1][1]+e.rot[2][2]*n.rot[1][2]],[e.rot[0][0]*n.rot[2][0]+e.rot[1][0]*n.rot[2][1]+e.rot[2][0]*n.rot[2][2],e.rot[0][1]*n.rot[2][0]+e.rot[1][1]*n.rot[2][1]+e.rot[2][1]*n.rot[2][2],e.rot[0][2]*n.rot[2][0]+e.rot[1][2]*n.rot[2][1]+e.rot[2][2]*n.rot[2][2]]])}function Ioe(n,e,t){const i=m1(t)*Xh,r=Math.cos(i),a=Math.sin(i),s=(e+1)%3,o=(e+2)%3,l=e;let u=[[0,0,0],[0,0,0],[0,0,0]];return u[s][s]=r*n.rot[s][s]-a*n.rot[s][o],u[s][o]=a*n.rot[s][s]+r*n.rot[s][o],u[s][l]=n.rot[s][l],u[o][s]=r*n.rot[o][s]-a*n.rot[o][o],u[o][o]=a*n.rot[o][s]+r*n.rot[o][o],u[o][l]=n.rot[o][l],u[l][s]=r*n.rot[l][s]-a*n.rot[l][o],u[l][o]=a*n.rot[l][s]+r*n.rot[l][o],u[l][l]=n.rot[l][l],new zp(u)}function Uoe(n,e){e=sd(e);const t=n.lat*Xh,i=n.lon*Xh,r=n.dist*Math.cos(t);return new Js(r*Math.cos(i),r*Math.sin(i),n.dist*Math.sin(t),e)}function Poe(n){n=sd(n);const e=zB(n,Bl.From2000),t=xoe(n,Bl.From2000);return Loe(e,t)}var p5;(function(n){n.Penumbral="penumbral",n.Partial="partial",n.Annular="annular",n.Total="total"})(p5||(p5={}));var m5;(function(n){n[n.Invalid=0]="Invalid",n[n.Ascending=1]="Ascending",n[n.Descending=-1]="Descending"})(m5||(m5={}));function tC(n){return n instanceof Yc?n:new Yc(n instanceof Date?n:new Date(n))}function zoe(n,e=new D){const{x:t,y:i,z:r}=n;return e.set(t,i,r)}function Boe(n,e=new Me){const[t,i,r]=n.rot;return e.set(t[0],i[0],r[0],0,t[1],i[1],r[1],0,t[2],i[2],r[2],0,0,0,0,1)}function Foe(n,e=new Me){const t=tC(n),i=Ioe(Poe(t),2,-15*_oe(t));return Boe(i,e)}function kB(n,e,t,i,r){const a=Ooe(n,e,!1);return zoe(a,t),i!=null,t.normalize()}function Hoe(n,e=new D,t){return kB(kn.Sun,tC(n),e,t)}function Voe(n,e=new D,t){return kB(kn.Moon,tC(n),e,t)}const Goe=`precision highp float; precision highp sampler3D; #include "bruneton/definitions" @@ -10323,7 +10323,7 @@ void mainImage(const vec4 inputColor, const vec2 uv, out vec4 outputColor) { outputColor.a = inputColor.a * (1.0 - clouds.a) + clouds.a; #endif // SKIP_RENDERING } -`;var Kle=Object.defineProperty,Jle=(n,e,t,i)=>{for(var r=void 0,a=n.length-1,s;a>=0;a--)(s=n[a])&&(r=s(e,t,r)||r);return r&&Kle(e,t,r),r};const l0=new D,$le=new re,ece=new Mt,tce=["maxIterationCount","minStepSize","maxStepSize","maxRayDistance","perspectiveStepScale","minDensity","minExtinction","minTransmittance","maxIterationCountToSun","maxIterationCountToGround","minSecondaryStepSize","secondaryStepScale","maxShadowFilterRadius","maxShadowLengthIterationCount","minShadowLengthStepSize","maxShadowLengthRayDistance","hazeDensityScale","hazeExponent","hazeScatteringCoefficient","hazeAbsorptionCoefficient"],nce=["multiScatteringOctaves","accurateSunSkyLight","accuratePhaseFunction"],ice=["maxIterationCount","minStepSize","maxStepSize","minDensity","minExtinction","minTransmittance","opticalDepthTailScale"],rce=["temporalJitter"],ace=["temporalPass"],sce=["cascadeCount","mapSize","maxFar","farScale","splitMode","splitLambda"],ol={type:"change"},sF={resolutionScale:Ut.resolutionScale,width:Rs.AUTO_SIZE,height:Rs.AUTO_SIZE};class oF extends Ug{constructor(e=new ou,t,i=mv.DEFAULT){var d,f,p,m;super("CloudsEffect",Qle,{attributes:Dl.DEPTH,uniforms:new Map([["cloudsBuffer",new $(null)]])}),this.camera=e,this.atmosphere=i,this.cloudLayers=eS.DEFAULT.clone(),this.correctAltitude=!0,this.localWeatherRepeat=new re().setScalar(100),this.localWeatherOffset=new re,this.shapeRepeat=new D().setScalar(3e-4),this.shapeOffset=new D,this.shapeDetailRepeat=new D().setScalar(.006),this.shapeDetailOffset=new D,this.turbulenceRepeat=new re().setScalar(20),this.worldToECEFMatrix=new Me,this.ecefToWorldMatrix=new Me,this.altitudeCorrection=new D,this.sunDirection=new D,this.localWeatherVelocity=new re,this.shapeVelocity=new D,this.shapeDetailVelocity=new D,this._atmosphereOverlay=null,this._atmosphereShadow=null,this._atmosphereShadowLength=null,this.events=new Mi,this.frame=0,this.shadowCascadeCount=0,this.shadowMapSize=new re,this.onResolutionChange=()=>{this.setSize(this.resolution.baseWidth,this.resolution.baseHeight)},this.skipRendering=!0;const{resolutionScale:r,width:a,height:s,resolutionX:o=a,resolutionY:l=s}={...sF,...t};this.shadowMaps=new Ele({cascadeCount:Ut.shadow.cascadeCount,mapSize:Ut.shadow.mapSize,splitLambda:.6}),this.parameterUniforms=qle({localWeatherTexture:((d=this.proceduralLocalWeather)==null?void 0:d.texture)??null,localWeatherRepeat:this.localWeatherRepeat,localWeatherOffset:this.localWeatherOffset,shapeTexture:((f=this.proceduralShape)==null?void 0:f.texture)??null,shapeRepeat:this.shapeRepeat,shapeOffset:this.shapeOffset,shapeDetailTexture:((p=this.proceduralShapeDetail)==null?void 0:p.texture)??null,shapeDetailRepeat:this.shapeDetailRepeat,shapeDetailOffset:this.shapeDetailOffset,turbulenceTexture:((m=this.proceduralTurbulence)==null?void 0:m.texture)??null,turbulenceRepeat:this.turbulenceRepeat}),this.layerUniforms=Yle(),this.atmosphereUniforms=Zle(i,{worldToECEFMatrix:this.worldToECEFMatrix,ecefToWorldMatrix:this.ecefToWorldMatrix,altitudeCorrection:this.altitudeCorrection,sunDirection:this.sunDirection});const u={shadow:this.shadowMaps,parameterUniforms:this.parameterUniforms,layerUniforms:this.layerUniforms,atmosphereUniforms:this.atmosphereUniforms};this.shadowPass=new Xle(u),this.shadowPass.mainCamera=e,this.cloudsPass=new Ule(u,i),this.cloudsPass.mainCamera=e,this.clouds=a5(s5({},this.cloudsPass.currentMaterial,tce),this.cloudsPass.currentMaterial,nce),this.shadow=a5(s5({},this.shadowPass.currentMaterial,ice),this.shadowPass.currentMaterial,rce,this.shadowPass,ace,this.shadowMaps,sce),this.resolution=new Rs(this,o,l,r),this.resolution.addEventListener("change",this.onResolutionChange)}get mainCamera(){return this.camera}set mainCamera(e){this.camera=e,this.shadowPass.mainCamera=e,this.cloudsPass.mainCamera=e}initialize(e,t,i){this.shadowPass.initialize(e,t,i),this.cloudsPass.initialize(e,t,i)}updateSharedUniforms(e){jle(this.layerUniforms,this.cloudLayers);const{parameterUniforms:t}=this;t.localWeatherOffset.value.add($le.copy(this.localWeatherVelocity).multiplyScalar(e)),t.shapeOffset.value.add(l0.copy(this.shapeVelocity).multiplyScalar(e)),t.shapeDetailOffset.value.add(l0.copy(this.shapeDetailVelocity).multiplyScalar(e));const i=this.worldToECEFMatrix;this.ecefToWorldMatrix.copy(i).invert();const r=this.camera.getWorldPosition(l0).applyMatrix4(this.worldToECEFMatrix),a=this.altitudeCorrection;this.correctAltitude?KR(r,this.atmosphere.bottomRadius,this.ellipsoid,a):a.setScalar(0);const s=this.ellipsoid.getSurfaceNormal(r,l0),o=this.sunDirection.dot(s),l=SB(1e6,1e3,o),u=ece.setFromMatrix4(i).transpose();this.shadowMaps.update(this.camera,l0.copy(this.sunDirection).applyMatrix3(u),l)}updateWeatherTextureChannels(){const e=this.cloudLayers.localWeatherChannels;this.cloudsPass.currentMaterial.localWeatherChannels=e,this.shadowPass.currentMaterial.localWeatherChannels=e}updateAtmosphereComposition(){const{shadowMaps:e,shadowPass:t,cloudsPass:i}=this,r=t.currentMaterial.uniforms,a=i.currentMaterial.uniforms,s=this._atmosphereOverlay,o=Object.assign(this._atmosphereOverlay??{},{map:i.outputBuffer});s!==o&&(this._atmosphereOverlay=o,ol.target=this,ol.property="atmosphereOverlay",this.events.dispatchEvent(ol));const l=this._atmosphereShadow,u=Object.assign(this._atmosphereShadow??{},{map:t.outputBuffer,mapSize:e.mapSize,cascadeCount:e.cascadeCount,intervals:a.shadowIntervals.value,matrices:a.shadowMatrices.value,inverseMatrices:r.inverseShadowMatrices.value,far:e.far,topHeight:a.shadowTopHeight.value});l!==u&&(this._atmosphereShadow=u,ol.target=this,ol.property="atmosphereShadow",this.events.dispatchEvent(ol));const d=this._atmosphereShadowLength,f=i.shadowLengthBuffer!=null?Object.assign(this._atmosphereShadowLength??{},{map:i.shadowLengthBuffer}):null;d!==f&&(this._atmosphereShadowLength=f,ol.target=this,ol.property="atmosphereShadowLength",this.events.dispatchEvent(ol))}update(e,t,i=0){var o,l,u,d;const{shadowMaps:r,shadowPass:a,cloudsPass:s}=this;if(r.cascadeCount!==this.shadowCascadeCount||!r.mapSize.equals(this.shadowMapSize)){const{width:f,height:p}=r.mapSize,m=r.cascadeCount;this.shadowMapSize.set(f,p),this.shadowCascadeCount=m,a.setSize(f,p,m),s.setShadowSize(f,p,m)}(o=this.proceduralLocalWeather)==null||o.render(e,i),(l=this.proceduralShape)==null||l.render(e,i),(u=this.proceduralShapeDetail)==null||u.render(e,i),(d=this.proceduralTurbulence)==null||d.render(e,i),++this.frame,this.updateSharedUniforms(i),this.updateWeatherTextureChannels(),a.update(e,this.frame,i),s.shadowBuffer=a.outputBuffer,s.update(e,this.frame,i),this.updateAtmosphereComposition(),this.uniforms.get("cloudsBuffer").value=this.cloudsPass.outputBuffer}setSize(e,t){const{resolution:i}=this;i.setBaseSize(e,t);const{width:r,height:a}=i;this.cloudsPass.setSize(r,a)}setDepthTexture(e,t){this.shadowPass.setDepthTexture(e,t),this.cloudsPass.setDepthTexture(e,t)}set qualityPreset(e){const{clouds:t,shadow:i,...r}=Mle[e];Object.assign(this,r),Object.assign(this.clouds,t),Object.assign(this.shadow,i)}get localWeatherTexture(){return this.proceduralLocalWeather??this.parameterUniforms.localWeatherTexture.value}set localWeatherTexture(e){e instanceof In||e==null?(this.proceduralLocalWeather=void 0,this.parameterUniforms.localWeatherTexture.value=e):(this.proceduralLocalWeather=e,this.parameterUniforms.localWeatherTexture.value=e.texture)}get shapeTexture(){return this.proceduralShape??this.parameterUniforms.shapeTexture.value}set shapeTexture(e){e instanceof ws||e==null?(this.proceduralShape=void 0,this.parameterUniforms.shapeTexture.value=e):(this.proceduralShape=e,this.parameterUniforms.shapeTexture.value=e.texture)}get shapeDetailTexture(){return this.proceduralShapeDetail??this.parameterUniforms.shapeDetailTexture.value}set shapeDetailTexture(e){e instanceof ws||e==null?(this.proceduralShapeDetail=void 0,this.parameterUniforms.shapeDetailTexture.value=e):(this.proceduralShapeDetail=e,this.parameterUniforms.shapeDetailTexture.value=e.texture)}get turbulenceTexture(){return this.proceduralTurbulence??this.parameterUniforms.turbulenceTexture.value}set turbulenceTexture(e){e instanceof In||e==null?(this.proceduralTurbulence=void 0,this.parameterUniforms.turbulenceTexture.value=e):(this.proceduralTurbulence=e,this.parameterUniforms.turbulenceTexture.value=e.texture)}get stbnTexture(){return this.cloudsPass.currentMaterial.uniforms.stbnTexture.value}set stbnTexture(e){this.cloudsPass.currentMaterial.uniforms.stbnTexture.value=e,this.shadowPass.currentMaterial.uniforms.stbnTexture.value=e}get resolutionScale(){return this.resolution.scale}set resolutionScale(e){this.resolution.scale=e}get temporalUpscale(){return this.cloudsPass.temporalUpscale}set temporalUpscale(e){this.cloudsPass.temporalUpscale=e}get lightShafts(){return this.cloudsPass.lightShafts}set lightShafts(e){this.cloudsPass.lightShafts=e}get shapeDetail(){return this.cloudsPass.currentMaterial.shapeDetail}set shapeDetail(e){this.cloudsPass.currentMaterial.shapeDetail=e,this.shadowPass.currentMaterial.shapeDetail=e}get turbulence(){return this.cloudsPass.currentMaterial.turbulence}set turbulence(e){this.cloudsPass.currentMaterial.turbulence=e,this.shadowPass.currentMaterial.turbulence=e}get haze(){return this.cloudsPass.currentMaterial.haze}set haze(e){this.cloudsPass.currentMaterial.haze=e}get scatteringCoefficient(){return this.parameterUniforms.scatteringCoefficient.value}set scatteringCoefficient(e){this.parameterUniforms.scatteringCoefficient.value=e}get absorptionCoefficient(){return this.parameterUniforms.absorptionCoefficient.value}set absorptionCoefficient(e){this.parameterUniforms.absorptionCoefficient.value=e}get coverage(){return this.parameterUniforms.coverage.value}set coverage(e){this.parameterUniforms.coverage.value=e}get turbulenceDisplacement(){return this.parameterUniforms.turbulenceDisplacement.value}set turbulenceDisplacement(e){this.parameterUniforms.turbulenceDisplacement.value=e}get scatterAnisotropy1(){return this.cloudsPass.currentMaterial.scatterAnisotropy1}set scatterAnisotropy1(e){this.cloudsPass.currentMaterial.scatterAnisotropy1=e}get scatterAnisotropy2(){return this.cloudsPass.currentMaterial.scatterAnisotropy2}set scatterAnisotropy2(e){this.cloudsPass.currentMaterial.scatterAnisotropy2=e}get scatterAnisotropyMix(){return this.cloudsPass.currentMaterial.scatterAnisotropyMix}set scatterAnisotropyMix(e){this.cloudsPass.currentMaterial.scatterAnisotropyMix=e}get skyIrradianceScale(){return this.skyLightScale}set skyIrradianceScale(e){this.skyLightScale=e}get skyLightScale(){return this.cloudsPass.currentMaterial.uniforms.skyLightScale.value}set skyLightScale(e){this.cloudsPass.currentMaterial.uniforms.skyLightScale.value=e}get groundIrradianceScale(){return this.groundBounceScale}set groundIrradianceScale(e){this.groundBounceScale=e}get groundBounceScale(){return this.cloudsPass.currentMaterial.uniforms.groundBounceScale.value}set groundBounceScale(e){this.cloudsPass.currentMaterial.uniforms.groundBounceScale.value=e}get powderScale(){return this.cloudsPass.currentMaterial.uniforms.powderScale.value}set powderScale(e){this.cloudsPass.currentMaterial.uniforms.powderScale.value=e}get powderExponent(){return this.cloudsPass.currentMaterial.uniforms.powderExponent.value}set powderExponent(e){this.cloudsPass.currentMaterial.uniforms.powderExponent.value=e}get atmosphereOverlay(){return this._atmosphereOverlay}get atmosphereShadow(){return this._atmosphereShadow}get atmosphereShadowLength(){return this._atmosphereShadowLength}get irradianceTexture(){return this.cloudsPass.currentMaterial.irradianceTexture}set irradianceTexture(e){this.cloudsPass.currentMaterial.irradianceTexture=e}get scatteringTexture(){return this.cloudsPass.currentMaterial.scatteringTexture}set scatteringTexture(e){this.cloudsPass.currentMaterial.scatteringTexture=e}get transmittanceTexture(){return this.cloudsPass.currentMaterial.transmittanceTexture}set transmittanceTexture(e){this.cloudsPass.currentMaterial.transmittanceTexture=e}get singleMieScatteringTexture(){return this.cloudsPass.currentMaterial.singleMieScatteringTexture}set singleMieScatteringTexture(e){this.cloudsPass.currentMaterial.singleMieScatteringTexture=e}get higherOrderScatteringTexture(){return this.cloudsPass.currentMaterial.higherOrderScatteringTexture}set higherOrderScatteringTexture(e){this.cloudsPass.currentMaterial.higherOrderScatteringTexture=e}get ellipsoid(){return this.cloudsPass.currentMaterial.ellipsoid}set ellipsoid(e){this.cloudsPass.currentMaterial.ellipsoid=e}get sunAngularRadius(){return this.cloudsPass.currentMaterial.sunAngularRadius}set sunAngularRadius(e){this.cloudsPass.currentMaterial.sunAngularRadius=e}}Jle([gn("SKIP_RENDERING")],oF.prototype,"skipRendering");const oce=128,lce=32,bT="45a1c6c1bb9fd38b3680fd120795ff4c32df68ff",cce=`https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/${bT}/packages/clouds/assets/local_weather.png`,uce=`https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/${bT}/packages/clouds/assets/shape.bin`,hce=`https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/${bT}/packages/clouds/assets/shape_detail.bin`,dce=`https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/${bT}/packages/clouds/assets/turbulence.png`,lF=ie.createContext(null),fce=({layers:n,disableDefault:e=!1,children:t})=>{const[i,r]=ie.useState();return ie.useLayoutEffect(()=>{n.set(e?Array(4).fill(Ys.DEFAULT):eS.DEFAULT),r({layers:n,indexPool:[0,1,2,3],disableDefault:e})},[n,e]),i!=null&&ot.jsx(lF.Provider,{value:i,children:t})};function w5(n,e){const t=ie.useMemo(()=>typeof n=="string"?new ER().load(n,i=>{i.minFilter=m9,i.magFilter=Bt,i.wrapS=Ir,i.wrapT=Ir,i.colorSpace=Xr,i.needsUpdate=!0}):void 0,[n]);return ie.useEffect(()=>{if(t!=null)return()=>{t.dispose()}},[t]),(typeof n=="string"?t:n)??null}function R5(n,e){const t=ie.useMemo(()=>typeof n=="string"?new ch(ws,bB,{width:e,height:e,depth:e,format:Qs,minFilter:Bt,magFilter:Bt,wrapS:Ir,wrapT:Ir,wrapR:Ir,colorSpace:Xr}).load(n):void 0,[n,e]);return ie.useEffect(()=>{if(t!=null)return()=>{t.dispose()}},[t]),(typeof n=="string"?t:n)??null}function pce(n){const e=ie.useMemo(()=>typeof n=="string"?new MB().load(n):void 0,[n]);return ie.useEffect(()=>{if(e!=null)return()=>{e.dispose()}},[e]),(typeof n=="string"?e:n)??null}const mce=({ref:n,disableDefaultLayers:e=!1,localWeatherTexture:t=cce,shapeTexture:i=uce,shapeDetailTexture:r=hce,turbulenceTexture:a=dce,stbnTexture:s=Jz,children:o,...l})=>{const{textures:u,transientStates:d,...f}=ie.useContext(rC),[p,m]=YB({...sF,...f,...u,...l}),v=ie.useMemo(()=>new oF,[]);ie.useEffect(()=>()=>{v.dispose()},[v]),_a(()=>{d!=null&&(v.sunDirection.copy(d.sunDirection),v.worldToECEFMatrix.copy(d.worldToECEFMatrix))}),ie.useEffect(()=>{if(d!=null)return d.overlay=v.atmosphereOverlay,d.shadow=v.atmosphereShadow,d.shadowLength=v.atmosphereShadowLength,()=>{d.overlay=null,d.shadow=null,d.shadowLength=null}},[v,d]);const x=ie.useCallback(w=>{if(d!=null)switch(w.property){case"atmosphereOverlay":d.overlay=v.atmosphereOverlay;break;case"atmosphereShadow":d.shadow=v.atmosphereShadow;break;case"atmosphereShadowLength":d.shadowLength=v.atmosphereShadowLength;break}},[v,d]);ie.useEffect(()=>(v.events.addEventListener("change",x),()=>{v.events.removeEventListener("change",x)}),[v,x]),pn(({gl:w})=>w);const S=w5(t),_=R5(i,oce),T=R5(r,lce),E=w5(a),b=pce(s),{camera:R}=ie.useContext(HR);return ot.jsxs(ot.Fragment,{children:[ot.jsx("primitive",{ref:n,object:v,mainCamera:R,...p,localWeatherTexture:S,shapeTexture:_,shapeDetailTexture:T,turbulenceTexture:E,stbnTexture:b,...m}),ot.jsx(fce,{layers:v.cloudLayers,disableDefault:e,children:o})]})},gce=({ref:n,index:e,...t})=>{const i=ie.useContext(lF);if(i==null)throw new Error("CloudLayer can only be used within the Clouds component!");const{layers:r,indexPool:a,disableDefault:s}=i,[o,l]=ie.useState();if(ie.useLayoutEffect(()=>{if(e!=null){const u=a.indexOf(e);if(u!==-1)return a.splice(u,1),l(e),()=>{a.push(e),l(void 0)}}else{const u=a.sort((d,f)=>d-f).shift();if(u!=null)return l(u),()=>{a.push(u),l(void 0)}}},[e,r,a]),ie.useLayoutEffect(()=>{if(o==null)return;const u=r[o];return()=>{u.copy(s?Ys.DEFAULT:eS.DEFAULT[o])}},[r,o,s]),ie.useEffect(()=>{o!=null&&(typeof n=="function"?n(r[o]):n!=null&&(n.current=r[o]))},[n,r,o]),o!=null){const u=r[o];u.copy(s?Ys.DEFAULT:eS.DEFAULT[o]),u.set(t)}return null};class vce{get unloadPriorityCallback(){return this._unloadPriorityCallback}set unloadPriorityCallback(e){e.length===1?(console.warn('LRUCache: "unloadPriorityCallback" function has been changed to take two arguments.'),this._unloadPriorityCallback=(t,i)=>{const r=e(t),a=e(i);return ra?1:0}):this._unloadPriorityCallback=e}constructor(){this.minSize=6e3,this.maxSize=8e3,this.minBytesSize=.3*1073741824,this.maxBytesSize=.4*1073741824,this.unloadPercent=.05,this.autoMarkUnused=!0,this.itemSet=new Map,this.itemList=[],this.usedSet=new Set,this.callbacks=new Map,this.unloadingHandle=-1,this.cachedBytes=0,this.bytesMap=new Map,this.loadedSet=new Set,this._unloadPriorityCallback=null;const e=this.itemSet;this.defaultPriorityCallback=t=>e.get(t)}isFull(){return this.itemSet.size>=this.maxSize||this.cachedBytes>=this.maxBytesSize}getMemoryUsage(e){return this.bytesMap.get(e)||0}setMemoryUsage(e,t){const{bytesMap:i,itemSet:r}=this;r.has(e)&&(this.cachedBytes-=i.get(e)||0,i.set(e,t),this.cachedBytes+=t)}add(e,t){const i=this.itemSet;if(i.has(e)||this.isFull())return!1;const r=this.usedSet,a=this.itemList,s=this.callbacks;return a.push(e),r.add(e),i.set(e,Date.now()),s.set(e,t),!0}has(e){return this.itemSet.has(e)}remove(e){const t=this.usedSet,i=this.itemSet,r=this.itemList,a=this.bytesMap,s=this.callbacks,o=this.loadedSet;if(i.has(e)){this.cachedBytes-=a.get(e)||0,a.delete(e),s.get(e)(e);const l=r.indexOf(e);return r.splice(l,1),t.delete(e),i.delete(e),s.delete(e),o.delete(e),!0}return!1}setLoaded(e,t){const{itemSet:i,loadedSet:r}=this;i.has(e)&&(t===!0?r.add(e):r.delete(e))}markUsed(e){const t=this.itemSet,i=this.usedSet;t.has(e)&&!i.has(e)&&(t.set(e,Date.now()),i.add(e))}markUnused(e){this.usedSet.delete(e)}markAllUnused(){this.usedSet.clear()}unloadUnusedContent(){const{unloadPercent:e,minSize:t,maxSize:i,itemList:r,itemSet:a,usedSet:s,loadedSet:o,callbacks:l,bytesMap:u,minBytesSize:d,maxBytesSize:f}=this,p=r.length-s.size,m=r.length-o.size,v=Math.max(Math.min(r.length-t,p),0),x=this.cachedBytes-d,S=this.unloadPriorityCallback||this.defaultPriorityCallback;let _=!1;const T=v>0&&p>0||m&&r.length>i;if(p&&this.cachedBytes>d||m&&this.cachedBytes>f||T){r.sort((N,C)=>{const z=s.has(N),W=s.has(C);if(z===W){const K=o.has(N),oe=o.has(C);return K===oe?-S(N,C):K?1:-1}else return z?1:-1});const E=Math.max(t*e,v*e),b=Math.ceil(Math.min(E,p,v)),R=Math.max(e*x,e*d),w=Math.min(R,x);let L=0,U=0;for(;this.cachedBytes-U>f||r.length-L>i;){const N=r[L],C=u.get(N)||0;if(s.has(N)&&o.has(N)||this.cachedBytes-U-C=b)break;U+=C,L++}r.splice(0,L).forEach(N=>{this.cachedBytes-=u.get(N)||0,l.get(N)(N),u.delete(N),a.delete(N),l.delete(N),o.delete(N),s.delete(N)}),_=L0}_&&(this.unloadingHandle=requestAnimationFrame(()=>this.scheduleUnload()))}scheduleUnload(){cancelAnimationFrame(this.unloadingHandle),this.scheduled||(this.scheduled=!0,queueMicrotask(()=>{this.scheduled=!1,this.unloadUnusedContent()}))}}let fM=class{get running(){return this.items.length!==0||this.currJobs!==0}constructor(){this.maxJobs=6,this.items=[],this.callbacks=new Map,this.currJobs=0,this.scheduled=!1,this.autoUpdate=!0,this.priorityCallback=null,this.schedulingCallback=e=>{requestAnimationFrame(e)},this._runjobs=()=>{this.scheduled=!1,this.tryRunJobs()}}sort(){const e=this.priorityCallback,t=this.items;e!==null&&t.sort(e)}has(e){return this.callbacks.has(e)}add(e,t){const i={callback:t,reject:null,resolve:null,promise:null};return i.promise=new Promise((r,a)=>{const s=this.items,o=this.callbacks;i.resolve=r,i.reject=a,s.unshift(e),o.set(e,i),this.autoUpdate&&this.scheduleJobRun()}),i.promise}remove(e){const t=this.items,i=this.callbacks,r=t.indexOf(e);if(r!==-1){const a=i.get(e);a.promise.catch(()=>{}),a.reject(new Error("PriorityQueue: Item removed.")),t.splice(r,1),i.delete(e)}}removeByFilter(e){const{items:t}=this;for(let i=0;i{this.currJobs--,this.autoUpdate&&this.scheduleJobRun()};for(;i>this.currJobs&&e.length>0&&r0;){const r=i.pop(),a=i.pop(),s=i.pop();if(e&&e(s,a,r)){t&&t(s,a,r);return}const o=s.children;if(o)for(let l=o.length-1;l>=0;l--)i.push(o[l]),i.push(s),i.push(r+1);t&&t(s,a,r)}}function Bp(n){if(n===null||n.byteLength<4)return"";let e;if(n instanceof DataView?e=n:e=new DataView(n),String.fromCharCode(e.getUint8(0))==="{")return null;let t="";for(let i=0;i<4;i++)t+=String.fromCharCode(e.getUint8(i));return t}const xce=new TextDecoder;function uF(n){return xce.decode(n)}function sC(n){return n.replace(/[\\/][^\\/]+$/,"")+"/"}let MT=class{constructor(){this.fetchOptions={},this.workingPath=""}load(...e){return console.warn('Loader: "load" function has been deprecated in favor of "loadAsync".'),this.loadAsync(...e)}loadAsync(e){return fetch(e,this.fetchOptions).then(t=>{if(!t.ok)throw new Error(`Failed to load file "${e}" with status ${t.status} : ${t.statusText}`);return t.arrayBuffer()}).then(t=>(this.workingPath===""&&(this.workingPath=sC(e)),this.parse(t)))}resolveExternalURL(e){return new URL(e,this.workingPath).href}parse(e){throw new Error("LoaderBase: Parse not implemented.")}};function D5(n){if(!n)return null;let e=n.length;const t=n.indexOf("?"),i=n.indexOf("#");t!==-1&&(e=Math.min(e,t)),i!==-1&&(e=Math.min(e,i));const r=n.lastIndexOf(".",e),a=n.lastIndexOf("/",e),s=n.indexOf("://");return s!==-1&&s+2===a||r===-1||r0&&n.__depth+1>=e.maxDepth||!oC(n))}function pF(n,e){if(e.ensureChildrenArePreprocessed(n),cC(n,e),!n.__inFrustum)return;if(!yce(n,e)){GA(n,e);return}let t=!1,i=!1;const r=n.children;for(let a=0,s=r.length;as.setTileActive&&s.setTileActive(n,i)),n.__wasSetVisible!==r&&e.invokeOnePlugin(s=>s.setTileVisible&&s.setTileVisible(n,r))),n.__wasSetActive=i,n.__wasSetVisible=r,n.__usedLastFrame=t;const a=n.children;for(let s=0,o=a.length;s{e===null&&(e=requestAnimationFrame(()=>{e=null,n()}))}}const N5=Symbol("PLUGIN_REGISTERED"),O5=(n,e)=>{const t=n.priority||0,i=e.priority||0;return t!==i?t>i?1:-1:n.__used!==e.__used?n.__used?1:-1:n.__error!==e.__error?n.__error>e.__error?1:-1:n.__distanceFromCamera!==e.__distanceFromCamera?n.__distanceFromCamera>e.__distanceFromCamera?-1:1:n.__depthFromRenderedParent!==e.__depthFromRenderedParent?n.__depthFromRenderedParent>e.__depthFromRenderedParent?-1:1:0},Tce=(n,e)=>{const t=n.priority||0,i=e.priority||0;return t!==i?t>i?1:-1:n.__lastFrameVisited!==e.__lastFrameVisited?n.__lastFrameVisited>e.__lastFrameVisited?-1:1:n.__depthFromRenderedParent!==e.__depthFromRenderedParent?n.__depthFromRenderedParent>e.__depthFromRenderedParent?1:-1:n.__loadingState!==e.__loadingState?n.__loadingState>e.__loadingState?-1:1:n.__hasUnrenderableContent!==e.__hasUnrenderableContent?n.__hasUnrenderableContent?-1:1:n.__error!==e.__error?n.__error>e.__error?-1:1:0};let Ece=class{get root(){const e=this.rootTileSet;return e?e.root:null}get loadProgress(){const{stats:e,isLoading:t}=this,i=e.downloading+e.parsing,r=e.inCacheSinceLoad+(t?1:0);return r===0?1:1-i/r}get errorThreshold(){return this._errorThreshold}set errorThreshold(e){console.warn('TilesRenderer: The "errorThreshold" option has been deprecated.'),this._errorThreshold=e}constructor(e=null){this.rootLoadingState=gc,this.rootTileSet=null,this.rootURL=e,this.fetchOptions={},this.plugins=[],this.queuedTiles=[],this.cachedSinceLoadComplete=new Set,this.isLoading=!1;const t=new vce;t.unloadPriorityCallback=Tce;const i=new fM;i.maxJobs=25,i.priorityCallback=O5;const r=new fM;r.maxJobs=5,r.priorityCallback=O5;const a=new fM;a.maxJobs=25,this.processedTiles=new WeakSet,this.visibleTiles=new Set,this.activeTiles=new Set,this.usedSet=new Set,this.lruCache=t,this.downloadQueue=i,this.parseQueue=r,this.processNodeQueue=a,this.stats={inCacheSinceLoad:0,inCache:0,parsing:0,downloading:0,failed:0,inFrustum:0,used:0,active:0,visible:0},this.frameCount=0,this._dispatchNeedsUpdateEvent=Sce(()=>{this.dispatchEvent({type:"needs-update"})}),this.errorTarget=16,this._errorThreshold=1/0,this.displayActiveTiles=!1,this.maxDepth=1/0}registerPlugin(e){if(e[N5]===!0)throw new Error("TilesRendererBase: A plugin can only be registered to a single tile set");const t=this.plugins,i=e.priority||0;let r=t.length;for(let a=0;ai){r=a;break}t.splice(r,0,e),e[N5]=!0,e.init&&e.init(this)}unregisterPlugin(e){const t=this.plugins;if(typeof e=="string"&&(e=this.getPluginByName(e)),t.includes(e)){const i=t.indexOf(e);return t.splice(i,1),e.dispose&&e.dispose(),!0}return!1}getPluginByName(e){return this.plugins.find(t=>t.name===e)||null}traverse(e,t,i=!0){this.root&&cF(this.root,(r,...a)=>(i&&this.ensureChildrenArePreprocessed(r,!0),e?e(r,...a):!1),t)}queueTileForDownload(e){e.__loadingState!==gc||this.lruCache.isFull()||this.queuedTiles.push(e)}markTileUsed(e){this.usedSet.add(e),this.lruCache.markUsed(e)}update(){const{lruCache:e,usedSet:t,stats:i,root:r,downloadQueue:a,parseQueue:s,processNodeQueue:o}=this;if(this.rootLoadingState===gc&&(this.rootLoadingState=Ax,this.invokeOnePlugin(u=>u.loadRootTileSet&&u.loadRootTileSet()).then(u=>{let d=this.rootURL;d!==null&&this.invokeAllPlugins(f=>d=f.preprocessURL?f.preprocessURL(d,null):d),this.rootLoadingState=Bg,this.rootTileSet=u,this.dispatchEvent({type:"needs-update"}),this.dispatchEvent({type:"load-content"}),this.dispatchEvent({type:"load-tile-set",tileSet:u,url:d})}).catch(u=>{this.rootLoadingState=Yf,console.error(u),this.rootTileSet=null,this.dispatchEvent({type:"load-error",tile:null,error:u,url:this.rootURL})})),!r)return;i.inFrustum=0,i.used=0,i.active=0,i.visible=0,this.frameCount++,t.forEach(u=>e.markUnused(u)),t.clear(),pF(r,this),mF(r,this),gF(r,this),vF(r,this);const l=this.queuedTiles;l.sort(e.unloadPriorityCallback);for(let u=0,d=l.length;u{t.__loadingState===Yf&&(t.__loadingState=gc)},null,!1),e.failed=0)}dispose(){[...this.plugins].forEach(i=>{this.unregisterPlugin(i)});const e=this.lruCache,t=[];this.traverse(i=>(t.push(i),!1),null,!1);for(let i=0,r=t.length;it.setTileVisible&&t.setTileVisible(e,!1)),e.__visible=!1),e.__active&&(this.invokeOnePlugin(t=>t.setTileActive&&t.setTileActive(e,!1)),e.__active=!1)}preprocessNode(e,t,i=null){var r;if(this.processedTiles.add(e),e.content&&(!("uri"in e.content)&&"url"in e.content&&(e.content.uri=e.content.url,delete e.content.url),e.content.boundingVolume&&!("box"in e.content.boundingVolume||"sphere"in e.content.boundingVolume||"region"in e.content.boundingVolume)&&delete e.content.boundingVolume),e.parent=i,e.children=e.children||[],(r=e.content)!=null&&r.uri){const a=D5(e.content.uri);e.__hasContent=!0,e.__hasUnrenderableContent=!!(a&&/json$/.test(a)),e.__hasRenderableContent=!e.__hasUnrenderableContent}else e.__hasContent=!1,e.__hasUnrenderableContent=!1,e.__hasRenderableContent=!1;e.__childrenProcessed=0,i&&i.__childrenProcessed++,e.__distanceFromCamera=1/0,e.__error=1/0,e.__inFrustum=!1,e.__isLeaf=!1,e.__usedLastFrame=!1,e.__used=!1,e.__wasSetVisible=!1,e.__visible=!1,e.__allChildrenReady=!1,e.__wasSetActive=!1,e.__active=!1,e.__loadingState=gc,i===null?(e.__depth=0,e.__depthFromRenderedParent=e.__hasRenderableContent?1:0,e.refine=e.refine||"REPLACE"):(e.__depth=i.__depth+1,e.__depthFromRenderedParent=i.__depthFromRenderedParent+(e.__hasRenderableContent?1:0),e.refine=e.refine||i.refine),e.__basePath=t,e.__lastFrameVisited=-1,this.invokeAllPlugins(a=>{a!==this&&a.preprocessNode&&a.preprocessNode(e,t,i)})}setTileActive(e,t){t?this.activeTiles.add(e):this.activeTiles.delete(e)}setTileVisible(e,t){t?this.visibleTiles.add(e):this.visibleTiles.delete(e)}calculateTileViewError(e,t){}ensureChildrenArePreprocessed(e,t=!1){const i=e.children;for(let r=0,a=i.length;r{this.preprocessNode(o,e.__basePath,e),this._dispatchNeedsUpdateEvent()})}}getBytesUsed(e){let t=0;return this.invokeAllPlugins(i=>{i.calculateBytesUsed&&(t+=i.calculateBytesUsed(e,e.cached.scene)||0)}),t}recalculateBytesUsed(e=null){const{lruCache:t,processedTiles:i}=this;e===null?t.itemSet.forEach(r=>{i.has(r)&&t.setMemoryUsage(r,this.getBytesUsed(r))}):t.setMemoryUsage(e,this.getBytesUsed(e))}preprocessTileSet(e,t,i=null){const r=e.asset.version,[a,s]=r.split(".").map(l=>parseInt(l));console.assert(a<=1,"TilesRenderer: asset.version is expected to be a 1.x or a compatible version."),a===1&&s>0&&console.warn("TilesRenderer: tiles versions at 1.1 or higher have limited support. Some new extensions and features may not be supported.");let o=t.replace(/\/[^/]*$/,"");o=new URL(o,window.location.href).toString(),this.preprocessNode(e.root,o,i)}loadRootTileSet(){let e=this.rootURL;return this.invokeAllPlugins(t=>e=t.preprocessURL?t.preprocessURL(e,null):e),this.invokeOnePlugin(t=>t.fetchData&&t.fetchData(e,this.fetchOptions)).then(t=>{if(t instanceof Response){if(t.ok)return t.json();throw new Error(`TilesRenderer: Failed to load tileset "${e}" with status ${t.status} : ${t.statusText}`)}else return t}).then(t=>(this.preprocessTileSet(t,e),t))}requestTileContents(e){if(e.__loadingState!==gc)return;let t=!1,i=null,r=new URL(e.content.uri,e.__basePath+"/").toString();this.invokeAllPlugins(p=>r=p.preprocessURL?p.preprocessURL(r,e):r);const a=this.stats,s=this.lruCache,o=this.downloadQueue,l=this.parseQueue,u=D5(r),d=new AbortController,f=d.signal;if(s.add(e,p=>{d.abort(),t?(p.children.length=0,p.__childrenProcessed=0):this.invokeAllPlugins(m=>{m.disposeTile&&m.disposeTile(p)}),a.inCache--,this.cachedSinceLoadComplete.has(e)&&(this.cachedSinceLoadComplete.delete(e),a.inCacheSinceLoad--),p.__loadingState===Ax?a.downloading--:p.__loadingState===pM&&a.parsing--,p.__loadingState=gc,l.remove(p),o.remove(p)}))return this.isLoading||(this.isLoading=!0,this.dispatchEvent({type:"tiles-load-start"})),s.setMemoryUsage(e,this.getBytesUsed(e)),this.cachedSinceLoadComplete.add(e),a.inCacheSinceLoad++,a.inCache++,a.downloading++,e.__loadingState=Ax,o.add(e,p=>{if(f.aborted)return Promise.resolve();const m=this.invokeOnePlugin(v=>v.fetchData&&v.fetchData(r,{...this.fetchOptions,signal:f}));return this.dispatchEvent({type:"tile-download-start",tile:e}),m}).then(p=>{if(!f.aborted)if(p instanceof Response){if(p.ok)return u==="json"?p.json():p.arrayBuffer();throw new Error(`Failed to load model with error code ${p.status}`)}else return p}).then(p=>{if(!f.aborted)return a.downloading--,a.parsing++,e.__loadingState=pM,l.add(e,m=>f.aborted?Promise.resolve():u==="json"&&p.root?(this.preprocessTileSet(p,r,e),e.children.push(p.root),i=p,t=!0,Promise.resolve()):this.invokeOnePlugin(v=>v.parseTile&&v.parseTile(p,m,u,r,f)))}).then(()=>{if(f.aborted)return;a.parsing--,e.__loadingState=Bg,s.setLoaded(e,!0);const p=this.getBytesUsed(e);if(s.getMemoryUsage(e)===0&&p>0&&s.isFull()){s.remove(e);return}s.setMemoryUsage(e,p),this.dispatchEvent({type:"needs-update"}),this.dispatchEvent({type:"load-content"}),t&&this.dispatchEvent({type:"load-tile-set",tileSet:i,url:r}),e.cached.scene&&this.dispatchEvent({type:"load-model",scene:e.cached.scene,tile:e})}).catch(p=>{f.aborted||(p.name!=="AbortError"?(l.remove(e),o.remove(e),e.__loadingState===pM?a.parsing--:e.__loadingState===Ax&&a.downloading--,a.failed++,console.error(`TilesRenderer : Failed to load tile at url "${e.content.uri}".`),console.error(p),e.__loadingState=Yf,s.setLoaded(e,!0),this.dispatchEvent({type:"load-error",tile:e,error:p,url:r})):s.remove(e))})}getAttributions(e=[]){return this.invokeAllPlugins(t=>t!==this&&t.getAttributions&&t.getAttributions(e)),e}invokeOnePlugin(e){const t=[...this.plugins,this];for(let i=0;ie!=="extensions")}getData(e,t,i=null,r=null){const a=this.header;if(!(e in a))return null;const s=a[e];if(s instanceof Object){if(Array.isArray(s))return s;{const{buffer:o,binOffset:l,binLength:u}=this,d=s.byteOffset||0,f=s.type||r,p=s.componentType||i;if("type"in s&&r&&s.type!==r)throw new Error("FeatureTable: Specified type does not match expected type.");const m=l+d,v=_F(o,m,t,f,p,e);if(m+v.byteLength>l+u)throw new Error("FeatureTable: Feature data read outside binary body length.");return v}}else return s}getBuffer(e,t){const{buffer:i,binOffset:r}=this;return i.slice(r+e,r+e+t)}},bce=class{constructor(e){this.batchTable=e;const t=e.header.extensions["3DTILES_batch_table_hierarchy"];this.classes=t.classes;for(const r of this.classes){const a=r.instances;for(const s in a)r.instances[s]=this._parseProperty(a[s],r.length,s)}if(this.instancesLength=t.instancesLength,this.classIds=this._parseProperty(t.classIds,this.instancesLength,"classIds"),t.parentCounts?this.parentCounts=this._parseProperty(t.parentCounts,this.instancesLength,"parentCounts"):this.parentCounts=new Array(this.instancesLength).fill(1),t.parentIds){const r=this.parentCounts.reduce((a,s)=>a+s,0);this.parentIds=this._parseProperty(t.parentIds,r,"parentIds")}else this.parentIds=null;this.instancesIds=[];const i={};for(const r of this.classIds)i[r]=i[r]??0,this.instancesIds.push(i[r]),i[r]++}_parseProperty(e,t,i){if(Array.isArray(e))return e;{const{buffer:r,binOffset:a}=this.batchTable,s=e.byteOffset,o=e.componentType||"UNSIGNED_SHORT",l=a+s;return _F(r,l,t,"SCALAR",o,i)}}getDataFromId(e,t={}){const i=this.parentCounts[e];if(this.parentIds&&i>0){let l=0;for(let u=0;u=this.count)throw new Error(`BatchTable: id value "${e}" out of bounds for "${this.count}" features number.`);for(const i of this.getKeys())t[i]=super.getData(i,this.count)[e];for(const i in this.extensions){const r=this.extensions[i];r.getDataFromId instanceof Function&&(t[i]=t[i]||{},r.getDataFromId(e,t[i]))}return t}getPropertyArray(e){return super.getData(e,this.count)}},Mce=class extends MT{parse(e){const t=new DataView(e),i=Bp(t);console.assert(i==="b3dm");const r=t.getUint32(4,!0);console.assert(r===1);const a=t.getUint32(8,!0);console.assert(a===e.byteLength);const s=t.getUint32(12,!0),o=t.getUint32(16,!0),l=t.getUint32(20,!0),u=t.getUint32(24,!0),d=28,f=e.slice(d,d+s+o),p=new AT(f,0,s,o),m=d+s+o,v=e.slice(m,m+l+u),x=new uC(v,p.getData("BATCH_LENGTH"),0,l,u),S=m+l+u,_=new Uint8Array(e,S,a-S);return{version:r,featureTable:p,batchTable:x,glbBytes:_}}},Ace=class extends MT{parse(e){const t=new DataView(e),i=Bp(t);console.assert(i==="i3dm");const r=t.getUint32(4,!0);console.assert(r===1);const a=t.getUint32(8,!0);console.assert(a===e.byteLength);const s=t.getUint32(12,!0),o=t.getUint32(16,!0),l=t.getUint32(20,!0),u=t.getUint32(24,!0),d=t.getUint32(28,!0),f=32,p=e.slice(f,f+s+o),m=new AT(p,0,s,o),v=f+s+o,x=e.slice(v,v+l+u),S=new uC(x,m.getData("INSTANCES_LENGTH"),0,l,u),_=v+l+u,T=new Uint8Array(e,_,a-_);let E=null,b=null,R=null;if(d)E=T,b=Promise.resolve();else{const w=this.resolveExternalURL(uF(T));R=sC(w),b=fetch(w,this.fetchOptions).then(L=>{if(!L.ok)throw new Error(`I3DMLoaderBase : Failed to load file "${w}" with status ${L.status} : ${L.statusText}`);return L.arrayBuffer()}).then(L=>{E=new Uint8Array(L)})}return b.then(()=>({version:r,featureTable:m,batchTable:S,glbBytes:E,gltfWorkingPath:R}))}},wce=class extends MT{parse(e){const t=new DataView(e),i=Bp(t);console.assert(i==="pnts");const r=t.getUint32(4,!0);console.assert(r===1);const a=t.getUint32(8,!0);console.assert(a===e.byteLength);const s=t.getUint32(12,!0),o=t.getUint32(16,!0),l=t.getUint32(20,!0),u=t.getUint32(24,!0),d=28,f=e.slice(d,d+s+o),p=new AT(f,0,s,o),m=d+s+o,v=e.slice(m,m+l+u),x=new uC(v,p.getData("BATCH_LENGTH")||p.getData("POINTS_LENGTH"),0,l,u);return Promise.resolve({version:r,featureTable:p,batchTable:x})}},Rce=class extends MT{parse(e){const t=new DataView(e),i=Bp(t);console.assert(i==="cmpt",'CMPTLoader: The magic bytes equal "cmpt".');const r=t.getUint32(4,!0);console.assert(r===1,'CMPTLoader: The version listed in the header is "1".');const a=t.getUint32(8,!0);console.assert(a===e.byteLength,"CMPTLoader: The contents buffer length listed in the header matches the file.");const s=t.getUint32(12,!0),o=[];let l=16;for(let u=0;uNce);return t.set(e.x*T,e.y*E,e.z*b)}calculateHorizonDistance(e,t){const i=this.calculateEffectiveRadius(e);return Math.sqrt(2*i*t+t**2)}calculateEffectiveRadius(e){const t=this.radius.x,i=1-this.radius.z**2/t**2,r=e*lt.DEG2RAD,a=Math.sin(r)**2;return t/Math.sqrt(1-i*a)}getPositionElevation(e){this.getPositionToSurfacePoint(e,aa);const t=mM.subVectors(e,aa);return Math.sign(t.dot(e))*t.length()}closestPointToRayEstimate(e,t){return this.intersectRay(e,t)?t:(hs.makeScale(...this.radius).invert(),Rx.copy(e).applyMatrix4(hs),aa.set(0,0,0),Rx.closestPointToPoint(aa,t).normalize(),hs.makeScale(...this.radius),t.applyMatrix4(hs))}copy(e){return this.radius.copy(e.radius),this}clone(){return new this.constructor().copy(this)}};const Fp=new wT(C5,C5,_ce);Fp.name="WGS84 Earth";const Dx=new D,Nx=new D,oa=new D,Ox=new Pr;let F5=class{constructor(e=new Qi,t=new Me){this.box=e.clone(),this.transform=t.clone(),this.inverseTransform=new Me,this.points=new Array(8).fill().map(()=>new D),this.planes=new Array(6).fill().map(()=>new xs)}copy(e){return this.box.copy(e.box),this.transform.copy(e.transform),this.update(),this}clone(){return new this.constructor().copy(this)}clampPoint(e,t){return t.copy(e).applyMatrix4(this.inverseTransform).clamp(this.box.min,this.box.max).applyMatrix4(this.transform)}distanceToPoint(e){return this.clampPoint(e,oa).distanceTo(e)}containsPoint(e){return oa.copy(e).applyMatrix4(this.inverseTransform),this.box.containsPoint(oa)}intersectsRay(e){return Ox.copy(e).applyMatrix4(this.inverseTransform),Ox.intersectsBox(this.box)}intersectRay(e,t){return Ox.copy(e).applyMatrix4(this.inverseTransform),Ox.intersectBox(this.box,t)?(t.applyMatrix4(this.transform),t):null}update(){const{points:e,inverseTransform:t,transform:i,box:r}=this;t.copy(i).invert();const{min:a,max:s}=r;let o=0;for(let l=-1;l<=1;l+=2)for(let u=-1;u<=1;u+=2)for(let d=-1;d<=1;d+=2)e[o].set(l<0?a.x:s.x,u<0?a.y:s.y,d<0?a.z:s.z).applyMatrix4(i),o++;this.updatePlanes()}updatePlanes(){Dx.copy(this.box.min).applyMatrix4(this.transform),Nx.copy(this.box.max).applyMatrix4(this.transform),oa.set(0,0,1).transformDirection(this.transform),this.planes[0].setFromNormalAndCoplanarPoint(oa,Dx),this.planes[1].setFromNormalAndCoplanarPoint(oa,Nx).negate(),oa.set(0,1,0).transformDirection(this.transform),this.planes[2].setFromNormalAndCoplanarPoint(oa,Dx),this.planes[3].setFromNormalAndCoplanarPoint(oa,Nx).negate(),oa.set(1,0,0).transformDirection(this.transform),this.planes[4].setFromNormalAndCoplanarPoint(oa,Dx),this.planes[5].setFromNormalAndCoplanarPoint(oa,Nx).negate()}intersectsSphere(e){return this.clampPoint(e.center,oa),oa.distanceToSquared(e.center)<=e.radius*e.radius}intersectsFrustum(e){return this._intersectsPlaneShape(e.planes,e.points)}intersectsOBB(e){return this._intersectsPlaneShape(e.planes,e.points)}_intersectsPlaneShape(e,t){const i=this.points,r=this.planes;for(let a=0;a<6;a++){const s=e[a];let o=-1/0;for(let l=0;l<8;l++){const u=i[l],d=s.distanceToPoint(u);o=o=t&&T<=i&&E>=r&&E<=a){const b=Lce(e);p.push(b),this.getCartographicToPosition(T,E,x,b)}}}return p}getBoundingBox(e,t){V5();const{latStart:i,latEnd:r,lonStart:a,lonEnd:s}=this;if(r-i{if(i.geometry&&!e.has(i.geometry)&&(t+=dee(i.geometry),e.add(i.geometry)),i.material){const r=i.material;for(const a in r){const s=r[a];s&&s.isTexture&&!e.has(s)&&(t+=Uce(s),e.add(s))}}}),t}let xF=class extends Mce{constructor(e=Kp){super(),this.manager=e,this.adjustmentTransform=new Me}parse(e){const t=super.parse(e),i=t.glbBytes.slice().buffer;return new Promise((r,a)=>{const s=this.manager,o=this.fetchOptions,l=s.getHandler("path.gltf")||new Lp(s);o.credentials==="include"&&o.mode==="cors"&&l.setCrossOrigin("use-credentials"),"credentials"in o&&l.setWithCredentials(o.credentials==="include"),o.headers&&l.setRequestHeader(o.headers);let u=this.workingPath;!/[\\/]$/.test(u)&&u.length&&(u+="/");const d=this.adjustmentTransform;l.parse(i,u,f=>{const{batchTable:p,featureTable:m}=t,{scene:v}=f,x=m.getData("RTC_CENTER",1,"FLOAT","VEC3");x&&(v.position.x+=x[0],v.position.y+=x[1],v.position.z+=x[2]),f.scene.updateMatrix(),f.scene.matrix.multiply(d),f.scene.matrix.decompose(f.scene.position,f.scene.quaternion,f.scene.scale),f.batchTable=p,f.featureTable=m,v.batchTable=p,v.featureTable=m,r(f)},a)})}};function zce(n){const e=n>>11,t=n>>5&63,i=n&31,r=Math.round(e/31*255),a=Math.round(t/63*255),s=Math.round(i/31*255);return[r,a,s]}const u0=new re;function Bce(n,e,t=new D){u0.set(n,e).divideScalar(256).multiplyScalar(2).subScalar(1),t.set(u0.x,u0.y,1-Math.abs(u0.x)-Math.abs(u0.y));const i=lt.clamp(-t.z,0,1);return t.x>=0?t.setX(t.x-i):t.setX(t.x+i),t.y>=0?t.setY(t.y-i):t.setY(t.y+i),t.normalize(),t}const G5={RGB:"color",POSITION:"position"};let yF=class extends wce{constructor(e=Kp){super(),this.manager=e}parse(e){return super.parse(e).then(async t=>{const{featureTable:i,batchTable:r}=t,a=new nv,s=i.header.extensions,o=new D;let l;if(s&&s["3DTILES_draco_point_compression"]){const{byteOffset:f,byteLength:p,properties:m}=s["3DTILES_draco_point_compression"],v=this.manager.getHandler("draco.drc");if(v==null)throw new Error("PNTSLoader: dracoLoader not available.");const x={};for(const T in m)if(T in G5&&T in m){const E=G5[T];x[E]=m[T]}const S={attributeIDs:x,attributeTypes:{position:"Float32Array",color:"Uint8Array"},useUniqueIDs:!0},_=i.getBuffer(f,p);l=await v.decodeGeometry(_,S),l.attributes.color&&(a.vertexColors=!0)}else{const f=i.getData("POINTS_LENGTH"),p=i.getData("POSITION",f,"FLOAT","VEC3"),m=i.getData("NORMAL",f,"FLOAT","VEC3"),v=i.getData("NORMAL",f,"UNSIGNED_BYTE","VEC2"),x=i.getData("RGB",f,"UNSIGNED_BYTE","VEC3"),S=i.getData("RGBA",f,"UNSIGNED_BYTE","VEC4"),_=i.getData("RGB565",f,"UNSIGNED_SHORT","SCALAR"),T=i.getData("CONSTANT_RGBA",f,"UNSIGNED_BYTE","VEC4"),E=i.getData("POSITION_QUANTIZED",f,"UNSIGNED_SHORT","VEC3"),b=i.getData("QUANTIZED_VOLUME_SCALE",f,"FLOAT","VEC3"),R=i.getData("QUANTIZED_VOLUME_OFFSET",f,"FLOAT","VEC3");if(l=new Ct,E){const w=new Float32Array(f*3);for(let L=0;L{const{featureTable:i,batchTable:r}=t,a=t.glbBytes.slice().buffer;return new Promise((s,o)=>{const l=this.fetchOptions,u=this.manager,d=u.getHandler("path.gltf")||new Lp(u);l.credentials==="include"&&l.mode==="cors"&&d.setCrossOrigin("use-credentials"),"credentials"in l&&d.setWithCredentials(l.credentials==="include"),l.headers&&d.setRequestHeader(l.headers);let f=t.gltfWorkingPath??this.workingPath;/[\\/]$/.test(f)||(f+="/");const p=this.adjustmentTransform;d.parse(a,f,m=>{const v=i.getData("INSTANCES_LENGTH");let x=i.getData("POSITION",v,"FLOAT","VEC3");const S=i.getData("POSITION_QUANTIZED",v,"UNSIGNED_SHORT","VEC3"),_=i.getData("QUANTIZED_VOLUME_OFFSET",1,"FLOAT","VEC3"),T=i.getData("QUANTIZED_VOLUME_SCALE",1,"FLOAT","VEC3"),E=i.getData("NORMAL_UP",v,"FLOAT","VEC3"),b=i.getData("NORMAL_RIGHT",v,"FLOAT","VEC3"),R=i.getData("SCALE_NON_UNIFORM",v,"FLOAT","VEC3"),w=i.getData("SCALE",v,"FLOAT","SCALAR"),L=i.getData("RTC_CENTER",1,"FLOAT","VEC3"),U=i.getData("EAST_NORTH_UP");if(["NORMAL_UP_OCT32P","NORMAL_RIGHT_OCT32P"].forEach(W=>{W in i.header&&console.warn(`I3DMLoader: Unsupported FeatureTable feature "${W}" detected.`)}),!x&&S){x=new Float32Array(v*3);for(let W=0;W{if(W.isMesh){z.push(W);const{geometry:K,material:oe}=W,ae=new VS(K,oe,v);ae.position.copy(N),L&&(ae.position.x+=L[0],ae.position.y+=L[1],ae.position.z+=L[2]),C.push(ae)}});for(let W=0;W{const l=new Xi;return o.forEach(u=>{l.add(u.scene)}),{tiles:o,scene:l}})}}const h0=new Me;class Hce extends Xi{constructor(e){super(),this.isTilesGroup=!0,this.name="TilesRenderer.TilesGroup",this.tilesRenderer=e,this.matrixWorldInverse=new Me}raycast(e,t){return this.tilesRenderer.optimizeRaycast?(this.tilesRenderer.raycast(e,t),!1):!0}updateMatrixWorld(e){if(this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldNeedsUpdate||e){this.parent===null?h0.copy(this.matrix):h0.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1;const t=h0.elements,i=this.matrixWorld.elements;let r=!1;for(let a=0;a<16;a++){const s=t[a],o=i[a];if(Math.abs(s-o)>Number.EPSILON){r=!0;break}}if(r){this.matrixWorld.copy(h0),this.matrixWorldInverse.copy(h0).invert();const a=this.children;for(let s=0,o=a.length;sa.raycastTile&&a.raycastTile(n,r,e,i))||e.intersectObject(r,!0,i)}function Vce(n,e,t){bF(n,e,t,Px),Px.sort(EF);const i=Px[0]||null;return Px.length=0,i}function MF(n){return"__used"in n}function AF(n,e,t,i=null){const{group:r,activeTiles:a}=n;i===null&&(i=TF,i.copy(t.ray).applyMatrix4(r.matrixWorldInverse));const s=[],o=e.children;for(let d=0,f=o.length;du)break;const x=AF(n,v,t,i);if(x){const S=x.distance*x.distance;Sa?r:a}intersectsFrustum(e){const t=this.obb||this.regionObb,i=this.sphere;return i&&!e.intersectsSphere(i)||t&&!t.intersectsFrustum(e)?!1:!!(i||t)}intersectsSphere(e){const t=this.obb||this.regionObb,i=this.sphere;return i&&!i.intersectsSphere(e)||t&&!t.intersectsSphere(e)?!1:!!(i||t)}intersectsOBB(e){const t=this.obb||this.regionObb,i=this.sphere;return i&&!e.intersectsSphere(i)||t&&!t.intersectsOBB(e)?!1:!!(i||t)}getOBB(e,t){const i=this.obb||this.regionObb;i?(e.copy(i.box),t.copy(i.transform)):(this.getAABB(e),t.identity())}getAABB(e){if(this.sphere)this.sphere.getBoundingBox(e);else{const t=this.obb||this.regionObb;e.copy(t.box).applyMatrix4(t.transform)}}getSphere(e){if(this.sphere)e.copy(this.sphere);else if(this.region)this.region.getBoundingSphere(e);else{const t=this.obb||this.regionObb;t.box.getBoundingSphere(e),e.applyMatrix4(t.transform)}}setObbData(e,t){const i=new F5;ll.set(e[3],e[4],e[5]),cl.set(e[6],e[7],e[8]),ul.set(e[9],e[10],e[11]);const r=ll.length(),a=cl.length(),s=ul.length();ll.normalize(),cl.normalize(),ul.normalize(),r===0&&ll.crossVectors(cl,ul),a===0&&cl.crossVectors(ll,ul),s===0&&ul.crossVectors(ll,cl),i.transform.set(ll.x,cl.x,ul.x,e[0],ll.y,cl.y,ul.y,e[1],ll.z,cl.z,ul.z,e[2],0,0,0,1).premultiply(t),i.box.min.set(-r,-a,-s),i.box.max.set(r,a,s),i.update(),this.obb=i}setSphereData(e,t,i,r,a){const s=new qi;s.center.set(e,t,i),s.radius=r,s.applyMatrix4(a),this.sphere=s}setRegionData(e,t,i,r,a,s,o){const l=new Ice(...e.radius,i,a,t,r,s,o),u=new F5;l.getBoundingBox(u.box,u.transform),u.update(),this.region=l,this.regionObb=u}}const kce=new Mt;function Wce(n,e,t,i){const r=kce.set(n.normal.x,n.normal.y,n.normal.z,e.normal.x,e.normal.y,e.normal.z,t.normal.x,t.normal.y,t.normal.z);return i.set(-n.constant,-e.constant,-t.constant),i.applyMatrix3(r.invert()),i}let Xce=class extends ed{constructor(){super(),this.points=Array(8).fill().map(()=>new D)}setFromProjectionMatrix(e,t){return super.setFromProjectionMatrix(e,t),this.calculateFrustumPoints(),this}calculateFrustumPoints(){const{planes:e,points:t}=this;[[e[0],e[3],e[4]],[e[1],e[3],e[4]],[e[0],e[2],e[4]],[e[1],e[2],e[4]],[e[0],e[3],e[5]],[e[1],e[3],e[5]],[e[0],e[2],e[5]],[e[1],e[2],e[5]]].forEach((i,r)=>{Wce(i[0],i[1],i[2],t[r])})}};const Z5=new Me,Q5=new Ai,RF=Symbol("INITIAL_FRUSTUM_CULLED"),zx=new Me,d0=new D,MM=new re,xf={inView:!1,error:1/0},qce=new D(1,0,0),Yce=new D(0,1,0);function K5(n,e){n.traverse(t=>{t.frustumCulled=t[RF]&&e})}class jce extends Ece{get autoDisableRendererCulling(){return this._autoDisableRendererCulling}set autoDisableRendererCulling(e){this._autoDisableRendererCulling!==e&&(super._autoDisableRendererCulling=e,this.forEachLoadedModel(t=>{K5(t,!e)}))}get optimizeRaycast(){return this._optimizeRaycast}set optimizeRaycast(e){console.warn('TilesRenderer: The "optimizeRaycast" option has been deprecated.'),this._optimizeRaycast=e}constructor(...e){super(...e),this.group=new Hce(this),this.ellipsoid=Fp.clone(),this.cameras=[],this.cameraMap=new Map,this.cameraInfo=[],this._optimizeRaycast=!0,this._upRotationMatrix=new Me,this._bytesUsed=new WeakMap,this._autoDisableRendererCulling=!0,this.manager=new rT,this._listeners={}}addEventListener(...e){Mi.prototype.addEventListener.call(this,...e)}hasEventListener(...e){Mi.prototype.hasEventListener.call(this,...e)}removeEventListener(...e){Mi.prototype.removeEventListener.call(this,...e)}dispatchEvent(...e){Mi.prototype.dispatchEvent.call(this,...e)}getBoundingBox(e){if(!this.root)return!1;const t=this.root.cached.boundingVolume;return t?(t.getAABB(e),!0):!1}getOrientedBoundingBox(e,t){if(!this.root)return!1;const i=this.root.cached.boundingVolume;return i?(i.getOBB(e,t),!0):!1}getBoundingSphere(e){if(!this.root)return!1;const t=this.root.cached.boundingVolume;return t?(t.getSphere(e),!0):!1}forEachLoadedModel(e){this.traverse(t=>{const i=t.cached&&t.cached.scene;i&&e(i,t)},null,!1)}raycast(e,t){if(this.root)if(e.firstHitOnly){const i=AF(this,this.root,e);i&&t.push(i)}else wF(this,this.root,e,t)}hasCamera(e){return this.cameraMap.has(e)}setCamera(e){const t=this.cameras,i=this.cameraMap;return i.has(e)?!1:(i.set(e,new re),t.push(e),this.dispatchEvent({type:"add-camera",camera:e}),!0)}setResolution(e,t,i){const r=this.cameraMap;if(!r.has(e))return!1;const a=t.isVector2?t.x:t,s=t.isVector2?t.y:i,o=r.get(e);return(o.width!==a||o.height!==s)&&(o.set(a,s),this.dispatchEvent({type:"camera-resolution-change"})),!0}setResolutionFromRenderer(e,t){return t.getSize(MM),this.setResolution(e,MM.x,MM.y)}deleteCamera(e){const t=this.cameras,i=this.cameraMap;if(i.has(e)){const r=t.indexOf(e);return t.splice(r,1),i.delete(e),this.dispatchEvent({type:"delete-camera",camera:e}),!0}return!1}loadRootTileSet(...e){return super.loadRootTileSet(...e).then(t=>{const{asset:i,extensions:r={}}=t;switch((i&&i.gltfUpAxis||"y").toLowerCase()){case"x":this._upRotationMatrix.makeRotationAxis(Yce,-Math.PI/2);break;case"y":this._upRotationMatrix.makeRotationAxis(qce,Math.PI/2);break}if("3DTILES_ellipsoid"in r){const a=r["3DTILES_ellipsoid"],{ellipsoid:s}=this;s.name=a.body,a.radii?s.radius.set(...a.radii):s.radius.set(1,1,1)}return t})}update(){let e=null;if(this.invokeAllPlugins(s=>{if(s.doTilesNeedUpdate){const o=s.doTilesNeedUpdate();e===null?e=o:e=!!(e||o)}}),e===!1){this.dispatchEvent({type:"update-before"}),this.dispatchEvent({type:"update-after"});return}this.dispatchEvent({type:"update-before"});const t=this.group,i=this.cameras,r=this.cameraMap,a=this.cameraInfo;for(;a.length>i.length;)a.pop();for(;a.length1e-6&&console.warn("ThreeTilesRenderer : Non uniform scale used for tile which may cause issues when calculating screen space error.");for(let s=0,o=a.length;ss=s||!!(o!==this&&o.calculateTileViewError)),s===!1&&console.warn("TilesRenderer: no cameras defined. Cannot update 3d tiles.")}}preprocessNode(e,t,i=null){super.preprocessNode(e,t,i);const r=new Me;if(e.transform){const o=e.transform;for(let l=0;l<16;l++)r.elements[l]=o[l]}i&&r.premultiply(i.cached.transform);const a=new Me().copy(r).invert(),s=new Gce;"sphere"in e.boundingVolume&&s.setSphereData(...e.boundingVolume.sphere,r),"box"in e.boundingVolume&&s.setObbData(e.boundingVolume.box,r),"region"in e.boundingVolume&&s.setRegionData(this.ellipsoid,...e.boundingVolume.region),e.cached={transform:r,transformInverse:a,active:!1,boundingVolume:s,metadata:null,scene:null,geometry:null,materials:null,textures:null}}async parseTile(e,t,i,r,a){const s=t.cached,o=sC(r),l=this.fetchOptions,u=this.manager;let d=null;const f=s.transform,p=this._upRotationMatrix,m=(Bp(e)||i).toLowerCase();switch(m){case"b3dm":{const b=new xF(u);b.workingPath=o,b.fetchOptions=l,b.adjustmentTransform.copy(p),d=b.parse(e);break}case"pnts":{const b=new yF(u);b.workingPath=o,b.fetchOptions=l,d=b.parse(e);break}case"i3dm":{const b=new SF(u);b.workingPath=o,b.fetchOptions=l,b.adjustmentTransform.copy(p),b.ellipsoid.copy(this.ellipsoid),d=b.parse(e);break}case"cmpt":{const b=new Fce(u);b.workingPath=o,b.fetchOptions=l,b.adjustmentTransform.copy(p),b.ellipsoid.copy(this.ellipsoid),d=b.parse(e).then(R=>R.scene);break}case"gltf":case"glb":{const b=u.getHandler("path.gltf")||u.getHandler("path.glb")||new Lp(u);b.setWithCredentials(l.credentials==="include"),b.setRequestHeader(l.headers||{}),l.credentials==="include"&&l.mode==="cors"&&b.setCrossOrigin("use-credentials");let R=b.resourcePath||b.path||o;!/[\\/]$/.test(R)&&R.length&&(R+="/"),d=b.parseAsync(e,R).then(w=>{w.scene=w.scene||new Xi;const{scene:L}=w;return L.updateMatrix(),L.matrix.multiply(p).decompose(L.position,L.quaternion,L.scale),w});break}default:{d=this.invokeOnePlugin(b=>b.parseToMesh&&b.parseToMesh(e,t,i,r,a));break}}const v=await d;if(v===null)throw new Error(`TilesRenderer: Content type "${m}" not supported.`);let x,S;v.isObject3D?(x=v,S=null):(x=v.scene,S=v),x.updateMatrix(),x.matrix.premultiply(f),x.matrix.decompose(x.position,x.quaternion,x.scale),await this.invokeAllPlugins(b=>b.processTileModel&&b.processTileModel(x,t)),x.traverse(b=>{b[RF]=b.frustumCulled}),K5(x,!this.autoDisableRendererCulling);const _=[],T=[],E=[];if(x.traverse(b=>{if(b.geometry&&T.push(b.geometry),b.material){const R=b.material;_.push(b.material);for(const w in R){const L=R[w];L&&L.isTexture&&E.push(L)}}}),a.aborted){for(let b=0,R=E.length;b{o.userData.meshFeatures&&o.userData.meshFeatures.dispose(),o.userData.structuralMetadata&&o.userData.structuralMetadata.dispose()});for(let o=0,l=r.length;o{p!==this&&p.calculateTileViewError&&p.calculateTileViewError(e,xf)&&(o=o&&xf.inView,d=Math.max(d,xf.error),xf.inView&&(l=Math.max(l,xf.error)))}),o?(t.inView=!0,t.error=l,t.distanceFromCamera=u):(t.inView=xf.inView,t.error=d,t.distanceFromCamera=f)}setLatLonToYUp(e,t){console.warn("TilesRenderer: setLatLonToYUp is deprecated. Use the ReorientationPlugin, instead.");const{ellipsoid:i,group:r}=this;Q5.set(Math.PI/2,Math.PI/2,0),Z5.makeRotationFromEuler(Q5),i.getEastNorthUpFrame(e,t,0,r.matrix).multiply(Z5).invert().decompose(r.position,r.quaternion,r.scale),r.updateMatrixWorld(!0)}dispose(){super.dispose(),this.group.removeFromParent()}}class Zce extends jn{constructor(){super(new uu(0,0),new Qce),this.renderOrder=1/0}onBeforeRender(e){const t=this.material.uniforms;e.getSize(t.resolution.value)}updateMatrixWorld(){this.matrixWorld.makeTranslation(this.position)}dispose(){this.geometry.dispose(),this.material.dispose()}}class Qce extends Oi{constructor(){super({depthWrite:!1,depthTest:!1,transparent:!0,uniforms:{resolution:{value:new re},size:{value:15},thickness:{value:2},opacity:{value:1}},vertexShader:` +`;var Kle=Object.defineProperty,Jle=(n,e,t,i)=>{for(var r=void 0,a=n.length-1,s;a>=0;a--)(s=n[a])&&(r=s(e,t,r)||r);return r&&Kle(e,t,r),r};const l0=new D,$le=new re,ece=new Mt,tce=["maxIterationCount","minStepSize","maxStepSize","maxRayDistance","perspectiveStepScale","minDensity","minExtinction","minTransmittance","maxIterationCountToSun","maxIterationCountToGround","minSecondaryStepSize","secondaryStepScale","maxShadowFilterRadius","maxShadowLengthIterationCount","minShadowLengthStepSize","maxShadowLengthRayDistance","hazeDensityScale","hazeExponent","hazeScatteringCoefficient","hazeAbsorptionCoefficient"],nce=["multiScatteringOctaves","accurateSunSkyLight","accuratePhaseFunction"],ice=["maxIterationCount","minStepSize","maxStepSize","minDensity","minExtinction","minTransmittance","opticalDepthTailScale"],rce=["temporalJitter"],ace=["temporalPass"],sce=["cascadeCount","mapSize","maxFar","farScale","splitMode","splitLambda"],ol={type:"change"},sF={resolutionScale:Ut.resolutionScale,width:Rs.AUTO_SIZE,height:Rs.AUTO_SIZE};class oF extends Ug{constructor(e=new ou,t,i=mv.DEFAULT){var d,f,p,m;super("CloudsEffect",Qle,{attributes:Dl.DEPTH,uniforms:new Map([["cloudsBuffer",new $(null)]])}),this.camera=e,this.atmosphere=i,this.cloudLayers=eS.DEFAULT.clone(),this.correctAltitude=!0,this.localWeatherRepeat=new re().setScalar(100),this.localWeatherOffset=new re,this.shapeRepeat=new D().setScalar(3e-4),this.shapeOffset=new D,this.shapeDetailRepeat=new D().setScalar(.006),this.shapeDetailOffset=new D,this.turbulenceRepeat=new re().setScalar(20),this.worldToECEFMatrix=new Me,this.ecefToWorldMatrix=new Me,this.altitudeCorrection=new D,this.sunDirection=new D,this.localWeatherVelocity=new re,this.shapeVelocity=new D,this.shapeDetailVelocity=new D,this._atmosphereOverlay=null,this._atmosphereShadow=null,this._atmosphereShadowLength=null,this.events=new Mi,this.frame=0,this.shadowCascadeCount=0,this.shadowMapSize=new re,this.onResolutionChange=()=>{this.setSize(this.resolution.baseWidth,this.resolution.baseHeight)},this.skipRendering=!0;const{resolutionScale:r,width:a,height:s,resolutionX:o=a,resolutionY:l=s}={...sF,...t};this.shadowMaps=new Ele({cascadeCount:Ut.shadow.cascadeCount,mapSize:Ut.shadow.mapSize,splitLambda:.6}),this.parameterUniforms=qle({localWeatherTexture:((d=this.proceduralLocalWeather)==null?void 0:d.texture)??null,localWeatherRepeat:this.localWeatherRepeat,localWeatherOffset:this.localWeatherOffset,shapeTexture:((f=this.proceduralShape)==null?void 0:f.texture)??null,shapeRepeat:this.shapeRepeat,shapeOffset:this.shapeOffset,shapeDetailTexture:((p=this.proceduralShapeDetail)==null?void 0:p.texture)??null,shapeDetailRepeat:this.shapeDetailRepeat,shapeDetailOffset:this.shapeDetailOffset,turbulenceTexture:((m=this.proceduralTurbulence)==null?void 0:m.texture)??null,turbulenceRepeat:this.turbulenceRepeat}),this.layerUniforms=Yle(),this.atmosphereUniforms=Zle(i,{worldToECEFMatrix:this.worldToECEFMatrix,ecefToWorldMatrix:this.ecefToWorldMatrix,altitudeCorrection:this.altitudeCorrection,sunDirection:this.sunDirection});const u={shadow:this.shadowMaps,parameterUniforms:this.parameterUniforms,layerUniforms:this.layerUniforms,atmosphereUniforms:this.atmosphereUniforms};this.shadowPass=new Xle(u),this.shadowPass.mainCamera=e,this.cloudsPass=new Ule(u,i),this.cloudsPass.mainCamera=e,this.clouds=a5(s5({},this.cloudsPass.currentMaterial,tce),this.cloudsPass.currentMaterial,nce),this.shadow=a5(s5({},this.shadowPass.currentMaterial,ice),this.shadowPass.currentMaterial,rce,this.shadowPass,ace,this.shadowMaps,sce),this.resolution=new Rs(this,o,l,r),this.resolution.addEventListener("change",this.onResolutionChange)}get mainCamera(){return this.camera}set mainCamera(e){this.camera=e,this.shadowPass.mainCamera=e,this.cloudsPass.mainCamera=e}initialize(e,t,i){this.shadowPass.initialize(e,t,i),this.cloudsPass.initialize(e,t,i)}updateSharedUniforms(e){jle(this.layerUniforms,this.cloudLayers);const{parameterUniforms:t}=this;t.localWeatherOffset.value.add($le.copy(this.localWeatherVelocity).multiplyScalar(e)),t.shapeOffset.value.add(l0.copy(this.shapeVelocity).multiplyScalar(e)),t.shapeDetailOffset.value.add(l0.copy(this.shapeDetailVelocity).multiplyScalar(e));const i=this.worldToECEFMatrix;this.ecefToWorldMatrix.copy(i).invert();const r=this.camera.getWorldPosition(l0).applyMatrix4(this.worldToECEFMatrix),a=this.altitudeCorrection;this.correctAltitude?KR(r,this.atmosphere.bottomRadius,this.ellipsoid,a):a.setScalar(0);const s=this.ellipsoid.getSurfaceNormal(r,l0),o=this.sunDirection.dot(s),l=SB(1e6,1e3,o),u=ece.setFromMatrix4(i).transpose();this.shadowMaps.update(this.camera,l0.copy(this.sunDirection).applyMatrix3(u),l)}updateWeatherTextureChannels(){const e=this.cloudLayers.localWeatherChannels;this.cloudsPass.currentMaterial.localWeatherChannels=e,this.shadowPass.currentMaterial.localWeatherChannels=e}updateAtmosphereComposition(){const{shadowMaps:e,shadowPass:t,cloudsPass:i}=this,r=t.currentMaterial.uniforms,a=i.currentMaterial.uniforms,s=this._atmosphereOverlay,o=Object.assign(this._atmosphereOverlay??{},{map:i.outputBuffer});s!==o&&(this._atmosphereOverlay=o,ol.target=this,ol.property="atmosphereOverlay",this.events.dispatchEvent(ol));const l=this._atmosphereShadow,u=Object.assign(this._atmosphereShadow??{},{map:t.outputBuffer,mapSize:e.mapSize,cascadeCount:e.cascadeCount,intervals:a.shadowIntervals.value,matrices:a.shadowMatrices.value,inverseMatrices:r.inverseShadowMatrices.value,far:e.far,topHeight:a.shadowTopHeight.value});l!==u&&(this._atmosphereShadow=u,ol.target=this,ol.property="atmosphereShadow",this.events.dispatchEvent(ol));const d=this._atmosphereShadowLength,f=i.shadowLengthBuffer!=null?Object.assign(this._atmosphereShadowLength??{},{map:i.shadowLengthBuffer}):null;d!==f&&(this._atmosphereShadowLength=f,ol.target=this,ol.property="atmosphereShadowLength",this.events.dispatchEvent(ol))}update(e,t,i=0){var o,l,u,d;const{shadowMaps:r,shadowPass:a,cloudsPass:s}=this;if(r.cascadeCount!==this.shadowCascadeCount||!r.mapSize.equals(this.shadowMapSize)){const{width:f,height:p}=r.mapSize,m=r.cascadeCount;this.shadowMapSize.set(f,p),this.shadowCascadeCount=m,a.setSize(f,p,m),s.setShadowSize(f,p,m)}(o=this.proceduralLocalWeather)==null||o.render(e,i),(l=this.proceduralShape)==null||l.render(e,i),(u=this.proceduralShapeDetail)==null||u.render(e,i),(d=this.proceduralTurbulence)==null||d.render(e,i),++this.frame,this.updateSharedUniforms(i),this.updateWeatherTextureChannels(),a.update(e,this.frame,i),s.shadowBuffer=a.outputBuffer,s.update(e,this.frame,i),this.updateAtmosphereComposition(),this.uniforms.get("cloudsBuffer").value=this.cloudsPass.outputBuffer}setSize(e,t){const{resolution:i}=this;i.setBaseSize(e,t);const{width:r,height:a}=i;this.cloudsPass.setSize(r,a)}setDepthTexture(e,t){this.shadowPass.setDepthTexture(e,t),this.cloudsPass.setDepthTexture(e,t)}set qualityPreset(e){const{clouds:t,shadow:i,...r}=Mle[e];Object.assign(this,r),Object.assign(this.clouds,t),Object.assign(this.shadow,i)}get localWeatherTexture(){return this.proceduralLocalWeather??this.parameterUniforms.localWeatherTexture.value}set localWeatherTexture(e){e instanceof In||e==null?(this.proceduralLocalWeather=void 0,this.parameterUniforms.localWeatherTexture.value=e):(this.proceduralLocalWeather=e,this.parameterUniforms.localWeatherTexture.value=e.texture)}get shapeTexture(){return this.proceduralShape??this.parameterUniforms.shapeTexture.value}set shapeTexture(e){e instanceof ws||e==null?(this.proceduralShape=void 0,this.parameterUniforms.shapeTexture.value=e):(this.proceduralShape=e,this.parameterUniforms.shapeTexture.value=e.texture)}get shapeDetailTexture(){return this.proceduralShapeDetail??this.parameterUniforms.shapeDetailTexture.value}set shapeDetailTexture(e){e instanceof ws||e==null?(this.proceduralShapeDetail=void 0,this.parameterUniforms.shapeDetailTexture.value=e):(this.proceduralShapeDetail=e,this.parameterUniforms.shapeDetailTexture.value=e.texture)}get turbulenceTexture(){return this.proceduralTurbulence??this.parameterUniforms.turbulenceTexture.value}set turbulenceTexture(e){e instanceof In||e==null?(this.proceduralTurbulence=void 0,this.parameterUniforms.turbulenceTexture.value=e):(this.proceduralTurbulence=e,this.parameterUniforms.turbulenceTexture.value=e.texture)}get stbnTexture(){return this.cloudsPass.currentMaterial.uniforms.stbnTexture.value}set stbnTexture(e){this.cloudsPass.currentMaterial.uniforms.stbnTexture.value=e,this.shadowPass.currentMaterial.uniforms.stbnTexture.value=e}get resolutionScale(){return this.resolution.scale}set resolutionScale(e){this.resolution.scale=e}get temporalUpscale(){return this.cloudsPass.temporalUpscale}set temporalUpscale(e){this.cloudsPass.temporalUpscale=e}get lightShafts(){return this.cloudsPass.lightShafts}set lightShafts(e){this.cloudsPass.lightShafts=e}get shapeDetail(){return this.cloudsPass.currentMaterial.shapeDetail}set shapeDetail(e){this.cloudsPass.currentMaterial.shapeDetail=e,this.shadowPass.currentMaterial.shapeDetail=e}get turbulence(){return this.cloudsPass.currentMaterial.turbulence}set turbulence(e){this.cloudsPass.currentMaterial.turbulence=e,this.shadowPass.currentMaterial.turbulence=e}get haze(){return this.cloudsPass.currentMaterial.haze}set haze(e){this.cloudsPass.currentMaterial.haze=e}get scatteringCoefficient(){return this.parameterUniforms.scatteringCoefficient.value}set scatteringCoefficient(e){this.parameterUniforms.scatteringCoefficient.value=e}get absorptionCoefficient(){return this.parameterUniforms.absorptionCoefficient.value}set absorptionCoefficient(e){this.parameterUniforms.absorptionCoefficient.value=e}get coverage(){return this.parameterUniforms.coverage.value}set coverage(e){this.parameterUniforms.coverage.value=e}get turbulenceDisplacement(){return this.parameterUniforms.turbulenceDisplacement.value}set turbulenceDisplacement(e){this.parameterUniforms.turbulenceDisplacement.value=e}get scatterAnisotropy1(){return this.cloudsPass.currentMaterial.scatterAnisotropy1}set scatterAnisotropy1(e){this.cloudsPass.currentMaterial.scatterAnisotropy1=e}get scatterAnisotropy2(){return this.cloudsPass.currentMaterial.scatterAnisotropy2}set scatterAnisotropy2(e){this.cloudsPass.currentMaterial.scatterAnisotropy2=e}get scatterAnisotropyMix(){return this.cloudsPass.currentMaterial.scatterAnisotropyMix}set scatterAnisotropyMix(e){this.cloudsPass.currentMaterial.scatterAnisotropyMix=e}get skyIrradianceScale(){return this.skyLightScale}set skyIrradianceScale(e){this.skyLightScale=e}get skyLightScale(){return this.cloudsPass.currentMaterial.uniforms.skyLightScale.value}set skyLightScale(e){this.cloudsPass.currentMaterial.uniforms.skyLightScale.value=e}get groundIrradianceScale(){return this.groundBounceScale}set groundIrradianceScale(e){this.groundBounceScale=e}get groundBounceScale(){return this.cloudsPass.currentMaterial.uniforms.groundBounceScale.value}set groundBounceScale(e){this.cloudsPass.currentMaterial.uniforms.groundBounceScale.value=e}get powderScale(){return this.cloudsPass.currentMaterial.uniforms.powderScale.value}set powderScale(e){this.cloudsPass.currentMaterial.uniforms.powderScale.value=e}get powderExponent(){return this.cloudsPass.currentMaterial.uniforms.powderExponent.value}set powderExponent(e){this.cloudsPass.currentMaterial.uniforms.powderExponent.value=e}get atmosphereOverlay(){return this._atmosphereOverlay}get atmosphereShadow(){return this._atmosphereShadow}get atmosphereShadowLength(){return this._atmosphereShadowLength}get irradianceTexture(){return this.cloudsPass.currentMaterial.irradianceTexture}set irradianceTexture(e){this.cloudsPass.currentMaterial.irradianceTexture=e}get scatteringTexture(){return this.cloudsPass.currentMaterial.scatteringTexture}set scatteringTexture(e){this.cloudsPass.currentMaterial.scatteringTexture=e}get transmittanceTexture(){return this.cloudsPass.currentMaterial.transmittanceTexture}set transmittanceTexture(e){this.cloudsPass.currentMaterial.transmittanceTexture=e}get singleMieScatteringTexture(){return this.cloudsPass.currentMaterial.singleMieScatteringTexture}set singleMieScatteringTexture(e){this.cloudsPass.currentMaterial.singleMieScatteringTexture=e}get higherOrderScatteringTexture(){return this.cloudsPass.currentMaterial.higherOrderScatteringTexture}set higherOrderScatteringTexture(e){this.cloudsPass.currentMaterial.higherOrderScatteringTexture=e}get ellipsoid(){return this.cloudsPass.currentMaterial.ellipsoid}set ellipsoid(e){this.cloudsPass.currentMaterial.ellipsoid=e}get sunAngularRadius(){return this.cloudsPass.currentMaterial.sunAngularRadius}set sunAngularRadius(e){this.cloudsPass.currentMaterial.sunAngularRadius=e}}Jle([gn("SKIP_RENDERING")],oF.prototype,"skipRendering");const oce=128,lce=32,bT="45a1c6c1bb9fd38b3680fd120795ff4c32df68ff",cce=`https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/${bT}/packages/clouds/assets/local_weather.png`,uce=`https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/${bT}/packages/clouds/assets/shape.bin`,hce=`https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/${bT}/packages/clouds/assets/shape_detail.bin`,dce=`https://media.githubusercontent.com/media/takram-design-engineering/three-geospatial/${bT}/packages/clouds/assets/turbulence.png`,lF=ie.createContext(null),fce=({layers:n,disableDefault:e=!1,children:t})=>{const[i,r]=ie.useState();return ie.useLayoutEffect(()=>{n.set(e?Array(4).fill(Ys.DEFAULT):eS.DEFAULT),r({layers:n,indexPool:[0,1,2,3],disableDefault:e})},[n,e]),i!=null&&ot.jsx(lF.Provider,{value:i,children:t})};function w5(n,e){const t=ie.useMemo(()=>typeof n=="string"?new ER().load(n,i=>{i.minFilter=m9,i.magFilter=Bt,i.wrapS=Ir,i.wrapT=Ir,i.colorSpace=Xr,i.needsUpdate=!0}):void 0,[n]);return ie.useEffect(()=>{if(t!=null)return()=>{t.dispose()}},[t]),(typeof n=="string"?t:n)??null}function R5(n,e){const t=ie.useMemo(()=>typeof n=="string"?new ch(ws,bB,{width:e,height:e,depth:e,format:Qs,minFilter:Bt,magFilter:Bt,wrapS:Ir,wrapT:Ir,wrapR:Ir,colorSpace:Xr}).load(n):void 0,[n,e]);return ie.useEffect(()=>{if(t!=null)return()=>{t.dispose()}},[t]),(typeof n=="string"?t:n)??null}function pce(n){const e=ie.useMemo(()=>typeof n=="string"?new MB().load(n):void 0,[n]);return ie.useEffect(()=>{if(e!=null)return()=>{e.dispose()}},[e]),(typeof n=="string"?e:n)??null}const mce=({ref:n,disableDefaultLayers:e=!1,localWeatherTexture:t=cce,shapeTexture:i=uce,shapeDetailTexture:r=hce,turbulenceTexture:a=dce,stbnTexture:s=Jz,children:o,...l})=>{const{textures:u,transientStates:d,...f}=ie.useContext(rC),[p,m]=YB({...sF,...f,...u,...l}),v=ie.useMemo(()=>new oF,[]);ie.useEffect(()=>()=>{v.dispose()},[v]),_a(()=>{d!=null&&(v.sunDirection.copy(d.sunDirection),v.worldToECEFMatrix.copy(d.worldToECEFMatrix))}),ie.useEffect(()=>{if(d!=null)return d.overlay=v.atmosphereOverlay,d.shadow=v.atmosphereShadow,d.shadowLength=v.atmosphereShadowLength,()=>{d.overlay=null,d.shadow=null,d.shadowLength=null}},[v,d]);const x=ie.useCallback(w=>{if(d!=null)switch(w.property){case"atmosphereOverlay":d.overlay=v.atmosphereOverlay;break;case"atmosphereShadow":d.shadow=v.atmosphereShadow;break;case"atmosphereShadowLength":d.shadowLength=v.atmosphereShadowLength;break}},[v,d]);ie.useEffect(()=>(v.events.addEventListener("change",x),()=>{v.events.removeEventListener("change",x)}),[v,x]),pn(({gl:w})=>w);const S=w5(t),_=R5(i,oce),T=R5(r,lce),E=w5(a),b=pce(s),{camera:R}=ie.useContext(HR);return ot.jsxs(ot.Fragment,{children:[ot.jsx("primitive",{ref:n,object:v,mainCamera:R,...p,localWeatherTexture:S,shapeTexture:_,shapeDetailTexture:T,turbulenceTexture:E,stbnTexture:b,...m}),ot.jsx(fce,{layers:v.cloudLayers,disableDefault:e,children:o})]})},gce=({ref:n,index:e,...t})=>{const i=ie.useContext(lF);if(i==null)throw new Error("CloudLayer can only be used within the Clouds component!");const{layers:r,indexPool:a,disableDefault:s}=i,[o,l]=ie.useState();if(ie.useLayoutEffect(()=>{if(e!=null){const u=a.indexOf(e);if(u!==-1)return a.splice(u,1),l(e),()=>{a.push(e),l(void 0)}}else{const u=a.sort((d,f)=>d-f).shift();if(u!=null)return l(u),()=>{a.push(u),l(void 0)}}},[e,r,a]),ie.useLayoutEffect(()=>{if(o==null)return;const u=r[o];return()=>{u.copy(s?Ys.DEFAULT:eS.DEFAULT[o])}},[r,o,s]),ie.useEffect(()=>{o!=null&&(typeof n=="function"?n(r[o]):n!=null&&(n.current=r[o]))},[n,r,o]),o!=null){const u=r[o];u.copy(s?Ys.DEFAULT:eS.DEFAULT[o]),u.set(t)}return null};class vce{get unloadPriorityCallback(){return this._unloadPriorityCallback}set unloadPriorityCallback(e){e.length===1?(console.warn('LRUCache: "unloadPriorityCallback" function has been changed to take two arguments.'),this._unloadPriorityCallback=(t,i)=>{const r=e(t),a=e(i);return ra?1:0}):this._unloadPriorityCallback=e}constructor(){this.minSize=6e3,this.maxSize=8e3,this.minBytesSize=.3*1073741824,this.maxBytesSize=.4*1073741824,this.unloadPercent=.05,this.autoMarkUnused=!0,this.itemSet=new Map,this.itemList=[],this.usedSet=new Set,this.callbacks=new Map,this.unloadingHandle=-1,this.cachedBytes=0,this.bytesMap=new Map,this.loadedSet=new Set,this._unloadPriorityCallback=null;const e=this.itemSet;this.defaultPriorityCallback=t=>e.get(t)}isFull(){return this.itemSet.size>=this.maxSize||this.cachedBytes>=this.maxBytesSize}getMemoryUsage(e){return this.bytesMap.get(e)||0}setMemoryUsage(e,t){const{bytesMap:i,itemSet:r}=this;r.has(e)&&(this.cachedBytes-=i.get(e)||0,i.set(e,t),this.cachedBytes+=t)}add(e,t){const i=this.itemSet;if(i.has(e)||this.isFull())return!1;const r=this.usedSet,a=this.itemList,s=this.callbacks;return a.push(e),r.add(e),i.set(e,Date.now()),s.set(e,t),!0}has(e){return this.itemSet.has(e)}remove(e){const t=this.usedSet,i=this.itemSet,r=this.itemList,a=this.bytesMap,s=this.callbacks,o=this.loadedSet;if(i.has(e)){this.cachedBytes-=a.get(e)||0,a.delete(e),s.get(e)(e);const l=r.indexOf(e);return r.splice(l,1),t.delete(e),i.delete(e),s.delete(e),o.delete(e),!0}return!1}setLoaded(e,t){const{itemSet:i,loadedSet:r}=this;i.has(e)&&(t===!0?r.add(e):r.delete(e))}markUsed(e){const t=this.itemSet,i=this.usedSet;t.has(e)&&!i.has(e)&&(t.set(e,Date.now()),i.add(e))}markUnused(e){this.usedSet.delete(e)}markAllUnused(){this.usedSet.clear()}unloadUnusedContent(){const{unloadPercent:e,minSize:t,maxSize:i,itemList:r,itemSet:a,usedSet:s,loadedSet:o,callbacks:l,bytesMap:u,minBytesSize:d,maxBytesSize:f}=this,p=r.length-s.size,m=r.length-o.size,v=Math.max(Math.min(r.length-t,p),0),x=this.cachedBytes-d,S=this.unloadPriorityCallback||this.defaultPriorityCallback;let _=!1;const T=v>0&&p>0||m&&r.length>i;if(p&&this.cachedBytes>d||m&&this.cachedBytes>f||T){r.sort((N,C)=>{const z=s.has(N),W=s.has(C);if(z===W){const K=o.has(N),oe=o.has(C);return K===oe?-S(N,C):K?1:-1}else return z?1:-1});const E=Math.max(t*e,v*e),b=Math.ceil(Math.min(E,p,v)),R=Math.max(e*x,e*d),w=Math.min(R,x);let L=0,U=0;for(;this.cachedBytes-U>f||r.length-L>i;){const N=r[L],C=u.get(N)||0;if(s.has(N)&&o.has(N)||this.cachedBytes-U-C=b)break;U+=C,L++}r.splice(0,L).forEach(N=>{this.cachedBytes-=u.get(N)||0,l.get(N)(N),u.delete(N),a.delete(N),l.delete(N),o.delete(N),s.delete(N)}),_=L0}_&&(this.unloadingHandle=requestAnimationFrame(()=>this.scheduleUnload()))}scheduleUnload(){cancelAnimationFrame(this.unloadingHandle),this.scheduled||(this.scheduled=!0,queueMicrotask(()=>{this.scheduled=!1,this.unloadUnusedContent()}))}}let fM=class{get running(){return this.items.length!==0||this.currJobs!==0}constructor(){this.maxJobs=6,this.items=[],this.callbacks=new Map,this.currJobs=0,this.scheduled=!1,this.autoUpdate=!0,this.priorityCallback=null,this.schedulingCallback=e=>{requestAnimationFrame(e)},this._runjobs=()=>{this.scheduled=!1,this.tryRunJobs()}}sort(){const e=this.priorityCallback,t=this.items;e!==null&&t.sort(e)}has(e){return this.callbacks.has(e)}add(e,t){const i={callback:t,reject:null,resolve:null,promise:null};return i.promise=new Promise((r,a)=>{const s=this.items,o=this.callbacks;i.resolve=r,i.reject=a,s.unshift(e),o.set(e,i),this.autoUpdate&&this.scheduleJobRun()}),i.promise}remove(e){const t=this.items,i=this.callbacks,r=t.indexOf(e);if(r!==-1){const a=i.get(e);a.promise.catch(()=>{}),a.reject(new Error("PriorityQueue: Item removed.")),t.splice(r,1),i.delete(e)}}removeByFilter(e){const{items:t}=this;for(let i=0;i{this.currJobs--,this.autoUpdate&&this.scheduleJobRun()};for(;i>this.currJobs&&e.length>0&&r0;){const r=i.pop(),a=i.pop(),s=i.pop();if(e&&e(s,a,r)){t&&t(s,a,r);return}const o=s.children;if(o)for(let l=o.length-1;l>=0;l--)i.push(o[l]),i.push(s),i.push(r+1);t&&t(s,a,r)}}function Bp(n){if(n===null||n.byteLength<4)return"";let e;if(n instanceof DataView?e=n:e=new DataView(n),String.fromCharCode(e.getUint8(0))==="{")return null;let t="";for(let i=0;i<4;i++)t+=String.fromCharCode(e.getUint8(i));return t}const xce=new TextDecoder;function uF(n){return xce.decode(n)}function sC(n){return n.replace(/[\\/][^\\/]+$/,"")+"/"}let MT=class{constructor(){this.fetchOptions={},this.workingPath=""}load(...e){return console.warn('Loader: "load" function has been deprecated in favor of "loadAsync".'),this.loadAsync(...e)}loadAsync(e){return fetch(e,this.fetchOptions).then(t=>{if(!t.ok)throw new Error(`Failed to load file "${e}" with status ${t.status} : ${t.statusText}`);return t.arrayBuffer()}).then(t=>(this.workingPath===""&&(this.workingPath=sC(e)),this.parse(t)))}resolveExternalURL(e){return new URL(e,this.workingPath).href}parse(e){throw new Error("LoaderBase: Parse not implemented.")}};function D5(n){if(!n)return null;let e=n.length;const t=n.indexOf("?"),i=n.indexOf("#");t!==-1&&(e=Math.min(e,t)),i!==-1&&(e=Math.min(e,i));const r=n.lastIndexOf(".",e),a=n.lastIndexOf("/",e),s=n.indexOf("://");return s!==-1&&s+2===a||r===-1||r0&&n.__depth+1>=e.maxDepth||!oC(n))}function pF(n,e){if(e.ensureChildrenArePreprocessed(n),cC(n,e),!n.__inFrustum)return;if(!yce(n,e)){GA(n,e);return}let t=!1,i=!1;const r=n.children;for(let a=0,s=r.length;as.setTileActive&&s.setTileActive(n,i)),n.__wasSetVisible!==r&&e.invokeOnePlugin(s=>s.setTileVisible&&s.setTileVisible(n,r))),n.__wasSetActive=i,n.__wasSetVisible=r,n.__usedLastFrame=t;const a=n.children;for(let s=0,o=a.length;s{e===null&&(e=requestAnimationFrame(()=>{e=null,n()}))}}const N5=Symbol("PLUGIN_REGISTERED"),O5=(n,e)=>{const t=n.priority||0,i=e.priority||0;return t!==i?t>i?1:-1:n.__used!==e.__used?n.__used?1:-1:n.__error!==e.__error?n.__error>e.__error?1:-1:n.__distanceFromCamera!==e.__distanceFromCamera?n.__distanceFromCamera>e.__distanceFromCamera?-1:1:n.__depthFromRenderedParent!==e.__depthFromRenderedParent?n.__depthFromRenderedParent>e.__depthFromRenderedParent?-1:1:0},Tce=(n,e)=>{const t=n.priority||0,i=e.priority||0;return t!==i?t>i?1:-1:n.__lastFrameVisited!==e.__lastFrameVisited?n.__lastFrameVisited>e.__lastFrameVisited?-1:1:n.__depthFromRenderedParent!==e.__depthFromRenderedParent?n.__depthFromRenderedParent>e.__depthFromRenderedParent?1:-1:n.__loadingState!==e.__loadingState?n.__loadingState>e.__loadingState?-1:1:n.__hasUnrenderableContent!==e.__hasUnrenderableContent?n.__hasUnrenderableContent?-1:1:n.__error!==e.__error?n.__error>e.__error?-1:1:0};let Ece=class{get root(){const e=this.rootTileSet;return e?e.root:null}get loadProgress(){const{stats:e,isLoading:t}=this,i=e.downloading+e.parsing,r=e.inCacheSinceLoad+(t?1:0);return r===0?1:1-i/r}get errorThreshold(){return this._errorThreshold}set errorThreshold(e){console.warn('TilesRenderer: The "errorThreshold" option has been deprecated.'),this._errorThreshold=e}constructor(e=null){this.rootLoadingState=gc,this.rootTileSet=null,this.rootURL=e,this.fetchOptions={},this.plugins=[],this.queuedTiles=[],this.cachedSinceLoadComplete=new Set,this.isLoading=!1;const t=new vce;t.unloadPriorityCallback=Tce;const i=new fM;i.maxJobs=25,i.priorityCallback=O5;const r=new fM;r.maxJobs=5,r.priorityCallback=O5;const a=new fM;a.maxJobs=25,this.processedTiles=new WeakSet,this.visibleTiles=new Set,this.activeTiles=new Set,this.usedSet=new Set,this.lruCache=t,this.downloadQueue=i,this.parseQueue=r,this.processNodeQueue=a,this.stats={inCacheSinceLoad:0,inCache:0,parsing:0,downloading:0,failed:0,inFrustum:0,used:0,active:0,visible:0},this.frameCount=0,this._dispatchNeedsUpdateEvent=Sce(()=>{this.dispatchEvent({type:"needs-update"})}),this.errorTarget=16,this._errorThreshold=1/0,this.displayActiveTiles=!1,this.maxDepth=1/0}registerPlugin(e){if(e[N5]===!0)throw new Error("TilesRendererBase: A plugin can only be registered to a single tile set");const t=this.plugins,i=e.priority||0;let r=t.length;for(let a=0;ai){r=a;break}t.splice(r,0,e),e[N5]=!0,e.init&&e.init(this)}unregisterPlugin(e){const t=this.plugins;if(typeof e=="string"&&(e=this.getPluginByName(e)),t.includes(e)){const i=t.indexOf(e);return t.splice(i,1),e.dispose&&e.dispose(),!0}return!1}getPluginByName(e){return this.plugins.find(t=>t.name===e)||null}traverse(e,t,i=!0){this.root&&cF(this.root,(r,...a)=>(i&&this.ensureChildrenArePreprocessed(r,!0),e?e(r,...a):!1),t)}queueTileForDownload(e){e.__loadingState!==gc||this.lruCache.isFull()||this.queuedTiles.push(e)}markTileUsed(e){this.usedSet.add(e),this.lruCache.markUsed(e)}update(){const{lruCache:e,usedSet:t,stats:i,root:r,downloadQueue:a,parseQueue:s,processNodeQueue:o}=this;if(this.rootLoadingState===gc&&(this.rootLoadingState=Ax,this.invokeOnePlugin(u=>u.loadRootTileSet&&u.loadRootTileSet()).then(u=>{let d=this.rootURL;d!==null&&this.invokeAllPlugins(f=>d=f.preprocessURL?f.preprocessURL(d,null):d),this.rootLoadingState=Bg,this.rootTileSet=u,this.dispatchEvent({type:"needs-update"}),this.dispatchEvent({type:"load-content"}),this.dispatchEvent({type:"load-tile-set",tileSet:u,url:d})}).catch(u=>{this.rootLoadingState=Yf,console.error(u),this.rootTileSet=null,this.dispatchEvent({type:"load-error",tile:null,error:u,url:this.rootURL})})),!r)return;i.inFrustum=0,i.used=0,i.active=0,i.visible=0,this.frameCount++,t.forEach(u=>e.markUnused(u)),t.clear(),pF(r,this),mF(r,this),gF(r,this),vF(r,this);const l=this.queuedTiles;l.sort(e.unloadPriorityCallback);for(let u=0,d=l.length;u{t.__loadingState===Yf&&(t.__loadingState=gc)},null,!1),e.failed=0)}dispose(){[...this.plugins].forEach(i=>{this.unregisterPlugin(i)});const e=this.lruCache,t=[];this.traverse(i=>(t.push(i),!1),null,!1);for(let i=0,r=t.length;it.setTileVisible&&t.setTileVisible(e,!1)),e.__visible=!1),e.__active&&(this.invokeOnePlugin(t=>t.setTileActive&&t.setTileActive(e,!1)),e.__active=!1)}preprocessNode(e,t,i=null){var r;if(this.processedTiles.add(e),e.content&&(!("uri"in e.content)&&"url"in e.content&&(e.content.uri=e.content.url,delete e.content.url),e.content.boundingVolume&&!("box"in e.content.boundingVolume||"sphere"in e.content.boundingVolume||"region"in e.content.boundingVolume)&&delete e.content.boundingVolume),e.parent=i,e.children=e.children||[],(r=e.content)!=null&&r.uri){const a=D5(e.content.uri);e.__hasContent=!0,e.__hasUnrenderableContent=!!(a&&/json$/.test(a)),e.__hasRenderableContent=!e.__hasUnrenderableContent}else e.__hasContent=!1,e.__hasUnrenderableContent=!1,e.__hasRenderableContent=!1;e.__childrenProcessed=0,i&&i.__childrenProcessed++,e.__distanceFromCamera=1/0,e.__error=1/0,e.__inFrustum=!1,e.__isLeaf=!1,e.__usedLastFrame=!1,e.__used=!1,e.__wasSetVisible=!1,e.__visible=!1,e.__allChildrenReady=!1,e.__wasSetActive=!1,e.__active=!1,e.__loadingState=gc,i===null?(e.__depth=0,e.__depthFromRenderedParent=e.__hasRenderableContent?1:0,e.refine=e.refine||"REPLACE"):(e.__depth=i.__depth+1,e.__depthFromRenderedParent=i.__depthFromRenderedParent+(e.__hasRenderableContent?1:0),e.refine=e.refine||i.refine),e.__basePath=t,e.__lastFrameVisited=-1,this.invokeAllPlugins(a=>{a!==this&&a.preprocessNode&&a.preprocessNode(e,t,i)})}setTileActive(e,t){t?this.activeTiles.add(e):this.activeTiles.delete(e)}setTileVisible(e,t){t?this.visibleTiles.add(e):this.visibleTiles.delete(e)}calculateTileViewError(e,t){}ensureChildrenArePreprocessed(e,t=!1){const i=e.children;for(let r=0,a=i.length;r{this.preprocessNode(o,e.__basePath,e),this._dispatchNeedsUpdateEvent()})}}getBytesUsed(e){let t=0;return this.invokeAllPlugins(i=>{i.calculateBytesUsed&&(t+=i.calculateBytesUsed(e,e.cached.scene)||0)}),t}recalculateBytesUsed(e=null){const{lruCache:t,processedTiles:i}=this;e===null?t.itemSet.forEach(r=>{i.has(r)&&t.setMemoryUsage(r,this.getBytesUsed(r))}):t.setMemoryUsage(e,this.getBytesUsed(e))}preprocessTileSet(e,t,i=null){const r=e.asset.version,[a,s]=r.split(".").map(l=>parseInt(l));console.assert(a<=1,"TilesRenderer: asset.version is expected to be a 1.x or a compatible version."),a===1&&s>0&&console.warn("TilesRenderer: tiles versions at 1.1 or higher have limited support. Some new extensions and features may not be supported.");let o=t.replace(/\/[^/]*$/,"");o=new URL(o,window.location.href).toString(),this.preprocessNode(e.root,o,i)}loadRootTileSet(){let e=this.rootURL;return this.invokeAllPlugins(t=>e=t.preprocessURL?t.preprocessURL(e,null):e),this.invokeOnePlugin(t=>t.fetchData&&t.fetchData(e,this.fetchOptions)).then(t=>{if(t instanceof Response){if(t.ok)return t.json();throw new Error(`TilesRenderer: Failed to load tileset "${e}" with status ${t.status} : ${t.statusText}`)}else return t}).then(t=>(this.preprocessTileSet(t,e),t))}requestTileContents(e){if(e.__loadingState!==gc)return;let t=!1,i=null,r=new URL(e.content.uri,e.__basePath+"/").toString();this.invokeAllPlugins(p=>r=p.preprocessURL?p.preprocessURL(r,e):r);const a=this.stats,s=this.lruCache,o=this.downloadQueue,l=this.parseQueue,u=D5(r),d=new AbortController,f=d.signal;if(s.add(e,p=>{d.abort(),t?(p.children.length=0,p.__childrenProcessed=0):this.invokeAllPlugins(m=>{m.disposeTile&&m.disposeTile(p)}),a.inCache--,this.cachedSinceLoadComplete.has(e)&&(this.cachedSinceLoadComplete.delete(e),a.inCacheSinceLoad--),p.__loadingState===Ax?a.downloading--:p.__loadingState===pM&&a.parsing--,p.__loadingState=gc,l.remove(p),o.remove(p)}))return this.isLoading||(this.isLoading=!0,this.dispatchEvent({type:"tiles-load-start"})),s.setMemoryUsage(e,this.getBytesUsed(e)),this.cachedSinceLoadComplete.add(e),a.inCacheSinceLoad++,a.inCache++,a.downloading++,e.__loadingState=Ax,o.add(e,p=>{if(f.aborted)return Promise.resolve();const m=this.invokeOnePlugin(v=>v.fetchData&&v.fetchData(r,{...this.fetchOptions,signal:f}));return this.dispatchEvent({type:"tile-download-start",tile:e}),m}).then(p=>{if(!f.aborted)if(p instanceof Response){if(p.ok)return u==="json"?p.json():p.arrayBuffer();throw new Error(`Failed to load model with error code ${p.status}`)}else return p}).then(p=>{if(!f.aborted)return a.downloading--,a.parsing++,e.__loadingState=pM,l.add(e,m=>f.aborted?Promise.resolve():u==="json"&&p.root?(this.preprocessTileSet(p,r,e),e.children.push(p.root),i=p,t=!0,Promise.resolve()):this.invokeOnePlugin(v=>v.parseTile&&v.parseTile(p,m,u,r,f)))}).then(()=>{if(f.aborted)return;a.parsing--,e.__loadingState=Bg,s.setLoaded(e,!0);const p=this.getBytesUsed(e);if(s.getMemoryUsage(e)===0&&p>0&&s.isFull()){s.remove(e);return}s.setMemoryUsage(e,p),this.dispatchEvent({type:"needs-update"}),this.dispatchEvent({type:"load-content"}),t&&this.dispatchEvent({type:"load-tile-set",tileSet:i,url:r}),e.cached.scene&&this.dispatchEvent({type:"load-model",scene:e.cached.scene,tile:e})}).catch(p=>{f.aborted||(p.name!=="AbortError"?(l.remove(e),o.remove(e),e.__loadingState===pM?a.parsing--:e.__loadingState===Ax&&a.downloading--,a.failed++,console.error(`TilesRenderer : Failed to load tile at url "${e.content.uri}".`),console.error(p),e.__loadingState=Yf,s.setLoaded(e,!0),this.dispatchEvent({type:"load-error",tile:e,error:p,url:r})):s.remove(e))})}getAttributions(e=[]){return this.invokeAllPlugins(t=>t!==this&&t.getAttributions&&t.getAttributions(e)),e}invokeOnePlugin(e){const t=[...this.plugins,this];for(let i=0;ie!=="extensions")}getData(e,t,i=null,r=null){const a=this.header;if(!(e in a))return null;const s=a[e];if(s instanceof Object){if(Array.isArray(s))return s;{const{buffer:o,binOffset:l,binLength:u}=this,d=s.byteOffset||0,f=s.type||r,p=s.componentType||i;if("type"in s&&r&&s.type!==r)throw new Error("FeatureTable: Specified type does not match expected type.");const m=l+d,v=_F(o,m,t,f,p,e);if(m+v.byteLength>l+u)throw new Error("FeatureTable: Feature data read outside binary body length.");return v}}else return s}getBuffer(e,t){const{buffer:i,binOffset:r}=this;return i.slice(r+e,r+e+t)}},bce=class{constructor(e){this.batchTable=e;const t=e.header.extensions["3DTILES_batch_table_hierarchy"];this.classes=t.classes;for(const r of this.classes){const a=r.instances;for(const s in a)r.instances[s]=this._parseProperty(a[s],r.length,s)}if(this.instancesLength=t.instancesLength,this.classIds=this._parseProperty(t.classIds,this.instancesLength,"classIds"),t.parentCounts?this.parentCounts=this._parseProperty(t.parentCounts,this.instancesLength,"parentCounts"):this.parentCounts=new Array(this.instancesLength).fill(1),t.parentIds){const r=this.parentCounts.reduce((a,s)=>a+s,0);this.parentIds=this._parseProperty(t.parentIds,r,"parentIds")}else this.parentIds=null;this.instancesIds=[];const i={};for(const r of this.classIds)i[r]=i[r]??0,this.instancesIds.push(i[r]),i[r]++}_parseProperty(e,t,i){if(Array.isArray(e))return e;{const{buffer:r,binOffset:a}=this.batchTable,s=e.byteOffset,o=e.componentType||"UNSIGNED_SHORT",l=a+s;return _F(r,l,t,"SCALAR",o,i)}}getDataFromId(e,t={}){const i=this.parentCounts[e];if(this.parentIds&&i>0){let l=0;for(let u=0;u=this.count)throw new Error(`BatchTable: id value "${e}" out of bounds for "${this.count}" features number.`);for(const i of this.getKeys())t[i]=super.getData(i,this.count)[e];for(const i in this.extensions){const r=this.extensions[i];r.getDataFromId instanceof Function&&(t[i]=t[i]||{},r.getDataFromId(e,t[i]))}return t}getPropertyArray(e){return super.getData(e,this.count)}},Mce=class extends MT{parse(e){const t=new DataView(e),i=Bp(t);console.assert(i==="b3dm");const r=t.getUint32(4,!0);console.assert(r===1);const a=t.getUint32(8,!0);console.assert(a===e.byteLength);const s=t.getUint32(12,!0),o=t.getUint32(16,!0),l=t.getUint32(20,!0),u=t.getUint32(24,!0),d=28,f=e.slice(d,d+s+o),p=new AT(f,0,s,o),m=d+s+o,v=e.slice(m,m+l+u),x=new uC(v,p.getData("BATCH_LENGTH"),0,l,u),S=m+l+u,_=new Uint8Array(e,S,a-S);return{version:r,featureTable:p,batchTable:x,glbBytes:_}}},Ace=class extends MT{parse(e){const t=new DataView(e),i=Bp(t);console.assert(i==="i3dm");const r=t.getUint32(4,!0);console.assert(r===1);const a=t.getUint32(8,!0);console.assert(a===e.byteLength);const s=t.getUint32(12,!0),o=t.getUint32(16,!0),l=t.getUint32(20,!0),u=t.getUint32(24,!0),d=t.getUint32(28,!0),f=32,p=e.slice(f,f+s+o),m=new AT(p,0,s,o),v=f+s+o,x=e.slice(v,v+l+u),S=new uC(x,m.getData("INSTANCES_LENGTH"),0,l,u),_=v+l+u,T=new Uint8Array(e,_,a-_);let E=null,b=null,R=null;if(d)E=T,b=Promise.resolve();else{const w=this.resolveExternalURL(uF(T));R=sC(w),b=fetch(w,this.fetchOptions).then(L=>{if(!L.ok)throw new Error(`I3DMLoaderBase : Failed to load file "${w}" with status ${L.status} : ${L.statusText}`);return L.arrayBuffer()}).then(L=>{E=new Uint8Array(L)})}return b.then(()=>({version:r,featureTable:m,batchTable:S,glbBytes:E,gltfWorkingPath:R}))}},wce=class extends MT{parse(e){const t=new DataView(e),i=Bp(t);console.assert(i==="pnts");const r=t.getUint32(4,!0);console.assert(r===1);const a=t.getUint32(8,!0);console.assert(a===e.byteLength);const s=t.getUint32(12,!0),o=t.getUint32(16,!0),l=t.getUint32(20,!0),u=t.getUint32(24,!0),d=28,f=e.slice(d,d+s+o),p=new AT(f,0,s,o),m=d+s+o,v=e.slice(m,m+l+u),x=new uC(v,p.getData("BATCH_LENGTH")||p.getData("POINTS_LENGTH"),0,l,u);return Promise.resolve({version:r,featureTable:p,batchTable:x})}},Rce=class extends MT{parse(e){const t=new DataView(e),i=Bp(t);console.assert(i==="cmpt",'CMPTLoader: The magic bytes equal "cmpt".');const r=t.getUint32(4,!0);console.assert(r===1,'CMPTLoader: The version listed in the header is "1".');const a=t.getUint32(8,!0);console.assert(a===e.byteLength,"CMPTLoader: The contents buffer length listed in the header matches the file.");const s=t.getUint32(12,!0),o=[];let l=16;for(let u=0;uNce);return t.set(e.x*T,e.y*E,e.z*b)}calculateHorizonDistance(e,t){const i=this.calculateEffectiveRadius(e);return Math.sqrt(2*i*t+t**2)}calculateEffectiveRadius(e){const t=this.radius.x,i=1-this.radius.z**2/t**2,r=e*ht.DEG2RAD,a=Math.sin(r)**2;return t/Math.sqrt(1-i*a)}getPositionElevation(e){this.getPositionToSurfacePoint(e,aa);const t=mM.subVectors(e,aa);return Math.sign(t.dot(e))*t.length()}closestPointToRayEstimate(e,t){return this.intersectRay(e,t)?t:(hs.makeScale(...this.radius).invert(),Rx.copy(e).applyMatrix4(hs),aa.set(0,0,0),Rx.closestPointToPoint(aa,t).normalize(),hs.makeScale(...this.radius),t.applyMatrix4(hs))}copy(e){return this.radius.copy(e.radius),this}clone(){return new this.constructor().copy(this)}};const Fp=new wT(C5,C5,_ce);Fp.name="WGS84 Earth";const Dx=new D,Nx=new D,oa=new D,Ox=new Pr;let F5=class{constructor(e=new Qi,t=new Me){this.box=e.clone(),this.transform=t.clone(),this.inverseTransform=new Me,this.points=new Array(8).fill().map(()=>new D),this.planes=new Array(6).fill().map(()=>new xs)}copy(e){return this.box.copy(e.box),this.transform.copy(e.transform),this.update(),this}clone(){return new this.constructor().copy(this)}clampPoint(e,t){return t.copy(e).applyMatrix4(this.inverseTransform).clamp(this.box.min,this.box.max).applyMatrix4(this.transform)}distanceToPoint(e){return this.clampPoint(e,oa).distanceTo(e)}containsPoint(e){return oa.copy(e).applyMatrix4(this.inverseTransform),this.box.containsPoint(oa)}intersectsRay(e){return Ox.copy(e).applyMatrix4(this.inverseTransform),Ox.intersectsBox(this.box)}intersectRay(e,t){return Ox.copy(e).applyMatrix4(this.inverseTransform),Ox.intersectBox(this.box,t)?(t.applyMatrix4(this.transform),t):null}update(){const{points:e,inverseTransform:t,transform:i,box:r}=this;t.copy(i).invert();const{min:a,max:s}=r;let o=0;for(let l=-1;l<=1;l+=2)for(let u=-1;u<=1;u+=2)for(let d=-1;d<=1;d+=2)e[o].set(l<0?a.x:s.x,u<0?a.y:s.y,d<0?a.z:s.z).applyMatrix4(i),o++;this.updatePlanes()}updatePlanes(){Dx.copy(this.box.min).applyMatrix4(this.transform),Nx.copy(this.box.max).applyMatrix4(this.transform),oa.set(0,0,1).transformDirection(this.transform),this.planes[0].setFromNormalAndCoplanarPoint(oa,Dx),this.planes[1].setFromNormalAndCoplanarPoint(oa,Nx).negate(),oa.set(0,1,0).transformDirection(this.transform),this.planes[2].setFromNormalAndCoplanarPoint(oa,Dx),this.planes[3].setFromNormalAndCoplanarPoint(oa,Nx).negate(),oa.set(1,0,0).transformDirection(this.transform),this.planes[4].setFromNormalAndCoplanarPoint(oa,Dx),this.planes[5].setFromNormalAndCoplanarPoint(oa,Nx).negate()}intersectsSphere(e){return this.clampPoint(e.center,oa),oa.distanceToSquared(e.center)<=e.radius*e.radius}intersectsFrustum(e){return this._intersectsPlaneShape(e.planes,e.points)}intersectsOBB(e){return this._intersectsPlaneShape(e.planes,e.points)}_intersectsPlaneShape(e,t){const i=this.points,r=this.planes;for(let a=0;a<6;a++){const s=e[a];let o=-1/0;for(let l=0;l<8;l++){const u=i[l],d=s.distanceToPoint(u);o=o=t&&T<=i&&E>=r&&E<=a){const b=Lce(e);p.push(b),this.getCartographicToPosition(T,E,x,b)}}}return p}getBoundingBox(e,t){V5();const{latStart:i,latEnd:r,lonStart:a,lonEnd:s}=this;if(r-i{if(i.geometry&&!e.has(i.geometry)&&(t+=dee(i.geometry),e.add(i.geometry)),i.material){const r=i.material;for(const a in r){const s=r[a];s&&s.isTexture&&!e.has(s)&&(t+=Uce(s),e.add(s))}}}),t}let xF=class extends Mce{constructor(e=Kp){super(),this.manager=e,this.adjustmentTransform=new Me}parse(e){const t=super.parse(e),i=t.glbBytes.slice().buffer;return new Promise((r,a)=>{const s=this.manager,o=this.fetchOptions,l=s.getHandler("path.gltf")||new Lp(s);o.credentials==="include"&&o.mode==="cors"&&l.setCrossOrigin("use-credentials"),"credentials"in o&&l.setWithCredentials(o.credentials==="include"),o.headers&&l.setRequestHeader(o.headers);let u=this.workingPath;!/[\\/]$/.test(u)&&u.length&&(u+="/");const d=this.adjustmentTransform;l.parse(i,u,f=>{const{batchTable:p,featureTable:m}=t,{scene:v}=f,x=m.getData("RTC_CENTER",1,"FLOAT","VEC3");x&&(v.position.x+=x[0],v.position.y+=x[1],v.position.z+=x[2]),f.scene.updateMatrix(),f.scene.matrix.multiply(d),f.scene.matrix.decompose(f.scene.position,f.scene.quaternion,f.scene.scale),f.batchTable=p,f.featureTable=m,v.batchTable=p,v.featureTable=m,r(f)},a)})}};function zce(n){const e=n>>11,t=n>>5&63,i=n&31,r=Math.round(e/31*255),a=Math.round(t/63*255),s=Math.round(i/31*255);return[r,a,s]}const u0=new re;function Bce(n,e,t=new D){u0.set(n,e).divideScalar(256).multiplyScalar(2).subScalar(1),t.set(u0.x,u0.y,1-Math.abs(u0.x)-Math.abs(u0.y));const i=ht.clamp(-t.z,0,1);return t.x>=0?t.setX(t.x-i):t.setX(t.x+i),t.y>=0?t.setY(t.y-i):t.setY(t.y+i),t.normalize(),t}const G5={RGB:"color",POSITION:"position"};let yF=class extends wce{constructor(e=Kp){super(),this.manager=e}parse(e){return super.parse(e).then(async t=>{const{featureTable:i,batchTable:r}=t,a=new nv,s=i.header.extensions,o=new D;let l;if(s&&s["3DTILES_draco_point_compression"]){const{byteOffset:f,byteLength:p,properties:m}=s["3DTILES_draco_point_compression"],v=this.manager.getHandler("draco.drc");if(v==null)throw new Error("PNTSLoader: dracoLoader not available.");const x={};for(const T in m)if(T in G5&&T in m){const E=G5[T];x[E]=m[T]}const S={attributeIDs:x,attributeTypes:{position:"Float32Array",color:"Uint8Array"},useUniqueIDs:!0},_=i.getBuffer(f,p);l=await v.decodeGeometry(_,S),l.attributes.color&&(a.vertexColors=!0)}else{const f=i.getData("POINTS_LENGTH"),p=i.getData("POSITION",f,"FLOAT","VEC3"),m=i.getData("NORMAL",f,"FLOAT","VEC3"),v=i.getData("NORMAL",f,"UNSIGNED_BYTE","VEC2"),x=i.getData("RGB",f,"UNSIGNED_BYTE","VEC3"),S=i.getData("RGBA",f,"UNSIGNED_BYTE","VEC4"),_=i.getData("RGB565",f,"UNSIGNED_SHORT","SCALAR"),T=i.getData("CONSTANT_RGBA",f,"UNSIGNED_BYTE","VEC4"),E=i.getData("POSITION_QUANTIZED",f,"UNSIGNED_SHORT","VEC3"),b=i.getData("QUANTIZED_VOLUME_SCALE",f,"FLOAT","VEC3"),R=i.getData("QUANTIZED_VOLUME_OFFSET",f,"FLOAT","VEC3");if(l=new Ct,E){const w=new Float32Array(f*3);for(let L=0;L{const{featureTable:i,batchTable:r}=t,a=t.glbBytes.slice().buffer;return new Promise((s,o)=>{const l=this.fetchOptions,u=this.manager,d=u.getHandler("path.gltf")||new Lp(u);l.credentials==="include"&&l.mode==="cors"&&d.setCrossOrigin("use-credentials"),"credentials"in l&&d.setWithCredentials(l.credentials==="include"),l.headers&&d.setRequestHeader(l.headers);let f=t.gltfWorkingPath??this.workingPath;/[\\/]$/.test(f)||(f+="/");const p=this.adjustmentTransform;d.parse(a,f,m=>{const v=i.getData("INSTANCES_LENGTH");let x=i.getData("POSITION",v,"FLOAT","VEC3");const S=i.getData("POSITION_QUANTIZED",v,"UNSIGNED_SHORT","VEC3"),_=i.getData("QUANTIZED_VOLUME_OFFSET",1,"FLOAT","VEC3"),T=i.getData("QUANTIZED_VOLUME_SCALE",1,"FLOAT","VEC3"),E=i.getData("NORMAL_UP",v,"FLOAT","VEC3"),b=i.getData("NORMAL_RIGHT",v,"FLOAT","VEC3"),R=i.getData("SCALE_NON_UNIFORM",v,"FLOAT","VEC3"),w=i.getData("SCALE",v,"FLOAT","SCALAR"),L=i.getData("RTC_CENTER",1,"FLOAT","VEC3"),U=i.getData("EAST_NORTH_UP");if(["NORMAL_UP_OCT32P","NORMAL_RIGHT_OCT32P"].forEach(W=>{W in i.header&&console.warn(`I3DMLoader: Unsupported FeatureTable feature "${W}" detected.`)}),!x&&S){x=new Float32Array(v*3);for(let W=0;W{if(W.isMesh){z.push(W);const{geometry:K,material:oe}=W,ae=new VS(K,oe,v);ae.position.copy(N),L&&(ae.position.x+=L[0],ae.position.y+=L[1],ae.position.z+=L[2]),C.push(ae)}});for(let W=0;W{const l=new Xi;return o.forEach(u=>{l.add(u.scene)}),{tiles:o,scene:l}})}}const h0=new Me;class Hce extends Xi{constructor(e){super(),this.isTilesGroup=!0,this.name="TilesRenderer.TilesGroup",this.tilesRenderer=e,this.matrixWorldInverse=new Me}raycast(e,t){return this.tilesRenderer.optimizeRaycast?(this.tilesRenderer.raycast(e,t),!1):!0}updateMatrixWorld(e){if(this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldNeedsUpdate||e){this.parent===null?h0.copy(this.matrix):h0.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1;const t=h0.elements,i=this.matrixWorld.elements;let r=!1;for(let a=0;a<16;a++){const s=t[a],o=i[a];if(Math.abs(s-o)>Number.EPSILON){r=!0;break}}if(r){this.matrixWorld.copy(h0),this.matrixWorldInverse.copy(h0).invert();const a=this.children;for(let s=0,o=a.length;sa.raycastTile&&a.raycastTile(n,r,e,i))||e.intersectObject(r,!0,i)}function Vce(n,e,t){bF(n,e,t,Px),Px.sort(EF);const i=Px[0]||null;return Px.length=0,i}function MF(n){return"__used"in n}function AF(n,e,t,i=null){const{group:r,activeTiles:a}=n;i===null&&(i=TF,i.copy(t.ray).applyMatrix4(r.matrixWorldInverse));const s=[],o=e.children;for(let d=0,f=o.length;du)break;const x=AF(n,v,t,i);if(x){const S=x.distance*x.distance;Sa?r:a}intersectsFrustum(e){const t=this.obb||this.regionObb,i=this.sphere;return i&&!e.intersectsSphere(i)||t&&!t.intersectsFrustum(e)?!1:!!(i||t)}intersectsSphere(e){const t=this.obb||this.regionObb,i=this.sphere;return i&&!i.intersectsSphere(e)||t&&!t.intersectsSphere(e)?!1:!!(i||t)}intersectsOBB(e){const t=this.obb||this.regionObb,i=this.sphere;return i&&!e.intersectsSphere(i)||t&&!t.intersectsOBB(e)?!1:!!(i||t)}getOBB(e,t){const i=this.obb||this.regionObb;i?(e.copy(i.box),t.copy(i.transform)):(this.getAABB(e),t.identity())}getAABB(e){if(this.sphere)this.sphere.getBoundingBox(e);else{const t=this.obb||this.regionObb;e.copy(t.box).applyMatrix4(t.transform)}}getSphere(e){if(this.sphere)e.copy(this.sphere);else if(this.region)this.region.getBoundingSphere(e);else{const t=this.obb||this.regionObb;t.box.getBoundingSphere(e),e.applyMatrix4(t.transform)}}setObbData(e,t){const i=new F5;ll.set(e[3],e[4],e[5]),cl.set(e[6],e[7],e[8]),ul.set(e[9],e[10],e[11]);const r=ll.length(),a=cl.length(),s=ul.length();ll.normalize(),cl.normalize(),ul.normalize(),r===0&&ll.crossVectors(cl,ul),a===0&&cl.crossVectors(ll,ul),s===0&&ul.crossVectors(ll,cl),i.transform.set(ll.x,cl.x,ul.x,e[0],ll.y,cl.y,ul.y,e[1],ll.z,cl.z,ul.z,e[2],0,0,0,1).premultiply(t),i.box.min.set(-r,-a,-s),i.box.max.set(r,a,s),i.update(),this.obb=i}setSphereData(e,t,i,r,a){const s=new qi;s.center.set(e,t,i),s.radius=r,s.applyMatrix4(a),this.sphere=s}setRegionData(e,t,i,r,a,s,o){const l=new Ice(...e.radius,i,a,t,r,s,o),u=new F5;l.getBoundingBox(u.box,u.transform),u.update(),this.region=l,this.regionObb=u}}const kce=new Mt;function Wce(n,e,t,i){const r=kce.set(n.normal.x,n.normal.y,n.normal.z,e.normal.x,e.normal.y,e.normal.z,t.normal.x,t.normal.y,t.normal.z);return i.set(-n.constant,-e.constant,-t.constant),i.applyMatrix3(r.invert()),i}let Xce=class extends ed{constructor(){super(),this.points=Array(8).fill().map(()=>new D)}setFromProjectionMatrix(e,t){return super.setFromProjectionMatrix(e,t),this.calculateFrustumPoints(),this}calculateFrustumPoints(){const{planes:e,points:t}=this;[[e[0],e[3],e[4]],[e[1],e[3],e[4]],[e[0],e[2],e[4]],[e[1],e[2],e[4]],[e[0],e[3],e[5]],[e[1],e[3],e[5]],[e[0],e[2],e[5]],[e[1],e[2],e[5]]].forEach((i,r)=>{Wce(i[0],i[1],i[2],t[r])})}};const Z5=new Me,Q5=new Ai,RF=Symbol("INITIAL_FRUSTUM_CULLED"),zx=new Me,d0=new D,MM=new re,xf={inView:!1,error:1/0},qce=new D(1,0,0),Yce=new D(0,1,0);function K5(n,e){n.traverse(t=>{t.frustumCulled=t[RF]&&e})}class jce extends Ece{get autoDisableRendererCulling(){return this._autoDisableRendererCulling}set autoDisableRendererCulling(e){this._autoDisableRendererCulling!==e&&(super._autoDisableRendererCulling=e,this.forEachLoadedModel(t=>{K5(t,!e)}))}get optimizeRaycast(){return this._optimizeRaycast}set optimizeRaycast(e){console.warn('TilesRenderer: The "optimizeRaycast" option has been deprecated.'),this._optimizeRaycast=e}constructor(...e){super(...e),this.group=new Hce(this),this.ellipsoid=Fp.clone(),this.cameras=[],this.cameraMap=new Map,this.cameraInfo=[],this._optimizeRaycast=!0,this._upRotationMatrix=new Me,this._bytesUsed=new WeakMap,this._autoDisableRendererCulling=!0,this.manager=new rT,this._listeners={}}addEventListener(...e){Mi.prototype.addEventListener.call(this,...e)}hasEventListener(...e){Mi.prototype.hasEventListener.call(this,...e)}removeEventListener(...e){Mi.prototype.removeEventListener.call(this,...e)}dispatchEvent(...e){Mi.prototype.dispatchEvent.call(this,...e)}getBoundingBox(e){if(!this.root)return!1;const t=this.root.cached.boundingVolume;return t?(t.getAABB(e),!0):!1}getOrientedBoundingBox(e,t){if(!this.root)return!1;const i=this.root.cached.boundingVolume;return i?(i.getOBB(e,t),!0):!1}getBoundingSphere(e){if(!this.root)return!1;const t=this.root.cached.boundingVolume;return t?(t.getSphere(e),!0):!1}forEachLoadedModel(e){this.traverse(t=>{const i=t.cached&&t.cached.scene;i&&e(i,t)},null,!1)}raycast(e,t){if(this.root)if(e.firstHitOnly){const i=AF(this,this.root,e);i&&t.push(i)}else wF(this,this.root,e,t)}hasCamera(e){return this.cameraMap.has(e)}setCamera(e){const t=this.cameras,i=this.cameraMap;return i.has(e)?!1:(i.set(e,new re),t.push(e),this.dispatchEvent({type:"add-camera",camera:e}),!0)}setResolution(e,t,i){const r=this.cameraMap;if(!r.has(e))return!1;const a=t.isVector2?t.x:t,s=t.isVector2?t.y:i,o=r.get(e);return(o.width!==a||o.height!==s)&&(o.set(a,s),this.dispatchEvent({type:"camera-resolution-change"})),!0}setResolutionFromRenderer(e,t){return t.getSize(MM),this.setResolution(e,MM.x,MM.y)}deleteCamera(e){const t=this.cameras,i=this.cameraMap;if(i.has(e)){const r=t.indexOf(e);return t.splice(r,1),i.delete(e),this.dispatchEvent({type:"delete-camera",camera:e}),!0}return!1}loadRootTileSet(...e){return super.loadRootTileSet(...e).then(t=>{const{asset:i,extensions:r={}}=t;switch((i&&i.gltfUpAxis||"y").toLowerCase()){case"x":this._upRotationMatrix.makeRotationAxis(Yce,-Math.PI/2);break;case"y":this._upRotationMatrix.makeRotationAxis(qce,Math.PI/2);break}if("3DTILES_ellipsoid"in r){const a=r["3DTILES_ellipsoid"],{ellipsoid:s}=this;s.name=a.body,a.radii?s.radius.set(...a.radii):s.radius.set(1,1,1)}return t})}update(){let e=null;if(this.invokeAllPlugins(s=>{if(s.doTilesNeedUpdate){const o=s.doTilesNeedUpdate();e===null?e=o:e=!!(e||o)}}),e===!1){this.dispatchEvent({type:"update-before"}),this.dispatchEvent({type:"update-after"});return}this.dispatchEvent({type:"update-before"});const t=this.group,i=this.cameras,r=this.cameraMap,a=this.cameraInfo;for(;a.length>i.length;)a.pop();for(;a.length1e-6&&console.warn("ThreeTilesRenderer : Non uniform scale used for tile which may cause issues when calculating screen space error.");for(let s=0,o=a.length;ss=s||!!(o!==this&&o.calculateTileViewError)),s===!1&&console.warn("TilesRenderer: no cameras defined. Cannot update 3d tiles.")}}preprocessNode(e,t,i=null){super.preprocessNode(e,t,i);const r=new Me;if(e.transform){const o=e.transform;for(let l=0;l<16;l++)r.elements[l]=o[l]}i&&r.premultiply(i.cached.transform);const a=new Me().copy(r).invert(),s=new Gce;"sphere"in e.boundingVolume&&s.setSphereData(...e.boundingVolume.sphere,r),"box"in e.boundingVolume&&s.setObbData(e.boundingVolume.box,r),"region"in e.boundingVolume&&s.setRegionData(this.ellipsoid,...e.boundingVolume.region),e.cached={transform:r,transformInverse:a,active:!1,boundingVolume:s,metadata:null,scene:null,geometry:null,materials:null,textures:null}}async parseTile(e,t,i,r,a){const s=t.cached,o=sC(r),l=this.fetchOptions,u=this.manager;let d=null;const f=s.transform,p=this._upRotationMatrix,m=(Bp(e)||i).toLowerCase();switch(m){case"b3dm":{const b=new xF(u);b.workingPath=o,b.fetchOptions=l,b.adjustmentTransform.copy(p),d=b.parse(e);break}case"pnts":{const b=new yF(u);b.workingPath=o,b.fetchOptions=l,d=b.parse(e);break}case"i3dm":{const b=new SF(u);b.workingPath=o,b.fetchOptions=l,b.adjustmentTransform.copy(p),b.ellipsoid.copy(this.ellipsoid),d=b.parse(e);break}case"cmpt":{const b=new Fce(u);b.workingPath=o,b.fetchOptions=l,b.adjustmentTransform.copy(p),b.ellipsoid.copy(this.ellipsoid),d=b.parse(e).then(R=>R.scene);break}case"gltf":case"glb":{const b=u.getHandler("path.gltf")||u.getHandler("path.glb")||new Lp(u);b.setWithCredentials(l.credentials==="include"),b.setRequestHeader(l.headers||{}),l.credentials==="include"&&l.mode==="cors"&&b.setCrossOrigin("use-credentials");let R=b.resourcePath||b.path||o;!/[\\/]$/.test(R)&&R.length&&(R+="/"),d=b.parseAsync(e,R).then(w=>{w.scene=w.scene||new Xi;const{scene:L}=w;return L.updateMatrix(),L.matrix.multiply(p).decompose(L.position,L.quaternion,L.scale),w});break}default:{d=this.invokeOnePlugin(b=>b.parseToMesh&&b.parseToMesh(e,t,i,r,a));break}}const v=await d;if(v===null)throw new Error(`TilesRenderer: Content type "${m}" not supported.`);let x,S;v.isObject3D?(x=v,S=null):(x=v.scene,S=v),x.updateMatrix(),x.matrix.premultiply(f),x.matrix.decompose(x.position,x.quaternion,x.scale),await this.invokeAllPlugins(b=>b.processTileModel&&b.processTileModel(x,t)),x.traverse(b=>{b[RF]=b.frustumCulled}),K5(x,!this.autoDisableRendererCulling);const _=[],T=[],E=[];if(x.traverse(b=>{if(b.geometry&&T.push(b.geometry),b.material){const R=b.material;_.push(b.material);for(const w in R){const L=R[w];L&&L.isTexture&&E.push(L)}}}),a.aborted){for(let b=0,R=E.length;b{o.userData.meshFeatures&&o.userData.meshFeatures.dispose(),o.userData.structuralMetadata&&o.userData.structuralMetadata.dispose()});for(let o=0,l=r.length;o{p!==this&&p.calculateTileViewError&&p.calculateTileViewError(e,xf)&&(o=o&&xf.inView,d=Math.max(d,xf.error),xf.inView&&(l=Math.max(l,xf.error)))}),o?(t.inView=!0,t.error=l,t.distanceFromCamera=u):(t.inView=xf.inView,t.error=d,t.distanceFromCamera=f)}setLatLonToYUp(e,t){console.warn("TilesRenderer: setLatLonToYUp is deprecated. Use the ReorientationPlugin, instead.");const{ellipsoid:i,group:r}=this;Q5.set(Math.PI/2,Math.PI/2,0),Z5.makeRotationFromEuler(Q5),i.getEastNorthUpFrame(e,t,0,r.matrix).multiply(Z5).invert().decompose(r.position,r.quaternion,r.scale),r.updateMatrixWorld(!0)}dispose(){super.dispose(),this.group.removeFromParent()}}class Zce extends jn{constructor(){super(new uu(0,0),new Qce),this.renderOrder=1/0}onBeforeRender(e){const t=this.material.uniforms;e.getSize(t.resolution.value)}updateMatrixWorld(){this.matrixWorld.makeTranslation(this.position)}dispose(){this.geometry.dispose(),this.material.dispose()}}class Qce extends Oi{constructor(){super({depthWrite:!1,depthTest:!1,transparent:!0,uniforms:{resolution:{value:new re},size:{value:15},thickness:{value:2},opacity:{value:1}},vertexShader:` uniform float pixelRatio; uniform float size; @@ -10367,7 +10367,7 @@ void mainImage(const vec4 inputColor, const vec2 uv, out vec4 outputColor) { gl_FragColor = vec4( 1, 1, 1, opacity * ( 1.0 - a ) ); } - `})}}const J5=new re,$5=new re;class Kce{constructor(){this.domElement=null,this.buttons=0,this.pointerType=null,this.pointerOrder=[],this.previousPositions={},this.pointerPositions={},this.startPositions={},this.pointerSetThisFrame={},this.hoverPosition=new re,this.hoverSet=!1}reset(){this.buttons=0,this.pointerType=null,this.pointerOrder=[],this.previousPositions={},this.pointerPositions={},this.startPositions={},this.pointerSetThisFrame={},this.hoverPosition=new re,this.hoverSet=!1}updateFrame(){const{previousPositions:e,pointerPositions:t}=this;for(const i in t)e[i].copy(t[i])}setHoverEvent(e){(e.pointerType==="mouse"||e.type==="wheel")&&(this.getAdjustedPointer(e,this.hoverPosition),this.hoverSet=!0)}getLatestPoint(e){return this.pointerType!==null?(this.getCenterPoint(e),e):this.hoverSet?(e.copy(this.hoverPosition),e):null}getAdjustedPointer(e,t){const i=(this.domElement?this.domElement:e.target).getBoundingClientRect(),r=e.clientX-i.left,a=e.clientY-i.top;t.set(r,a)}addPointer(e){const t=e.pointerId,i=new re;this.getAdjustedPointer(e,i),this.pointerOrder.push(t),this.pointerPositions[t]=i,this.previousPositions[t]=i.clone(),this.startPositions[t]=i.clone(),this.getPointerCount()===1&&(this.pointerType=e.pointerType,this.buttons=e.buttons)}updatePointer(e){const t=e.pointerId;return t in this.pointerPositions?(this.getAdjustedPointer(e,this.pointerPositions[t]),!0):!1}deletePointer(e){const t=e.pointerId,i=this.pointerOrder;i.splice(i.indexOf(t),1),delete this.pointerPositions[t],delete this.previousPositions[t],delete this.startPositions[t],this.getPointerCount.length===0&&(this.buttons=0,this.pointerType=null)}getPointerCount(){return this.pointerOrder.length}getCenterPoint(e,t=this.pointerPositions){const i=this.pointerOrder;if(this.getPointerCount()===1||this.getPointerType()==="mouse"){const r=i[0];return e.copy(t[r]),e}else if(this.getPointerCount()===2){const r=this.pointerOrder[0],a=this.pointerOrder[1],s=t[r],o=t[a];return e.addVectors(s,o).multiplyScalar(.5),e}return null}getPreviousCenterPoint(e){return this.getCenterPoint(e,this.previousPositions)}getStartCenterPoint(e){return this.getCenterPoint(e,this.startPositions)}getMoveDistance(){return this.getCenterPoint(J5),this.getPreviousCenterPoint($5),J5.sub($5).length()}getTouchPointerDistance(e=this.pointerPositions){if(this.getPointerCount()<=1||this.getPointerType()==="mouse")return 0;const{pointerOrder:t}=this,i=t[0],r=t[1],a=e[i],s=e[r];return a.distanceTo(s)}getPreviousTouchPointerDistance(){return this.getTouchPointerDistance(this.previousPositions)}getStartTouchPointerDistance(){return this.getTouchPointerDistance(this.startPositions)}getPointerType(){return this.pointerType}isPointerTouch(){return this.getPointerType()==="touch"}getPointerButtons(){return this.buttons}isLeftClicked(){return!!(this.buttons&1)}isRightClicked(){return!!(this.buttons&2)}}const Bx=new Me;new D;function op(n,e,t){return t.makeTranslation(-n.x,-n.y,-n.z),Bx.makeRotationFromQuaternion(e),t.premultiply(Bx),Bx.makeTranslation(n.x,n.y,n.z),t.premultiply(Bx),t}function wf(n,e,t,i){i.x=(n-t.offsetLeft)/t.clientWidth*2-1,i.y=-((e-t.offsetTop)/t.clientHeight)*2+1,i.isVector3&&(i.z=0)}function ps(n,e,t){const i=n instanceof Pr?n:n.ray,{origin:r,direction:a}=i;r.set(e.x,e.y,-1).unproject(t),a.set(e.x,e.y,1).unproject(t).sub(r),n.isRay||(n.near=0,n.far=a.length(),n.camera=t),a.normalize()}const Ws=0,yc=1,hl=2,Rf=3,AM=4,wM=.05,RM=.025,_c=new Me,Fx=new Me,Ia=new D,an=new D,Hx=new D,Vx=new D,mr=new D,ds=new D,CM=new D,Gx=new D,Vs=new ft,eU=new xs,Bi=new D,kx=new D,DM=new D,Jce=new ft,Fn=new Pr,f0=new re,ar=new re,tU=new re,p0=new re,NM=new re,nU=new re,iU={type:"change"},rU={type:"start"},aU={type:"end"};class CF extends Mi{get enabled(){return this._enabled}set enabled(e){e!==this.enabled&&(this._enabled=e,this.resetState(),this.pointerTracker.reset(),this.enabled||(this.dragInertia.set(0,0,0),this.rotationInertia.set(0,0)))}constructor(e=null,t=null,i=null,r=null){super(),this.isEnvironmentControls=!0,this.domElement=null,this.camera=null,this.scene=null,this.tilesRenderer=null,this._enabled=!0,this.cameraRadius=5,this.rotationSpeed=1,this.minAltitude=0,this.maxAltitude=.45*Math.PI,this.minDistance=10,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.zoomSpeed=1,this.adjustHeight=!0,this.enableDamping=!1,this.dampingFactor=.15,this.fallbackPlane=new xs(new D(0,1,0),0),this.useFallbackPlane=!0,this.scaleZoomOrientationAtEdges=!1,this.autoAdjustCameraRotation=!0,this.state=Ws,this.pointerTracker=new Kce,this.needsUpdate=!1,this.actionHeightOffset=0,this.pivotPoint=new D,this.zoomDirectionSet=!1,this.zoomPointSet=!1,this.zoomDirection=new D,this.zoomPoint=new D,this.zoomDelta=0,this.rotationInertiaPivot=new D,this.rotationInertia=new re,this.dragInertia=new D,this.inertiaTargetDistance=1/0,this.inertiaStableFrames=0,this.pivotMesh=new Zce,this.pivotMesh.raycast=()=>{},this.pivotMesh.scale.setScalar(.25),this.raycaster=new sT,this.raycaster.firstHitOnly=!0,this.up=new D(0,1,0),this.clock=new cv,this._detachCallback=null,this._upInitialized=!1,this._lastUsedState=Ws,this._zoomPointWasSet=!1,this._tilesOnChangeCallback=()=>this.zoomPointSet=!1,i&&this.attach(i),t&&this.setCamera(t),e&&this.setScene(e),r&&this.setTilesRenderer(r)}setScene(e){this.scene=e}setCamera(e){this.camera=e,this._upInitialized=!1,this.zoomDirectionSet=!1,this.zoomPointSet=!1,this.needsUpdate=!0,this.raycaster.camera=e,this.resetState()}setTilesRenderer(e){console.warn('EnvironmentControls: "setTilesRenderer" has been deprecated. Use "setScene" and "setEllipsoid", instead.'),this.tilesRenderer=e,this.tilesRenderer!==null&&this.setScene(this.tilesRenderer.group)}attach(e){if(this.domElement)throw new Error("EnvironmentControls: Controls already attached to element");this.domElement=e,this.pointerTracker.domElement=e,e.style.touchAction="none";const t=d=>{this.enabled&&d.preventDefault()},i=d=>{if(!this.enabled)return;d.preventDefault();const{camera:f,raycaster:p,domElement:m,up:v,pivotMesh:x,pointerTracker:S,scene:_,pivotPoint:T,enabled:E}=this;if(S.addPointer(d),this.needsUpdate=!0,S.isPointerTouch()){if(x.visible=!1,S.getPointerCount()===0)m.setPointerCapture(d.pointerId);else if(S.getPointerCount()>2){this.resetState();return}}S.getCenterPoint(ar),wf(ar.x,ar.y,m,ar),ps(p,ar,f);const b=Math.abs(p.ray.direction.dot(v));if(b{const{pointerTracker:f}=this;if(!this.enabled)return;d.preventDefault();const{pivotMesh:p,enabled:m}=this;this.zoomDirectionSet=!1,this.zoomPointSet=!1,this.state!==Ws&&(this.needsUpdate=!0),f.setHoverEvent(d),f.updatePointer(d)&&(f.isPointerTouch()&&f.getPointerCount()===2&&(r||(r=!0,queueMicrotask(()=>{r=!1,f.getCenterPoint(NM);const v=f.getStartTouchPointerDistance(),x=f.getTouchPointerDistance(),S=x-v;if(this.state===Ws||this.state===AM){f.getCenterPoint(NM),f.getStartCenterPoint(nU);const _=2*window.devicePixelRatio,T=NM.distanceTo(nU);(Math.abs(S)>_||T>_)&&(Math.abs(S)>T?(this.setState(Rf),this.zoomDirectionSet=!1):this.setState(hl))}if(this.state===Rf){const _=f.getPreviousTouchPointerDistance();this.zoomDelta+=x-_,p.visible=!1}else this.state===hl&&(p.visible=m)}))),this.dispatchEvent(iU))},s=d=>{const{pointerTracker:f}=this;!this.enabled||f.getPointerCount()===0||(f.deletePointer(d),f.getPointerType()==="touch"&&f.getPointerCount()===0&&e.releasePointerCapture(d.pointerId),this.resetState(),this.needsUpdate=!0)},o=d=>{if(!this.enabled)return;d.preventDefault();const{pointerTracker:f}=this;f.setHoverEvent(d),f.updatePointer(d),this.dispatchEvent(rU);let p;switch(d.deltaMode){case 2:p=d.deltaY*800;break;case 1:p=d.deltaY*40;break;case 0:p=d.deltaY;break}const m=Math.sign(p),v=Math.abs(p);this.zoomDelta-=.25*m*v,this.needsUpdate=!0,this._lastUsedState=Rf,this.dispatchEvent(aU)},l=d=>{this.enabled&&this.resetState()};e.addEventListener("contextmenu",t),e.addEventListener("pointerdown",i),e.addEventListener("wheel",o,{passive:!1});const u=e.getRootNode();u.addEventListener("pointermove",a),u.addEventListener("pointerup",s),u.addEventListener("pointerleave",l),this._detachCallback=()=>{e.removeEventListener("contextmenu",t),e.removeEventListener("pointerdown",i),e.removeEventListener("wheel",o),u.removeEventListener("pointermove",a),u.removeEventListener("pointerup",s),u.removeEventListener("pointerleave",l)}}detach(){this.domElement=null,this._detachCallback&&(this._detachCallback(),this._detachCallback=null,this.pointerTracker.reset())}getUpDirection(e,t){t.copy(this.up)}getCameraUpDirection(e){this.getUpDirection(this.camera.position,e)}getPivotPoint(e){let t=null;this._lastUsedState===Rf?this._zoomPointWasSet&&(t=e.copy(this.zoomPoint)):(this._lastUsedState===hl||this._lastUsedState===yc)&&(t=e.copy(this.pivotPoint));const{camera:i,raycaster:r}=this;t!==null&&(an.copy(t).project(i),(an.x<-1||an.x>1||an.y<-1||an.y>1)&&(t=null)),ps(r,{x:0,y:0},i);const a=this._raycast(r);return a&&(t===null||a.distance1){r.set(0,0,0),t.set(0,0,0);return}const f=Math.pow(2,-e/s),p=Math.max(o.near,l,u,d),m=.25*(2/(2*1e3));if(t.lengthSq()>0){ps(Fn,an.set(0,0,-1),o),Fn.applyMatrix4(o.matrixWorldInverse),Fn.direction.normalize(),Fn.recast(-Fn.direction.dot(Fn.origin)).at(p/Fn.direction.z,an),an.applyMatrix4(o.matrixWorld),ps(Fn,Ia.set(m,m,-1),o),Fn.applyMatrix4(o.matrixWorldInverse),Fn.direction.normalize(),Fn.recast(-Fn.direction.dot(Fn.origin)).at(p/Fn.direction.z,Ia),Ia.applyMatrix4(o.matrixWorld),an.sub(i).normalize(),Ia.sub(i).normalize();const v=an.angleTo(Ia)/e;t.multiplyScalar(f),(t.lengthSq()0){ps(Fn,an.set(0,0,-1),o),Fn.applyMatrix4(o.matrixWorldInverse),Fn.direction.normalize(),Fn.recast(-Fn.direction.dot(Fn.origin)).at(p/Fn.direction.z,an),an.applyMatrix4(o.matrixWorld),ps(Fn,Ia.set(m,m,-1),o),Fn.applyMatrix4(o.matrixWorldInverse),Fn.direction.normalize(),Fn.recast(-Fn.direction.dot(Fn.origin)).at(p/Fn.direction.z,Ia),Ia.applyMatrix4(o.matrixWorld);const v=an.distanceTo(Ia)/e;r.multiplyScalar(f),(r.lengthSq()0&&this._applyRotation(t.x*e,t.y*e,i),r.lengthSq()>0&&(o.position.addScaledVector(r,e),o.updateMatrixWorld())}_inertiaNeedsUpdate(){const{rotationInertia:e,dragInertia:t}=this;return e.lengthSq()!==0||t.lengthSq()!==0}_updateZoom(){const{zoomPoint:e,zoomDirection:t,camera:i,minDistance:r,maxDistance:a,pointerTracker:s,domElement:o,minZoom:l,maxZoom:u,zoomSpeed:d,state:f}=this;let p=this.zoomDelta;if(this.zoomDelta=0,!(!s.getLatestPoint(ar)||p===0&&f!==Rf))if(this.rotationInertia.set(0,0),this.dragInertia.set(0,0,0),i.isOrthographicCamera){this._updateZoomDirection();const m=this.zoomPointSet||this._updateZoomPoint();kx.unproject(i);const v=Math.pow(.95,Math.abs(p*.05));let x=p>0?1/Math.abs(v):v;x*=d,x>1?ui.zoom*x&&(x=1),i.zoom*=x,i.updateProjectionMatrix(),m&&(wf(ar.x,ar.y,o,DM),DM.unproject(i),i.position.sub(DM).add(kx),i.updateMatrixWorld())}else{this._updateZoomDirection();const m=an.copy(t);if(this.zoomPointSet||this._updateZoomPoint()){const v=e.distanceTo(i.position);if(p<0){const x=Math.min(0,v-a);p=p*v*d*.0025,p=Math.max(p,x)}else{const x=Math.max(0,v-r);p=p*Math.max(v-r,0)*d*.0025,p=Math.min(p,x)}i.position.addScaledVector(t,p),i.updateMatrixWorld()}else{const v=this._getPointBelowCamera();if(v){const x=v.distance;m.set(0,0,-1).transformDirection(i.matrixWorld),i.position.addScaledVector(m,p*x*.01),i.updateMatrixWorld()}}}}_updateZoomDirection(){if(this.zoomDirectionSet)return;const{domElement:e,raycaster:t,camera:i,zoomDirection:r,pointerTracker:a}=this;a.getLatestPoint(ar),wf(ar.x,ar.y,e,kx),ps(t,kx,i),r.copy(t.ray.direction).normalize(),this.zoomDirectionSet=!0}_updateZoomPoint(){const{camera:e,zoomDirectionSet:t,zoomDirection:i,raycaster:r,zoomPoint:a,pointerTracker:s,domElement:o}=this;if(this._zoomPointWasSet=!1,!t)return!1;e.isOrthographicCamera&&s.getLatestPoint(f0)?(wf(f0.x,f0.y,o,f0),ps(r,f0,e)):(r.ray.origin.copy(e.position),r.ray.direction.copy(i),r.near=0,r.far=1/0);const l=this._raycast(r);return l?(a.copy(l.point),this.zoomPointSet=!0,this._zoomPointWasSet=!0,!0):!1}_getPointBelowCamera(e=this.camera.position,t=this.up){const{raycaster:i}=this;i.ray.direction.copy(t).multiplyScalar(-1),i.ray.origin.copy(e).addScaledVector(t,1e5),i.near=0,i.far=1/0;const r=this._raycast(i);return r&&(r.distance-=1e5),r}_updatePosition(e){const{raycaster:t,camera:i,pivotPoint:r,up:a,pointerTracker:s,domElement:o,state:l,dragInertia:u}=this;if(l===yc){if(s.getCenterPoint(ar),wf(ar.x,ar.y,o,ar),eU.setFromNormalAndCoplanarPoint(a,r),ps(t,ar,i),Math.abs(t.ray.direction.dot(a))1-1e-10?d=0:(an.crossVectors(Bi,mr).normalize(),d=Math.sign(an.dot(ds))*Bi.angleTo(mr)),u>0?(u=Math.min(d-a,u),u=Math.max(0,u)):(u=Math.max(d-s,u),u=Math.min(0,u)),Vs.setFromAxisAngle(Bi,l),op(i,Vs,_c),r.matrixWorld.premultiply(_c),ds.set(1,0,0).transformDirection(r.matrixWorld),Vs.setFromAxisAngle(ds,-u),op(i,Vs,_c),r.matrixWorld.premultiply(_c),r.matrixWorld.decompose(r.position,r.quaternion,an)}_setFrame(e){const{up:t,camera:i,zoomPoint:r,zoomDirectionSet:a,zoomPointSet:s,scaleZoomOrientationAtEdges:o}=this;if(a&&(s||this._updateZoomPoint())){if(Vs.setFromUnitVectors(t,e),o){this.getUpDirection(r,an);let l=Math.max(an.dot(t)-.6,0)/.4;l=lt.mapLinear(l,0,.5,0,1),l=Math.min(l,1),i.isOrthographicCamera&&(l*=.1),Vs.slerp(Jce,1-l)}op(r,Vs,_c),i.updateMatrixWorld(),i.matrixWorld.premultiply(_c),i.matrixWorld.decompose(i.position,i.quaternion,an),this.zoomDirectionSet=!1,this._updateZoomDirection()}t.copy(e),i.updateMatrixWorld()}_raycast(e){const{scene:t,useFallbackPlane:i,fallbackPlane:r}=this,a=e.intersectObject(t)[0]||null;if(a)return a;if(i){const s=r;if(e.ray.intersectPlane(s,an))return{point:an.clone(),distance:e.ray.origin.distanceTo(an)}}return null}_alignCameraUp(e,t=1){const{camera:i,state:r,pivotPoint:a,zoomPoint:s,zoomPointSet:o}=this;i.updateMatrixWorld(),mr.set(0,0,-1).transformDirection(i.matrixWorld),ds.set(-1,0,0).transformDirection(i.matrixWorld);let l=lt.mapLinear(1-Math.abs(mr.dot(e)),0,.2,0,1);l=lt.clamp(l,0,1),t*=l,CM.crossVectors(e,mr),CM.lerp(ds,1-t).normalize(),Vs.setFromUnitVectors(ds,CM),i.quaternion.premultiply(Vs);let u=null;r===yc||r===hl?u=Hx.copy(a):o&&(u=Hx.copy(s)),u&&(Fx.copy(i.matrixWorld).invert(),an.copy(u).applyMatrix4(Fx),i.updateMatrixWorld(),an.applyMatrix4(i.matrixWorld),Vx.subVectors(u,an),i.position.add(Vx)),i.updateMatrixWorld()}_clampRotation(e){const{camera:t,minAltitude:i,maxAltitude:r,state:a,pivotPoint:s,zoomPoint:o,zoomPointSet:l}=this;t.updateMatrixWorld(),mr.set(0,0,1).transformDirection(t.matrixWorld),ds.set(1,0,0).transformDirection(t.matrixWorld);let u;e.dot(mr)>1-1e-10?u=0:(an.crossVectors(e,mr),u=Math.sign(an.dot(ds))*e.angleTo(mr));let d;if(u>r)d=r;else if(uUa.subVectors(Rn,Hn.origin).dot(Hn.direction))&&e.copy(Rn),e}getVectorToCenter(e){const{ellipsoidFrame:t,camera:i}=this;return e.setFromMatrixPosition(t).sub(i.position)}getDistanceToCenter(){return this.getVectorToCenter(Rn).length()}getUpDirection(e,t){const{ellipsoidFrame:i,ellipsoidFrameInverse:r,ellipsoid:a}=this;Rn.copy(e).applyMatrix4(r),a.getPositionToNormal(Rn,t),t.transformDirection(i)}getCameraUpDirection(e){const{ellipsoidFrame:t,ellipsoidFrameInverse:i,ellipsoid:r,camera:a}=this;a.isOrthographicCamera?(this._getVirtualOrthoCameraPosition(Rn),Rn.applyMatrix4(i),r.getPositionToNormal(Rn,e),e.transformDirection(t)):this.getUpDirection(a.position,e)}update(e=Math.min(this.clock.getDelta(),64/1e3)){if(!this.enabled||!this.camera||e===0)return;const{camera:t,pivotMesh:i}=this;this._isNearControls()?this.scaleZoomOrientationAtEdges=this.zoomDelta<0:(this.state!==Ws&&this._dragMode!==1&&this._rotationMode!==1&&(i.visible=!1),this.scaleZoomOrientationAtEdges=!1);const r=this.needsUpdate||this._inertiaNeedsUpdate();super.update(e),this.adjustCamera(t),r&&this._isNearControls()&&(this.getCameraUpDirection(Sf),this._alignCameraUp(Sf,1),this.getCameraUpDirection(Sf),this._clampRotation(Sf))}adjustCamera(e){super.adjustCamera(e);const{ellipsoidFrame:t,ellipsoidFrameInverse:i,ellipsoid:r,nearMargin:a,farMargin:s}=this,o=Math.max(...r.radius);if(e.isPerspectiveCamera){const l=Rn.setFromMatrixPosition(t).sub(e.position).length(),u=a*o,d=lt.clamp((l-o)/u,0,1),f=lt.lerp(1,1e3,d);e.near=Math.max(f,l-o-u),Ua.copy(e.position).applyMatrix4(i),r.getPositionToCartographic(Ua,cU);const p=Math.max(r.getPositionElevation(Ua),eue),m=r.calculateHorizonDistance(cU.lat,p);e.far=m+.1+o*s,e.updateProjectionMatrix()}else{this._getVirtualOrthoCameraPosition(e.position,e),e.updateMatrixWorld(),sU.copy(e.matrixWorld).invert(),Rn.setFromMatrixPosition(t).applyMatrix4(sU);const l=-Rn.z;e.near=l-o*(1+a),e.far=l+.1+o*s,e.position.addScaledVector(Pa,e.near),e.far-=e.near,e.near=0,e.updateProjectionMatrix(),e.updateMatrixWorld()}}setState(...e){super.setState(...e),this._dragMode=0,this._rotationMode=0}_updateInertia(e){super._updateInertia(e);const{globeInertia:t,enableDamping:i,dampingFactor:r,camera:a,cameraRadius:s,minDistance:o,inertiaTargetDistance:l,ellipsoidFrame:u}=this;if(!this.enableDamping||this.inertiaStableFrames>1){this.globeInertiaFactor=0,this.globeInertia.identity();return}const d=Math.pow(2,-e/r),f=Math.max(a.near,s,o,l),p=.25*(2/(2*1e3));if(dl.setFromMatrixPosition(u),this.globeInertiaFactor!==0){ps(Hn,Rn.set(0,0,-1),a),Hn.applyMatrix4(a.matrixWorldInverse),Hn.direction.normalize(),Hn.recast(-Hn.direction.dot(Hn.origin)).at(f/Hn.direction.z,Rn),Rn.applyMatrix4(a.matrixWorld),ps(Hn,Ua.set(p,p,-1),a),Hn.applyMatrix4(a.matrixWorldInverse),Hn.direction.normalize(),Hn.recast(-Hn.direction.dot(Hn.origin)).at(f/Hn.direction.z,Ua),Ua.applyMatrix4(a.matrixWorld),Rn.sub(dl).normalize(),Ua.sub(dl).normalize(),this.globeInertiaFactor*=d;const m=Rn.angleTo(Ua)/e;(2*Math.acos(t.w)*this.globeInertiaFactor0){if(this._updateZoomDirection(),e<0&&(this.zoomPointSet||this._updateZoomPoint())){Pa.set(0,0,-1).transformDirection(a.matrixWorld).normalize(),Ku.copy(this.up).multiplyScalar(-1),this.getUpDirection(r,oU);const u=lt.clamp(lt.mapLinear(-oU.dot(Ku),1,.95,0,1),0,1),d=1-Pa.dot(Ku),f=a.isOrthographicCamera?.05:1,p=lt.clamp(l*3,0,1),m=Math.min(u*d*f*p,.1);Ku.lerpVectors(Pa,Ku,m).normalize(),fl.setFromUnitVectors(Pa,Ku),op(r,fl,yf),a.matrixWorld.premultiply(yf),a.matrixWorld.decompose(a.position,a.quaternion,Ku),this.zoomDirection.subVectors(r,a.position).normalize()}super._updateZoom()}else if(a.isPerspectiveCamera){const u=this._getPerspectiveTransitionDistance(),d=this._getMaxPerspectiveDistance(),f=lt.mapLinear(this.getDistanceToCenter(),u,d,0,1);this._tiltTowardsCenter(lt.lerp(0,.4,f*l)),this._alignCameraUpToNorth(lt.lerp(0,.2,f*l));const p=this.getDistanceToCenter()-t.radius.x,m=e*p*i*.0025,v=Math.max(m,Math.min(this.getDistanceToCenter()-d,0));this.getVectorToCenter(Rn).normalize(),this.camera.position.addScaledVector(Rn,v),this.camera.updateMatrixWorld(),this.zoomDelta=0}else{const u=this._getOrthographicTransitionZoom(),d=this._getMinOrthographicZoom(),f=lt.mapLinear(a.zoom,u,d,0,1);this._tiltTowardsCenter(lt.lerp(0,.4,f*l)),this._alignCameraUpToNorth(lt.lerp(0,.2,f*l));const p=this.zoomDelta,m=Math.pow(.95,Math.abs(p*.05)),v=p>0?1/Math.abs(m):m,x=d/a.zoom,S=Math.max(v*i,Math.min(x,1));a.zoom=Math.min(s,a.zoom*S),a.updateProjectionMatrix(),this.zoomDelta=0,this.zoomDirectionSet=!1}}_alignCameraUpToNorth(e){const{ellipsoidFrame:t}=this;Sf.set(0,0,1).transformDirection(t),this._alignCameraUp(Sf,e)}_tiltTowardsCenter(e){const{camera:t,ellipsoidFrame:i}=this;Pa.set(0,0,-1).transformDirection(t.matrixWorld).normalize(),Rn.setFromMatrixPosition(i).sub(t.position).normalize(),Rn.lerp(Pa,1-e).normalize(),fl.setFromUnitVectors(Pa,Rn),t.quaternion.premultiply(fl),t.updateMatrixWorld()}_getPerspectiveTransitionDistance(){const{camera:e,ellipsoid:t}=this;if(!e.isPerspectiveCamera)throw new Error;const i=Math.max(...t.radius),r=2*Math.atan(Math.tan(lt.DEG2RAD*e.fov*.5)*e.aspect),a=i/Math.tan(lt.DEG2RAD*e.fov*.5),s=i/Math.tan(r*.5);return Math.max(a,s)}_getMaxPerspectiveDistance(){const{camera:e,ellipsoid:t}=this;if(!e.isPerspectiveCamera)throw new Error;const i=Math.max(...t.radius),r=2*Math.atan(Math.tan(lt.DEG2RAD*e.fov*.5)*e.aspect),a=i/Math.tan(lt.DEG2RAD*e.fov*.5),s=i/Math.tan(r*.5);return 2*Math.max(a,s)}_getOrthographicTransitionZoom(){const{camera:e,ellipsoid:t}=this;if(!e.isOrthographicCamera)throw new Error;const i=e.top-e.bottom,r=e.right-e.left,a=Math.max(i,r),s=2*Math.max(...t.radius);return 2*a/s}_getMinOrthographicZoom(){const{camera:e,ellipsoid:t}=this;if(!e.isOrthographicCamera)throw new Error;const i=e.top-e.bottom,r=e.right-e.left,a=Math.min(i,r),s=2*Math.max(...t.radius);return .7*a/s}_getVirtualOrthoCameraPosition(e,t=this.camera){const{ellipsoidFrame:i,ellipsoidFrameInverse:r,ellipsoid:a}=this;if(!t.isOrthographicCamera)throw new Error;Hn.origin.copy(t.position),Hn.direction.set(0,0,-1).transformDirection(t.matrixWorld),Hn.applyMatrix4(r),a.closestPointToRayEstimate(Hn,Ua).applyMatrix4(i);const s=t.top-t.bottom,o=t.right-t.left,l=Math.max(s,o)/t.zoom;Pa.set(0,0,-1).transformDirection(t.matrixWorld);const u=Ua.sub(t.position).dot(Pa);e.copy(t.position).addScaledVector(Pa,u-l*4)}_isNearControls(){const{camera:e}=this;return e.isPerspectiveCamera?this.getDistanceToCenter()this._getOrthographicTransitionZoom()}_raycast(e){const t=super._raycast(e);if(t===null){const{ellipsoid:i,ellipsoidFrame:r,ellipsoidFrameInverse:a}=this;Hn.copy(e.ray).applyMatrix4(a);const s=i.intersectRay(Hn,Rn);return s!==null?(s.applyMatrix4(r),{point:s.clone(),distance:s.distanceTo(e.ray.origin)}):null}else return t}};const Hr=new D,Ju=new D,$u=new Za,nue=new D,iue=new D,rue=new D,uU=new ft,aue=new ft;let sue=class extends Mi{get animating(){return this._alpha!==0&&this._alpha!==1}get alpha(){return this._target===0?1-this._alpha:this._alpha}get camera(){return this._alpha===0?this.perspectiveCamera:this._alpha===1?this.orthographicCamera:this.transitionCamera}get mode(){return this._target===0?"perspective":"orthographic"}set mode(e){if(e===this.mode)return;const t=this.camera;e==="perspective"?(this._target=0,this._alpha=0):(this._target=1,this._alpha=1),this.dispatchEvent({type:"camera-change",camera:this.camera,prevCamera:t})}constructor(e=new si,t=new Za){super(),this.perspectiveCamera=e,this.orthographicCamera=t,this.transitionCamera=new si,this.orthographicPositionalZoom=!0,this.orthographicOffset=50,this.fixedPoint=new D,this.duration=200,this.autoSync=!0,this.easeFunction=i=>i,this._target=0,this._alpha=0,this._clock=new cv}toggle(){this._target=this._target===1?0:1,this._clock.getDelta(),this.dispatchEvent({type:"toggle"})}update(e=Math.min(this._clock.getDelta(),64/1e3)){this.autoSync&&this.syncCameras();const{perspectiveCamera:t,orthographicCamera:i,transitionCamera:r,camera:a}=this,s=e*1e3;if(this._alpha!==this._target){const u=Math.sign(this._target-this._alpha)*s/this.duration;this._alpha=lt.clamp(this._alpha+u,0,1),this.dispatchEvent({type:"change",alpha:this.alpha})}const o=a;let l=null;this._alpha===0?l=t:this._alpha===1?l=i:(l=r,this._updateTransitionCamera()),o!==l&&(l===r&&this.dispatchEvent({type:"transition-start"}),this.dispatchEvent({type:"camera-change",camera:l,prevCamera:o}),o===r&&this.dispatchEvent({type:"transition-end"}))}syncCameras(){const e=this._getFromCamera(),{perspectiveCamera:t,orthographicCamera:i,transitionCamera:r,fixedPoint:a}=this;if(Hr.set(0,0,-1).transformDirection(e.matrixWorld).normalize(),e.isPerspectiveCamera){if(this.orthographicPositionalZoom)i.position.copy(t.position).addScaledVector(Hr,-this.orthographicOffset),i.rotation.copy(t.rotation),i.updateMatrixWorld();else{const u=Ju.subVectors(a,i.position).dot(Hr),d=Ju.subVectors(a,t.position).dot(Hr);Ju.copy(t.position).addScaledVector(Hr,d),i.rotation.copy(t.rotation),i.position.copy(Ju).addScaledVector(Hr,-u),i.updateMatrixWorld()}const s=Math.abs(Ju.subVectors(t.position,a).dot(Hr)),o=2*Math.tan(lt.DEG2RAD*t.fov*.5)*s,l=i.top-i.bottom;i.zoom=l/o,i.updateProjectionMatrix()}else{const s=Math.abs(Ju.subVectors(i.position,a).dot(Hr)),o=(i.top-i.bottom)/i.zoom*.5/Math.tan(lt.DEG2RAD*t.fov*.5);t.rotation.copy(i.rotation),t.position.copy(i.position).addScaledVector(Hr,s).addScaledVector(Hr,-o),t.updateMatrixWorld(),this.orthographicPositionalZoom&&(i.position.copy(t.position).addScaledVector(Hr,-this.orthographicOffset),i.updateMatrixWorld())}r.position.copy(t.position),r.rotation.copy(t.rotation)}_getTransitionDirection(){return Math.sign(this._target-this._alpha)}_getToCamera(){const e=this._getTransitionDirection();return e===0?this._target===0?this.perspectiveCamera:this.orthographicCamera:e>0?this.orthographicCamera:this.perspectiveCamera}_getFromCamera(){const e=this._getTransitionDirection();return e===0?this._target===0?this.perspectiveCamera:this.orthographicCamera:e>0?this.perspectiveCamera:this.orthographicCamera}_updateTransitionCamera(){const{perspectiveCamera:e,orthographicCamera:t,transitionCamera:i,fixedPoint:r}=this,a=this.easeFunction(this._alpha);Hr.set(0,0,-1).transformDirection(t.matrixWorld).normalize(),$u.copy(t),$u.position.addScaledVector(Hr,t.near),t.far-=t.near,t.near=0,Hr.set(0,0,-1).transformDirection(e.matrixWorld).normalize();const s=Math.abs(Ju.subVectors(e.position,r).dot(Hr)),o=2*Math.tan(lt.DEG2RAD*e.fov*.5)*s,l=aue.slerpQuaternions(e.quaternion,$u.quaternion,a),u=lt.lerp(e.fov,1,a),d=o*.5/Math.tan(lt.DEG2RAD*u*.5),f=rue.copy($u.position).sub(r).applyQuaternion(uU.copy($u.quaternion).invert()),p=iue.copy(e.position).sub(r).applyQuaternion(uU.copy(e.quaternion).invert()),m=nue.lerpVectors(p,f,a);m.z-=Math.abs(m.z)-d;const v=-(p.z-m.z),x=-(f.z-m.z),S=lt.lerp(v+e.near,x+$u.near,a),_=lt.lerp(v+e.far,x+$u.far,a),T=Math.max(_,0)-Math.max(S,0);i.aspect=e.aspect,i.fov=u,i.near=Math.max(S,T*1e-5),i.far=_,i.position.copy(m).applyQuaternion(l).add(r),i.quaternion.copy(l),i.updateProjectionMatrix(),i.updateMatrixWorld()}};function oue(n,e){if(n===e)return!0;if(!n||!e)return n===e;for(const t in n)if(n[t]!==e[t])return!1;for(const t in e)if(n[t]!==e[t])return!1;return!0}function DF(n){const e=ie.useRef();return oue(e.current,n)||(e.current=n),e.current}function lue(n){return/^on/g.test(n)}function cue(n){return n.replace(/^on/,"").replace(/[a-z][A-Z]/g,e=>`${e[0]}-${e[1]}`).toLowerCase()}function hU(n){return n.split("-")}function NF(n,e){let t=n;const i=[...e];for(;i.length!==0;){const r=i.shift();t=t[r]}return t}function dU(n,e,t){const i=[...e],r=i.pop();NF(n,i)[r]=t}function vv(n,e,t=!1){ie.useLayoutEffect(()=>{if(n===null)return;const i={},r={};for(const a in e)if(lue(a)&&n.addEventListener&&!(a in n)){const s=cue(a);r[s]=e[a],n.addEventListener(s,e[a])}else{const s=t?[a]:hU(a);i[a]=NF(n,s),dU(n,s,e[a])}return()=>{for(const a in r)n.removeEventListener(a,r[a]);for(const a in i){const s=t?[a]:hU(a);dU(n,s,i[a])}}},[n,DF(e)])}function uue(n,e){vv(n,e,!0)}function _v(n,...e){ie.useEffect(()=>{e.forEach(t=>{t&&(t instanceof Function?t(n):t.current=n)})},[n,...e])}const ld=ie.createContext(null),hue=ie.createContext(null);function due({children:n}){const e=ie.useContext(ld),t=ie.useRef();return ie.useEffect(()=>{e&&(t.current.matrixWorld=e.group.matrixWorld)},[e]),ot.jsx("group",{ref:t,matrixWorldAutoUpdate:!1,matrixAutoUpdate:!1,children:n})}const g0=ie.forwardRef(function(n,e){const{plugin:t,args:i,children:r,...a}=n,s=ie.useContext(ld),[o,l]=ie.useState(null),[,u]=ie.useReducer(d=>d+1,0);if(ie.useLayoutEffect(()=>{if(s===null)return;let d;return Array.isArray(i)?d=new t(...i):d=new t(i),l(d),()=>{l(null)}},[t,s,DF(i)]),vv(o,a),ie.useLayoutEffect(()=>{if(o!==null)return s.registerPlugin(o),u(),()=>{s.unregisterPlugin(o)}},[o]),_v(o,e),!(!o||!s.plugins.includes(o)))return ot.jsx(hue.Provider,{value:o,children:r})}),fue=ie.forwardRef(function(n,e){const{url:t,group:i={},enabled:r=!0,children:a,...s}=n,[o,l,u]=pn(p=>[p.camera,p.gl,p.invalidate]),[d,f]=ie.useState(null);return ie.useEffect(()=>{const p=()=>u(),m=new jce(t);return m.addEventListener("needs-render",p),m.addEventListener("needs-update",p),f(m),()=>{m.removeEventListener("needs-render",p),m.removeEventListener("needs-update",p),m.dispose(),f(null)}},[t,u]),_a(()=>{d===null||!r||(o.updateMatrixWorld(),d.setResolutionFromRenderer(o,l),d.update())}),ie.useLayoutEffect(()=>{if(d!==null)return d.setCamera(o),()=>{d.deleteCamera(o)}},[d,o]),_v(d,e),vv(d,s),d?ot.jsxs(ot.Fragment,{children:[ot.jsx("primitive",{object:d.group,...i}),ot.jsx(ld.Provider,{value:d,children:ot.jsx(due,{children:a})})]}):null});ie.forwardRef(function({children:n,...e},t){const[i]=pn(o=>[o.gl]),[r,a]=ie.useState(null),s=ie.useMemo(()=>document.createElement("div"),[]);ie.useEffect(()=>(s.style.pointerEvents="none",s.style.position="absolute",s.style.width="100%",s.style.height="100%",s.style.left=0,s.style.top=0,i.domElement.parentNode.appendChild(s),()=>{s.remove()}),[s,i.domElement.parentNode]),ie.useEffect(()=>{const o=H8.createRoot(s);return a(o),()=>{o.unmount()}},[s]),r!==null&&r.render(ot.jsx(ie.StrictMode,{children:ot.jsx("div",{...e,ref:t,children:n})}))});const OF=ie.forwardRef(function(n,e){const{controlsConstructor:t,domElement:i,scene:r,camera:a,ellipsoid:s,ellipsoidFrame:o,tilesRenderer:l,...u}=n,[d]=pn(U=>[U.camera]),[f]=pn(U=>[U.gl]),[p]=pn(U=>[U.scene]),[m]=pn(U=>[U.invalidate]),[v]=pn(U=>[U.get]),[x]=pn(U=>[U.set]),S=ie.useContext(ld),_=l||S,T=a||d||null,E=r||p||null,b=i||f.domElement||null,R=s||(_==null?void 0:_.ellipsoid)||null,w=o||(_==null?void 0:_.group)||null,L=ie.useMemo(()=>new t,[t]);_v(L,e),ie.useEffect(()=>{const U=()=>m();return L.addEventListener("change",U),L.addEventListener("start",U),L.addEventListener("end",U),()=>{L.removeEventListener("change",U),L.removeEventListener("start",U),L.removeEventListener("end",U)}},[L,m]),ie.useEffect(()=>{L.setCamera(T)},[L,T]),ie.useEffect(()=>{L.setScene(E)},[L,E]),ie.useEffect(()=>{L.isGlobeControls&&L.setEllipsoid(R,w)},[L,R,w]),ie.useEffect(()=>(L.attach(b),()=>{L.detach()}),[L,b]),ie.useEffect(()=>{const U=v().controls;return x({controls:L}),()=>x({controls:U})},[L,v,x]),_a(()=>{L.update()},-1),uue(L,u)});ie.forwardRef(function(n,e){return ot.jsx(OF,{...n,ref:e,controlsConstructor:CF})});ie.forwardRef(function(n,e){return ot.jsx(OF,{...n,ref:e,controlsConstructor:tue})});ie.forwardRef(function(n,e){const{mode:t="perspective",onBeforeToggle:i,perspectiveCamera:r,orthographicCamera:a,...s}=n,[o,l,u,d,f,p]=pn(v=>[v.set,v.get,v.invalidate,v.controls,v.camera,v.size]),m=ie.useMemo(()=>{const v=new sue;return v.autoSync=!1,f.isOrthographicCamera?(v.orthographicCamera.copy(f),v.mode="orthographic"):v.perspectiveCamera.copy(f),v.syncCameras(),v.mode=t,v},[]);ie.useEffect(()=>{const{perspectiveCamera:v,orthographicCamera:x}=m,S=p.width/p.height;v.aspect=S,v.updateProjectionMatrix(),x.left=-x.top*S,x.right=-x.left,v.updateProjectionMatrix()},[m,p]),_v(m,e),ie.useEffect(()=>{const v=({camera:x})=>{o(()=>({camera:x}))};return o(()=>({camera:m.camera})),m.addEventListener("camera-change",v),()=>{m.removeEventListener("camera-change",v)}},[m,o]),ie.useEffect(()=>{const v=m.perspectiveCamera,x=m.orthographicCamera;return m.perspectiveCamera=r||v,m.orthographicCamera=a||x,o(()=>({camera:m.camera})),()=>{m.perspectiveCamera=v,m.orthographicCamera=x}},[r,a,m,o]),ie.useEffect(()=>{if(t!==m.mode){const v=t==="orthographic"?m.orthographicCamera:m.perspectiveCamera;i?i(m,v):d&&d.isEnvironmentControls?(d.getPivotPoint(m.fixedPoint),m.syncCameras(),d.adjustCamera(m.perspectiveCamera),d.adjustCamera(m.orthographicCamera)):(m.fixedPoint.set(0,0,-1).transformDirection(m.camera.matrixWorld).multiplyScalar(50).add(m.camera.position),m.syncCameras()),m.toggle(),u()}},[t,m,u,d,i]),ie.useEffect(()=>{const v=()=>u();return m.addEventListener("transition-start",v),m.addEventListener("change",v),m.addEventListener("transition-end",v),()=>{m.removeEventListener("transition-start",v),m.removeEventListener("change",v),m.removeEventListener("transition-end",v)}},[m,u]),vv(m,s),_a(()=>{m.update(),d&&(d.enabled=!m.animating);const{camera:v,size:x}=l();if(!a&&v===m.orthographicCamera){const S=x.width/x.height,_=m.orthographicCamera;S!==_.right&&(_.bottom=-1,_.top=1,_.left=-S,_.right=S,_.updateProjectionMatrix())}m.animating&&u()},-1)});function LF(...n){return ie.useCallback(e=>{n.forEach(t=>{t&&(typeof t=="function"?t(e):t.current=e)})},n)}function kA(n,e){e(n)||n.children.forEach(t=>{kA(t,e)})}class pue extends Mi{constructor(){super(),this.objects=new Set,this.observed=new Set,this._addedCallback=({child:e})=>{kA(e,t=>this.observed.has(t)?!0:(this.objects.add(t),t.addEventListener("childadded",this._addedCallback),t.addEventListener("childremoved",this._removedCallback),this.dispatchEvent({type:"childadded",child:e}),!1))},this._removedCallback=({child:e})=>{kA(e,t=>this.observed.has(t)?!0:(this.objects.delete(t),t.removeEventListener("childadded",this._addedCallback),t.removeEventListener("childremoved",this._removedCallback),this.dispatchEvent({type:"childremoved",child:e}),!1))}}observe(e){const{observed:t}=this;this._addedCallback({child:e}),t.add(e)}unobserve(e){const{observed:t}=this;t.delete(e),this._removedCallback({child:e})}dispose(){this.observed.forEach(e=>{this.unobserve(e)})}}const OM=new sT,v0=new NR,Wx=new NR,fU=new re,Xx=new D,pU=new Me;let mue=class extends Mi{constructor(){super(),this.autoRun=!0,this.queryMap=new Map,this.index=0,this.queued=[],this.scheduled=!1,this.duration=1,this.objects=[],this.observer=new pue,this.ellipsoid=new wT,this.frame=new Me,this.cameras=new Set;const e=(()=>{let t=!1;return()=>{t||(t=!0,queueMicrotask(()=>{this.queryMap.forEach(i=>this._enqueue(i)),t=!1}))}})();this.observer.addEventListener("childadded",e),this.observer.addEventListener("childremoved",e)}_enqueue(e){e.queued||(this.queued.push(e),e.queued=!0,this._scheduleRun())}_runJobs(){const{queued:e,cameras:t,duration:i}=this,r=performance.now();for(t.forEach((a,s)=>{pU.copy(a.matrixWorldInverse).premultiply(a.projectionMatrix),Xx.set(0,0,-1).transformDirection(a.matrixWorld),v0.start.setFromMatrixPosition(a.matrixWorld),v0.end.addVectors(Xx,v0.start);for(let o=0,l=e.length;o-1&&m.x<1&&m.y>-1&&m.y<1&&m.z>-1&&m.z<1?(u.distance=m.subVectors(u.point,v0.start).dot(Xx),u.inFrustum=!0):(u.distance=0,u.inFrustum=!1)}s===0?(u.distance=f,u.inFrustum=p):(u.inFrustum=u.inFrustum||p,u.distance=Math.min(u.distance,f))}}),t.length!==0&&e.sort((a,s)=>a.point===null!=(s.point===null)?a.point===null?1:-1:a.inFrustum!==s.inFrustum?a.inFrustum?1:-1:a.distance<0!=s.distance<0?a.distance<0?-1:1:s.distance-a.distance);e.length!==0&&performance.now()-r{this.scheduled=!1,this._runJobs()}))}_updateQuery(e){OM.ray.copy(e.ray),OM.far="lat"in e?1e4+Math.max(...this.ellipsoid.radius):1/0;const t=OM.intersectObjects(this.objects)[0]||null;t!==null&&(e.point===null?e.point=t.point.clone():e.point.copy(t.point)),e.callback(t)}addCamera(e){const{queryMap:t,cameras:i}=this;i.add(e),t.forEach(r=>this._enqueue(r))}deleteCamera(e){const{cameras:t}=this;t.delete(e)}runIfNeeded(e){const{queryMap:t,queued:i}=this,r=t.get(e);r.queued&&(this._updateQuery(r),r.queued=!1,i.splice(i.indexOf(r),1))}setScene(...e){const{observer:t}=this;t.dispose(),e.forEach(i=>t.observe(i)),this.objects=e,this._scheduleRun()}setEllipsoidFromTilesRenderer(e){const{queryMap:t,ellipsoid:i,frame:r}=this;(!i.radius.equals(e.ellipsoid.radius)||!r.equals(e.group.matrixWorld))&&(i.copy(e.ellipsoid),r.copy(e.group.matrixWorld),t.forEach(a=>{if("lat"in a){const{lat:s,lon:o,ray:l}=a;i.getCartographicToPosition(s,o,1e4,l.origin).applyMatrix4(r),i.getCartographicToNormal(s,o,l.direction).transformDirection(r).multiplyScalar(-1)}this._enqueue(a)}))}registerRayQuery(e,t){const i=this.index++,r={ray:e.clone(),callback:t,queued:!1,distance:-1,point:null};return this.queryMap.set(i,r),this._enqueue(r),i}registerLatLonQuery(e,t,i){const{ellipsoid:r,frame:a}=this,s=this.index++,o=new Pr;r.getCartographicToPosition(e,t,1e4,o.origin).applyMatrix4(a),r.getCartographicToNormal(e,t,o.direction).transformDirection(a).multiplyScalar(-1);const l={ray:o.clone(),lat:e,lon:t,callback:i,queued:!1,distance:-1,point:null};return this.queryMap.set(s,l),this._enqueue(l),s}unregisterQuery(e){const{queued:t,queryMap:i}=this,r=i.get(e);i.delete(e),r&&r.queued&&(r.queued=!1,t.splice(t.indexOf(r),1))}dispose(){this.queryMap.clear(),this.queued.length=0,this.objects.length=0,this.observer.dispose()}};const gue=function(){const n=new D,e=new D,t=new D;return function(i,r,a){const s=i.start,o=n,l=r.start,u=e;t.subVectors(s,l),n.subVectors(i.end,i.start),e.subVectors(r.end,r.start);const d=t.dot(u),f=u.dot(o),p=u.dot(u),m=t.dot(o),v=o.dot(o)*p-f*f;let x,S;v!==0?x=(d*f-m*p)/v:x=0,S=(d+x*f)/p,a.x=x,a.y=S}}(),hC=ie.createContext(null),tS=new Me,LM=new Pr;ie.forwardRef(function(n,e){const{interpolationFactor:t=.025,onQueryUpdate:i=null,...r}=n,a=ie.useContext(ld),s=ie.useContext(hC),o=pn(({invalidate:m})=>m),l=ie.useMemo(()=>new D,[]),u=ie.useMemo(()=>({value:!1}),[]),d=ie.useMemo(()=>({value:!1}),[]),f=ie.useRef(null),p=ie.useCallback(m=>{if(a===null||m===null||f.current===null)return;const{lat:v,lon:x,rayorigin:S,raydirection:_}=r;v!==null&&x!==null?(l.copy(m.point),d.value=!0,s.ellipsoid.getObjectFrame(v,x,0,0,0,0,tS,jf).premultiply(a.group.matrixWorld),f.current.quaternion.setFromRotationMatrix(tS),o()):S!==null&&_!==null&&(l.copy(m.point),d.value=!0,f.current.quaternion.identity(),o()),i&&i(m)},[o,d,s.ellipsoid,r,l,a,i]);return _a((m,v)=>{if(f.current&&(f.current.visible=u.value),f.current&&d.value)if(u.value===!1)u.value=!0,f.current.position.copy(l);else{const x=1-2**(-v/t);f.current.position.distanceToSquared(l)>1e-6?(f.current.position.lerp(l,t===0?1:x),o()):f.current.position.copy(l)}}),ot.jsx(vue,{ref:LF(f,e),onQueryUpdate:p,...r})});const vue=ie.forwardRef(function(n,e){const{component:t=ot.jsx("group",{}),lat:i=null,lon:r=null,rayorigin:a=null,raydirection:s=null,onQueryUpdate:o=null,...l}=n,u=ie.useRef(null),d=ie.useContext(ld),f=ie.useContext(hC),p=pn(({invalidate:v})=>v),m=ie.useMemo(()=>new D,[]);return ie.useEffect(()=>{const v=x=>{o?o(x):d&&x!==null&&u.current!==null&&(i!==null&&r!==null?(u.current.position.copy(x.point),f.ellipsoid.getObjectFrame(i,r,0,0,0,0,tS,jf).premultiply(d.group.matrixWorld),u.current.quaternion.setFromRotationMatrix(tS),p()):a!==null&&s!==null&&(u.current.position.copy(x.point),u.current.quaternion.identity(),p()))};if(i!==null&&r!==null){const x=f.registerLatLonQuery(i,r,v);return()=>f.unregisterQuery(x)}else if(a!==null&&s!==null){LM.origin.copy(a),LM.direction.copy(s);const x=f.registerRayQuery(LM,v);return()=>f.unregisterQuery(x)}},[i,r,a,s,f,d,p,m,o]),ie.cloneElement(t,{...l,ref:LF(u,e),raycast:()=>!1})});ie.forwardRef(function(n,e){const t=pn(({scene:u})=>u),{scene:i=t,children:r,...a}=n,s=ie.useContext(ld),o=ie.useMemo(()=>new mue,[]),l=pn(({camera:u})=>u);return vv(o,a),ie.useEffect(()=>()=>o.dispose(),[o]),ie.useEffect(()=>{o.setScene(...Array.isArray(i)?i:[i])},[o,i]),ie.useEffect(()=>{o.addCamera(l)},[o,l]),_a(()=>{s&&o.setEllipsoidFromTilesRenderer(s)}),_v(o,e),ot.jsx(hC.Provider,{value:o,children:ot.jsx("group",{matrixAutoUpdate:!1,matrixWorldAutoUpdate:!1,children:r})})});const mU="https://tile.googleapis.com/v1/createSession";class _ue{get isMapTilesSession(){return this.authURL===mU}constructor(e={}){const{apiToken:t,sessionOptions:i=null,autoRefreshToken:r=!1}=e;this.apiToken=t,this.autoRefreshToken=r,this.authURL=mU,this.sessionToken=null,this.sessionOptions=i,this._tokenRefreshPromise=null}async fetch(e,t){this.sessionToken===null&&this.isMapTilesSession&&this.refreshToken(t),await this._tokenRefreshPromise;const i=new URL(e);i.searchParams.set("key",this.apiToken),this.sessionToken&&i.searchParams.set("session",this.sessionToken);let r=await fetch(i,t);return r.status>=400&&r.status<=499&&this.autoRefreshToken&&(await this.refreshToken(t),this.sessionToken&&i.searchParams.set("session",this.sessionToken),r=await fetch(i,t)),this.sessionToken===null&&!this.isMapTilesSession?r.json().then(a=>(this.sessionToken=gU(a),a)):r}refreshToken(e){if(this._tokenRefreshPromise===null){const t=new URL(this.authURL);t.searchParams.set("key",this.apiToken);const i={...e};this.isMapTilesSession&&(i.method="POST",i.body=JSON.stringify(this.sessionOptions),i.headers=i.headers||{},i.headers={...i.headers,"Content-Type":"application/json"}),this._tokenRefreshPromise=fetch(t,i).then(r=>{if(!r.ok)throw new Error(`GoogleCloudAuth: Failed to load data with error code ${r.status}`);return r.json()}).then(r=>(this.sessionToken=gU(r),this._tokenRefreshPromise=null,r))}return this._tokenRefreshPromise}}function gU(n){if("session"in n)return n.session;{let e=null;const t=n.root;return cF(t,i=>{if(i.content&&i.content.uri){const[,r]=i.content.uri.split("?");return e=new URLSearchParams(r).get("session"),!0}return!1}),e}}class xue{constructor(){this.creditsCount={}}_adjustAttributions(e,t){const i=this.creditsCount,r=e.split(/;/g);for(let a=0,s=r.length;a{const i=e[1];return t[1]-i}).map(e=>e[0]).join("; ")}}const yue="https://tile.googleapis.com/v1/3dtiles/root.json";class Sue{constructor({apiToken:e,sessionOptions:t=null,autoRefreshToken:i=!1,logoUrl:r=null,useRecommendedSettings:a=!0}){this.name="GOOGLE_CLOUD_AUTH_PLUGIN",this.apiToken=e,this.useRecommendedSettings=a,this.logoUrl=r,this.auth=new _ue({apiToken:e,autoRefreshToken:i,sessionOptions:t}),this.tiles=null,this._visibilityChangeCallback=null,this._attributionsManager=new xue,this._logoAttribution={value:"",type:"image",collapsible:!1},this._attribution={value:"",type:"string",collapsible:!0}}init(e){const{useRecommendedSettings:t,auth:i}=this;e.resetFailedTiles(),e.rootURL==null&&(e.rootURL=yue),i.sessionOptions||(i.authURL=e.rootURL),t&&!i.isMapTilesSession&&(e.errorTarget=20),this.tiles=e,this._visibilityChangeCallback=({tile:r,visible:a})=>{var s,o;const l=((o=(s=r.cached.metadata)==null?void 0:s.asset)==null?void 0:o.copyright)||"";a?this._attributionsManager.addAttributions(l):this._attributionsManager.removeAttributions(l)},e.addEventListener("tile-visibility-change",this._visibilityChangeCallback)}getAttributions(e){this.tiles.visibleTiles.size>0&&(this.logoUrl&&(this._logoAttribution.value=this.logoUrl,e.push(this._logoAttribution)),this._attribution.value=this._attributionsManager.toString(),e.push(this._attribution))}dispose(){this.tiles.removeEventListener("tile-visibility-change",this._visibilityChangeCallback)}async fetchData(e,t){return this.auth.fetch(e,t)}}const IM=new Me;class Tue{constructor(){this.name="UPDATE_ON_CHANGE_PLUGIN",this.tiles=null,this.needsUpdate=!1,this.cameraMatrices=new Map}init(e){this.tiles=e,this._needsUpdateCallback=()=>{this.needsUpdate=!0},this._onCameraAdd=({camera:t})=>{this.needsUpdate=!0,this.cameraMatrices.set(t,new Me)},this._onCameraDelete=({camera:t})=>{this.needsUpdate=!0,this.cameraMatrices.delete(t)},e.addEventListener("needs-update",this._needsUpdateCallback),e.addEventListener("add-camera",this._onCameraAdd),e.addEventListener("delete-camera",this._onCameraDelete),e.addEventListener("camera-resolution-change",this._needsUpdateCallback),e.cameras.forEach(t=>{this._onCameraAdd({camera:t})})}doTilesNeedUpdate(){const e=this.tiles;let t=!1;this.cameraMatrices.forEach((r,a)=>{IM.copy(e.group.matrixWorld).premultiply(a.matrixWorldInverse).premultiply(a.projectionMatrixInverse),t=t||!IM.equals(r),r.copy(IM)});const i=this.needsUpdate;return this.needsUpdate=!1,i||t}preprocessNode(){this.needsUpdate=!0}dispose(){const e=this.tiles;e.removeEventListener("camera-resolution-change",this._needsUpdateCallback),e.removeEventListener("needs-update",this._needsUpdateCallback),e.removeEventListener("add-camera",this._onCameraAdd),e.removeEventListener("delete-camera",this._onCameraDelete)}}const vU=new D;function _0(n,e){if(n.isInterleavedBufferAttribute||n.array instanceof e)return n;const t=e===Int8Array||e===Int16Array||e===Int32Array?-1:0,i=new e(n.count*n.itemSize),r=new bt(i,n.itemSize,!0),a=n.itemSize,s=n.count;for(let o=0;o{if(p.material&&r){const m=p.material;for(const v in m){const x=m[v];x&&x.isTexture&&x.generateMipmaps&&(x.generateMipmaps=!1,x.minFilter=Bt)}}if(p.geometry){const m=p.geometry,v=m.attributes;if(s){const{uv:x,uv1:S,uv2:_,uv3:T}=v;x&&(v.uv=_0(x,u)),S&&(v.uv1=_0(S,u)),_&&(v.uv2=_0(_,u)),T&&(v.uv3=_0(T,u))}if(i&&!v.normals&&m.computeVertexNormals(),o&&v.normals&&(v.normals=_0(v.normals,d)),l&&Eue(p,f),a&&m.index){const x=v.position.count,S=m.index,_=x>65535?Uint32Array:x>255?Uint16Array:Uint8Array;if(!(S.array instanceof _)){const T=new _(m.index.count);T.set(S.array);const E=new bt(T,1);m.setIndex(E)}}}})}}function lr(n,e,t){return n&&e in n?n[e]:t}function IF(n){return n!=="BOOLEAN"&&n!=="STRING"&&n!=="ENUM"}function Mue(n){return/^FLOAT/.test(n)}function xv(n){return/^VEC/.test(n)}function yv(n){return/^MAT/.test(n)}function UF(n,e,t,i=null){return yv(t)||xv(t)?i.fromArray(n,e):n[e]}function WA(n){const{type:e,componentType:t}=n;switch(e){case"SCALAR":return t==="INT64"?0n:0;case"VEC2":return new re;case"VEC3":return new D;case"VEC4":return new Pt;case"MAT2":return new oT;case"MAT3":return new Mt;case"MAT4":return new Me;case"BOOLEAN":return!1;case"STRING":return"";case"ENUM":return 0}}function _U(n,e){if(e==null)return!1;switch(n){case"SCALAR":return typeof e=="number"||typeof e=="bigint";case"VEC2":return e.isVector2;case"VEC3":return e.isVector3;case"VEC4":return e.isVector4;case"MAT2":return e.isMatrix2;case"MAT3":return e.isMatrix3;case"MAT4":return e.isMatrix4;case"BOOLEAN":return typeof e=="boolean";case"STRING":return typeof e=="string";case"ENUM":return typeof e=="number"||typeof e=="bigint"}throw new Error("ClassProperty: invalid type.")}function Fg(n,e=null){switch(n){case"INT8":return Int8Array;case"INT16":return Int16Array;case"INT32":return Int32Array;case"INT64":return BigInt64Array;case"UINT8":return Uint8Array;case"UINT16":return Uint16Array;case"UINT32":return Uint32Array;case"UINT64":return BigUint64Array;case"FLOAT32":return Float32Array;case"FLOAT64":return Float64Array}switch(e){case"BOOLEAN":return Uint8Array;case"STRING":return Uint8Array}throw new Error("ClassProperty: invalid type.")}function Aue(n,e=null){if(n.array){e=e&&Array.isArray(e)?e:[],e.length=n.count;for(let t=0,i=e.length;ts.value===r);return a===null?"":a.name}}adjustValueScaleOffset(e){return IF(this.type)?Cue(this,e):e}}class fC{constructor(e,t={},i={},r=null){this.definition=e,this.class=t[e.class],this.className=e.class,this.enums=i,this.data=r,this.name="name"in e?e.name:null,this.properties=null}getPropertyNames(){return Object.keys(this.class.properties)}includesData(e){return!!this.definition.properties[e]}dispose(){}_initProperties(e=RT){const t={};for(const i in this.class.properties)t[i]=new e(this.enums,this.class.properties[i],this.definition.properties[i]);this.properties=t}}class Nue extends RT{constructor(e,t,i=null){super(e,t,i),this.attribute=(i==null?void 0:i.attribute)??null}}class Oue extends fC{constructor(...e){super(...e),this.isPropertyAttributeAccessor=!0,this._initProperties(Nue)}getData(e,t,i={}){const r=this.properties;iS(r,i);for(const a in r)i[a]=this.getPropertyValue(a,e,t,i[a]);return i}getPropertyValue(e,t,i,r=null){if(t>=this.count)throw new Error("PropertyAttributeAccessor: Requested index is outside the range of the buffer.");const a=this.properties[e],s=a.type;if(a){if(!this.definition.properties[e])return a.resolveDefault(r)}else throw new Error("PropertyAttributeAccessor: Requested class property does not exist.");r=a.shapeToProperty(r);const o=i.getAttribute(a.attribute.toLowerCase());if(yv(s)){const l=r.elements;for(let u=0,d=l.length;u>x&1)===1}return r}getPropertyValue(e,t,i=null){if(t>=this.count)throw new Error("PropertyTableAccessor: Requested index is outside the range of the table.");const r=this.properties[e];if(r){if(!this.definition.properties[e])return r.resolveDefault(i)}else throw new Error("PropertyTableAccessor: Requested property does not exist.");const a=r.array,s=this.data,o=r.getArrayLengthFromId(s,t);if(i=r.shapeToProperty(i,o),a)for(let l=0,u=i.length;l{},this.pivotMesh.scale.setScalar(.25),this.raycaster=new sT,this.raycaster.firstHitOnly=!0,this.up=new D(0,1,0),this.clock=new cv,this._detachCallback=null,this._upInitialized=!1,this._lastUsedState=Ws,this._zoomPointWasSet=!1,this._tilesOnChangeCallback=()=>this.zoomPointSet=!1,i&&this.attach(i),t&&this.setCamera(t),e&&this.setScene(e),r&&this.setTilesRenderer(r)}setScene(e){this.scene=e}setCamera(e){this.camera=e,this._upInitialized=!1,this.zoomDirectionSet=!1,this.zoomPointSet=!1,this.needsUpdate=!0,this.raycaster.camera=e,this.resetState()}setTilesRenderer(e){console.warn('EnvironmentControls: "setTilesRenderer" has been deprecated. Use "setScene" and "setEllipsoid", instead.'),this.tilesRenderer=e,this.tilesRenderer!==null&&this.setScene(this.tilesRenderer.group)}attach(e){if(this.domElement)throw new Error("EnvironmentControls: Controls already attached to element");this.domElement=e,this.pointerTracker.domElement=e,e.style.touchAction="none";const t=d=>{this.enabled&&d.preventDefault()},i=d=>{if(!this.enabled)return;d.preventDefault();const{camera:f,raycaster:p,domElement:m,up:v,pivotMesh:x,pointerTracker:S,scene:_,pivotPoint:T,enabled:E}=this;if(S.addPointer(d),this.needsUpdate=!0,S.isPointerTouch()){if(x.visible=!1,S.getPointerCount()===0)m.setPointerCapture(d.pointerId);else if(S.getPointerCount()>2){this.resetState();return}}S.getCenterPoint(ar),wf(ar.x,ar.y,m,ar),ps(p,ar,f);const b=Math.abs(p.ray.direction.dot(v));if(b{const{pointerTracker:f}=this;if(!this.enabled)return;d.preventDefault();const{pivotMesh:p,enabled:m}=this;this.zoomDirectionSet=!1,this.zoomPointSet=!1,this.state!==Ws&&(this.needsUpdate=!0),f.setHoverEvent(d),f.updatePointer(d)&&(f.isPointerTouch()&&f.getPointerCount()===2&&(r||(r=!0,queueMicrotask(()=>{r=!1,f.getCenterPoint(NM);const v=f.getStartTouchPointerDistance(),x=f.getTouchPointerDistance(),S=x-v;if(this.state===Ws||this.state===AM){f.getCenterPoint(NM),f.getStartCenterPoint(nU);const _=2*window.devicePixelRatio,T=NM.distanceTo(nU);(Math.abs(S)>_||T>_)&&(Math.abs(S)>T?(this.setState(Rf),this.zoomDirectionSet=!1):this.setState(hl))}if(this.state===Rf){const _=f.getPreviousTouchPointerDistance();this.zoomDelta+=x-_,p.visible=!1}else this.state===hl&&(p.visible=m)}))),this.dispatchEvent(iU))},s=d=>{const{pointerTracker:f}=this;!this.enabled||f.getPointerCount()===0||(f.deletePointer(d),f.getPointerType()==="touch"&&f.getPointerCount()===0&&e.releasePointerCapture(d.pointerId),this.resetState(),this.needsUpdate=!0)},o=d=>{if(!this.enabled)return;d.preventDefault();const{pointerTracker:f}=this;f.setHoverEvent(d),f.updatePointer(d),this.dispatchEvent(rU);let p;switch(d.deltaMode){case 2:p=d.deltaY*800;break;case 1:p=d.deltaY*40;break;case 0:p=d.deltaY;break}const m=Math.sign(p),v=Math.abs(p);this.zoomDelta-=.25*m*v,this.needsUpdate=!0,this._lastUsedState=Rf,this.dispatchEvent(aU)},l=d=>{this.enabled&&this.resetState()};e.addEventListener("contextmenu",t),e.addEventListener("pointerdown",i),e.addEventListener("wheel",o,{passive:!1});const u=e.getRootNode();u.addEventListener("pointermove",a),u.addEventListener("pointerup",s),u.addEventListener("pointerleave",l),this._detachCallback=()=>{e.removeEventListener("contextmenu",t),e.removeEventListener("pointerdown",i),e.removeEventListener("wheel",o),u.removeEventListener("pointermove",a),u.removeEventListener("pointerup",s),u.removeEventListener("pointerleave",l)}}detach(){this.domElement=null,this._detachCallback&&(this._detachCallback(),this._detachCallback=null,this.pointerTracker.reset())}getUpDirection(e,t){t.copy(this.up)}getCameraUpDirection(e){this.getUpDirection(this.camera.position,e)}getPivotPoint(e){let t=null;this._lastUsedState===Rf?this._zoomPointWasSet&&(t=e.copy(this.zoomPoint)):(this._lastUsedState===hl||this._lastUsedState===yc)&&(t=e.copy(this.pivotPoint));const{camera:i,raycaster:r}=this;t!==null&&(an.copy(t).project(i),(an.x<-1||an.x>1||an.y<-1||an.y>1)&&(t=null)),ps(r,{x:0,y:0},i);const a=this._raycast(r);return a&&(t===null||a.distance1){r.set(0,0,0),t.set(0,0,0);return}const f=Math.pow(2,-e/s),p=Math.max(o.near,l,u,d),m=.25*(2/(2*1e3));if(t.lengthSq()>0){ps(Fn,an.set(0,0,-1),o),Fn.applyMatrix4(o.matrixWorldInverse),Fn.direction.normalize(),Fn.recast(-Fn.direction.dot(Fn.origin)).at(p/Fn.direction.z,an),an.applyMatrix4(o.matrixWorld),ps(Fn,Ia.set(m,m,-1),o),Fn.applyMatrix4(o.matrixWorldInverse),Fn.direction.normalize(),Fn.recast(-Fn.direction.dot(Fn.origin)).at(p/Fn.direction.z,Ia),Ia.applyMatrix4(o.matrixWorld),an.sub(i).normalize(),Ia.sub(i).normalize();const v=an.angleTo(Ia)/e;t.multiplyScalar(f),(t.lengthSq()0){ps(Fn,an.set(0,0,-1),o),Fn.applyMatrix4(o.matrixWorldInverse),Fn.direction.normalize(),Fn.recast(-Fn.direction.dot(Fn.origin)).at(p/Fn.direction.z,an),an.applyMatrix4(o.matrixWorld),ps(Fn,Ia.set(m,m,-1),o),Fn.applyMatrix4(o.matrixWorldInverse),Fn.direction.normalize(),Fn.recast(-Fn.direction.dot(Fn.origin)).at(p/Fn.direction.z,Ia),Ia.applyMatrix4(o.matrixWorld);const v=an.distanceTo(Ia)/e;r.multiplyScalar(f),(r.lengthSq()0&&this._applyRotation(t.x*e,t.y*e,i),r.lengthSq()>0&&(o.position.addScaledVector(r,e),o.updateMatrixWorld())}_inertiaNeedsUpdate(){const{rotationInertia:e,dragInertia:t}=this;return e.lengthSq()!==0||t.lengthSq()!==0}_updateZoom(){const{zoomPoint:e,zoomDirection:t,camera:i,minDistance:r,maxDistance:a,pointerTracker:s,domElement:o,minZoom:l,maxZoom:u,zoomSpeed:d,state:f}=this;let p=this.zoomDelta;if(this.zoomDelta=0,!(!s.getLatestPoint(ar)||p===0&&f!==Rf))if(this.rotationInertia.set(0,0),this.dragInertia.set(0,0,0),i.isOrthographicCamera){this._updateZoomDirection();const m=this.zoomPointSet||this._updateZoomPoint();kx.unproject(i);const v=Math.pow(.95,Math.abs(p*.05));let x=p>0?1/Math.abs(v):v;x*=d,x>1?ui.zoom*x&&(x=1),i.zoom*=x,i.updateProjectionMatrix(),m&&(wf(ar.x,ar.y,o,DM),DM.unproject(i),i.position.sub(DM).add(kx),i.updateMatrixWorld())}else{this._updateZoomDirection();const m=an.copy(t);if(this.zoomPointSet||this._updateZoomPoint()){const v=e.distanceTo(i.position);if(p<0){const x=Math.min(0,v-a);p=p*v*d*.0025,p=Math.max(p,x)}else{const x=Math.max(0,v-r);p=p*Math.max(v-r,0)*d*.0025,p=Math.min(p,x)}i.position.addScaledVector(t,p),i.updateMatrixWorld()}else{const v=this._getPointBelowCamera();if(v){const x=v.distance;m.set(0,0,-1).transformDirection(i.matrixWorld),i.position.addScaledVector(m,p*x*.01),i.updateMatrixWorld()}}}}_updateZoomDirection(){if(this.zoomDirectionSet)return;const{domElement:e,raycaster:t,camera:i,zoomDirection:r,pointerTracker:a}=this;a.getLatestPoint(ar),wf(ar.x,ar.y,e,kx),ps(t,kx,i),r.copy(t.ray.direction).normalize(),this.zoomDirectionSet=!0}_updateZoomPoint(){const{camera:e,zoomDirectionSet:t,zoomDirection:i,raycaster:r,zoomPoint:a,pointerTracker:s,domElement:o}=this;if(this._zoomPointWasSet=!1,!t)return!1;e.isOrthographicCamera&&s.getLatestPoint(f0)?(wf(f0.x,f0.y,o,f0),ps(r,f0,e)):(r.ray.origin.copy(e.position),r.ray.direction.copy(i),r.near=0,r.far=1/0);const l=this._raycast(r);return l?(a.copy(l.point),this.zoomPointSet=!0,this._zoomPointWasSet=!0,!0):!1}_getPointBelowCamera(e=this.camera.position,t=this.up){const{raycaster:i}=this;i.ray.direction.copy(t).multiplyScalar(-1),i.ray.origin.copy(e).addScaledVector(t,1e5),i.near=0,i.far=1/0;const r=this._raycast(i);return r&&(r.distance-=1e5),r}_updatePosition(e){const{raycaster:t,camera:i,pivotPoint:r,up:a,pointerTracker:s,domElement:o,state:l,dragInertia:u}=this;if(l===yc){if(s.getCenterPoint(ar),wf(ar.x,ar.y,o,ar),eU.setFromNormalAndCoplanarPoint(a,r),ps(t,ar,i),Math.abs(t.ray.direction.dot(a))1-1e-10?d=0:(an.crossVectors(Bi,mr).normalize(),d=Math.sign(an.dot(ds))*Bi.angleTo(mr)),u>0?(u=Math.min(d-a,u),u=Math.max(0,u)):(u=Math.max(d-s,u),u=Math.min(0,u)),Vs.setFromAxisAngle(Bi,l),op(i,Vs,_c),r.matrixWorld.premultiply(_c),ds.set(1,0,0).transformDirection(r.matrixWorld),Vs.setFromAxisAngle(ds,-u),op(i,Vs,_c),r.matrixWorld.premultiply(_c),r.matrixWorld.decompose(r.position,r.quaternion,an)}_setFrame(e){const{up:t,camera:i,zoomPoint:r,zoomDirectionSet:a,zoomPointSet:s,scaleZoomOrientationAtEdges:o}=this;if(a&&(s||this._updateZoomPoint())){if(Vs.setFromUnitVectors(t,e),o){this.getUpDirection(r,an);let l=Math.max(an.dot(t)-.6,0)/.4;l=ht.mapLinear(l,0,.5,0,1),l=Math.min(l,1),i.isOrthographicCamera&&(l*=.1),Vs.slerp(Jce,1-l)}op(r,Vs,_c),i.updateMatrixWorld(),i.matrixWorld.premultiply(_c),i.matrixWorld.decompose(i.position,i.quaternion,an),this.zoomDirectionSet=!1,this._updateZoomDirection()}t.copy(e),i.updateMatrixWorld()}_raycast(e){const{scene:t,useFallbackPlane:i,fallbackPlane:r}=this,a=e.intersectObject(t)[0]||null;if(a)return a;if(i){const s=r;if(e.ray.intersectPlane(s,an))return{point:an.clone(),distance:e.ray.origin.distanceTo(an)}}return null}_alignCameraUp(e,t=1){const{camera:i,state:r,pivotPoint:a,zoomPoint:s,zoomPointSet:o}=this;i.updateMatrixWorld(),mr.set(0,0,-1).transformDirection(i.matrixWorld),ds.set(-1,0,0).transformDirection(i.matrixWorld);let l=ht.mapLinear(1-Math.abs(mr.dot(e)),0,.2,0,1);l=ht.clamp(l,0,1),t*=l,CM.crossVectors(e,mr),CM.lerp(ds,1-t).normalize(),Vs.setFromUnitVectors(ds,CM),i.quaternion.premultiply(Vs);let u=null;r===yc||r===hl?u=Hx.copy(a):o&&(u=Hx.copy(s)),u&&(Fx.copy(i.matrixWorld).invert(),an.copy(u).applyMatrix4(Fx),i.updateMatrixWorld(),an.applyMatrix4(i.matrixWorld),Vx.subVectors(u,an),i.position.add(Vx)),i.updateMatrixWorld()}_clampRotation(e){const{camera:t,minAltitude:i,maxAltitude:r,state:a,pivotPoint:s,zoomPoint:o,zoomPointSet:l}=this;t.updateMatrixWorld(),mr.set(0,0,1).transformDirection(t.matrixWorld),ds.set(1,0,0).transformDirection(t.matrixWorld);let u;e.dot(mr)>1-1e-10?u=0:(an.crossVectors(e,mr),u=Math.sign(an.dot(ds))*e.angleTo(mr));let d;if(u>r)d=r;else if(uUa.subVectors(Rn,Hn.origin).dot(Hn.direction))&&e.copy(Rn),e}getVectorToCenter(e){const{ellipsoidFrame:t,camera:i}=this;return e.setFromMatrixPosition(t).sub(i.position)}getDistanceToCenter(){return this.getVectorToCenter(Rn).length()}getUpDirection(e,t){const{ellipsoidFrame:i,ellipsoidFrameInverse:r,ellipsoid:a}=this;Rn.copy(e).applyMatrix4(r),a.getPositionToNormal(Rn,t),t.transformDirection(i)}getCameraUpDirection(e){const{ellipsoidFrame:t,ellipsoidFrameInverse:i,ellipsoid:r,camera:a}=this;a.isOrthographicCamera?(this._getVirtualOrthoCameraPosition(Rn),Rn.applyMatrix4(i),r.getPositionToNormal(Rn,e),e.transformDirection(t)):this.getUpDirection(a.position,e)}update(e=Math.min(this.clock.getDelta(),64/1e3)){if(!this.enabled||!this.camera||e===0)return;const{camera:t,pivotMesh:i}=this;this._isNearControls()?this.scaleZoomOrientationAtEdges=this.zoomDelta<0:(this.state!==Ws&&this._dragMode!==1&&this._rotationMode!==1&&(i.visible=!1),this.scaleZoomOrientationAtEdges=!1);const r=this.needsUpdate||this._inertiaNeedsUpdate();super.update(e),this.adjustCamera(t),r&&this._isNearControls()&&(this.getCameraUpDirection(Sf),this._alignCameraUp(Sf,1),this.getCameraUpDirection(Sf),this._clampRotation(Sf))}adjustCamera(e){super.adjustCamera(e);const{ellipsoidFrame:t,ellipsoidFrameInverse:i,ellipsoid:r,nearMargin:a,farMargin:s}=this,o=Math.max(...r.radius);if(e.isPerspectiveCamera){const l=Rn.setFromMatrixPosition(t).sub(e.position).length(),u=a*o,d=ht.clamp((l-o)/u,0,1),f=ht.lerp(1,1e3,d);e.near=Math.max(f,l-o-u),Ua.copy(e.position).applyMatrix4(i),r.getPositionToCartographic(Ua,cU);const p=Math.max(r.getPositionElevation(Ua),eue),m=r.calculateHorizonDistance(cU.lat,p);e.far=m+.1+o*s,e.updateProjectionMatrix()}else{this._getVirtualOrthoCameraPosition(e.position,e),e.updateMatrixWorld(),sU.copy(e.matrixWorld).invert(),Rn.setFromMatrixPosition(t).applyMatrix4(sU);const l=-Rn.z;e.near=l-o*(1+a),e.far=l+.1+o*s,e.position.addScaledVector(Pa,e.near),e.far-=e.near,e.near=0,e.updateProjectionMatrix(),e.updateMatrixWorld()}}setState(...e){super.setState(...e),this._dragMode=0,this._rotationMode=0}_updateInertia(e){super._updateInertia(e);const{globeInertia:t,enableDamping:i,dampingFactor:r,camera:a,cameraRadius:s,minDistance:o,inertiaTargetDistance:l,ellipsoidFrame:u}=this;if(!this.enableDamping||this.inertiaStableFrames>1){this.globeInertiaFactor=0,this.globeInertia.identity();return}const d=Math.pow(2,-e/r),f=Math.max(a.near,s,o,l),p=.25*(2/(2*1e3));if(dl.setFromMatrixPosition(u),this.globeInertiaFactor!==0){ps(Hn,Rn.set(0,0,-1),a),Hn.applyMatrix4(a.matrixWorldInverse),Hn.direction.normalize(),Hn.recast(-Hn.direction.dot(Hn.origin)).at(f/Hn.direction.z,Rn),Rn.applyMatrix4(a.matrixWorld),ps(Hn,Ua.set(p,p,-1),a),Hn.applyMatrix4(a.matrixWorldInverse),Hn.direction.normalize(),Hn.recast(-Hn.direction.dot(Hn.origin)).at(f/Hn.direction.z,Ua),Ua.applyMatrix4(a.matrixWorld),Rn.sub(dl).normalize(),Ua.sub(dl).normalize(),this.globeInertiaFactor*=d;const m=Rn.angleTo(Ua)/e;(2*Math.acos(t.w)*this.globeInertiaFactor0){if(this._updateZoomDirection(),e<0&&(this.zoomPointSet||this._updateZoomPoint())){Pa.set(0,0,-1).transformDirection(a.matrixWorld).normalize(),Ku.copy(this.up).multiplyScalar(-1),this.getUpDirection(r,oU);const u=ht.clamp(ht.mapLinear(-oU.dot(Ku),1,.95,0,1),0,1),d=1-Pa.dot(Ku),f=a.isOrthographicCamera?.05:1,p=ht.clamp(l*3,0,1),m=Math.min(u*d*f*p,.1);Ku.lerpVectors(Pa,Ku,m).normalize(),fl.setFromUnitVectors(Pa,Ku),op(r,fl,yf),a.matrixWorld.premultiply(yf),a.matrixWorld.decompose(a.position,a.quaternion,Ku),this.zoomDirection.subVectors(r,a.position).normalize()}super._updateZoom()}else if(a.isPerspectiveCamera){const u=this._getPerspectiveTransitionDistance(),d=this._getMaxPerspectiveDistance(),f=ht.mapLinear(this.getDistanceToCenter(),u,d,0,1);this._tiltTowardsCenter(ht.lerp(0,.4,f*l)),this._alignCameraUpToNorth(ht.lerp(0,.2,f*l));const p=this.getDistanceToCenter()-t.radius.x,m=e*p*i*.0025,v=Math.max(m,Math.min(this.getDistanceToCenter()-d,0));this.getVectorToCenter(Rn).normalize(),this.camera.position.addScaledVector(Rn,v),this.camera.updateMatrixWorld(),this.zoomDelta=0}else{const u=this._getOrthographicTransitionZoom(),d=this._getMinOrthographicZoom(),f=ht.mapLinear(a.zoom,u,d,0,1);this._tiltTowardsCenter(ht.lerp(0,.4,f*l)),this._alignCameraUpToNorth(ht.lerp(0,.2,f*l));const p=this.zoomDelta,m=Math.pow(.95,Math.abs(p*.05)),v=p>0?1/Math.abs(m):m,x=d/a.zoom,S=Math.max(v*i,Math.min(x,1));a.zoom=Math.min(s,a.zoom*S),a.updateProjectionMatrix(),this.zoomDelta=0,this.zoomDirectionSet=!1}}_alignCameraUpToNorth(e){const{ellipsoidFrame:t}=this;Sf.set(0,0,1).transformDirection(t),this._alignCameraUp(Sf,e)}_tiltTowardsCenter(e){const{camera:t,ellipsoidFrame:i}=this;Pa.set(0,0,-1).transformDirection(t.matrixWorld).normalize(),Rn.setFromMatrixPosition(i).sub(t.position).normalize(),Rn.lerp(Pa,1-e).normalize(),fl.setFromUnitVectors(Pa,Rn),t.quaternion.premultiply(fl),t.updateMatrixWorld()}_getPerspectiveTransitionDistance(){const{camera:e,ellipsoid:t}=this;if(!e.isPerspectiveCamera)throw new Error;const i=Math.max(...t.radius),r=2*Math.atan(Math.tan(ht.DEG2RAD*e.fov*.5)*e.aspect),a=i/Math.tan(ht.DEG2RAD*e.fov*.5),s=i/Math.tan(r*.5);return Math.max(a,s)}_getMaxPerspectiveDistance(){const{camera:e,ellipsoid:t}=this;if(!e.isPerspectiveCamera)throw new Error;const i=Math.max(...t.radius),r=2*Math.atan(Math.tan(ht.DEG2RAD*e.fov*.5)*e.aspect),a=i/Math.tan(ht.DEG2RAD*e.fov*.5),s=i/Math.tan(r*.5);return 2*Math.max(a,s)}_getOrthographicTransitionZoom(){const{camera:e,ellipsoid:t}=this;if(!e.isOrthographicCamera)throw new Error;const i=e.top-e.bottom,r=e.right-e.left,a=Math.max(i,r),s=2*Math.max(...t.radius);return 2*a/s}_getMinOrthographicZoom(){const{camera:e,ellipsoid:t}=this;if(!e.isOrthographicCamera)throw new Error;const i=e.top-e.bottom,r=e.right-e.left,a=Math.min(i,r),s=2*Math.max(...t.radius);return .7*a/s}_getVirtualOrthoCameraPosition(e,t=this.camera){const{ellipsoidFrame:i,ellipsoidFrameInverse:r,ellipsoid:a}=this;if(!t.isOrthographicCamera)throw new Error;Hn.origin.copy(t.position),Hn.direction.set(0,0,-1).transformDirection(t.matrixWorld),Hn.applyMatrix4(r),a.closestPointToRayEstimate(Hn,Ua).applyMatrix4(i);const s=t.top-t.bottom,o=t.right-t.left,l=Math.max(s,o)/t.zoom;Pa.set(0,0,-1).transformDirection(t.matrixWorld);const u=Ua.sub(t.position).dot(Pa);e.copy(t.position).addScaledVector(Pa,u-l*4)}_isNearControls(){const{camera:e}=this;return e.isPerspectiveCamera?this.getDistanceToCenter()this._getOrthographicTransitionZoom()}_raycast(e){const t=super._raycast(e);if(t===null){const{ellipsoid:i,ellipsoidFrame:r,ellipsoidFrameInverse:a}=this;Hn.copy(e.ray).applyMatrix4(a);const s=i.intersectRay(Hn,Rn);return s!==null?(s.applyMatrix4(r),{point:s.clone(),distance:s.distanceTo(e.ray.origin)}):null}else return t}};const Hr=new D,Ju=new D,$u=new Za,nue=new D,iue=new D,rue=new D,uU=new ft,aue=new ft;let sue=class extends Mi{get animating(){return this._alpha!==0&&this._alpha!==1}get alpha(){return this._target===0?1-this._alpha:this._alpha}get camera(){return this._alpha===0?this.perspectiveCamera:this._alpha===1?this.orthographicCamera:this.transitionCamera}get mode(){return this._target===0?"perspective":"orthographic"}set mode(e){if(e===this.mode)return;const t=this.camera;e==="perspective"?(this._target=0,this._alpha=0):(this._target=1,this._alpha=1),this.dispatchEvent({type:"camera-change",camera:this.camera,prevCamera:t})}constructor(e=new si,t=new Za){super(),this.perspectiveCamera=e,this.orthographicCamera=t,this.transitionCamera=new si,this.orthographicPositionalZoom=!0,this.orthographicOffset=50,this.fixedPoint=new D,this.duration=200,this.autoSync=!0,this.easeFunction=i=>i,this._target=0,this._alpha=0,this._clock=new cv}toggle(){this._target=this._target===1?0:1,this._clock.getDelta(),this.dispatchEvent({type:"toggle"})}update(e=Math.min(this._clock.getDelta(),64/1e3)){this.autoSync&&this.syncCameras();const{perspectiveCamera:t,orthographicCamera:i,transitionCamera:r,camera:a}=this,s=e*1e3;if(this._alpha!==this._target){const u=Math.sign(this._target-this._alpha)*s/this.duration;this._alpha=ht.clamp(this._alpha+u,0,1),this.dispatchEvent({type:"change",alpha:this.alpha})}const o=a;let l=null;this._alpha===0?l=t:this._alpha===1?l=i:(l=r,this._updateTransitionCamera()),o!==l&&(l===r&&this.dispatchEvent({type:"transition-start"}),this.dispatchEvent({type:"camera-change",camera:l,prevCamera:o}),o===r&&this.dispatchEvent({type:"transition-end"}))}syncCameras(){const e=this._getFromCamera(),{perspectiveCamera:t,orthographicCamera:i,transitionCamera:r,fixedPoint:a}=this;if(Hr.set(0,0,-1).transformDirection(e.matrixWorld).normalize(),e.isPerspectiveCamera){if(this.orthographicPositionalZoom)i.position.copy(t.position).addScaledVector(Hr,-this.orthographicOffset),i.rotation.copy(t.rotation),i.updateMatrixWorld();else{const u=Ju.subVectors(a,i.position).dot(Hr),d=Ju.subVectors(a,t.position).dot(Hr);Ju.copy(t.position).addScaledVector(Hr,d),i.rotation.copy(t.rotation),i.position.copy(Ju).addScaledVector(Hr,-u),i.updateMatrixWorld()}const s=Math.abs(Ju.subVectors(t.position,a).dot(Hr)),o=2*Math.tan(ht.DEG2RAD*t.fov*.5)*s,l=i.top-i.bottom;i.zoom=l/o,i.updateProjectionMatrix()}else{const s=Math.abs(Ju.subVectors(i.position,a).dot(Hr)),o=(i.top-i.bottom)/i.zoom*.5/Math.tan(ht.DEG2RAD*t.fov*.5);t.rotation.copy(i.rotation),t.position.copy(i.position).addScaledVector(Hr,s).addScaledVector(Hr,-o),t.updateMatrixWorld(),this.orthographicPositionalZoom&&(i.position.copy(t.position).addScaledVector(Hr,-this.orthographicOffset),i.updateMatrixWorld())}r.position.copy(t.position),r.rotation.copy(t.rotation)}_getTransitionDirection(){return Math.sign(this._target-this._alpha)}_getToCamera(){const e=this._getTransitionDirection();return e===0?this._target===0?this.perspectiveCamera:this.orthographicCamera:e>0?this.orthographicCamera:this.perspectiveCamera}_getFromCamera(){const e=this._getTransitionDirection();return e===0?this._target===0?this.perspectiveCamera:this.orthographicCamera:e>0?this.perspectiveCamera:this.orthographicCamera}_updateTransitionCamera(){const{perspectiveCamera:e,orthographicCamera:t,transitionCamera:i,fixedPoint:r}=this,a=this.easeFunction(this._alpha);Hr.set(0,0,-1).transformDirection(t.matrixWorld).normalize(),$u.copy(t),$u.position.addScaledVector(Hr,t.near),t.far-=t.near,t.near=0,Hr.set(0,0,-1).transformDirection(e.matrixWorld).normalize();const s=Math.abs(Ju.subVectors(e.position,r).dot(Hr)),o=2*Math.tan(ht.DEG2RAD*e.fov*.5)*s,l=aue.slerpQuaternions(e.quaternion,$u.quaternion,a),u=ht.lerp(e.fov,1,a),d=o*.5/Math.tan(ht.DEG2RAD*u*.5),f=rue.copy($u.position).sub(r).applyQuaternion(uU.copy($u.quaternion).invert()),p=iue.copy(e.position).sub(r).applyQuaternion(uU.copy(e.quaternion).invert()),m=nue.lerpVectors(p,f,a);m.z-=Math.abs(m.z)-d;const v=-(p.z-m.z),x=-(f.z-m.z),S=ht.lerp(v+e.near,x+$u.near,a),_=ht.lerp(v+e.far,x+$u.far,a),T=Math.max(_,0)-Math.max(S,0);i.aspect=e.aspect,i.fov=u,i.near=Math.max(S,T*1e-5),i.far=_,i.position.copy(m).applyQuaternion(l).add(r),i.quaternion.copy(l),i.updateProjectionMatrix(),i.updateMatrixWorld()}};function oue(n,e){if(n===e)return!0;if(!n||!e)return n===e;for(const t in n)if(n[t]!==e[t])return!1;for(const t in e)if(n[t]!==e[t])return!1;return!0}function DF(n){const e=ie.useRef();return oue(e.current,n)||(e.current=n),e.current}function lue(n){return/^on/g.test(n)}function cue(n){return n.replace(/^on/,"").replace(/[a-z][A-Z]/g,e=>`${e[0]}-${e[1]}`).toLowerCase()}function hU(n){return n.split("-")}function NF(n,e){let t=n;const i=[...e];for(;i.length!==0;){const r=i.shift();t=t[r]}return t}function dU(n,e,t){const i=[...e],r=i.pop();NF(n,i)[r]=t}function vv(n,e,t=!1){ie.useLayoutEffect(()=>{if(n===null)return;const i={},r={};for(const a in e)if(lue(a)&&n.addEventListener&&!(a in n)){const s=cue(a);r[s]=e[a],n.addEventListener(s,e[a])}else{const s=t?[a]:hU(a);i[a]=NF(n,s),dU(n,s,e[a])}return()=>{for(const a in r)n.removeEventListener(a,r[a]);for(const a in i){const s=t?[a]:hU(a);dU(n,s,i[a])}}},[n,DF(e)])}function uue(n,e){vv(n,e,!0)}function _v(n,...e){ie.useEffect(()=>{e.forEach(t=>{t&&(t instanceof Function?t(n):t.current=n)})},[n,...e])}const ld=ie.createContext(null),hue=ie.createContext(null);function due({children:n}){const e=ie.useContext(ld),t=ie.useRef();return ie.useEffect(()=>{e&&(t.current.matrixWorld=e.group.matrixWorld)},[e]),ot.jsx("group",{ref:t,matrixWorldAutoUpdate:!1,matrixAutoUpdate:!1,children:n})}const g0=ie.forwardRef(function(n,e){const{plugin:t,args:i,children:r,...a}=n,s=ie.useContext(ld),[o,l]=ie.useState(null),[,u]=ie.useReducer(d=>d+1,0);if(ie.useLayoutEffect(()=>{if(s===null)return;let d;return Array.isArray(i)?d=new t(...i):d=new t(i),l(d),()=>{l(null)}},[t,s,DF(i)]),vv(o,a),ie.useLayoutEffect(()=>{if(o!==null)return s.registerPlugin(o),u(),()=>{s.unregisterPlugin(o)}},[o]),_v(o,e),!(!o||!s.plugins.includes(o)))return ot.jsx(hue.Provider,{value:o,children:r})}),fue=ie.forwardRef(function(n,e){const{url:t,group:i={},enabled:r=!0,children:a,...s}=n,[o,l,u]=pn(p=>[p.camera,p.gl,p.invalidate]),[d,f]=ie.useState(null);return ie.useEffect(()=>{const p=()=>u(),m=new jce(t);return m.addEventListener("needs-render",p),m.addEventListener("needs-update",p),f(m),()=>{m.removeEventListener("needs-render",p),m.removeEventListener("needs-update",p),m.dispose(),f(null)}},[t,u]),_a(()=>{d===null||!r||(o.updateMatrixWorld(),d.setResolutionFromRenderer(o,l),d.update())}),ie.useLayoutEffect(()=>{if(d!==null)return d.setCamera(o),()=>{d.deleteCamera(o)}},[d,o]),_v(d,e),vv(d,s),d?ot.jsxs(ot.Fragment,{children:[ot.jsx("primitive",{object:d.group,...i}),ot.jsx(ld.Provider,{value:d,children:ot.jsx(due,{children:a})})]}):null});ie.forwardRef(function({children:n,...e},t){const[i]=pn(o=>[o.gl]),[r,a]=ie.useState(null),s=ie.useMemo(()=>document.createElement("div"),[]);ie.useEffect(()=>(s.style.pointerEvents="none",s.style.position="absolute",s.style.width="100%",s.style.height="100%",s.style.left=0,s.style.top=0,i.domElement.parentNode.appendChild(s),()=>{s.remove()}),[s,i.domElement.parentNode]),ie.useEffect(()=>{const o=H8.createRoot(s);return a(o),()=>{o.unmount()}},[s]),r!==null&&r.render(ot.jsx(ie.StrictMode,{children:ot.jsx("div",{...e,ref:t,children:n})}))});const OF=ie.forwardRef(function(n,e){const{controlsConstructor:t,domElement:i,scene:r,camera:a,ellipsoid:s,ellipsoidFrame:o,tilesRenderer:l,...u}=n,[d]=pn(U=>[U.camera]),[f]=pn(U=>[U.gl]),[p]=pn(U=>[U.scene]),[m]=pn(U=>[U.invalidate]),[v]=pn(U=>[U.get]),[x]=pn(U=>[U.set]),S=ie.useContext(ld),_=l||S,T=a||d||null,E=r||p||null,b=i||f.domElement||null,R=s||(_==null?void 0:_.ellipsoid)||null,w=o||(_==null?void 0:_.group)||null,L=ie.useMemo(()=>new t,[t]);_v(L,e),ie.useEffect(()=>{const U=()=>m();return L.addEventListener("change",U),L.addEventListener("start",U),L.addEventListener("end",U),()=>{L.removeEventListener("change",U),L.removeEventListener("start",U),L.removeEventListener("end",U)}},[L,m]),ie.useEffect(()=>{L.setCamera(T)},[L,T]),ie.useEffect(()=>{L.setScene(E)},[L,E]),ie.useEffect(()=>{L.isGlobeControls&&L.setEllipsoid(R,w)},[L,R,w]),ie.useEffect(()=>(L.attach(b),()=>{L.detach()}),[L,b]),ie.useEffect(()=>{const U=v().controls;return x({controls:L}),()=>x({controls:U})},[L,v,x]),_a(()=>{L.update()},-1),uue(L,u)});ie.forwardRef(function(n,e){return ot.jsx(OF,{...n,ref:e,controlsConstructor:CF})});ie.forwardRef(function(n,e){return ot.jsx(OF,{...n,ref:e,controlsConstructor:tue})});ie.forwardRef(function(n,e){const{mode:t="perspective",onBeforeToggle:i,perspectiveCamera:r,orthographicCamera:a,...s}=n,[o,l,u,d,f,p]=pn(v=>[v.set,v.get,v.invalidate,v.controls,v.camera,v.size]),m=ie.useMemo(()=>{const v=new sue;return v.autoSync=!1,f.isOrthographicCamera?(v.orthographicCamera.copy(f),v.mode="orthographic"):v.perspectiveCamera.copy(f),v.syncCameras(),v.mode=t,v},[]);ie.useEffect(()=>{const{perspectiveCamera:v,orthographicCamera:x}=m,S=p.width/p.height;v.aspect=S,v.updateProjectionMatrix(),x.left=-x.top*S,x.right=-x.left,v.updateProjectionMatrix()},[m,p]),_v(m,e),ie.useEffect(()=>{const v=({camera:x})=>{o(()=>({camera:x}))};return o(()=>({camera:m.camera})),m.addEventListener("camera-change",v),()=>{m.removeEventListener("camera-change",v)}},[m,o]),ie.useEffect(()=>{const v=m.perspectiveCamera,x=m.orthographicCamera;return m.perspectiveCamera=r||v,m.orthographicCamera=a||x,o(()=>({camera:m.camera})),()=>{m.perspectiveCamera=v,m.orthographicCamera=x}},[r,a,m,o]),ie.useEffect(()=>{if(t!==m.mode){const v=t==="orthographic"?m.orthographicCamera:m.perspectiveCamera;i?i(m,v):d&&d.isEnvironmentControls?(d.getPivotPoint(m.fixedPoint),m.syncCameras(),d.adjustCamera(m.perspectiveCamera),d.adjustCamera(m.orthographicCamera)):(m.fixedPoint.set(0,0,-1).transformDirection(m.camera.matrixWorld).multiplyScalar(50).add(m.camera.position),m.syncCameras()),m.toggle(),u()}},[t,m,u,d,i]),ie.useEffect(()=>{const v=()=>u();return m.addEventListener("transition-start",v),m.addEventListener("change",v),m.addEventListener("transition-end",v),()=>{m.removeEventListener("transition-start",v),m.removeEventListener("change",v),m.removeEventListener("transition-end",v)}},[m,u]),vv(m,s),_a(()=>{m.update(),d&&(d.enabled=!m.animating);const{camera:v,size:x}=l();if(!a&&v===m.orthographicCamera){const S=x.width/x.height,_=m.orthographicCamera;S!==_.right&&(_.bottom=-1,_.top=1,_.left=-S,_.right=S,_.updateProjectionMatrix())}m.animating&&u()},-1)});function LF(...n){return ie.useCallback(e=>{n.forEach(t=>{t&&(typeof t=="function"?t(e):t.current=e)})},n)}function kA(n,e){e(n)||n.children.forEach(t=>{kA(t,e)})}class pue extends Mi{constructor(){super(),this.objects=new Set,this.observed=new Set,this._addedCallback=({child:e})=>{kA(e,t=>this.observed.has(t)?!0:(this.objects.add(t),t.addEventListener("childadded",this._addedCallback),t.addEventListener("childremoved",this._removedCallback),this.dispatchEvent({type:"childadded",child:e}),!1))},this._removedCallback=({child:e})=>{kA(e,t=>this.observed.has(t)?!0:(this.objects.delete(t),t.removeEventListener("childadded",this._addedCallback),t.removeEventListener("childremoved",this._removedCallback),this.dispatchEvent({type:"childremoved",child:e}),!1))}}observe(e){const{observed:t}=this;this._addedCallback({child:e}),t.add(e)}unobserve(e){const{observed:t}=this;t.delete(e),this._removedCallback({child:e})}dispose(){this.observed.forEach(e=>{this.unobserve(e)})}}const OM=new sT,v0=new NR,Wx=new NR,fU=new re,Xx=new D,pU=new Me;let mue=class extends Mi{constructor(){super(),this.autoRun=!0,this.queryMap=new Map,this.index=0,this.queued=[],this.scheduled=!1,this.duration=1,this.objects=[],this.observer=new pue,this.ellipsoid=new wT,this.frame=new Me,this.cameras=new Set;const e=(()=>{let t=!1;return()=>{t||(t=!0,queueMicrotask(()=>{this.queryMap.forEach(i=>this._enqueue(i)),t=!1}))}})();this.observer.addEventListener("childadded",e),this.observer.addEventListener("childremoved",e)}_enqueue(e){e.queued||(this.queued.push(e),e.queued=!0,this._scheduleRun())}_runJobs(){const{queued:e,cameras:t,duration:i}=this,r=performance.now();for(t.forEach((a,s)=>{pU.copy(a.matrixWorldInverse).premultiply(a.projectionMatrix),Xx.set(0,0,-1).transformDirection(a.matrixWorld),v0.start.setFromMatrixPosition(a.matrixWorld),v0.end.addVectors(Xx,v0.start);for(let o=0,l=e.length;o-1&&m.x<1&&m.y>-1&&m.y<1&&m.z>-1&&m.z<1?(u.distance=m.subVectors(u.point,v0.start).dot(Xx),u.inFrustum=!0):(u.distance=0,u.inFrustum=!1)}s===0?(u.distance=f,u.inFrustum=p):(u.inFrustum=u.inFrustum||p,u.distance=Math.min(u.distance,f))}}),t.length!==0&&e.sort((a,s)=>a.point===null!=(s.point===null)?a.point===null?1:-1:a.inFrustum!==s.inFrustum?a.inFrustum?1:-1:a.distance<0!=s.distance<0?a.distance<0?-1:1:s.distance-a.distance);e.length!==0&&performance.now()-r{this.scheduled=!1,this._runJobs()}))}_updateQuery(e){OM.ray.copy(e.ray),OM.far="lat"in e?1e4+Math.max(...this.ellipsoid.radius):1/0;const t=OM.intersectObjects(this.objects)[0]||null;t!==null&&(e.point===null?e.point=t.point.clone():e.point.copy(t.point)),e.callback(t)}addCamera(e){const{queryMap:t,cameras:i}=this;i.add(e),t.forEach(r=>this._enqueue(r))}deleteCamera(e){const{cameras:t}=this;t.delete(e)}runIfNeeded(e){const{queryMap:t,queued:i}=this,r=t.get(e);r.queued&&(this._updateQuery(r),r.queued=!1,i.splice(i.indexOf(r),1))}setScene(...e){const{observer:t}=this;t.dispose(),e.forEach(i=>t.observe(i)),this.objects=e,this._scheduleRun()}setEllipsoidFromTilesRenderer(e){const{queryMap:t,ellipsoid:i,frame:r}=this;(!i.radius.equals(e.ellipsoid.radius)||!r.equals(e.group.matrixWorld))&&(i.copy(e.ellipsoid),r.copy(e.group.matrixWorld),t.forEach(a=>{if("lat"in a){const{lat:s,lon:o,ray:l}=a;i.getCartographicToPosition(s,o,1e4,l.origin).applyMatrix4(r),i.getCartographicToNormal(s,o,l.direction).transformDirection(r).multiplyScalar(-1)}this._enqueue(a)}))}registerRayQuery(e,t){const i=this.index++,r={ray:e.clone(),callback:t,queued:!1,distance:-1,point:null};return this.queryMap.set(i,r),this._enqueue(r),i}registerLatLonQuery(e,t,i){const{ellipsoid:r,frame:a}=this,s=this.index++,o=new Pr;r.getCartographicToPosition(e,t,1e4,o.origin).applyMatrix4(a),r.getCartographicToNormal(e,t,o.direction).transformDirection(a).multiplyScalar(-1);const l={ray:o.clone(),lat:e,lon:t,callback:i,queued:!1,distance:-1,point:null};return this.queryMap.set(s,l),this._enqueue(l),s}unregisterQuery(e){const{queued:t,queryMap:i}=this,r=i.get(e);i.delete(e),r&&r.queued&&(r.queued=!1,t.splice(t.indexOf(r),1))}dispose(){this.queryMap.clear(),this.queued.length=0,this.objects.length=0,this.observer.dispose()}};const gue=function(){const n=new D,e=new D,t=new D;return function(i,r,a){const s=i.start,o=n,l=r.start,u=e;t.subVectors(s,l),n.subVectors(i.end,i.start),e.subVectors(r.end,r.start);const d=t.dot(u),f=u.dot(o),p=u.dot(u),m=t.dot(o),v=o.dot(o)*p-f*f;let x,S;v!==0?x=(d*f-m*p)/v:x=0,S=(d+x*f)/p,a.x=x,a.y=S}}(),hC=ie.createContext(null),tS=new Me,LM=new Pr;ie.forwardRef(function(n,e){const{interpolationFactor:t=.025,onQueryUpdate:i=null,...r}=n,a=ie.useContext(ld),s=ie.useContext(hC),o=pn(({invalidate:m})=>m),l=ie.useMemo(()=>new D,[]),u=ie.useMemo(()=>({value:!1}),[]),d=ie.useMemo(()=>({value:!1}),[]),f=ie.useRef(null),p=ie.useCallback(m=>{if(a===null||m===null||f.current===null)return;const{lat:v,lon:x,rayorigin:S,raydirection:_}=r;v!==null&&x!==null?(l.copy(m.point),d.value=!0,s.ellipsoid.getObjectFrame(v,x,0,0,0,0,tS,jf).premultiply(a.group.matrixWorld),f.current.quaternion.setFromRotationMatrix(tS),o()):S!==null&&_!==null&&(l.copy(m.point),d.value=!0,f.current.quaternion.identity(),o()),i&&i(m)},[o,d,s.ellipsoid,r,l,a,i]);return _a((m,v)=>{if(f.current&&(f.current.visible=u.value),f.current&&d.value)if(u.value===!1)u.value=!0,f.current.position.copy(l);else{const x=1-2**(-v/t);f.current.position.distanceToSquared(l)>1e-6?(f.current.position.lerp(l,t===0?1:x),o()):f.current.position.copy(l)}}),ot.jsx(vue,{ref:LF(f,e),onQueryUpdate:p,...r})});const vue=ie.forwardRef(function(n,e){const{component:t=ot.jsx("group",{}),lat:i=null,lon:r=null,rayorigin:a=null,raydirection:s=null,onQueryUpdate:o=null,...l}=n,u=ie.useRef(null),d=ie.useContext(ld),f=ie.useContext(hC),p=pn(({invalidate:v})=>v),m=ie.useMemo(()=>new D,[]);return ie.useEffect(()=>{const v=x=>{o?o(x):d&&x!==null&&u.current!==null&&(i!==null&&r!==null?(u.current.position.copy(x.point),f.ellipsoid.getObjectFrame(i,r,0,0,0,0,tS,jf).premultiply(d.group.matrixWorld),u.current.quaternion.setFromRotationMatrix(tS),p()):a!==null&&s!==null&&(u.current.position.copy(x.point),u.current.quaternion.identity(),p()))};if(i!==null&&r!==null){const x=f.registerLatLonQuery(i,r,v);return()=>f.unregisterQuery(x)}else if(a!==null&&s!==null){LM.origin.copy(a),LM.direction.copy(s);const x=f.registerRayQuery(LM,v);return()=>f.unregisterQuery(x)}},[i,r,a,s,f,d,p,m,o]),ie.cloneElement(t,{...l,ref:LF(u,e),raycast:()=>!1})});ie.forwardRef(function(n,e){const t=pn(({scene:u})=>u),{scene:i=t,children:r,...a}=n,s=ie.useContext(ld),o=ie.useMemo(()=>new mue,[]),l=pn(({camera:u})=>u);return vv(o,a),ie.useEffect(()=>()=>o.dispose(),[o]),ie.useEffect(()=>{o.setScene(...Array.isArray(i)?i:[i])},[o,i]),ie.useEffect(()=>{o.addCamera(l)},[o,l]),_a(()=>{s&&o.setEllipsoidFromTilesRenderer(s)}),_v(o,e),ot.jsx(hC.Provider,{value:o,children:ot.jsx("group",{matrixAutoUpdate:!1,matrixWorldAutoUpdate:!1,children:r})})});const mU="https://tile.googleapis.com/v1/createSession";class _ue{get isMapTilesSession(){return this.authURL===mU}constructor(e={}){const{apiToken:t,sessionOptions:i=null,autoRefreshToken:r=!1}=e;this.apiToken=t,this.autoRefreshToken=r,this.authURL=mU,this.sessionToken=null,this.sessionOptions=i,this._tokenRefreshPromise=null}async fetch(e,t){this.sessionToken===null&&this.isMapTilesSession&&this.refreshToken(t),await this._tokenRefreshPromise;const i=new URL(e);i.searchParams.set("key",this.apiToken),this.sessionToken&&i.searchParams.set("session",this.sessionToken);let r=await fetch(i,t);return r.status>=400&&r.status<=499&&this.autoRefreshToken&&(await this.refreshToken(t),this.sessionToken&&i.searchParams.set("session",this.sessionToken),r=await fetch(i,t)),this.sessionToken===null&&!this.isMapTilesSession?r.json().then(a=>(this.sessionToken=gU(a),a)):r}refreshToken(e){if(this._tokenRefreshPromise===null){const t=new URL(this.authURL);t.searchParams.set("key",this.apiToken);const i={...e};this.isMapTilesSession&&(i.method="POST",i.body=JSON.stringify(this.sessionOptions),i.headers=i.headers||{},i.headers={...i.headers,"Content-Type":"application/json"}),this._tokenRefreshPromise=fetch(t,i).then(r=>{if(!r.ok)throw new Error(`GoogleCloudAuth: Failed to load data with error code ${r.status}`);return r.json()}).then(r=>(this.sessionToken=gU(r),this._tokenRefreshPromise=null,r))}return this._tokenRefreshPromise}}function gU(n){if("session"in n)return n.session;{let e=null;const t=n.root;return cF(t,i=>{if(i.content&&i.content.uri){const[,r]=i.content.uri.split("?");return e=new URLSearchParams(r).get("session"),!0}return!1}),e}}class xue{constructor(){this.creditsCount={}}_adjustAttributions(e,t){const i=this.creditsCount,r=e.split(/;/g);for(let a=0,s=r.length;a{const i=e[1];return t[1]-i}).map(e=>e[0]).join("; ")}}const yue="https://tile.googleapis.com/v1/3dtiles/root.json";class Sue{constructor({apiToken:e,sessionOptions:t=null,autoRefreshToken:i=!1,logoUrl:r=null,useRecommendedSettings:a=!0}){this.name="GOOGLE_CLOUD_AUTH_PLUGIN",this.apiToken=e,this.useRecommendedSettings=a,this.logoUrl=r,this.auth=new _ue({apiToken:e,autoRefreshToken:i,sessionOptions:t}),this.tiles=null,this._visibilityChangeCallback=null,this._attributionsManager=new xue,this._logoAttribution={value:"",type:"image",collapsible:!1},this._attribution={value:"",type:"string",collapsible:!0}}init(e){const{useRecommendedSettings:t,auth:i}=this;e.resetFailedTiles(),e.rootURL==null&&(e.rootURL=yue),i.sessionOptions||(i.authURL=e.rootURL),t&&!i.isMapTilesSession&&(e.errorTarget=20),this.tiles=e,this._visibilityChangeCallback=({tile:r,visible:a})=>{var s,o;const l=((o=(s=r.cached.metadata)==null?void 0:s.asset)==null?void 0:o.copyright)||"";a?this._attributionsManager.addAttributions(l):this._attributionsManager.removeAttributions(l)},e.addEventListener("tile-visibility-change",this._visibilityChangeCallback)}getAttributions(e){this.tiles.visibleTiles.size>0&&(this.logoUrl&&(this._logoAttribution.value=this.logoUrl,e.push(this._logoAttribution)),this._attribution.value=this._attributionsManager.toString(),e.push(this._attribution))}dispose(){this.tiles.removeEventListener("tile-visibility-change",this._visibilityChangeCallback)}async fetchData(e,t){return this.auth.fetch(e,t)}}const IM=new Me;class Tue{constructor(){this.name="UPDATE_ON_CHANGE_PLUGIN",this.tiles=null,this.needsUpdate=!1,this.cameraMatrices=new Map}init(e){this.tiles=e,this._needsUpdateCallback=()=>{this.needsUpdate=!0},this._onCameraAdd=({camera:t})=>{this.needsUpdate=!0,this.cameraMatrices.set(t,new Me)},this._onCameraDelete=({camera:t})=>{this.needsUpdate=!0,this.cameraMatrices.delete(t)},e.addEventListener("needs-update",this._needsUpdateCallback),e.addEventListener("add-camera",this._onCameraAdd),e.addEventListener("delete-camera",this._onCameraDelete),e.addEventListener("camera-resolution-change",this._needsUpdateCallback),e.cameras.forEach(t=>{this._onCameraAdd({camera:t})})}doTilesNeedUpdate(){const e=this.tiles;let t=!1;this.cameraMatrices.forEach((r,a)=>{IM.copy(e.group.matrixWorld).premultiply(a.matrixWorldInverse).premultiply(a.projectionMatrixInverse),t=t||!IM.equals(r),r.copy(IM)});const i=this.needsUpdate;return this.needsUpdate=!1,i||t}preprocessNode(){this.needsUpdate=!0}dispose(){const e=this.tiles;e.removeEventListener("camera-resolution-change",this._needsUpdateCallback),e.removeEventListener("needs-update",this._needsUpdateCallback),e.removeEventListener("add-camera",this._onCameraAdd),e.removeEventListener("delete-camera",this._onCameraDelete)}}const vU=new D;function _0(n,e){if(n.isInterleavedBufferAttribute||n.array instanceof e)return n;const t=e===Int8Array||e===Int16Array||e===Int32Array?-1:0,i=new e(n.count*n.itemSize),r=new bt(i,n.itemSize,!0),a=n.itemSize,s=n.count;for(let o=0;o{if(p.material&&r){const m=p.material;for(const v in m){const x=m[v];x&&x.isTexture&&x.generateMipmaps&&(x.generateMipmaps=!1,x.minFilter=Bt)}}if(p.geometry){const m=p.geometry,v=m.attributes;if(s){const{uv:x,uv1:S,uv2:_,uv3:T}=v;x&&(v.uv=_0(x,u)),S&&(v.uv1=_0(S,u)),_&&(v.uv2=_0(_,u)),T&&(v.uv3=_0(T,u))}if(i&&!v.normals&&m.computeVertexNormals(),o&&v.normals&&(v.normals=_0(v.normals,d)),l&&Eue(p,f),a&&m.index){const x=v.position.count,S=m.index,_=x>65535?Uint32Array:x>255?Uint16Array:Uint8Array;if(!(S.array instanceof _)){const T=new _(m.index.count);T.set(S.array);const E=new bt(T,1);m.setIndex(E)}}}})}}function lr(n,e,t){return n&&e in n?n[e]:t}function IF(n){return n!=="BOOLEAN"&&n!=="STRING"&&n!=="ENUM"}function Mue(n){return/^FLOAT/.test(n)}function xv(n){return/^VEC/.test(n)}function yv(n){return/^MAT/.test(n)}function UF(n,e,t,i=null){return yv(t)||xv(t)?i.fromArray(n,e):n[e]}function WA(n){const{type:e,componentType:t}=n;switch(e){case"SCALAR":return t==="INT64"?0n:0;case"VEC2":return new re;case"VEC3":return new D;case"VEC4":return new Pt;case"MAT2":return new oT;case"MAT3":return new Mt;case"MAT4":return new Me;case"BOOLEAN":return!1;case"STRING":return"";case"ENUM":return 0}}function _U(n,e){if(e==null)return!1;switch(n){case"SCALAR":return typeof e=="number"||typeof e=="bigint";case"VEC2":return e.isVector2;case"VEC3":return e.isVector3;case"VEC4":return e.isVector4;case"MAT2":return e.isMatrix2;case"MAT3":return e.isMatrix3;case"MAT4":return e.isMatrix4;case"BOOLEAN":return typeof e=="boolean";case"STRING":return typeof e=="string";case"ENUM":return typeof e=="number"||typeof e=="bigint"}throw new Error("ClassProperty: invalid type.")}function Fg(n,e=null){switch(n){case"INT8":return Int8Array;case"INT16":return Int16Array;case"INT32":return Int32Array;case"INT64":return BigInt64Array;case"UINT8":return Uint8Array;case"UINT16":return Uint16Array;case"UINT32":return Uint32Array;case"UINT64":return BigUint64Array;case"FLOAT32":return Float32Array;case"FLOAT64":return Float64Array}switch(e){case"BOOLEAN":return Uint8Array;case"STRING":return Uint8Array}throw new Error("ClassProperty: invalid type.")}function Aue(n,e=null){if(n.array){e=e&&Array.isArray(e)?e:[],e.length=n.count;for(let t=0,i=e.length;ts.value===r);return a===null?"":a.name}}adjustValueScaleOffset(e){return IF(this.type)?Cue(this,e):e}}class fC{constructor(e,t={},i={},r=null){this.definition=e,this.class=t[e.class],this.className=e.class,this.enums=i,this.data=r,this.name="name"in e?e.name:null,this.properties=null}getPropertyNames(){return Object.keys(this.class.properties)}includesData(e){return!!this.definition.properties[e]}dispose(){}_initProperties(e=RT){const t={};for(const i in this.class.properties)t[i]=new e(this.enums,this.class.properties[i],this.definition.properties[i]);this.properties=t}}class Nue extends RT{constructor(e,t,i=null){super(e,t,i),this.attribute=(i==null?void 0:i.attribute)??null}}class Oue extends fC{constructor(...e){super(...e),this.isPropertyAttributeAccessor=!0,this._initProperties(Nue)}getData(e,t,i={}){const r=this.properties;iS(r,i);for(const a in r)i[a]=this.getPropertyValue(a,e,t,i[a]);return i}getPropertyValue(e,t,i,r=null){if(t>=this.count)throw new Error("PropertyAttributeAccessor: Requested index is outside the range of the buffer.");const a=this.properties[e],s=a.type;if(a){if(!this.definition.properties[e])return a.resolveDefault(r)}else throw new Error("PropertyAttributeAccessor: Requested class property does not exist.");r=a.shapeToProperty(r);const o=i.getAttribute(a.attribute.toLowerCase());if(yv(s)){const l=r.elements;for(let u=0,d=l.length;u>x&1)===1}return r}getPropertyValue(e,t,i=null){if(t>=this.count)throw new Error("PropertyTableAccessor: Requested index is outside the range of the table.");const r=this.properties[e];if(r){if(!this.definition.properties[e])return r.resolveDefault(i)}else throw new Error("PropertyTableAccessor: Requested property does not exist.");const a=r.array,s=this.data,o=r.getArrayLengthFromId(s,t);if(i=r.shapeToProperty(i,o),a)for(let l=0,u=i.length;l{e!=="constructor"&&(this[e]=(...t)=>(n=n||new xU,n[e](...t)))})}},yU=new re,SU=new re,TU=new re;function Uue(n,e){return e===0?n.getAttribute("uv"):n.getAttribute(`uv${e}`)}function PF(n,e,t=new Array(3)){let i=3*e,r=3*e+1,a=3*e+2;return n.index&&(i=n.index.getX(i),r=n.index.getX(r),a=n.index.getX(a)),t[0]=i,t[1]=r,t[2]=a,t}function zF(n,e,t,i,r){const[a,s,o]=i,l=Uue(n,e);yU.fromBufferAttribute(l,a),SU.fromBufferAttribute(l,s),TU.fromBufferAttribute(l,o),r.set(0,0,0).addScaledVector(yU,t.x).addScaledVector(SU,t.y).addScaledVector(TU,t.z)}function BF(n,e,t,i){const r=n.x-Math.floor(n.x),a=n.y-Math.floor(n.y),s=Math.floor(r*e%e),o=Math.floor(a*t%t);return i.set(s,o),i}const EU=new re,bU=new re,MU=new re;class Pue extends RT{constructor(e,t,i=null){super(e,t,i),this.channels=lr(i,"channels",[0]),this.index=lr(i,"index",null),this.texCoord=lr(i,"texCoord",null),this.valueLength=parseInt(this.type.replace(/[^0-9]/g,""))||1}readDataFromBuffer(e,t,i=null){const r=this.type;if(r==="BOOLEAN"||r==="STRING")throw new Error("PropertyTextureAccessor: BOOLEAN and STRING types not supported.");return UF(e,t*this.valueLength,r,i)}}class zue extends fC{constructor(...e){super(...e),this.isPropertyTextureAccessor=!0,this._asyncRead=!1,this._initProperties(Pue)}getData(e,t,i,r={}){const a=this.properties;iS(a,r);const s=Object.keys(a),o=s.map(l=>r[l]);return this.getPropertyValuesAtTexel(s,e,t,i,o),s.forEach((l,u)=>r[l]=o[u]),r}async getDataAsync(e,t,i,r={}){const a=this.properties;iS(a,r);const s=Object.keys(a),o=s.map(l=>r[l]);return await this.getPropertyValuesAtTexelAsync(s,e,t,i,o),s.forEach((l,u)=>r[l]=o[u]),r}getPropertyValuesAtTexelAsync(...e){this._asyncRead=!0;const t=this.getPropertyValuesAtTexel(...e);return this._asyncRead=!1,t}getPropertyValuesAtTexel(e,t,i,r,a=[]){for(;a.length(f.call(this),a));return Pc.readData(d),f.call(this),a;function f(){for(let p=0,m=e.length;pd[4*p+w]),E=x.componentType,b=Fg(E,S),R=new b(_);if(new Uint8Array(R.buffer).set(T),x.array){const w=a[p];for(let L=0,U=w.length;L{e&&(e.dispose(),e.image instanceof ImageBitmap&&e.image.close())})}}class AU{constructor(e,t,i,r=null,a=null){const{schema:s,propertyTables:o=[],propertyTextures:l=[],propertyAttributes:u=[]}=e,{enums:d,classes:f}=s,p=o.map(x=>new Iue(x,f,d,i));let m=[],v=[];r&&(r.propertyTextures&&(m=r.propertyTextures.map(x=>new zue(l[x],f,d,t))),r.propertyAttributes&&(v=r.propertyAttributes.map(x=>new Oue(u[x],f,d)))),this.schema=s,this.tableAccessors=p,this.textureAccessors=m,this.attributeAccessors=v,this.object=a,this.textures=t,this.nodeMetadata=r}getPropertyTableData(e,t,i=null){if(!Array.isArray(e)||!Array.isArray(t))i=i||{},i=this.tableAccessors[e].getData(t,i);else{i=i||[];const r=Math.min(e.length,t.length);i.length=r;for(let a=0;ai)),Array.isArray(e))return e.map(t=>{const i=this.tableAccessors[t];return{name:i.name,className:i.definition.class}});{const t=this.tableAccessors[e];return{name:t.name,className:t.definition.class}}}getPropertyTextureData(e,t,i=[]){const r=this.textureAccessors;i.length=r.length;for(let a=0;a{i[s]=l});a.push(o)}return await Promise.all(a),i}getPropertyTextureInfo(){return this.textureAccessors}getPropertyAttributeData(e,t=[]){const i=this.attributeAccessors;t.length=i.length;for(let r=0;r({name:e.name,className:e.definition.class}))}dispose(){this.textureAccessors.forEach(e=>e.dispose()),this.tableAccessors.forEach(e=>e.dispose()),this.attributeAccessors.forEach(e=>e.dispose())}}const y0="EXT_structural_metadata";function Bue(n,e=[]){var t;const i=((t=n.json.textures)==null?void 0:t.length)||0,r=new Array(i).fill(null);return e.forEach(({properties:a})=>{for(const s in a){const{index:o}=a[s];r[o]===null&&(r[o]=n.loadTexture(o))}}),Promise.all(r)}function Fue(n,e=[]){var t;const i=((t=n.json.bufferViews)==null?void 0:t.length)||0,r=new Array(i).fill(null);return e.forEach(({properties:a})=>{for(const s in a){const{values:o,arrayOffsets:l,stringOffsets:u}=a[s];r[o]===null&&(r[o]=n.loadBufferView(o)),r[l]===null&&(r[l]=n.loadBufferView(l)),r[u]===null&&(r[u]=n.loadBufferView(u))}}),Promise.all(r)}class Hue{constructor(e){this.parser=e,this.name=y0}async afterRoot({scene:e,parser:t}){const i=t.json.extensionsUsed;if(!i||!i.includes(y0))return;let r=null,a=t.json.extensions[y0];if(a.schemaUri){const{manager:u,path:d,requestHeader:f,crossOrigin:p}=t.options,m=new URL(a.schemaUri,d).toString(),v=new jr(u);v.setCrossOrigin(p),v.setResponseType("json"),v.setRequestHeader(f),r=v.loadAsync(m).then(x=>{a={...a,schema:x}})}const[s,o]=await Promise.all([Bue(t,a.propertyTextures),Fue(t,a.propertyTables),r]),l=new AU(a,s,o);e.userData.structuralMetadata=l,e.traverse(u=>{var d;if(t.associations.has(u)){const{meshes:f,primitives:p}=t.associations.get(u),m=(d=t.json.meshes[f])==null?void 0:d.primitives[p];if(m&&m.extensions&&m.extensions[y0]){const v=m.extensions[y0];u.userData.structuralMetadata=new AU(a,s,o,v,u)}else u.userData.structuralMetadata=l}})}}const wU=new re,RU=new re,CU=new re;function Vue(n){return n.x>n.y&&n.x>n.z?0:n.y>n.z?1:2}class Gue{constructor(e,t,i){this.geometry=e,this.textures=t,this.data=i,this._asyncRead=!1,this.featureIds=i.featureIds.map(r=>{const{texture:a,...s}=r,o={label:null,propertyTable:null,nullFeatureId:null,...s};return a&&(o.texture={texCoord:0,channels:[0],...a}),o})}getTextures(){return this.textures}getFeatureInfo(){return this.featureIds}getFeaturesAsync(...e){this._asyncRead=!0;const t=this.getFeatures(...e);return this._asyncRead=!1,t}getFeatures(e,t){const{geometry:i,textures:r,featureIds:a}=this,s=new Array(a.length).fill(null),o=a.length;Pc.increaseSizeTo(o);const l=PF(i,e),u=l[Vue(t)];for(let p=0,m=a.length;p(f(),s));return Pc.readData(d),f(),s;function f(){const p=new Uint32Array(1);for(let m=0,v=a.length;md[4*m+b]);new Uint8Array(p.buffer).set(T);const E=p[0];E!==S&&(s[m]=E)}}}}dispose(){this.textures.forEach(e=>{e&&(e.dispose(),e.image instanceof ImageBitmap&&e.image.close())})}}const rS="EXT_mesh_features";function DU(n,e,t){n.traverse(i=>{var r;if(e.associations.has(i)){const{meshes:a,primitives:s}=e.associations.get(i),o=(r=e.json.meshes[a])==null?void 0:r.primitives[s];o&&o.extensions&&o.extensions[rS]&&t(i,o.extensions[rS])}})}class kue{constructor(e){this.parser=e,this.name=rS}async afterRoot({scene:e,parser:t}){var i;const r=t.json.extensionsUsed;if(!r||!r.includes(rS))return;const a=((i=t.json.textures)==null?void 0:i.length)||0,s=new Array(a).fill(null);DU(e,t,(l,{featureIds:u})=>{u.forEach(d=>{if(d.texture&&s[d.texture.index]===null){const f=d.texture.index;s[f]=t.loadTexture(f)}})});const o=await Promise.all(s);DU(e,t,(l,u)=>{l.userData.meshFeatures=new Gue(l.geometry,o,u)})}}class Wue{constructor(){this.name="CESIUM_RTC"}afterRoot(e){if(e.parser.json.extensions&&e.parser.json.extensions.CESIUM_RTC){const{center:t}=e.parser.json.extensions.CESIUM_RTC;t&&(e.scene.position.x+=t[0],e.scene.position.y+=t[1],e.scene.position.z+=t[2])}}}class Xue{constructor(e){e={metadata:!0,rtc:!0,plugins:[],dracoLoader:null,ktxLoader:null,meshoptDecoder:null,autoDispose:!0,...e},this.tiles=null,this.metadata=e.metadata,this.rtc=e.rtc,this.plugins=e.plugins,this.dracoLoader=e.dracoLoader,this.ktxLoader=e.ktxLoader,this.meshoptDecoder=e.meshoptDecoder,this._gltfRegex=/\.(gltf|glb)$/g,this._dracoRegex=/\.drc$/g,this._loader=null}init(e){const t=new Lp(e.manager);this.dracoLoader&&(t.setDRACOLoader(this.dracoLoader),e.manager.addHandler(this._dracoRegex,this.dracoLoader)),this.ktxLoader&&t.setKTX2Loader(this.ktxLoader),this.meshoptDecoder&&t.setMeshoptDecoder(this.meshoptDecoder),this.rtc&&t.register(()=>new Wue),this.metadata&&(t.register(()=>new Hue),t.register(()=>new kue)),this.plugins.forEach(i=>t.register(i)),e.manager.addHandler(this._gltfRegex,t),this.tiles=e,this._loader=t}dispose(){this.tiles.manager.removeHandler(this._gltfRegex),this.tiles.manager.removeHandler(this._dracoRegex),this.autoDispose&&(this.ktxLoader.dispose(),this.dracoLoader.dispose())}}const{clamp:UM}=lt;class que{constructor(){this.duration=250,this.fadeCount=0,this._lastTick=-1,this._fadeState=new Map,this.onFadeComplete=null,this.onFadeStart=null,this.onFadeSetComplete=null,this.onFadeSetStart=null}deleteObject(e){e&&this.completeFade(e)}guaranteeState(e){const t=this._fadeState;if(t.has(e))return!1;const i={fadeInTarget:0,fadeOutTarget:0,fadeIn:0,fadeOut:0};return t.set(e,i),!0}completeFade(e){const t=this._fadeState;if(!t.has(e))return;const i=t.get(e).fadeOutTarget===0;t.delete(e),this.fadeCount--,this.onFadeComplete&&this.onFadeComplete(e,i),this.fadeCount===0&&this.onFadeSetComplete&&this.onFadeSetComplete()}completeAllFades(){this._fadeState.forEach((e,t)=>{this.completeFade(t)})}forEachObject(e){this._fadeState.forEach((t,i)=>{e(i,t)})}fadeIn(e){const t=this.guaranteeState(e),i=this._fadeState.get(e);i.fadeInTarget=1,i.fadeOutTarget=0,i.fadeOut=0,t&&(this.fadeCount++,this.fadeCount===1&&this.onFadeSetStart&&this.onFadeSetStart(),this.onFadeStart&&this.onFadeStart(e))}fadeOut(e){const t=this.guaranteeState(e),i=this._fadeState.get(e);i.fadeOutTarget=1,t&&(i.fadeInTarget=1,i.fadeIn=1,this.fadeCount++,this.fadeCount===1&&this.onFadeSetStart&&this.onFadeSetStart(),this.onFadeStart&&this.onFadeStart(e))}isFading(e){return this._fadeState.has(e)}isFadingOut(e){const t=this._fadeState.get(e);return t&&t.fadeOutTarget===1}update(){const e=window.performance.now();this._lastTick===-1&&(this._lastTick=e);const t=UM((e-this._lastTick)/this.duration,0,1);this._lastTick=e,this._fadeState.forEach((i,r)=>{const{fadeOutTarget:a,fadeInTarget:s}=i;let{fadeOut:o,fadeIn:l}=i;const u=Math.sign(s-l);l=UM(l+u*t,0,1);const d=Math.sign(a-o);o=UM(o+d*t,0,1),i.fadeIn=l,i.fadeOut=o,((o===1||o===0)&&(l===1||l===0)||o>=l)&&this.completeFade(r)})}}const PM=Symbol("FADE_PARAMS");function FF(n,e){if(n[PM])return n[PM];const t={fadeIn:{value:0},fadeOut:{value:0},fadeTexture:{value:null}};return n[PM]=t,n.defines={...n.defines||{},FEATURE_FADE:0},n.onBeforeCompile=i=>{e&&e(i),i.uniforms={...i.uniforms,...t},i.vertexShader=i.vertexShader.replace(/void\s+main\(\)\s+{/,r=>` + `}))}increaseSizeTo(e){this._target.setSize(Math.max(this._target.width,e),1)}readDataAsync(e){const{_renderer:t,_target:i}=this;return t.readRenderTargetPixelsAsync(i,0,0,e.length/4,1,e)}readData(e){const{_renderer:t,_target:i}=this;t.readRenderTargetPixels(i,0,0,e.length/4,1,e)}renderPixelToTarget(e,t,i){const{_renderer:r,_target:a}=this;x0.min.copy(t),x0.max.copy(t),x0.max.x+=1,x0.max.y+=1,r.initRenderTarget(a),r.copyTextureToTexture(e,a.texture,x0,i,0)}}const Pc=new class{constructor(){let n=null;Object.getOwnPropertyNames(xU.prototype).forEach(e=>{e!=="constructor"&&(this[e]=(...t)=>(n=n||new xU,n[e](...t)))})}},yU=new re,SU=new re,TU=new re;function Uue(n,e){return e===0?n.getAttribute("uv"):n.getAttribute(`uv${e}`)}function PF(n,e,t=new Array(3)){let i=3*e,r=3*e+1,a=3*e+2;return n.index&&(i=n.index.getX(i),r=n.index.getX(r),a=n.index.getX(a)),t[0]=i,t[1]=r,t[2]=a,t}function zF(n,e,t,i,r){const[a,s,o]=i,l=Uue(n,e);yU.fromBufferAttribute(l,a),SU.fromBufferAttribute(l,s),TU.fromBufferAttribute(l,o),r.set(0,0,0).addScaledVector(yU,t.x).addScaledVector(SU,t.y).addScaledVector(TU,t.z)}function BF(n,e,t,i){const r=n.x-Math.floor(n.x),a=n.y-Math.floor(n.y),s=Math.floor(r*e%e),o=Math.floor(a*t%t);return i.set(s,o),i}const EU=new re,bU=new re,MU=new re;class Pue extends RT{constructor(e,t,i=null){super(e,t,i),this.channels=lr(i,"channels",[0]),this.index=lr(i,"index",null),this.texCoord=lr(i,"texCoord",null),this.valueLength=parseInt(this.type.replace(/[^0-9]/g,""))||1}readDataFromBuffer(e,t,i=null){const r=this.type;if(r==="BOOLEAN"||r==="STRING")throw new Error("PropertyTextureAccessor: BOOLEAN and STRING types not supported.");return UF(e,t*this.valueLength,r,i)}}class zue extends fC{constructor(...e){super(...e),this.isPropertyTextureAccessor=!0,this._asyncRead=!1,this._initProperties(Pue)}getData(e,t,i,r={}){const a=this.properties;iS(a,r);const s=Object.keys(a),o=s.map(l=>r[l]);return this.getPropertyValuesAtTexel(s,e,t,i,o),s.forEach((l,u)=>r[l]=o[u]),r}async getDataAsync(e,t,i,r={}){const a=this.properties;iS(a,r);const s=Object.keys(a),o=s.map(l=>r[l]);return await this.getPropertyValuesAtTexelAsync(s,e,t,i,o),s.forEach((l,u)=>r[l]=o[u]),r}getPropertyValuesAtTexelAsync(...e){this._asyncRead=!0;const t=this.getPropertyValuesAtTexel(...e);return this._asyncRead=!1,t}getPropertyValuesAtTexel(e,t,i,r,a=[]){for(;a.length(f.call(this),a));return Pc.readData(d),f.call(this),a;function f(){for(let p=0,m=e.length;pd[4*p+w]),E=x.componentType,b=Fg(E,S),R=new b(_);if(new Uint8Array(R.buffer).set(T),x.array){const w=a[p];for(let L=0,U=w.length;L{e&&(e.dispose(),e.image instanceof ImageBitmap&&e.image.close())})}}class AU{constructor(e,t,i,r=null,a=null){const{schema:s,propertyTables:o=[],propertyTextures:l=[],propertyAttributes:u=[]}=e,{enums:d,classes:f}=s,p=o.map(x=>new Iue(x,f,d,i));let m=[],v=[];r&&(r.propertyTextures&&(m=r.propertyTextures.map(x=>new zue(l[x],f,d,t))),r.propertyAttributes&&(v=r.propertyAttributes.map(x=>new Oue(u[x],f,d)))),this.schema=s,this.tableAccessors=p,this.textureAccessors=m,this.attributeAccessors=v,this.object=a,this.textures=t,this.nodeMetadata=r}getPropertyTableData(e,t,i=null){if(!Array.isArray(e)||!Array.isArray(t))i=i||{},i=this.tableAccessors[e].getData(t,i);else{i=i||[];const r=Math.min(e.length,t.length);i.length=r;for(let a=0;ai)),Array.isArray(e))return e.map(t=>{const i=this.tableAccessors[t];return{name:i.name,className:i.definition.class}});{const t=this.tableAccessors[e];return{name:t.name,className:t.definition.class}}}getPropertyTextureData(e,t,i=[]){const r=this.textureAccessors;i.length=r.length;for(let a=0;a{i[s]=l});a.push(o)}return await Promise.all(a),i}getPropertyTextureInfo(){return this.textureAccessors}getPropertyAttributeData(e,t=[]){const i=this.attributeAccessors;t.length=i.length;for(let r=0;r({name:e.name,className:e.definition.class}))}dispose(){this.textureAccessors.forEach(e=>e.dispose()),this.tableAccessors.forEach(e=>e.dispose()),this.attributeAccessors.forEach(e=>e.dispose())}}const y0="EXT_structural_metadata";function Bue(n,e=[]){var t;const i=((t=n.json.textures)==null?void 0:t.length)||0,r=new Array(i).fill(null);return e.forEach(({properties:a})=>{for(const s in a){const{index:o}=a[s];r[o]===null&&(r[o]=n.loadTexture(o))}}),Promise.all(r)}function Fue(n,e=[]){var t;const i=((t=n.json.bufferViews)==null?void 0:t.length)||0,r=new Array(i).fill(null);return e.forEach(({properties:a})=>{for(const s in a){const{values:o,arrayOffsets:l,stringOffsets:u}=a[s];r[o]===null&&(r[o]=n.loadBufferView(o)),r[l]===null&&(r[l]=n.loadBufferView(l)),r[u]===null&&(r[u]=n.loadBufferView(u))}}),Promise.all(r)}class Hue{constructor(e){this.parser=e,this.name=y0}async afterRoot({scene:e,parser:t}){const i=t.json.extensionsUsed;if(!i||!i.includes(y0))return;let r=null,a=t.json.extensions[y0];if(a.schemaUri){const{manager:u,path:d,requestHeader:f,crossOrigin:p}=t.options,m=new URL(a.schemaUri,d).toString(),v=new jr(u);v.setCrossOrigin(p),v.setResponseType("json"),v.setRequestHeader(f),r=v.loadAsync(m).then(x=>{a={...a,schema:x}})}const[s,o]=await Promise.all([Bue(t,a.propertyTextures),Fue(t,a.propertyTables),r]),l=new AU(a,s,o);e.userData.structuralMetadata=l,e.traverse(u=>{var d;if(t.associations.has(u)){const{meshes:f,primitives:p}=t.associations.get(u),m=(d=t.json.meshes[f])==null?void 0:d.primitives[p];if(m&&m.extensions&&m.extensions[y0]){const v=m.extensions[y0];u.userData.structuralMetadata=new AU(a,s,o,v,u)}else u.userData.structuralMetadata=l}})}}const wU=new re,RU=new re,CU=new re;function Vue(n){return n.x>n.y&&n.x>n.z?0:n.y>n.z?1:2}class Gue{constructor(e,t,i){this.geometry=e,this.textures=t,this.data=i,this._asyncRead=!1,this.featureIds=i.featureIds.map(r=>{const{texture:a,...s}=r,o={label:null,propertyTable:null,nullFeatureId:null,...s};return a&&(o.texture={texCoord:0,channels:[0],...a}),o})}getTextures(){return this.textures}getFeatureInfo(){return this.featureIds}getFeaturesAsync(...e){this._asyncRead=!0;const t=this.getFeatures(...e);return this._asyncRead=!1,t}getFeatures(e,t){const{geometry:i,textures:r,featureIds:a}=this,s=new Array(a.length).fill(null),o=a.length;Pc.increaseSizeTo(o);const l=PF(i,e),u=l[Vue(t)];for(let p=0,m=a.length;p(f(),s));return Pc.readData(d),f(),s;function f(){const p=new Uint32Array(1);for(let m=0,v=a.length;md[4*m+b]);new Uint8Array(p.buffer).set(T);const E=p[0];E!==S&&(s[m]=E)}}}}dispose(){this.textures.forEach(e=>{e&&(e.dispose(),e.image instanceof ImageBitmap&&e.image.close())})}}const rS="EXT_mesh_features";function DU(n,e,t){n.traverse(i=>{var r;if(e.associations.has(i)){const{meshes:a,primitives:s}=e.associations.get(i),o=(r=e.json.meshes[a])==null?void 0:r.primitives[s];o&&o.extensions&&o.extensions[rS]&&t(i,o.extensions[rS])}})}class kue{constructor(e){this.parser=e,this.name=rS}async afterRoot({scene:e,parser:t}){var i;const r=t.json.extensionsUsed;if(!r||!r.includes(rS))return;const a=((i=t.json.textures)==null?void 0:i.length)||0,s=new Array(a).fill(null);DU(e,t,(l,{featureIds:u})=>{u.forEach(d=>{if(d.texture&&s[d.texture.index]===null){const f=d.texture.index;s[f]=t.loadTexture(f)}})});const o=await Promise.all(s);DU(e,t,(l,u)=>{l.userData.meshFeatures=new Gue(l.geometry,o,u)})}}class Wue{constructor(){this.name="CESIUM_RTC"}afterRoot(e){if(e.parser.json.extensions&&e.parser.json.extensions.CESIUM_RTC){const{center:t}=e.parser.json.extensions.CESIUM_RTC;t&&(e.scene.position.x+=t[0],e.scene.position.y+=t[1],e.scene.position.z+=t[2])}}}class Xue{constructor(e){e={metadata:!0,rtc:!0,plugins:[],dracoLoader:null,ktxLoader:null,meshoptDecoder:null,autoDispose:!0,...e},this.tiles=null,this.metadata=e.metadata,this.rtc=e.rtc,this.plugins=e.plugins,this.dracoLoader=e.dracoLoader,this.ktxLoader=e.ktxLoader,this.meshoptDecoder=e.meshoptDecoder,this._gltfRegex=/\.(gltf|glb)$/g,this._dracoRegex=/\.drc$/g,this._loader=null}init(e){const t=new Lp(e.manager);this.dracoLoader&&(t.setDRACOLoader(this.dracoLoader),e.manager.addHandler(this._dracoRegex,this.dracoLoader)),this.ktxLoader&&t.setKTX2Loader(this.ktxLoader),this.meshoptDecoder&&t.setMeshoptDecoder(this.meshoptDecoder),this.rtc&&t.register(()=>new Wue),this.metadata&&(t.register(()=>new Hue),t.register(()=>new kue)),this.plugins.forEach(i=>t.register(i)),e.manager.addHandler(this._gltfRegex,t),this.tiles=e,this._loader=t}dispose(){this.tiles.manager.removeHandler(this._gltfRegex),this.tiles.manager.removeHandler(this._dracoRegex),this.autoDispose&&(this.ktxLoader.dispose(),this.dracoLoader.dispose())}}const{clamp:UM}=ht;class que{constructor(){this.duration=250,this.fadeCount=0,this._lastTick=-1,this._fadeState=new Map,this.onFadeComplete=null,this.onFadeStart=null,this.onFadeSetComplete=null,this.onFadeSetStart=null}deleteObject(e){e&&this.completeFade(e)}guaranteeState(e){const t=this._fadeState;if(t.has(e))return!1;const i={fadeInTarget:0,fadeOutTarget:0,fadeIn:0,fadeOut:0};return t.set(e,i),!0}completeFade(e){const t=this._fadeState;if(!t.has(e))return;const i=t.get(e).fadeOutTarget===0;t.delete(e),this.fadeCount--,this.onFadeComplete&&this.onFadeComplete(e,i),this.fadeCount===0&&this.onFadeSetComplete&&this.onFadeSetComplete()}completeAllFades(){this._fadeState.forEach((e,t)=>{this.completeFade(t)})}forEachObject(e){this._fadeState.forEach((t,i)=>{e(i,t)})}fadeIn(e){const t=this.guaranteeState(e),i=this._fadeState.get(e);i.fadeInTarget=1,i.fadeOutTarget=0,i.fadeOut=0,t&&(this.fadeCount++,this.fadeCount===1&&this.onFadeSetStart&&this.onFadeSetStart(),this.onFadeStart&&this.onFadeStart(e))}fadeOut(e){const t=this.guaranteeState(e),i=this._fadeState.get(e);i.fadeOutTarget=1,t&&(i.fadeInTarget=1,i.fadeIn=1,this.fadeCount++,this.fadeCount===1&&this.onFadeSetStart&&this.onFadeSetStart(),this.onFadeStart&&this.onFadeStart(e))}isFading(e){return this._fadeState.has(e)}isFadingOut(e){const t=this._fadeState.get(e);return t&&t.fadeOutTarget===1}update(){const e=window.performance.now();this._lastTick===-1&&(this._lastTick=e);const t=UM((e-this._lastTick)/this.duration,0,1);this._lastTick=e,this._fadeState.forEach((i,r)=>{const{fadeOutTarget:a,fadeInTarget:s}=i;let{fadeOut:o,fadeIn:l}=i;const u=Math.sign(s-l);l=UM(l+u*t,0,1);const d=Math.sign(a-o);o=UM(o+d*t,0,1),i.fadeIn=l,i.fadeOut=o,((o===1||o===0)&&(l===1||l===0)||o>=l)&&this.completeFade(r)})}}const PM=Symbol("FADE_PARAMS");function FF(n,e){if(n[PM])return n[PM];const t={fadeIn:{value:0},fadeOut:{value:0},fadeTexture:{value:null}};return n[PM]=t,n.defines={...n.defines||{},FEATURE_FADE:0},n.onBeforeCompile=i=>{e&&e(i),i.uniforms={...i.uniforms,...t},i.vertexShader=i.vertexShader.replace(/void\s+main\(\)\s+{/,r=>` #ifdef USE_BATCHING_FRAG varying float vBatchId; @@ -10473,4 +10473,4 @@ void mainImage(const vec4 inputColor, const vec2 uv, out vec4 outputColor) { #endif `)},t}class Yue{constructor(){this._fadeParams=new WeakMap,this.fading=0}setFade(e,t,i){if(!e)return;const r=this._fadeParams;e.traverse(a=>{const s=a.material;if(s&&r.has(s)){const o=r.get(s);o.fadeIn.value=t,o.fadeOut.value=i;const l=+(!(t===0||t===1)||!(i===0||i===1));s.defines.FEATURE_FADE!==l&&(this.fading+=l===1?1:-1,s.defines.FEATURE_FADE=l,s.needsUpdate=!0)}})}prepareScene(e){e.traverse(t=>{t.material&&this.prepareMaterial(t.material)})}deleteScene(e){if(!e)return;this.setFade(e,1,0);const t=this._fadeParams;e.traverse(i=>{const r=i.material;r&&t.delete(r)})}prepareMaterial(e){const t=this._fadeParams;t.has(e)||t.set(e,FF(e,e.onBeforeCompile))}}class jue{constructor(e,t=new Sr){this.other=e,this.material=t,this.visible=!0,this.parent=null,this._instanceInfo=[],this._visibilityChanged=!0;const i=new Proxy(this,{get(r,a){if(a in r)return r[a];{const s=e[a];return s instanceof Function?(...o)=>(r.syncInstances(),s.call(i,...o)):e[a]}},set(r,a,s){return a in r?r[a]=s:e[a]=s,!0},deleteProperty(r,a){return a in r?delete r[a]:delete e[a]}});return i}syncInstances(){const e=this._instanceInfo,t=this.other._instanceInfo;for(;t.length>e.length;){const i=e.length;e.push(new Proxy({visible:!1},{get(r,a){return a in r?r[a]:t[i][a]},set(r,a,s){return a in r?r[a]=s:t[i][a]=s,!0}}))}}}class Zue extends jue{constructor(...e){super(...e);const t=this.material,i=FF(t,t.onBeforeCompile);t.defines.FEATURE_FADE=1,t.defines.USE_BATCHING_FRAG=1,t.needsUpdate=!0,this.fadeTexture=null,this._fadeParams=i}setFadeAt(e,t,i){this._initFadeTexture(),this.fadeTexture.setValueAt(e,t*255,i*255)}_initFadeTexture(){let e=Math.sqrt(this._maxInstanceCount);e=Math.ceil(e);const t=e*e*2,i=this.fadeTexture;if(!i||i.image.data.length!==t){const r=new Uint8Array(t),a=new Que(r,e,e,Mo,Ni);if(i){i.dispose();const s=i.image.data,o=this.fadeTexture.image.data,l=Math.min(s.length,o.length);o.set(new s.constructor(s.buffer,0,l))}this.fadeTexture=a,this._fadeParams.fadeTexture.value=a,a.needsUpdate=!0}}dispose(){this.fadeTexture&&this.fadeTexture.dispose()}}class Que extends Ur{setValueAt(e,...t){const{data:i,width:r,height:a}=this.image,s=Math.floor(i.length/(r*a));let o=!1;for(let l=0;l{const f=d.cached.scene;f&&(f.visible=d.__inFrustum),this.forEachBatchIds(d,(p,m,v)=>{m.setVisibleAt(p,d.__inFrustum),v.batchedMesh.setVisibleAt(p,d.__inFrustum)})}),s{if(!r.has(f))return;const p=f.matrixWorld,m=r.get(f);p.decompose(LU,UU,PU),m.decompose(OU,IU,PU);const v=UU.angleTo(IU),x=LU.distanceTo(OU);d=d&&(v>.25||x>.1)}),d&&n.completeAllFades()}if(l.forEach(d=>{r.get(d).copy(d.matrixWorld)}),n.forEachObject((d,{fadeIn:f,fadeOut:p})=>{const m=d.cached.scene,v=n.isFadingOut(d);a.markTileUsed(d),m&&(e.setFade(m,f,p),v&&(m.visible=!0)),this.forEachBatchIds(d,(x,S,_)=>{S.setFadeAt(x,f,p),S.setVisibleAt(x,!0),_.batchedMesh.setVisibleAt(x,!1)})}),o){const d=a.getPluginByName("BATCHED_TILES_PLUGIN").batchedMesh.material;o.material.map=d.map}}class $ue{get fadeDuration(){return this._fadeManager.duration}set fadeDuration(e){this._fadeManager.duration=Number(e)}get fadingTiles(){return this._fadeManager.fadeCount}constructor(e){e={maximumFadeOutTiles:50,fadeRootTiles:!1,fadeDuration:250,...e},this.name="FADE_TILES_PLUGIN",this.priority=-2,this.tiles=null,this.batchedMesh=null,this._quickFadeTiles=new Set,this._fadeManager=new que,this._fadeMaterialManager=new Yue,this._prevCameraTransforms=null,this._fadingOutCount=0,this.maximumFadeOutTiles=e.maximumFadeOutTiles,this.fadeRootTiles=e.fadeRootTiles,this.fadeDuration=e.fadeDuration}init(e){this._onLoadModel=({scene:r})=>{this._fadeMaterialManager.prepareScene(r)},this._onDisposeModel=({tile:r,scene:a})=>{this.tiles.visibleTiles.has(r)&&this._quickFadeTiles.add(r.parent),this._fadeManager.deleteObject(r),this._fadeMaterialManager.deleteScene(a)},this._onAddCamera=({camera:r})=>{this._prevCameraTransforms.set(r,new Me)},this._onDeleteCamera=({camera:r})=>{this._prevCameraTransforms.delete(r)},this._onTileVisibilityChange=({tile:r,visible:a})=>{const s=r.cached.scene;s&&(s.visible=!0),this.forEachBatchIds(r,(o,l,u)=>{l.setFadeAt(o,0,0),l.setVisibleAt(o,!1),u.batchedMesh.setVisibleAt(o,!1)})},this._onUpdateBefore=()=>{Kue.call(this)},this._onUpdateAfter=()=>{Jue.call(this)},e.addEventListener("load-model",this._onLoadModel),e.addEventListener("dispose-model",this._onDisposeModel),e.addEventListener("add-camera",this._onAddCamera),e.addEventListener("delete-camera",this._onDeleteCamera),e.addEventListener("update-before",this._onUpdateBefore),e.addEventListener("update-after",this._onUpdateAfter),e.addEventListener("tile-visibility-change",this._onTileVisibilityChange);const t=this._fadeManager;t.onFadeSetStart=()=>{e.dispatchEvent({type:"fade-start"}),e.dispatchEvent({type:"needs-render"})},t.onFadeSetComplete=()=>{e.dispatchEvent({type:"fade-end"}),e.dispatchEvent({type:"needs-render"})},t.onFadeComplete=(r,a)=>{this._fadeMaterialManager.setFade(r.cached.scene,0,0),this.forEachBatchIds(r,(s,o,l)=>{o.setFadeAt(s,0,0),o.setVisibleAt(s,!1),l.batchedMesh.setVisibleAt(s,a)}),a||(e.invokeOnePlugin(s=>s!==this&&s.setTileVisible&&s.setTileVisible(r,!1)),this._fadingOutCount--)};const i=new Map;e.cameras.forEach(r=>{i.set(r,new Me)}),e.forEachLoadedModel((r,a)=>{this._onLoadModel({scene:r})}),this.tiles=e,this._fadeManager=t,this._prevCameraTransforms=i}initBatchedMesh(){var e;const t=(e=this.tiles.getPluginByName("BATCHED_TILES_PLUGIN"))==null?void 0:e.batchedMesh;if(t){if(this.batchedMesh===null){this._onBatchedMeshDispose=()=>{this.batchedMesh.dispose(),this.batchedMesh.removeFromParent(),this.batchedMesh=null,t.removeEventListener("dispose",this._onBatchedMeshDispose)};const i=t.material.clone();i.onBeforeCompile=t.material.onBeforeCompile,this.batchedMesh=new Zue(t,i),this.tiles.group.add(this.batchedMesh)}}else this.batchedMesh!==null&&(this._onBatchedMeshDispose(),this._onBatchedMeshDispose=null)}setTileVisible(e,t){const i=this._fadeManager,r=i.isFading(e);if(i.isFadingOut(e)&&this._fadingOutCount--,t?e.__depthFromRenderedParent===1?((e[NU]||this.fadeRootTiles)&&this._fadeManager.fadeIn(e),e[NU]=!0):this._fadeManager.fadeIn(e):(this._fadingOutCount++,i.fadeOut(e)),this._quickFadeTiles.has(e)&&(this._fadeManager.completeFade(e),this._quickFadeTiles.delete(e)),r)return!0;const a=this._fadeManager.isFading(e);return!!(!t&&a)}dispose(){const e=this.tiles;this._fadeManager.completeAllFades(),this.batchedMesh!==null&&this._onBatchedMeshDispose(),e.removeEventListener("load-model",this._onLoadModel),e.removeEventListener("dispose-model",this._onDisposeModel),e.removeEventListener("add-camera",this._onAddCamera),e.removeEventListener("delete-camera",this._onDeleteCamera),e.removeEventListener("update-before",this._onUpdateBefore),e.removeEventListener("update-after",this._onUpdateAfter),e.removeEventListener("tile-visibility-change",this._onTileVisibilityChange),e.forEachLoadedModel((t,i)=>{this._fadeManager.deleteObject(i),t&&(t.visible=!0)})}forEachBatchIds(e,t){if(this.initBatchedMesh(),this.batchedMesh){const i=this.tiles.getPluginByName("BATCHED_TILES_PLUGIN"),r=i.getTileBatchIds(e);r&&r.forEach(a=>{t(a,this.batchedMesh,i)})}}}new Me;new D;new D;new jn;new Gz(new Sr);const ehe=new Ur(new Uint8Array([255,255,255,255]),1,1);ehe.needsUpdate=!0;new D;const zM=new WeakMap;class the extends wi{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){const a=new jr(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,s=>{this.parse(s,t,r)},i,r)}parse(e,t,i=()=>{}){this.decodeDracoFile(e,t,null,null,mn,i).catch(i)}decodeDracoFile(e,t,i,r,a=Xn,s=()=>{}){const o={attributeIDs:i||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!i,vertexColorSpace:a};return this.decodeGeometry(e,o).then(t).catch(s)}decodeGeometry(e,t){const i=JSON.stringify(t);if(zM.has(e)){const l=zM.get(e);if(l.key===i)return l.promise;if(e.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let r;const a=this.workerNextTaskID++,s=e.byteLength,o=this._getWorker(a,s).then(l=>(r=l,new Promise((u,d)=>{r._callbacks[a]={resolve:u,reject:d},r.postMessage({type:"decode",id:a,taskConfig:t,buffer:e},[e])}))).then(l=>this._createGeometry(l.geometry));return o.catch(()=>!0).then(()=>{r&&a&&this._releaseTask(r,a)}),zM.set(e,{key:i,promise:o}),o}_createGeometry(e){const t=new Ct;e.index&&t.setIndex(new bt(e.index.array,1));for(let i=0;i{i.load(e,r,void 0,a)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const e=typeof WebAssembly!="object"||this.decoderConfig.type==="js",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(i=>{const r=i[0];e||(this.decoderConfig.wasmBinary=i[1]);const a=nhe.toString(),s=["/* draco decoder */",r,"","/* worker */",a.substring(a.indexOf("{")+1,a.lastIndexOf("}"))].join(` -`);this.workerSourceURL=URL.createObjectURL(new Blob([s]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.lengtha._taskLoad?-1:1});const 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{const f=d.draco,p=new f.Decoder;try{const m=t(f,p,new Int8Array(l),u),v=m.attributes.map(x=>x.array.buffer);m.index&&v.push(m.index.array.buffer),self.postMessage({type:"decode",id:o.id,geometry:m},v)}catch(m){console.error(m),self.postMessage({type:"error",id:o.id,error:m.message})}finally{f.destroy(p)}});break}};function t(s,o,l,u){const d=u.attributeIDs,f=u.attributeTypes;let p,m;const v=o.GetEncodedGeometryType(l);if(v===s.TRIANGULAR_MESH)p=new s.Mesh,m=o.DecodeArrayToMesh(l,l.byteLength,p);else if(v===s.POINT_CLOUD)p=new s.PointCloud,m=o.DecodeArrayToPointCloud(l,l.byteLength,p);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!m.ok()||p.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+m.error_msg());const x={index:null,attributes:[]};for(const S in d){const _=self[f[S]];let T,E;if(u.useUniqueIDs)E=d[S],T=o.GetAttributeByUniqueId(p,E);else{if(E=o.GetAttributeId(p,s[d[S]]),E===-1)continue;T=o.GetAttribute(p,E)}const b=r(s,o,p,S,_,T);S==="color"&&(b.vertexColorSpace=u.vertexColorSpace),x.attributes.push(b)}return v===s.TRIANGULAR_MESH&&(x.index=i(s,o,p)),s.destroy(p),x}function i(s,o,l){const d=l.num_faces()*3,f=d*4,p=s._malloc(f);o.GetTrianglesUInt32Array(l,f,p);const m=new Uint32Array(s.HEAPF32.buffer,p,d).slice();return s._free(p),{array:m,itemSize:1}}function r(s,o,l,u,d,f){const p=l.num_points(),m=f.num_components(),v=a(s,d),x=m*d.BYTES_PER_ELEMENT,S=Math.ceil(x/4)*4,_=S/d.BYTES_PER_ELEMENT,T=p*x,E=p*S,b=s._malloc(T);o.GetAttributeDataArrayForAllPoints(l,f,v,T,b);const R=new d(s.HEAPF32.buffer,b,T/d.BYTES_PER_ELEMENT);let w;if(x===S)w=R.slice();else{w=new d(E/d.BYTES_PER_ELEMENT);let L=0;for(let U=0,N=R.length;U Altitude: ${a}, TruePosLength: ${u.length()}`),Or.position.copy(u);const f=pC(u).clone().invert();Or.quaternion.copy(f.multiply(o))}const On={w:!1,a:!1,s:!1,d:!1,q:!1,e:!1,Shift:!1,Space:!1};typeof window<"u"&&(window.addEventListener("keydown",n=>{const e=n.key.toLowerCase();On.hasOwnProperty(e)&&(On[e]=!0),n.key==="Shift"&&(On.Shift=!0),n.key===" "&&(On.Space=!0)}),window.addEventListener("keyup",n=>{const e=n.key.toLowerCase();On.hasOwnProperty(e)&&(On[e]=!1),n.key==="Shift"&&(On.Shift=!1),n.key===" "&&(On.Space=!1)}));const HF=new the;HF.setDecoderPath("https://www.gstatic.com/draco/v1/decoders/");function hhe(){const n="AIzaSyB1HccB6XdNjxbYcbbmMWRyxv4CTYfxXpM";return ot.jsxs(fue,{url:`https://tile.googleapis.com/v1/3dtiles/root.json?key=${n}`,children:[ot.jsx(g0,{plugin:Sue,args:{apiToken:n}}),ot.jsx(g0,{plugin:Xue,dracoLoader:HF}),ot.jsx(g0,{plugin:bue}),ot.jsx(g0,{plugin:Tue}),ot.jsx(g0,{plugin:$ue})]})}function dhe(){const{gl:n}=pn(),e=ie.useRef(),t=ie.useRef(),i=ie.useRef(new Date(ohe)),[r,a]=ie.useState(zU[1]);return ie.useEffect(()=>{n.toneMapping=As,n.toneMappingExposure=10},[n]),ie.useEffect(()=>{const s=setInterval(()=>{a(o=>{const l=zU.filter(d=>d.name!==o.name),u=l[Math.floor(Math.random()*l.length)];return console.log(`[Weather] Changing to: ${u.name}`),u})},ahe);return()=>clearInterval(s)},[]),_a((s,o)=>{const l=i.current,u=o*she*1e3;if(l.setTime(l.getTime()+u),t.current&&t.current.updateByDate(l),e.current){const d=l.getHours()+l.getMinutes()/60+l.getSeconds()/3600,f=lt.mapLinear(d,6,18,0,Math.PI),p=-Math.cos(f),m=Math.sin(f);d<6||d>18?(e.current.position.set(0,-1,0),e.current.intensity=10):(e.current.position.set(p,m,.2),e.current.intensity=lt.lerp(.5,3,m))}}),ot.jsxs(ot.Fragment,{children:[ot.jsx(Bz,{makeDefault:!0,near:1,far:1e7,fov:45}),ot.jsx(fhe,{}),ot.jsx("directionalLight",{ref:e,position:[0,1,0],intensity:3,castShadow:!0}),ot.jsxs(lle,{ref:t,children:[ot.jsx(hhe,{}),ot.jsxs(Vre,{multisampling:0,disableNormalPass:!1,children:[ot.jsx(mce,{disableDefaultLayers:!0,coverage:r.coverage,children:r.layers.map((s,o)=>ot.jsx(gce,{channel:s.channel,altitude:s.altitude,height:s.height,densityScale:s.densityScale,shapeAmount:.5},o))}),ot.jsx(ule,{sky:!0}),ot.jsx(Wre,{mode:ca.AGX})]})]})]})}function fhe(){return _a(n=>{if(!Or.position)return;const e=pC(Or.position);n.camera.position.copy(Or.position),n.camera.quaternion.copy(e).multiply(Or.quaternion)}),null}function phe(){const n=ie.useRef(null),e=ie.useRef(null),{camera:t}=pn(),i=ie.useRef({}),r=ie.useRef(null),a=By(Lp,ihe,u=>{u.register(d=>new Ine(d))}),[s,o,l]=By(Lp,[`${v1}fly.vrma`,`${v1}fly_stop.vrma`,`${v1}fly_idle.vrma`],u=>{u.register(d=>new gie(d))});return ie.useEffect(()=>{const u=a.userData.vrm;e.current=u,rd.removeUnnecessaryJoints(u.scene),u.humanoid.resetPose(),u.scene.rotation.y=Math.PI;const d=new b7(u.scene);n.current=d;const f=(S,_)=>{var T;if((T=S.userData.vrmAnimations)!=null&&T[0]){const E=uie(S.userData.vrmAnimations[0],u),b=d.clipAction(E);return b.name=_,b}return null},p=f(s,"fly"),m=f(o,"fly_stop"),v=f(l,"fly_idle");i.current={fly:p,fly_stop:m,fly_idle:v},m&&(m.setLoop($w),m.clampWhenFinished=!0),v?(v.play(),r.current="fly_idle"):p&&(p.play(),r.current="fly");const x=S=>{S.action===m&&i.current.fly_idle&&(m.fadeOut(.5),i.current.fly_idle.reset().fadeIn(.5).play(),r.current="fly_idle")};return d.addEventListener("finished",x),()=>{d.removeEventListener("finished",x)}},[a,s,o,l]),_a((u,d)=>{var v,x;(v=n.current)==null||v.update(d),(x=e.current)==null||x.update(d);const f=On.w||On.s||On.a||On.d,p=i.current,m=r.current;if(p.fly&&p.fly_stop&&p.fly_idle)if(f){if(m!=="fly"){const S=p[m];S&&S.fadeOut(.5),p.fly.reset().fadeIn(.5).play(),r.current="fly"}}else m==="fly"&&(p.fly.fadeOut(.5),p.fly_stop.reset().fadeIn(.5).play(),r.current="fly_stop");if(e.current){const S=e.current.scene,_=new D(0,0,0);if(On.w&&(_.z-=1),On.s&&(_.z+=1),On.a&&(_.x-=1),On.d&&(_.x+=1),_.lengthSq()>0){_.normalize();const T=t.quaternion.clone();_.applyQuaternion(T);const E=S.position.clone().sub(_),b=new Xt;b.position.copy(S.position),b.lookAt(E),S.quaternion.slerp(b.quaternion,10*d)}}}),ot.jsx("primitive",{object:a.scene})}function mhe(){const{camera:n}=pn();new D;const e=ie.useRef(0),t=10,i=2;return _a((r,a)=>{Or.quaternion.copy(n.quaternion);const s=pC(Or.position),o=On.w||On.s||On.a||On.d||On.q||On.e,l=Or.speed*(On.Shift?2:1)*a,u=new D;On.w&&(u.z-=1),On.s&&(u.z+=1),On.a&&(u.x-=1),On.d&&(u.x+=1);const d=Or.position.clone().normalize();On.e&&Or.position.addScaledVector(d,l),On.q&&Or.position.addScaledVector(d,-l),u.lengthSq()>0&&(u.normalize(),u.applyQuaternion(n.quaternion),u.applyQuaternion(s),Or.position.addScaledVector(u,l));const f=Or.position.length(),p=che(Or.position),m=p+10;r.clock.elapsedTime%1<.02&&console.log(`[CameraSync] Dist: ${f.toFixed(1)}, LocalR: ${p.toFixed(1)}, Alt: ${(f-p).toFixed(1)}`),fot.jsx("button",{onClick:()=>uhe(n),style:{padding:"10px 20px",background:"rgba(0, 0, 0, 0.6)",color:"white",border:"1px solid rgba(255, 255, 255, 0.3)",borderRadius:"8px",cursor:"pointer",fontSize:"14px",backdropFilter:"blur(4px)",transition:"background 0.2s"},onMouseOver:e=>e.currentTarget.style.background="rgba(0, 0, 0, 0.8)",onMouseOut:e=>e.currentTarget.style.background="rgba(0, 0, 0, 0.6)",children:n.name},n.name))})}function _he(){return ot.jsx(hz,{children:ot.jsx(dhe,{})})}function xhe(){const n={position:"absolute",top:0,left:0,width:"100%",height:"100%"};return ot.jsxs("div",{style:{position:"relative",width:"100vw",height:"100vh",background:"#000"},children:[ot.jsx(vhe,{}),ot.jsx("div",{style:{...n,zIndex:0},children:ot.jsx(_he,{})}),ot.jsx("div",{style:{...n,zIndex:1,pointerEvents:"none"},children:ot.jsx("div",{style:{width:"100%",height:"100%",pointerEvents:"auto"},children:ot.jsx(ghe,{})})})]})}zW.createRoot(document.getElementById("root")).render(ot.jsx(QA.StrictMode,{children:ot.jsx(xhe,{})})); +`);this.workerSourceURL=URL.createObjectURL(new Blob([s]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.lengtha._taskLoad?-1:1});const 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{const f=d.draco,p=new f.Decoder;try{const m=t(f,p,new Int8Array(l),u),v=m.attributes.map(x=>x.array.buffer);m.index&&v.push(m.index.array.buffer),self.postMessage({type:"decode",id:o.id,geometry:m},v)}catch(m){console.error(m),self.postMessage({type:"error",id:o.id,error:m.message})}finally{f.destroy(p)}});break}};function t(s,o,l,u){const d=u.attributeIDs,f=u.attributeTypes;let p,m;const v=o.GetEncodedGeometryType(l);if(v===s.TRIANGULAR_MESH)p=new s.Mesh,m=o.DecodeArrayToMesh(l,l.byteLength,p);else if(v===s.POINT_CLOUD)p=new s.PointCloud,m=o.DecodeArrayToPointCloud(l,l.byteLength,p);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!m.ok()||p.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+m.error_msg());const x={index:null,attributes:[]};for(const S in d){const _=self[f[S]];let T,E;if(u.useUniqueIDs)E=d[S],T=o.GetAttributeByUniqueId(p,E);else{if(E=o.GetAttributeId(p,s[d[S]]),E===-1)continue;T=o.GetAttribute(p,E)}const b=r(s,o,p,S,_,T);S==="color"&&(b.vertexColorSpace=u.vertexColorSpace),x.attributes.push(b)}return v===s.TRIANGULAR_MESH&&(x.index=i(s,o,p)),s.destroy(p),x}function i(s,o,l){const d=l.num_faces()*3,f=d*4,p=s._malloc(f);o.GetTrianglesUInt32Array(l,f,p);const m=new Uint32Array(s.HEAPF32.buffer,p,d).slice();return s._free(p),{array:m,itemSize:1}}function r(s,o,l,u,d,f){const p=l.num_points(),m=f.num_components(),v=a(s,d),x=m*d.BYTES_PER_ELEMENT,S=Math.ceil(x/4)*4,_=S/d.BYTES_PER_ELEMENT,T=p*x,E=p*S,b=s._malloc(T);o.GetAttributeDataArrayForAllPoints(l,f,v,T,b);const R=new d(s.HEAPF32.buffer,b,T/d.BYTES_PER_ELEMENT);let w;if(x===S)w=R.slice();else{w=new d(E/d.BYTES_PER_ELEMENT);let L=0;for(let U=0,N=R.length;U Altitude: ${a}, TruePosLength: ${u.length()}`),Or.position.copy(u);const f=pC(u).clone().invert();Or.quaternion.copy(f.multiply(o))}const On={w:!1,a:!1,s:!1,d:!1,q:!1,e:!1,Shift:!1,Space:!1};typeof window<"u"&&(window.addEventListener("keydown",n=>{const e=n.key.toLowerCase();On.hasOwnProperty(e)&&(On[e]=!0),n.key==="Shift"&&(On.Shift=!0),n.key===" "&&(On.Space=!0)}),window.addEventListener("keyup",n=>{const e=n.key.toLowerCase();On.hasOwnProperty(e)&&(On[e]=!1),n.key==="Shift"&&(On.Shift=!1),n.key===" "&&(On.Space=!1)}));const HF=new the;HF.setDecoderPath("https://www.gstatic.com/draco/v1/decoders/");function hhe(){const n="AIzaSyB1HccB6XdNjxbYcbbmMWRyxv4CTYfxXpM";return ot.jsxs(fue,{url:`https://tile.googleapis.com/v1/3dtiles/root.json?key=${n}`,children:[ot.jsx(g0,{plugin:Sue,args:{apiToken:n}}),ot.jsx(g0,{plugin:Xue,dracoLoader:HF}),ot.jsx(g0,{plugin:bue}),ot.jsx(g0,{plugin:Tue}),ot.jsx(g0,{plugin:$ue})]})}function dhe(){const{gl:n}=pn(),e=ie.useRef(),t=ie.useRef(),i=ie.useRef(new Date(ohe)),[r,a]=ie.useState(zU[1]);return ie.useEffect(()=>{n.toneMapping=As,n.toneMappingExposure=10},[n]),ie.useEffect(()=>{const s=setInterval(()=>{a(o=>{const l=zU.filter(d=>d.name!==o.name),u=l[Math.floor(Math.random()*l.length)];return console.log(`[Weather] Changing to: ${u.name}`),u})},ahe);return()=>clearInterval(s)},[]),_a((s,o)=>{const l=i.current,u=o*she*1e3;if(l.setTime(l.getTime()+u),t.current){t.current.updateByDate(l);const d=t.current.sunDirection;e.current&&d&&(e.current.position.copy(d),e.current.intensity=3,d.y<-.1&&(e.current.intensity=.1))}}),ot.jsxs(ot.Fragment,{children:[ot.jsx(Bz,{makeDefault:!0,near:10,far:1e7,fov:45}),ot.jsx(fhe,{}),ot.jsx("directionalLight",{ref:e,position:[0,1,0],intensity:3,castShadow:!0}),ot.jsxs(lle,{ref:t,children:[ot.jsx(hhe,{}),ot.jsxs(Vre,{multisampling:0,disableNormalPass:!1,children:[ot.jsx(mce,{disableDefaultLayers:!0,coverage:r.coverage,children:r.layers.map((s,o)=>ot.jsx(gce,{channel:s.channel,altitude:s.altitude,height:s.height,densityScale:s.densityScale,shapeAmount:.5},o))}),ot.jsx(ule,{sky:!0}),ot.jsx(Wre,{mode:ca.AGX})]})]})]})}function fhe(){return _a(n=>{if(!Or.position)return;const e=pC(Or.position);n.camera.position.copy(Or.position),n.camera.quaternion.copy(e).multiply(Or.quaternion)}),null}function phe(){const n=ie.useRef(null),e=ie.useRef(null),{camera:t}=pn(),i=ie.useRef({}),r=ie.useRef(null),a=By(Lp,ihe,u=>{u.register(d=>new Ine(d))}),[s,o,l]=By(Lp,[`${v1}fly.vrma`,`${v1}fly_stop.vrma`,`${v1}fly_idle.vrma`],u=>{u.register(d=>new gie(d))});return ie.useEffect(()=>{const u=a.userData.vrm;e.current=u,rd.removeUnnecessaryJoints(u.scene),u.humanoid.resetPose(),u.scene.rotation.y=Math.PI;const d=new b7(u.scene);n.current=d;const f=(S,_)=>{var T;if((T=S.userData.vrmAnimations)!=null&&T[0]){const E=uie(S.userData.vrmAnimations[0],u),b=d.clipAction(E);return b.name=_,b}return null},p=f(s,"fly"),m=f(o,"fly_stop"),v=f(l,"fly_idle");i.current={fly:p,fly_stop:m,fly_idle:v},m&&(m.setLoop($w),m.clampWhenFinished=!0),v?(v.play(),r.current="fly_idle"):p&&(p.play(),r.current="fly");const x=S=>{S.action===m&&i.current.fly_idle&&(m.fadeOut(.5),i.current.fly_idle.reset().fadeIn(.5).play(),r.current="fly_idle")};return d.addEventListener("finished",x),()=>{d.removeEventListener("finished",x)}},[a,s,o,l]),_a((u,d)=>{var v,x;(v=n.current)==null||v.update(d),(x=e.current)==null||x.update(d);const f=On.w||On.s||On.a||On.d,p=i.current,m=r.current;if(p.fly&&p.fly_stop&&p.fly_idle)if(f){if(m!=="fly"){const S=p[m];S&&S.fadeOut(.5),p.fly.reset().fadeIn(.5).play(),r.current="fly"}}else m==="fly"&&(p.fly.fadeOut(.5),p.fly_stop.reset().fadeIn(.5).play(),r.current="fly_stop");if(e.current){const S=e.current.scene,_=new D(0,0,0);if(On.w&&(_.z-=1),On.s&&(_.z+=1),On.a&&(_.x-=1),On.d&&(_.x+=1),_.lengthSq()>0){_.normalize();const T=t.quaternion.clone();_.applyQuaternion(T);const E=S.position.clone().sub(_),b=new Xt;b.position.copy(S.position),b.lookAt(E),S.quaternion.slerp(b.quaternion,10*d)}}}),ot.jsx("primitive",{object:a.scene})}function mhe(){const{camera:n}=pn();new D;const e=ie.useRef(0),t=10,i=2;return _a((r,a)=>{Or.quaternion.copy(n.quaternion);const s=pC(Or.position),o=On.w||On.s||On.a||On.d||On.q||On.e,l=Or.speed*(On.Shift?2:1)*a,u=new D;On.w&&(u.z-=1),On.s&&(u.z+=1),On.a&&(u.x-=1),On.d&&(u.x+=1);const d=Or.position.clone().normalize();On.e&&Or.position.addScaledVector(d,l),On.q&&Or.position.addScaledVector(d,-l),u.lengthSq()>0&&(u.normalize(),u.applyQuaternion(n.quaternion),u.applyQuaternion(s),Or.position.addScaledVector(u,l));const f=Or.position.length(),p=che(Or.position),m=p+10;r.clock.elapsedTime%1<.02&&console.log(`[CameraSync] Dist: ${f.toFixed(1)}, LocalR: ${p.toFixed(1)}, Alt: ${(f-p).toFixed(1)}`),fot.jsx("button",{onClick:()=>uhe(n),style:{padding:"10px 20px",background:"rgba(0, 0, 0, 0.6)",color:"white",border:"1px solid rgba(255, 255, 255, 0.3)",borderRadius:"8px",cursor:"pointer",fontSize:"14px",backdropFilter:"blur(4px)",transition:"background 0.2s"},onMouseOver:e=>e.currentTarget.style.background="rgba(0, 0, 0, 0.8)",onMouseOut:e=>e.currentTarget.style.background="rgba(0, 0, 0, 0.6)",children:n.name},n.name))})}function _he(){return ot.jsx(hz,{gl:{alpha:!0,antialias:!0},children:ot.jsx(dhe,{})})}function xhe(){const n={position:"absolute",top:0,left:0,width:"100%",height:"100%"};return ot.jsxs("div",{style:{position:"relative",width:"100vw",height:"100vh",background:"#000"},children:[ot.jsx(vhe,{}),ot.jsx("div",{style:{...n,zIndex:0},children:ot.jsx(_he,{})}),ot.jsx("div",{style:{...n,zIndex:1,pointerEvents:"none"},children:ot.jsx("div",{style:{width:"100%",height:"100%",pointerEvents:"auto"},children:ot.jsx(ghe,{})})})]})}zW.createRoot(document.getElementById("root")).render(ot.jsx(QA.StrictMode,{children:ot.jsx(xhe,{})})); diff --git a/static/pkg/atmosphere/index.html b/static/pkg/atmosphere/index.html index 9fdffd67..dc197744 100644 --- a/static/pkg/atmosphere/index.html +++ b/static/pkg/atmosphere/index.html @@ -8,7 +8,7 @@ - +