(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,1517,e=>{"use strict";let t,r,n,i;var a=e.i(43476),s=e.i(71645),o=e.i(75056),l=e.i(25234),c=e.i(28600),u=e.i(31067),d=e.i(90072);function h(e,t){if(t===d.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==d.TriangleFanDrawMode&&t!==d.TriangleStripDrawMode)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let r=e.getIndex();if(null===r){let t=[],n=e.getAttribute("position");if(void 0===n)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;e{let r,i;return r=new d.Shape,i=n-1e-5,r.absarc(1e-5,1e-5,1e-5,-Math.PI/2,-Math.PI,!0),r.absarc(1e-5,t-2*i,1e-5,Math.PI,Math.PI/2,!0),r.absarc(e-2*i,t-2*i,1e-5,Math.PI/2,0,!0),r.absarc(e-2*i,1e-5,1e-5,0,-Math.PI/2,!0),r},[e,t,n]),A=s.useMemo(()=>({depth:r-2*n,bevelEnabled:!0,bevelSegments:2*o,steps:i,bevelSize:n-1e-5,bevelThickness:n,curveSegments:a}),[r,n,a,o,i]),p=s.useRef(null);return s.useLayoutEffect(()=>{p.current&&(p.current.center(),function(e,t=Math.PI/3){let r=Math.cos(t),n=(1+1e-10)*100,i=[new d.Vector3,new d.Vector3,new d.Vector3],a=new d.Vector3,s=new d.Vector3,o=new d.Vector3,l=new d.Vector3;function c(e){let t=~~(e.x*n),r=~~(e.y*n),i=~~(e.z*n);return`${t},${r},${i}`}let u=e.index?e.toNonIndexed():e,h=u.attributes.position,f={};for(let e=0,t=h.count/3;er&&l.add(t)}l.normalize(),p.setXYZ(t+e,l.x,l.y,l.z)}}u.setAttribute("normal",p)}(p.current,l))},[f,A,l]),s.useImperativeHandle(h,()=>p.current),s.createElement("extrudeGeometry",(0,u.default)({ref:p,args:[f,A]},c))});var p=d,m=d;let B=new m.Box3,g=new m.Vector3;class C extends m.InstancedBufferGeometry{constructor(){super(),this.isLineSegmentsGeometry=!0,this.type="LineSegmentsGeometry",this.setIndex([0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5]),this.setAttribute("position",new m.Float32BufferAttribute([-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],3)),this.setAttribute("uv",new m.Float32BufferAttribute([-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],2))}applyMatrix4(e){let t=this.attributes.instanceStart,r=this.attributes.instanceEnd;return void 0!==t&&(t.applyMatrix4(e),r.applyMatrix4(e),t.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}setPositions(e){let t;e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));let r=new m.InstancedInterleavedBuffer(t,6,1);return this.setAttribute("instanceStart",new m.InterleavedBufferAttribute(r,3,0)),this.setAttribute("instanceEnd",new m.InterleavedBufferAttribute(r,3,3)),this.computeBoundingBox(),this.computeBoundingSphere(),this}setColors(e,t=3){let r;e instanceof Float32Array?r=e:Array.isArray(e)&&(r=new Float32Array(e));let n=new m.InstancedInterleavedBuffer(r,2*t,1);return this.setAttribute("instanceColorStart",new m.InterleavedBufferAttribute(n,t,0)),this.setAttribute("instanceColorEnd",new m.InterleavedBufferAttribute(n,t,t)),this}fromWireframeGeometry(e){return this.setPositions(e.attributes.position.array),this}fromEdgesGeometry(e){return this.setPositions(e.attributes.position.array),this}fromMesh(e){return this.fromWireframeGeometry(new m.WireframeGeometry(e.geometry)),this}fromLineSegments(e){let t=e.geometry;return this.setPositions(t.attributes.position.array),this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new m.Box3);let e=this.attributes.instanceStart,t=this.attributes.instanceEnd;void 0!==e&&void 0!==t&&(this.boundingBox.setFromBufferAttribute(e),B.setFromBufferAttribute(t),this.boundingBox.union(B))}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new m.Sphere),null===this.boundingBox&&this.computeBoundingBox();let e=this.attributes.instanceStart,t=this.attributes.instanceEnd;if(void 0!==e&&void 0!==t){let r=this.boundingSphere.center;this.boundingBox.getCenter(r);let n=0;for(let i=0,a=e.count;i #include #include #include uniform float linewidth; uniform vec2 resolution; attribute vec3 instanceStart; attribute vec3 instanceEnd; #ifdef USE_COLOR #ifdef USE_LINE_COLOR_ALPHA varying vec4 vLineColor; attribute vec4 instanceColorStart; attribute vec4 instanceColorEnd; #else varying vec3 vLineColor; attribute vec3 instanceColorStart; attribute vec3 instanceColorEnd; #endif #endif #ifdef WORLD_UNITS varying vec4 worldPos; varying vec3 worldStart; varying vec3 worldEnd; #ifdef USE_DASH varying vec2 vUv; #endif #else varying vec2 vUv; #endif #ifdef USE_DASH uniform float dashScale; attribute float instanceDistanceStart; attribute float instanceDistanceEnd; varying float vLineDistance; #endif void trimSegment( const in vec4 start, inout vec4 end ) { // trim end segment so it terminates between the camera plane and the near plane // conservative estimate of the near plane float a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column float b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column float nearEstimate = - 0.5 * b / a; float alpha = ( nearEstimate - start.z ) / ( end.z - start.z ); end.xyz = mix( start.xyz, end.xyz, alpha ); } void main() { #ifdef USE_COLOR vLineColor = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd; #endif #ifdef USE_DASH vLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd; vUv = uv; #endif float aspect = resolution.x / resolution.y; // camera space vec4 start = modelViewMatrix * vec4( instanceStart, 1.0 ); vec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 ); #ifdef WORLD_UNITS worldStart = start.xyz; worldEnd = end.xyz; #else vUv = uv; #endif // special case for perspective projection, and segments that terminate either in, or behind, the camera plane // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space // but we need to perform ndc-space calculations in the shader, so we must address this issue directly // perhaps there is a more elegant solution -- WestLangley bool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column if ( perspective ) { if ( start.z < 0.0 && end.z >= 0.0 ) { trimSegment( start, end ); } else if ( end.z < 0.0 && start.z >= 0.0 ) { trimSegment( end, start ); } } // clip space vec4 clipStart = projectionMatrix * start; vec4 clipEnd = projectionMatrix * end; // ndc space vec3 ndcStart = clipStart.xyz / clipStart.w; vec3 ndcEnd = clipEnd.xyz / clipEnd.w; // direction vec2 dir = ndcEnd.xy - ndcStart.xy; // account for clip-space aspect ratio dir.x *= aspect; dir = normalize( dir ); #ifdef WORLD_UNITS // get the offset direction as perpendicular to the view vector vec3 worldDir = normalize( end.xyz - start.xyz ); vec3 offset; if ( position.y < 0.5 ) { offset = normalize( cross( start.xyz, worldDir ) ); } else { offset = normalize( cross( end.xyz, worldDir ) ); } // sign flip if ( position.x < 0.0 ) offset *= - 1.0; float forwardOffset = dot( worldDir, vec3( 0.0, 0.0, 1.0 ) ); // don't extend the line if we're rendering dashes because we // won't be rendering the endcaps #ifndef USE_DASH // extend the line bounds to encompass endcaps start.xyz += - worldDir * linewidth * 0.5; end.xyz += worldDir * linewidth * 0.5; // shift the position of the quad so it hugs the forward edge of the line offset.xy -= dir * forwardOffset; offset.z += 0.5; #endif // endcaps if ( position.y > 1.0 || position.y < 0.0 ) { offset.xy += dir * 2.0 * forwardOffset; } // adjust for linewidth offset *= linewidth * 0.5; // set the world position worldPos = ( position.y < 0.5 ) ? start : end; worldPos.xyz += offset; // project the worldpos vec4 clip = projectionMatrix * worldPos; // shift the depth of the projected points so the line // segments overlap neatly vec3 clipPose = ( position.y < 0.5 ) ? ndcStart : ndcEnd; clip.z = clipPose.z * clip.w; #else vec2 offset = vec2( dir.y, - dir.x ); // undo aspect ratio adjustment dir.x /= aspect; offset.x /= aspect; // sign flip if ( position.x < 0.0 ) offset *= - 1.0; // endcaps if ( position.y < 0.0 ) { offset += - dir; } else if ( position.y > 1.0 ) { offset += dir; } // adjust for linewidth offset *= linewidth; // adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ... offset /= resolution.y; // select end vec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd; // back to clip space offset *= clip.w; clip.xy += offset; #endif gl_Position = clip; vec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation #include #include #include } `,fragmentShader:` uniform vec3 diffuse; uniform float opacity; uniform float linewidth; #ifdef USE_DASH uniform float dashOffset; uniform float dashSize; uniform float gapSize; #endif varying float vLineDistance; #ifdef WORLD_UNITS varying vec4 worldPos; varying vec3 worldStart; varying vec3 worldEnd; #ifdef USE_DASH varying vec2 vUv; #endif #else varying vec2 vUv; #endif #include #include #include #include #ifdef USE_COLOR #ifdef USE_LINE_COLOR_ALPHA varying vec4 vLineColor; #else varying vec3 vLineColor; #endif #endif vec2 closestLineToLine(vec3 p1, vec3 p2, vec3 p3, vec3 p4) { float mua; float mub; vec3 p13 = p1 - p3; vec3 p43 = p4 - p3; vec3 p21 = p2 - p1; float d1343 = dot( p13, p43 ); float d4321 = dot( p43, p21 ); float d1321 = dot( p13, p21 ); float d4343 = dot( p43, p43 ); float d2121 = dot( p21, p21 ); float denom = d2121 * d4343 - d4321 * d4321; float numer = d1343 * d4321 - d1321 * d4343; mua = numer / denom; mua = clamp( mua, 0.0, 1.0 ); mub = ( d1343 + d4321 * ( mua ) ) / d4343; mub = clamp( mub, 0.0, 1.0 ); return vec2( mua, mub ); } void main() { #include #ifdef USE_DASH if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps if ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX #endif float alpha = opacity; #ifdef WORLD_UNITS // Find the closest points on the view ray and the line segment vec3 rayEnd = normalize( worldPos.xyz ) * 1e5; vec3 lineDir = worldEnd - worldStart; vec2 params = closestLineToLine( worldStart, worldEnd, vec3( 0.0, 0.0, 0.0 ), rayEnd ); vec3 p1 = worldStart + lineDir * params.x; vec3 p2 = rayEnd * params.y; vec3 delta = p1 - p2; float len = length( delta ); float norm = len / linewidth; #ifndef USE_DASH #ifdef USE_ALPHA_TO_COVERAGE float dnorm = fwidth( norm ); alpha = 1.0 - smoothstep( 0.5 - dnorm, 0.5 + dnorm, norm ); #else if ( norm > 0.5 ) { discard; } #endif #endif #else #ifdef USE_ALPHA_TO_COVERAGE // artifacts appear on some hardware if a derivative is taken within a conditional float a = vUv.x; float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0; float len2 = a * a + b * b; float dlen = fwidth( len2 ); if ( abs( vUv.y ) > 1.0 ) { alpha = 1.0 - smoothstep( 1.0 - dlen, 1.0 + dlen, len2 ); } #else if ( abs( vUv.y ) > 1.0 ) { float a = vUv.x; float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0; float len2 = a * a + b * b; if ( len2 > 1.0 ) discard; } #endif #endif vec4 diffuseColor = vec4( diffuse, alpha ); #ifdef USE_COLOR #ifdef USE_LINE_COLOR_ALPHA diffuseColor *= vLineColor; #else diffuseColor.rgb *= vLineColor; #endif #endif #include gl_FragColor = diffuseColor; #include #include <${M>=154?"colorspace_fragment":"encodings_fragment"}> #include #include } `,clipping:!0}),this.isLineMaterial=!0,this.onBeforeCompile=function(){this.transparent?this.defines.USE_LINE_COLOR_ALPHA="1":delete this.defines.USE_LINE_COLOR_ALPHA},Object.defineProperties(this,{color:{enumerable:!0,get:function(){return this.uniforms.diffuse.value},set:function(e){this.uniforms.diffuse.value=e}},worldUnits:{enumerable:!0,get:function(){return"WORLD_UNITS"in this.defines},set:function(e){!0===e?this.defines.WORLD_UNITS="":delete this.defines.WORLD_UNITS}},linewidth:{enumerable:!0,get:function(){return this.uniforms.linewidth.value},set:function(e){this.uniforms.linewidth.value=e}},dashed:{enumerable:!0,get:function(){return"USE_DASH"in this.defines},set(e){!!e!="USE_DASH"in this.defines&&(this.needsUpdate=!0),!0===e?this.defines.USE_DASH="":delete this.defines.USE_DASH}},dashScale:{enumerable:!0,get:function(){return this.uniforms.dashScale.value},set:function(e){this.uniforms.dashScale.value=e}},dashSize:{enumerable:!0,get:function(){return this.uniforms.dashSize.value},set:function(e){this.uniforms.dashSize.value=e}},dashOffset:{enumerable:!0,get:function(){return this.uniforms.dashOffset.value},set:function(e){this.uniforms.dashOffset.value=e}},gapSize:{enumerable:!0,get:function(){return this.uniforms.gapSize.value},set:function(e){this.uniforms.gapSize.value=e}},opacity:{enumerable:!0,get:function(){return this.uniforms.opacity.value},set:function(e){this.uniforms.opacity.value=e}},resolution:{enumerable:!0,get:function(){return this.uniforms.resolution.value},set:function(e){this.uniforms.resolution.value.copy(e)}},alphaToCoverage:{enumerable:!0,get:function(){return"USE_ALPHA_TO_COVERAGE"in this.defines},set:function(e){!!e!="USE_ALPHA_TO_COVERAGE"in this.defines&&(this.needsUpdate=!0),!0===e?(this.defines.USE_ALPHA_TO_COVERAGE="",this.extensions.derivatives=!0):(delete this.defines.USE_ALPHA_TO_COVERAGE,this.extensions.derivatives=!1)}}}),this.setValues(e)}}let E=M>=125?"uv1":"uv2",F=new p.Vector4,b=new p.Vector3,w=new p.Vector3,I=new p.Vector4,R=new p.Vector4,G=new p.Vector4,D=new p.Vector3,T=new p.Matrix4,S=new p.Line3,H=new p.Vector3,L=new p.Box3,U=new p.Sphere,P=new p.Vector4;function _(e,t,n){return P.set(0,0,-t,1).applyMatrix4(e.projectionMatrix),P.multiplyScalar(1/P.w),P.x=r/n.width,P.y=r/n.height,P.applyMatrix4(e.projectionMatrixInverse),P.multiplyScalar(1/P.w),Math.abs(Math.max(P.x,P.y))}class J extends p.Mesh{constructor(e=new C,t=new x({color:0xffffff*Math.random()})){super(e,t),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){let e=this.geometry,t=e.attributes.instanceStart,r=e.attributes.instanceEnd,n=new Float32Array(2*t.count);for(let e=0,i=0,a=t.count;eh&&R.z>h)continue;if(I.z>h){let e=I.z-R.z,t=(I.z-h)/e;I.lerp(R,t)}else if(R.z>h){let e=R.z-I.z,t=(R.z-h)/e;R.lerp(I,t)}I.applyMatrix4(a),R.applyMatrix4(a),I.multiplyScalar(1/I.w),R.multiplyScalar(1/R.w),I.x*=s.x/2,I.y*=s.y/2,R.x*=s.x/2,R.y*=s.y/2,S.start.copy(I),S.start.z=0,S.end.copy(R),S.end.z=0;let l=S.closestPointToPointParameter(D,!0);S.at(l,H);let d=p.MathUtils.lerp(I.z,R.z,l),f=d>=-1&&d<=1,A=D.distanceTo(H)<.5*r;if(f&&A){S.start.fromBufferAttribute(c,n),S.end.fromBufferAttribute(u,n),S.start.applyMatrix4(o),S.end.applyMatrix4(o);let r=new p.Vector3,a=new p.Vector3;t.distanceSqToSegment(S.start,S.end,a,r),i.push({point:a,pointOnLine:r,distance:t.origin.distanceTo(a),object:e,face:null,faceIndex:n,uv:null,[E]:null})}}}(this,o,n))}}onBeforeRender(e){let t=this.material.uniforms;t&&t.resolution&&(e.getViewport(F),this.material.uniforms.resolution.value.set(F.z,F.w))}}class O extends C{constructor(){super(),this.isLineGeometry=!0,this.type="LineGeometry"}setPositions(e){let t=e.length-3,r=new Float32Array(2*t);for(let n=0;ne.size),m=s.useMemo(()=>a?new J:new j,[a]),[B]=s.useState(()=>new x),g=(null==r||null==(f=r[0])?void 0:f.length)===4?4:3,v=s.useMemo(()=>{let n=a?new C:new O,i=e.map(e=>{let t=Array.isArray(e);return e instanceof d.Vector3||e instanceof d.Vector4?[e.x,e.y,e.z]:e instanceof d.Vector2?[e.x,e.y,0]:t&&3===e.length?[e[0],e[1],e[2]]:t&&2===e.length?[e[0],e[1],0]:e});if(n.setPositions(i.flat()),r){t=0xffffff;let e=r.map(e=>e instanceof d.Color?e.toArray():e);n.setColors(e.flat(),g)}return n},[e,a,r,g]);return s.useLayoutEffect(()=>{m.computeLineDistances()},[e,m]),s.useLayoutEffect(()=>{o?B.defines.USE_DASH="":delete B.defines.USE_DASH,B.needsUpdate=!0},[o,B]),s.useEffect(()=>()=>{v.dispose(),B.dispose()},[v]),s.createElement("primitive",(0,u.default)({object:m,ref:h},l),s.createElement("primitive",{object:v,attach:"geometry"}),s.createElement("primitive",(0,u.default)({object:B,attach:"material",color:t,vertexColors:!!r,resolution:[p.width,p.height],linewidth:null!=(A=null!=n?n:i)?A:1,dashed:o,transparent:4===g},l)))});var N=d,K=e.i(67335);let Q=parseInt(d.REVISION.replace(/\D+/g,""));class X extends N.ShaderMaterial{constructor(){super({uniforms:{time:{value:0},pixelRatio:{value:1}},vertexShader:` uniform float pixelRatio; uniform float time; attribute float size; attribute float speed; attribute float opacity; attribute vec3 noise; attribute vec3 color; varying vec3 vColor; varying float vOpacity; void main() { vec4 modelPosition = modelMatrix * vec4(position, 1.0); modelPosition.y += sin(time * speed + modelPosition.x * noise.x * 100.0) * 0.2; modelPosition.z += cos(time * speed + modelPosition.x * noise.y * 100.0) * 0.2; modelPosition.x += cos(time * speed + modelPosition.x * noise.z * 100.0) * 0.2; vec4 viewPosition = viewMatrix * modelPosition; vec4 projectionPostion = projectionMatrix * viewPosition; gl_Position = projectionPostion; gl_PointSize = size * 25. * pixelRatio; gl_PointSize *= (1.0 / - viewPosition.z); vColor = color; vOpacity = opacity; } `,fragmentShader:` varying vec3 vColor; varying float vOpacity; void main() { float distanceToCenter = distance(gl_PointCoord, vec2(0.5)); float strength = 0.05 / distanceToCenter - 0.1; gl_FragColor = vec4(vColor, strength * vOpacity); #include #include <${Q>=154?"colorspace_fragment":"encodings_fragment"}> } `})}get time(){return this.uniforms.time.value}set time(e){this.uniforms.time.value=e}get pixelRatio(){return this.uniforms.pixelRatio.value}set pixelRatio(e){this.uniforms.pixelRatio.value=e}}let Y=e=>e&&e.constructor===Float32Array,W=e=>e instanceof N.Vector2||e instanceof N.Vector3||e instanceof N.Vector4,z=e=>Array.isArray(e)?e:W(e)?e.toArray():[e,e,e];function V(e,t,r){return s.useMemo(()=>{if(void 0!==t)if(Y(t))return t;else{if(t instanceof N.Color){let r=Array.from({length:3*e},()=>[t.r,t.g,t.b]).flat();return Float32Array.from(r)}if(W(t)||Array.isArray(t)){let r=Array.from({length:3*e},()=>z(t)).flat();return Float32Array.from(r)}return Float32Array.from({length:e},()=>t)}return Float32Array.from({length:e},r)},[t])}let Z=s.forwardRef(({noise:e=1,count:t=100,speed:r=1,opacity:n=1,scale:i=1,size:a,color:o,children:d,...h},f)=>{s.useMemo(()=>(0,K.extend)({SparklesImplMaterial:X}),[]);let A=s.useRef(null),p=(0,c.useThree)(e=>e.viewport.dpr),m=z(i),B=s.useMemo(()=>Float32Array.from(Array.from({length:t},()=>m.map(N.MathUtils.randFloatSpread)).flat()),[t,...m]),g=V(t,a,Math.random),C=V(t,n),v=V(t,r),y=V(3*t,e),M=V(void 0===o?3*t:t,Y(o)?o:new N.Color(o),()=>1);return(0,l.useFrame)(e=>{A.current&&A.current.material&&(A.current.material.time=e.clock.elapsedTime)}),s.useImperativeHandle(f,()=>A.current,[]),s.createElement("points",(0,u.default)({key:`particle-${t}-${JSON.stringify(i)}`},h,{ref:A}),s.createElement("bufferGeometry",null,s.createElement("bufferAttribute",{attach:"attributes-position",args:[B,3]}),s.createElement("bufferAttribute",{attach:"attributes-size",args:[g,1]}),s.createElement("bufferAttribute",{attach:"attributes-opacity",args:[C,1]}),s.createElement("bufferAttribute",{attach:"attributes-speed",args:[v,1]}),s.createElement("bufferAttribute",{attach:"attributes-color",args:[M,3]}),s.createElement("bufferAttribute",{attach:"attributes-noise",args:[y,3]})),d||s.createElement("sparklesImplMaterial",{transparent:!0,pixelRatio:p,depthWrite:!1}))});var q=e.i(60099),$=d;function ee(e){if("u">typeof TextDecoder)return new TextDecoder().decode(e);let t="";for(let r=0,n=e.length;r=2.0 are supported."));return}let o=new eQ(i,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});o.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e=0&&void 0===s[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}o.setExtensions(a),o.setPlugins(s),o.parse(r,n)}parseAsync(e,t){let r=this;return new Promise(function(n,i){r.parse(e,t,n,i)})}}function ei(){let e={};return{get:function(t){return e[t]},add:function(t,r){e[t]=r},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let ea={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 es{constructor(e){this.parser=e,this.name=ea.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let r=0,n=t.length;r=0))return null;else throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return t.loadTextureImage(e,i.source,a)}}class ev{constructor(e){this.parser=e,this.name=ea.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],s=n.images[a.source],o=r.textureLoader;if(s.uri){let e=r.options.manager.getHandler(s.uri);null!==e&&(o=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,a.source,o);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class ey{constructor(e){this.parser=e,this.name=ea.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],s=n.images[a.source],o=r.textureLoader;if(s.uri){let e=r.options.manager.getHandler(s.uri);null!==e&&(o=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,a.source,o);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class eM{constructor(e){this.name=ea.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,r=t.bufferViews[e];if(!r.extensions||!r.extensions[this.name])return null;{let e=r.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported)if(!(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return n.then(function(t){let r=e.byteOffset||0,n=e.byteLength||0,a=e.count,s=e.byteStride,o=new Uint8Array(t,r,n);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(a,s,o,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(a*s);return i.decodeGltfBuffer(new Uint8Array(t),a,s,o,e.mode,e.filter),t})})}}}class ex{constructor(e){this.name=ea.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,r=t.nodes[e];if(!r.extensions||!r.extensions[this.name]||void 0===r.mesh)return null;for(let e of t.meshes[r.mesh].primitives)if(e.mode!==eT.TRIANGLES&&e.mode!==eT.TRIANGLE_STRIP&&e.mode!==eT.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=r.extensions[this.name].attributes,i=[],a={};for(let e in n)i.push(this.parser.getDependency("accessor",n[e]).then(t=>(a[e]=t,a[e])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(e=>{let t=e.pop(),r=t.isGroup?t.children:[t],n=e[0].count,i=[];for(let e of r){let t=new $.Matrix4,r=new $.Vector3,s=new $.Quaternion,o=new $.Vector3(1,1,1),l=new $.InstancedMesh(e.geometry,e.material,n);for(let e=0;e=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},e_={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},eJ={CUBICSPLINE:void 0,LINEAR:$.InterpolateLinear,STEP:$.InterpolateDiscrete};function eO(e,t,r){for(let n in r.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=r.extensions[n])}function ej(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function ek(e){let t="",r=Object.keys(e).sort();for(let n=0,i=r.length;ntypeof navigator&&void 0!==navigator.userAgent&&(r=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),i=(n=navigator.userAgent.indexOf("Firefox")>-1)?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"u"{let r=this.associations.get(e);for(let[n,a]of(null!=r&&this.associations.set(t,r),e.children.entries()))i(a,t.children[n])};return i(r,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let r=0;r=2&&a.setY(t,d[e*o+1]),o>=3&&a.setZ(t,d[e*o+2]),o>=4&&a.setW(t,d[e*o+3]),o>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return a})}loadTexture(e){let t=this.json,r=this.options,n=t.textures[e].source,i=t.images[n],a=this.textureLoader;if(i.uri){let e=r.manager.getHandler(i.uri);null!==e&&(a=e)}return this.loadTextureImage(e,n,a)}loadTextureImage(e,t,r){let n=this,i=this.json,a=i.textures[e],s=i.images[t],o=(s.uri||s.bufferView)+":"+a.sampler;if(this.textureCache[o])return this.textureCache[o];let l=this.loadImageSource(t,r).then(function(t){t.flipY=!1,t.name=a.name||s.name||"",""===t.name&&"string"==typeof s.uri&&!1===s.uri.startsWith("data:image/")&&(t.name=s.uri);let r=(i.samplers||{})[a.sampler]||{};return t.magFilter=eH[r.magFilter]||$.LinearFilter,t.minFilter=eH[r.minFilter]||$.LinearMipmapLinearFilter,t.wrapS=eL[r.wrapS]||$.RepeatWrapping,t.wrapT=eL[r.wrapT]||$.RepeatWrapping,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[o]=l,l}loadImageSource(e,t){let r=this.json,n=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let i=r.images[e],a=self.URL||self.webkitURL,s=i.uri||"",o=!1;if(void 0!==i.bufferView)s=this.getDependency("bufferView",i.bufferView).then(function(e){o=!0;let t=new Blob([e],{type:i.mimeType});return s=a.createObjectURL(t)});else if(void 0===i.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let l=Promise.resolve(s).then(function(e){return new Promise(function(r,i){let a=r;!0===t.isImageBitmapLoader&&(a=function(e){let t=new $.Texture(e);t.needsUpdate=!0,r(t)}),t.load($.LoaderUtils.resolveURL(e,n.path),a,void 0,i)})}).then(function(e){var t;return!0===o&&a.revokeObjectURL(s),ej(e,i),e.userData.mimeType=i.mimeType||((t=i.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",s),e});return this.sourceCache[e]=l,l}assignTexture(e,t,r,n){let i=this;return this.getDependency("texture",r.index).then(function(a){if(!a)return null;if(void 0!==r.texCoord&&r.texCoord>0&&((a=a.clone()).channel=r.texCoord),i.extensions[ea.KHR_TEXTURE_TRANSFORM]){let e=void 0!==r.extensions?r.extensions[ea.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=i.associations.get(a);a=i.extensions[ea.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),i.associations.set(a,t)}}return void 0!==n&&("number"==typeof n&&(n=3001===n?et:er),"colorSpace"in a?a.colorSpace=n:a.encoding=n===et?3001:3e3),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,r=e.material,n=void 0===t.attributes.tangent,i=void 0!==t.attributes.color,a=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new $.PointsMaterial,$.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,t.sizeAttenuation=!1,this.cache.add(e,t)),r=t}else if(e.isLine){let e="LineBasicMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new $.LineBasicMaterial,$.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,this.cache.add(e,t)),r=t}if(n||i||a){let e="ClonedMaterial:"+r.uuid+":";n&&(e+="derivative-tangents:"),i&&(e+="vertex-colors:"),a&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=r.clone(),i&&(t.vertexColors=!0),a&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(r))),r=t}e.material=r}getMaterialType(){return $.MeshStandardMaterial}loadMaterial(e){let t,r=this,n=this.json,i=this.extensions,a=n.materials[e],s={},o=a.extensions||{},l=[];if(o[ea.KHR_MATERIALS_UNLIT]){let e=i[ea.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),l.push(e.extendParams(s,a,r))}else{let n=a.pbrMetallicRoughness||{};if(s.color=new $.Color(1,1,1),s.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;s.color.setRGB(e[0],e[1],e[2],er),s.opacity=e[3]}void 0!==n.baseColorTexture&&l.push(r.assignTexture(s,"map",n.baseColorTexture,et)),s.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,s.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(l.push(r.assignTexture(s,"metalnessMap",n.metallicRoughnessTexture)),l.push(r.assignTexture(s,"roughnessMap",n.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,s)})))}!0===a.doubleSided&&(s.side=$.DoubleSide);let c=a.alphaMode||"OPAQUE";if("BLEND"===c?(s.transparent=!0,s.depthWrite=!1):(s.transparent=!1,"MASK"===c&&(s.alphaTest=void 0!==a.alphaCutoff?a.alphaCutoff:.5)),void 0!==a.normalTexture&&t!==$.MeshBasicMaterial&&(l.push(r.assignTexture(s,"normalMap",a.normalTexture)),s.normalScale=new $.Vector2(1,1),void 0!==a.normalTexture.scale)){let e=a.normalTexture.scale;s.normalScale.set(e,e)}if(void 0!==a.occlusionTexture&&t!==$.MeshBasicMaterial&&(l.push(r.assignTexture(s,"aoMap",a.occlusionTexture)),void 0!==a.occlusionTexture.strength&&(s.aoMapIntensity=a.occlusionTexture.strength)),void 0!==a.emissiveFactor&&t!==$.MeshBasicMaterial){let e=a.emissiveFactor;s.emissive=new $.Color().setRGB(e[0],e[1],e[2],er)}return void 0!==a.emissiveTexture&&t!==$.MeshBasicMaterial&&l.push(r.assignTexture(s,"emissiveMap",a.emissiveTexture,et)),Promise.all(l).then(function(){let n=new t(s);return a.name&&(n.name=a.name),ej(n,a),r.associations.set(n,{materials:e}),a.extensions&&eO(i,n,a),n})}createUniqueName(e){let t=$.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,r=this.extensions,n=this.primitiveCache,i=[];for(let a=0,s=e.length;a0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let r=0,n=t.weights.length;r1?new $.Group:1===t.length?t[0]:new $.Object3D)!==t[0])for(let e=0,r=t.length;e{let t=new Map;for(let[e,r]of n.associations)(e instanceof $.Material||e instanceof $.Texture)&&t.set(e,r);return e.traverse(e=>{let r=n.associations.get(e);null!=r&&t.set(e,r)}),t})(i),i})}_createAnimationTracks(e,t,r,n,i){let a,s=[],o=e.name?e.name:e.uuid,l=[];switch(e_[i.path]===e_.weights?e.traverse(function(e){e.morphTargetInfluences&&l.push(e.name?e.name:e.uuid)}):l.push(o),e_[i.path]){case e_.weights:a=$.NumberKeyframeTrack;break;case e_.rotation:a=$.QuaternionKeyframeTrack;break;case e_.position:case e_.scale:a=$.VectorKeyframeTrack;break;default:a=1===r.itemSize?$.NumberKeyframeTrack:$.VectorKeyframeTrack}let c=void 0!==n.interpolation?eJ[n.interpolation]:$.InterpolateLinear,u=this._getArrayFromAccessor(r);for(let e=0,r=l.length;e{let r={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(e,r).then(t).catch(n)},r,n)}decodeDracoFile(e,t,r,n){let i={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!r};this.decodeGeometry(e,i).then(t)}decodeGeometry(e,t){let r;for(let e in t.attributeTypes){let r=t.attributeTypes[e];void 0!==r.BYTES_PER_ELEMENT&&(t.attributeTypes[e]=r.name)}let n=JSON.stringify(t);if(eW.has(e)){let t=eW.get(e);if(t.key===n)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i=this.workerNextTaskID++,a=e.byteLength,s=this._getWorker(i,a).then(n=>(r=n,new Promise((n,a)=>{r._callbacks[i]={resolve:n,reject:a},r.postMessage({type:"decode",id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return s.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),eW.set(e,{key:n,promise:s}),s}_createGeometry(e){let t=new eY.BufferGeometry;e.index&&t.setIndex(new eY.BufferAttribute(e.index.array,1));for(let r=0;r{r.load(e,t,void 0,n)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{let r=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let n=eV.toString(),i=["/* draco decoder */",r,"\n/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.lengtht._taskLoad?-1:1});let r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_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{let t=e.draco,r=new t.Decoder,s=new t.DecoderBuffer;s.Init(new Int8Array(i),i.byteLength);try{let e=function(e,t,r,n){var i,a,s;let o,l,c,u,d,h,f=n.attributeIDs,A=n.attributeTypes,p=t.GetEncodedGeometryType(r);if(p===e.TRIANGULAR_MESH)d=new e.Mesh,h=t.DecodeBufferToMesh(r,d);else if(p===e.POINT_CLOUD)d=new e.PointCloud,h=t.DecodeBufferToPointCloud(r,d);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!h.ok()||0===d.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+h.error_msg());let m={index:null,attributes:[]};for(let r in f){let i,a,s=self[A[r]];if(n.useUniqueIDs)a=f[r],i=t.GetAttributeByUniqueId(d,a);else{if(-1===(a=t.GetAttributeId(d,e[f[r]])))continue;i=t.GetAttribute(d,a)}m.attributes.push(function(e,t,r,n,i,a){let s=a.num_components(),o=r.num_points()*s,l=o*i.BYTES_PER_ELEMENT,c=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,i),u=e._malloc(l);t.GetAttributeDataArrayForAllPoints(r,a,c,l,u);let d=new i(e.HEAPF32.buffer,u,o).slice();return e._free(u),{name:n,array:d,itemSize:s}}(e,t,d,r,s,i))}return p===e.TRIANGULAR_MESH&&(i=e,a=t,s=d,o=3*s.num_faces(),l=4*o,c=i._malloc(l),a.GetTrianglesUInt32Array(s,l,c),u=new Uint32Array(i.HEAPF32.buffer,c,o).slice(),i._free(c),m.index={array:u,itemSize:1}),e.destroy(d),m}(t,r,s,a),i=e.attributes.map(e=>e.array.buffer);e.index&&i.push(e.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:e},i)}catch(e){console.error(e),self.postMessage({type:"error",id:n.id,error:e.message})}finally{t.destroy(s),t.destroy(r)}})}}}var eZ=e.i(60602);let eq=function(e){let t=new Map,r=new Map,n=e.clone();return function e(t,r,n){n(t,r);for(let i=0;i{let f={keys:l,deep:n,inject:o,castShadow:i,receiveShadow:a};if(Array.isArray(t=s.useMemo(()=>{if(!1===e&&!Array.isArray(t)){let e=!1;if(t.traverse(t=>{t.isSkinnedMesh&&(e=!0)}),e)return eq(t)}return t},[t,e])))return s.createElement("group",(0,u.default)({},c,{ref:h}),t.map(e=>s.createElement(e$,(0,u.default)({key:e.uuid,object:e},f))),r);let{children:A,...p}=function(e,{keys:t=["near","far","color","distance","decay","penumbra","angle","intensity","skeleton","visible","castShadow","receiveShadow","morphTargetDictionary","morphTargetInfluences","name","geometry","material","position","rotation","scale","up","userData","bindMode","bindMatrix","bindMatrixInverse","skeleton"],deep:r,inject:n,castShadow:i,receiveShadow:a}){let o={};for(let r of t)o[r]=e[r];return r&&(o.geometry&&"materialsOnly"!==r&&(o.geometry=o.geometry.clone()),o.material&&"geometriesOnly"!==r&&(o.material=o.material.clone())),n&&(o="function"==typeof n?{...o,children:n(e)}:s.isValidElement(n)?{...o,children:n}:{...o,...n}),e instanceof d.Mesh&&(i&&(o.castShadow=!0),a&&(o.receiveShadow=!0)),o}(t,f),m=t.type[0].toLowerCase()+t.type.slice(1);return s.createElement(m,(0,u.default)({},p,c,{ref:h}),t.children.map(e=>"Bone"===e.type?s.createElement("primitive",(0,u.default)({key:e.uuid,object:e},f)):s.createElement(e$,(0,u.default)({key:e.uuid,object:e},f,{isChild:!0}))),r,A)}),e0=null,e1="https://www.gstatic.com/draco/versioned/decoders/1.5.5/";function e2(e=!0,t=!0,r){return i=>{r&&r(i),e&&(e0||(e0=new ez),e0.setDecoderPath("string"==typeof e?e:e1),i.setDRACOLoader(e0)),t&&i.setMeshoptDecoder((()=>{let e;if(n)return n;let t=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),r=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if("object"!=typeof WebAssembly)return{supported:!1};let i="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";WebAssembly.validate(t)&&(i="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");let a=WebAssembly.instantiate(function(e){let t=new Uint8Array(e.length);for(let r=0;r96?n-71:n>64?n-65:n>47?n+4:n>46?63:62}let n=0;for(let i=0;i{(e=t.instance).exports.__wasm_call_ctors()});function s(t,r,n,i,a,s){let o=e.exports.sbrk,l=n+3&-4,c=o(l*i),u=o(a.length),d=new Uint8Array(e.exports.memory.buffer);d.set(a,u);let h=t(c,n,i,u,a.length);if(0===h&&s&&s(c,l,i),r.set(d.subarray(c,c+n*i)),o(c-o(0)),0!==h)throw Error(`Malformed buffer data: ${h}`)}let o={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return n={ready:a,supported:!0,decodeVertexBuffer(t,r,n,i,a){s(e.exports.meshopt_decodeVertexBuffer,t,r,n,i,e.exports[o[a]])},decodeIndexBuffer(t,r,n,i){s(e.exports.meshopt_decodeIndexBuffer,t,r,n,i)},decodeIndexSequence(t,r,n,i){s(e.exports.meshopt_decodeIndexSequence,t,r,n,i)},decodeGltfBuffer(t,r,n,i,a,c){s(e.exports[l[a]],t,r,n,i,e.exports[o[c]])}}})())}}let e9=(e,t,r,n)=>(0,eZ.useLoader)(en,e,e2(t,r,n));e9.preload=(e,t,r,n)=>eZ.useLoader.preload(en,e,e2(t,r,n)),e9.clear=e=>eZ.useLoader.clear(en,e),e9.setDecoderPath=e=>{e1=e};let e3={uniforms:{tDiffuse:{value:null},h:{value:1/512}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); } `,fragmentShader:` uniform sampler2D tDiffuse; uniform float h; varying vec2 vUv; void main() { vec4 sum = vec4( 0.0 ); sum += texture2D( tDiffuse, vec2( vUv.x - 4.0 * h, vUv.y ) ) * 0.051; sum += texture2D( tDiffuse, vec2( vUv.x - 3.0 * h, vUv.y ) ) * 0.0918; sum += texture2D( tDiffuse, vec2( vUv.x - 2.0 * h, vUv.y ) ) * 0.12245; sum += texture2D( tDiffuse, vec2( vUv.x - 1.0 * h, vUv.y ) ) * 0.1531; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633; sum += texture2D( tDiffuse, vec2( vUv.x + 1.0 * h, vUv.y ) ) * 0.1531; sum += texture2D( tDiffuse, vec2( vUv.x + 2.0 * h, vUv.y ) ) * 0.12245; sum += texture2D( tDiffuse, vec2( vUv.x + 3.0 * h, vUv.y ) ) * 0.0918; sum += texture2D( tDiffuse, vec2( vUv.x + 4.0 * h, vUv.y ) ) * 0.051; gl_FragColor = sum; } `},e8={uniforms:{tDiffuse:{value:null},v:{value:1/512}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); } `,fragmentShader:` uniform sampler2D tDiffuse; uniform float v; varying vec2 vUv; void main() { vec4 sum = vec4( 0.0 ); sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 4.0 * v ) ) * 0.051; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 3.0 * v ) ) * 0.0918; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 2.0 * v ) ) * 0.12245; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 1.0 * v ) ) * 0.1531; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 1.0 * v ) ) * 0.1531; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 2.0 * v ) ) * 0.12245; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 3.0 * v ) ) * 0.0918; sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 4.0 * v ) ) * 0.051; gl_FragColor = sum; } `},e6=s.forwardRef(({scale:e=10,frames:t=1/0,opacity:r=1,width:n=1,height:i=1,blur:a=1,near:o=0,far:h=10,resolution:f=512,smooth:A=!0,color:p="#000000",depthWrite:m=!1,renderOrder:B,...g},C)=>{let v,y,M=s.useRef(null),x=(0,c.useThree)(e=>e.scene),E=(0,c.useThree)(e=>e.gl),F=s.useRef(null);n*=Array.isArray(e)?e[0]:e||1,i*=Array.isArray(e)?e[1]:e||1;let[b,w,I,R,G,D,T]=s.useMemo(()=>{let e=new d.WebGLRenderTarget(f,f),t=new d.WebGLRenderTarget(f,f);t.texture.generateMipmaps=e.texture.generateMipmaps=!1;let r=new d.PlaneGeometry(n,i).rotateX(Math.PI/2),a=new d.Mesh(r),s=new d.MeshDepthMaterial;s.depthTest=s.depthWrite=!1,s.onBeforeCompile=e=>{e.uniforms={...e.uniforms,ucolor:{value:new d.Color(p)}},e.fragmentShader=e.fragmentShader.replace("void main() {",`uniform vec3 ucolor; void main() { `),e.fragmentShader=e.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );")};let o=new d.ShaderMaterial(e3),l=new d.ShaderMaterial(e8);return l.depthTest=o.depthTest=!1,[e,r,s,a,o,l,t]},[f,n,i,e,p]),S=e=>{R.visible=!0,R.material=G,G.uniforms.tDiffuse.value=b.texture,G.uniforms.h.value=e/256,E.setRenderTarget(T),E.render(R,F.current),R.material=D,D.uniforms.tDiffuse.value=T.texture,D.uniforms.v.value=e/256,E.setRenderTarget(b),E.render(R,F.current),R.visible=!1},H=0;return(0,l.useFrame)(()=>{F.current&&(t===1/0||HM.current,[]),s.createElement("group",(0,u.default)({"rotation-x":Math.PI/2},g,{ref:M}),s.createElement("mesh",{renderOrder:B,geometry:w,scale:[1,-1,1],rotation:[-Math.PI/2,0,0]},s.createElement("meshBasicMaterial",{transparent:!0,map:b.texture,opacity:r,depthWrite:m})),s.createElement("orthographicCamera",{ref:F,args:[-n/2,n/2,i/2,-i/2,o,h]}))});var e4=e.i(44208),e5=e.i(24205),e7=d;class te extends e7.Mesh{constructor(e,t){var r,n;const i=(e=>e&&e.isCubeTexture)(e),a=Math.floor(Math.log2((null!=(n=i?null==(r=e.image[0])?void 0:r.width:e.image.width)?n:1024)/4)),s=Math.pow(2,a),o=3*Math.max(s,112),l=` varying vec3 vWorldPosition; void main() { vec4 worldPosition = ( modelMatrix * vec4( position, 1.0 ) ); vWorldPosition = worldPosition.xyz; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); } `,c=[i?"#define ENVMAP_TYPE_CUBE":"",`#define CUBEUV_TEXEL_WIDTH ${1/o}`,`#define CUBEUV_TEXEL_HEIGHT ${1/(4*s)}`,`#define CUBEUV_MAX_MIP ${a}.0`].join("\n")+` #define ENVMAP_TYPE_CUBE_UV varying vec3 vWorldPosition; uniform float radius; uniform float height; uniform float angle; #ifdef ENVMAP_TYPE_CUBE uniform samplerCube map; #else uniform sampler2D map; #endif // From: https://www.shadertoy.com/view/4tsBD7 float diskIntersectWithBackFaceCulling( vec3 ro, vec3 rd, vec3 c, vec3 n, float r ) { float d = dot ( rd, n ); if( d > 0.0 ) { return 1e6; } vec3 o = ro - c; float t = - dot( n, o ) / d; vec3 q = o + rd * t; return ( dot( q, q ) < r * r ) ? t : 1e6; } // From: https://www.iquilezles.org/www/articles/intersectors/intersectors.htm float sphereIntersect( vec3 ro, vec3 rd, vec3 ce, float ra ) { vec3 oc = ro - ce; float b = dot( oc, rd ); float c = dot( oc, oc ) - ra * ra; float h = b * b - c; if( h < 0.0 ) { return -1.0; } h = sqrt( h ); return - b + h; } vec3 project() { vec3 p = normalize( vWorldPosition ); vec3 camPos = cameraPosition; camPos.y -= height; float intersection = sphereIntersect( camPos, p, vec3( 0.0 ), radius ); if( intersection > 0.0 ) { vec3 h = vec3( 0.0, - height, 0.0 ); float intersection2 = diskIntersectWithBackFaceCulling( camPos, p, h, vec3( 0.0, 1.0, 0.0 ), radius ); p = ( camPos + min( intersection, intersection2 ) * p ) / radius; } else { p = vec3( 0.0, 1.0, 0.0 ); } return p; } #include #include void main() { vec3 projectedWorldPosition = project(); #ifdef ENVMAP_TYPE_CUBE vec3 outcolor = textureCube( map, projectedWorldPosition ).rgb; #else vec3 direction = normalize( projectedWorldPosition ); vec2 uv = equirectUv( direction ); vec3 outcolor = texture2D( map, uv ).rgb; #endif gl_FragColor = vec4( outcolor, 1.0 ); #include #include <${M>=154?"colorspace_fragment":"encodings_fragment"}> } `,u={map:{value:e},height:{value:(null==t?void 0:t.height)||15},radius:{value:(null==t?void 0:t.radius)||100}};super(new e7.IcosahedronGeometry(1,16),new e7.ShaderMaterial({uniforms:u,fragmentShader:c,vertexShader:l,side:e7.DoubleSide}))}set radius(e){this.material.uniforms.radius.value=e}get radius(){return this.material.uniforms.radius.value}set height(e){this.material.uniforms.height.value=e}get height(){return this.material.uniforms.height.value}}var tt=d;class tr extends tt.DataTextureLoader{constructor(e){super(e),this.type=tt.HalfFloatType}parse(e){let t,r,n,i=function(e,t){switch(e){case 1:throw Error("THREE.RGBELoader: Read Error: "+(t||""));case 2:throw Error("THREE.RGBELoader: Write Error: "+(t||""));case 3:throw Error("THREE.RGBELoader: Bad File Format: "+(t||""));default:throw Error("THREE.RGBELoader: Memory Error: "+(t||""))}},a=function(e,t,r){t=t||1024;let n=e.pos,i=-1,a=0,s="",o=String.fromCharCode.apply(null,new Uint16Array(e.subarray(n,n+128)));for(;0>(i=o.indexOf("\n"))&&a=e.byteLength)&&(t=a(e))||i(1,"no header found"),(r=t.match(/^#\?(\S+)/))||i(3,"bad initial token"),c.valid|=1,c.programtype=r[1],c.string+=t+"\n";!1!==(t=a(e));){if(c.string+=t+"\n","#"===t.charAt(0)){c.comments+=t+"\n";continue}if((r=t.match(n))&&(c.gamma=parseFloat(r[1])),(r=t.match(s))&&(c.exposure=parseFloat(r[1])),(r=t.match(o))&&(c.valid|=2,c.format=r[1]),(r=t.match(l))&&(c.valid|=4,c.height=parseInt(r[1],10),c.width=parseInt(r[2],10)),2&c.valid&&4&c.valid)break}return 2&c.valid||i(3,"missing format specifier"),4&c.valid||i(3,"missing image size specifier"),c}(s),l=o.width,c=o.height,u=function(e,t,r){if(t<8||t>32767||2!==e[0]||2!==e[1]||128&e[2])return new Uint8Array(e);t!==(e[2]<<8|e[3])&&i(3,"wrong scanline width");let n=new Uint8Array(4*t*r);n.length||i(4,"unable to allocate buffer space");let a=0,s=0,o=4*t,l=new Uint8Array(4),c=new Uint8Array(o),u=r;for(;u>0&&se.byteLength&&i(1),l[0]=e[s++],l[1]=e[s++],l[2]=e[s++],l[3]=e[s++],(2!=l[0]||2!=l[1]||(l[2]<<8|l[3])!=t)&&i(3,"bad rgbe scanline format");let r=0,d;for(;r128;if(t&&(d-=128),(0===d||r+d>o)&&i(3,"bad scanline data"),t){let t=e[s++];for(let e=0;e>>1|(21845&tv)<<1;ty=(61680&(ty=(52428&ty)>>>2|(13107&ty)<<2))>>>4|(3855&ty)<<4,tC[tv]=((65280&ty)>>>8|(255&ty)<<8)>>>1}for(var tM=function(e,t,r){for(var n,i=e.length,a=0,s=new to(t);a>>l]=c}else for(a=0,n=new to(i);a>>15-e[a]);return n},tx=new ts(288),tv=0;tv<144;++tv)tx[tv]=8;for(var tv=144;tv<256;++tv)tx[tv]=9;for(var tv=256;tv<280;++tv)tx[tv]=7;for(var tv=280;tv<288;++tv)tx[tv]=8;for(var tE=new ts(32),tv=0;tv<32;++tv)tE[tv]=5;var tF=tM(tx,9,0),tb=tM(tx,9,1),tw=tM(tE,5,0),tI=tM(tE,5,1),tR=function(e){for(var t=e[0],r=1;rt&&(t=e[r]);return t},tG=function(e,t,r){var n=t/8|0;return(e[n]|e[n+1]<<8)>>(7&t)&r},tD=function(e,t){var r=t/8|0;return(e[r]|e[r+1]<<8|e[r+2]<<16)>>(7&t)},tT=function(e){return(e/8|0)+(7&e&&1)},tS=function(e,t,r){(null==t||t<0)&&(t=0),(null==r||r>e.length)&&(r=e.length);var n=new(e instanceof to?to:e instanceof tl?tl:ts)(r-t);return n.set(e.subarray(t,r)),n},tH=function(e,t,r){var n=e.length;if(!n||r&&!r.l&&n<5)return t||new ts(0);var i=!t||r,a=!r||r.i;r||(r={}),t||(t=new ts(3*n));var s=function(e){var r=t.length;if(e>r){var n=new ts(Math.max(2*r,e));n.set(t),t=n}},o=r.f||0,l=r.p||0,c=r.b||0,u=r.l,d=r.d,h=r.m,f=r.n,A=8*n;do{if(!u){r.f=o=tG(e,l,1);var p=tG(e,l+1,3);if(l+=3,p)if(1==p)u=tb,d=tI,h=9,f=5;else if(2==p){var m=tG(e,l,31)+257,B=tG(e,l+10,15)+4,g=m+tG(e,l+5,31)+1;l+=14;for(var C=new ts(g),v=new ts(19),y=0;y>>4;if(b<16)C[y++]=b;else{var w=0,I=0;for(16==b?(I=3+tG(e,l,3),l+=2,w=C[y-1]):17==b?(I=3+tG(e,l,7),l+=3):18==b&&(I=11+tG(e,l,127),l+=7);I--;)C[y++]=w}}var R=C.subarray(0,m),G=C.subarray(m);h=tR(R),f=tR(G),u=tM(R,h,1),d=tM(G,f,1)}else throw"invalid block type";else{var b=tT(l)+4,D=e[b-4]|e[b-3]<<8,T=b+D;if(T>n){if(a)throw"unexpected EOF";break}i&&s(c+D),t.set(e.subarray(b,T),c),r.b=c+=D,r.p=l=8*T;continue}if(l>A){if(a)throw"unexpected EOF";break}}i&&s(c+131072);for(var S=(1<>>4;if((l+=15&w)>A){if(a)throw"unexpected EOF";break}if(!w)throw"invalid length/literal";if(U<256)t[c++]=U;else if(256==U){L=l,u=null;break}else{var P=U-254;if(U>264){var y=U-257,_=tc[y];P=tG(e,l,(1<<_)-1)+tA[y],l+=_}var J=d[tD(e,l)&H],O=J>>>4;if(!J)throw"invalid distance";l+=15&J;var G=tB[O];if(O>3){var _=tu[O];G+=tD(e,l)&(1<<_)-1,l+=_}if(l>A){if(a)throw"unexpected EOF";break}i&&s(c+131072);for(var j=c+P;c>>8},tU=function(e,t,r){r<<=7&t;var n=t/8|0;e[n]|=r,e[n+1]|=r>>>8,e[n+2]|=r>>>16},tP=function(e,t){for(var r=[],n=0;nh&&(h=a[n].s);var f=new to(h+1),A=t_(r[u-1],f,0);if(A>t){var n=0,p=0,m=A-t,B=1<t)p+=B-(1<>>=m;p>0;){var C=a[n].s;f[C]=0&&p;--n){var v=a[n].s;f[v]==t&&(--f[v],++p)}A=t}return[new ts(f),A]},t_=function(e,t,r){return -1==e.s?Math.max(t_(e.l,t,r+1),t_(e.r,t,r+1)):t[e.s]=r},tJ=function(e){for(var t=e.length;t&&!e[--t];);for(var r=new to(++t),n=0,i=e[0],a=1,s=function(e){r[n++]=e},o=1;o<=t;++o)if(e[o]==i&&o!=t)++a;else{if(!i&&a>2){for(;a>138;a-=138)s(32754);a>2&&(s(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(s(i),--a;a>6;a-=6)s(8304);a>2&&(s(a-3<<5|8208),a=0)}for(;a--;)s(i);a=1,i=e[o]}return[r.subarray(0,n),t]},tO=function(e,t){for(var r=0,n=0;n>>8,e[i+2]=255^e[i],e[i+3]=255^e[i+1];for(var a=0;a4&&!G[td[T-1]];--T);var S=c+5<<3,H=tO(i,tx)+tO(a,tE)+s,L=tO(i,m)+tO(a,C)+s+14+3*T+tO(w,G)+(2*w[16]+3*w[17]+7*w[18]);if(S<=H&&S<=L)return tj(t,u,e.subarray(l,l+c));if(tL(t,u,1+(L15&&(tL(t,u,J[I]>>>5&127),u+=J[I]>>>12)}}else d=tF,h=tx,f=tw,A=tE;for(var I=0;I255){var O=n[I]>>>18&31;tU(t,u,d[O+257]),u+=h[O+257],O>7&&(tL(t,u,n[I]>>>23&31),u+=tc[O]);var j=31&n[I];tU(t,u,f[j]),u+=A[j],j>3&&(tU(t,u,n[I]>>>5&8191),u+=tu[j])}else tU(t,u,d[n[I]]),u+=h[n[I]];return tU(t,u,d[256]),u+h[256]},tN=new tl([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),tK=new ts(0),tQ=function(e,t,r,n,i,a){var s=e.length,o=new ts(n+s+5*(1+Math.ceil(s/7e3))+i),l=o.subarray(n,o.length-i),c=0;if(!t||s<8)for(var u=0;u<=s;u+=65535){var d=u+65535;d>>13,A=8191&h,p=(1<7e3||b>24576)&&T>423){c=tk(e,l,0,y,M,x,F,b,I,u-I,c),b=E=F=0,I=u;for(var S=0;S<286;++S)M[S]=0;for(var S=0;S<30;++S)x[S]=0}var H=2,L=0,U=A,P=G-D&32767;if(T>2&&R==v(u-P))for(var _=Math.min(f,T)-1,J=Math.min(32767,u),O=Math.min(258,T);P<=J&&--U&&G!=D;){if(e[u+H]==e[u+H-P]){for(var j=0;jH){if(H=j,L=P,j>_)break;for(var k=Math.min(P,j-2),N=0,S=0;SN&&(N=X,D=K)}}}D=m[G=D],P+=G-D+32768&32767}if(L){y[b++]=0x10000000|tp[H]<<18|tg[L];var Y=31&tp[H],W=31&tg[L];F+=tc[Y]+tu[W],++M[257+Y],++x[W],w=u+H,++E}else y[b++]=e[u],++M[e[u]]}}c=tk(e,l,a,y,M,x,F,b,I,u-I,c),!a&&7&c&&(c=tj(l,c+1,tK))}return tS(o,0,n+tT(c)+i)},tX=function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var r=t,n=9;--n;)r=(1&r&&-0x12477ce0)^r>>>1;e[t]=r}return e}(),tY=function(){var e=-1;return{p:function(t){for(var r=e,n=0;n>>8;e=r},d:function(){return~e}}},tW=function(){var e=1,t=0;return{p:function(r){for(var n=e,i=t,a=r.length,s=0;s!=a;){for(var o=Math.min(s+2655,a);s>16),i=(65535&i)+15*(i>>16)}e=n,t=i},d:function(){return e%=65521,t%=65521,(255&e)<<24|e>>>8<<16|(255&t)<<8|t>>>8}}},tz=function(e,t,r,n,i){return tQ(e,null==t.level?6:t.level,null==t.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(e.length)))):12+t.mem,r,n,!i)},tV=function(e,t){var r={};for(var n in e)r[n]=e[n];for(var n in t)r[n]=t[n];return r},tZ=function(e,t,r){for(var n=e(),i=e.toString(),a=i.slice(i.indexOf("[")+1,i.lastIndexOf("]")).replace(/ /g,"").split(","),s=0;s>>0},rt=function(e,t){return re(e,t)+0x100000000*re(e,t+4)},rr=function(e,t,r){for(;r;++t)e[t]=r,r>>>=8},rn=function(e,t){var r=t.filename;if(e[0]=31,e[1]=139,e[2]=8,e[8]=t.level<2?4:2*(9==t.level),e[9]=3,0!=t.mtime&&rr(e,4,Math.floor(new Date(t.mtime||Date.now())/1e3)),r){e[3]=8;for(var n=0;n<=r.length;++n)e[n+10]=r.charCodeAt(n)}},ri=function(e){if(31!=e[0]||139!=e[1]||8!=e[2])throw"invalid gzip data";var t=e[3],r=10;4&t&&(r+=e[10]|(e[11]<<8)+2);for(var n=(t>>3&1)+(t>>4&1);n>0;n-=!e[r++]);return r+(2&t)},ra=function(e){var t=e.length;return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0},rs=function(e){return 10+(e.filename&&e.filename.length+1||0)},ro=function(e,t){var r=t.level,n=0==r?0:r<6?1:9==r?3:2;e[0]=120,e[1]=n<<6|(n?32-2*n:1)},rl=function(e){if((15&e[0])!=8||e[0]>>>4>7||(e[0]<<8|e[1])%31)throw"invalid zlib data";if(32&e[1])throw"invalid zlib data: preset dictionaries not supported"};function rc(e,t){return t||"function"!=typeof e||(t=e,e={}),this.ondata=t,e}var ru=function(){function e(e,t){t||"function"!=typeof e||(t=e,e={}),this.ondata=t,this.o=e||{}}return e.prototype.p=function(e,t){this.ondata(tz(e,this.o,0,0,!t),t)},e.prototype.push=function(e,t){if(this.d)throw"stream finished";if(!this.ondata)throw"no stream handler";this.d=t,this.p(e,t||!1)},e}(),rd=function(e,t){t5([t2,function(){return[t4,ru]}],this,rc.call(this,e,t),function(e){onmessage=t4(new ru(e.data))},6)};function rh(e,t){return tz(e,t||{},0,0)}var rf=function(){function e(e){this.s={},this.p=new ts(0),this.ondata=e}return e.prototype.e=function(e){if(this.d)throw"stream finished";if(!this.ondata)throw"no stream handler";var t=this.p.length,r=new ts(t+e.length);r.set(this.p),r.set(e,t),this.p=r},e.prototype.c=function(e){this.d=this.s.i=e||!1;var t=this.s.b,r=tH(this.p,this.o,this.s);this.ondata(tS(r,t,this.s.b),this.d),this.o=tS(r,this.s.b-32768),this.s.b=this.o.length,this.p=tS(this.p,this.s.p/8|0),this.s.p&=7},e.prototype.push=function(e,t){this.e(e),this.c(t)},e}(),rA=function(e){this.ondata=e,t5([t1,function(){return[t4,rf]}],this,0,function(){onmessage=t4(new rf)},7)};function rp(e,t){return tH(e,t)}(function(){function e(e,t){this.c=tY(),this.l=0,this.v=1,ru.call(this,e,t)}e.prototype.push=function(e,t){ru.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){this.c.p(e),this.l+=e.length;var r=tz(e,this.o,this.v&&rs(this.o),t&&8,!t);this.v&&(rn(r,this.o),this.v=0),t&&(rr(r,r.length-8,this.c.d()),rr(r,r.length-4,this.l)),this.ondata(r,t)}})();var rm=function(){function e(e){this.v=1,rf.call(this,e)}return e.prototype.push=function(e,t){if(rf.prototype.e.call(this,e),this.v){var r=this.p.length>3?ri(this.p):4;if(r>=this.p.length&&!t)return;this.p=this.p.subarray(r),this.v=0}if(t){if(this.p.length<8)throw"invalid gzip stream";this.p=this.p.subarray(0,-8)}rf.prototype.c.call(this,t)},e}(),rB=function(e){this.ondata=e,t5([t1,t9,function(){return[t4,rf,rm]}],this,0,function(){onmessage=t4(new rm)},9)},rg=(function(){function e(e,t){this.c=tW(),this.v=1,ru.call(this,e,t)}e.prototype.push=function(e,t){ru.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){this.c.p(e);var r=tz(e,this.o,this.v&&2,t&&4,!t);this.v&&(ro(r,this.o),this.v=0),t&&rr(r,r.length-4,this.c.d()),this.ondata(r,t)}}(),function(){function e(e){this.v=1,rf.call(this,e)}return e.prototype.push=function(e,t){if(rf.prototype.e.call(this,e),this.v){if(this.p.length<2&&!t)return;this.p=this.p.subarray(2),this.v=0}if(t){if(this.p.length<4)throw"invalid zlib stream";this.p=this.p.subarray(0,-4)}rf.prototype.c.call(this,t)},e}()),rC=function(e){this.ondata=e,t5([t1,t3,function(){return[t4,rf,rg]}],this,0,function(){onmessage=t4(new rg)},11)};function rv(e,t){return tH((rl(e),e.subarray(2,-4)),t)}var ry=function(){function e(e){this.G=rm,this.I=rf,this.Z=rg,this.ondata=e}return e.prototype.push=function(e,t){if(!this.ondata)throw"no stream handler";if(this.s)this.s.push(e,t);else{if(this.p&&this.p.length){var r=new ts(this.p.length+e.length);r.set(this.p),r.set(e,this.p.length)}else this.p=e;if(this.p.length>2){var n=this,i=function(){n.ondata.apply(n,arguments)};this.s=31==this.p[0]&&139==this.p[1]&&8==this.p[2]?new this.G(i):(15&this.p[0])!=8||this.p[0]>>4>7||(this.p[0]<<8|this.p[1])%31?new this.I(i):new this.Z(i),this.s.push(this.p,t),this.p=null}}},e}();(function(e){this.G=rB,this.I=rA,this.Z=rC,this.ondata=e}).prototype.push=function(e,t){ry.prototype.push.call(this,e,t)};var rM="u">typeof TextEncoder&&new TextEncoder,rx="u">typeof TextDecoder&&new TextDecoder,rE=0;try{rx.decode(tK,{stream:!0}),rE=1}catch(e){}var rF=function(e){for(var t="",r=0;;){var n=e[r++],i=(n>127)+(n>223)+(n>239);if(r+i>e.length)return[t,tS(e,r-1)];i?3==i?t+=String.fromCharCode(55296|(n=((15&n)<<18|(63&e[r++])<<12|(63&e[r++])<<6|63&e[r++])-65536)>>10,56320|1023&n):1&i?t+=String.fromCharCode((31&n)<<6|63&e[r++]):t+=String.fromCharCode((15&n)<<12|(63&e[r++])<<6|63&e[r++]):t+=String.fromCharCode(n)}};function rb(e,t){if(t){for(var r=new ts(e.length),n=0;n>1)),s=0,o=function(e){a[s++]=e},n=0;na.length){var l=new ts(s+8+(i-n<<1));l.set(a),a=l}var c=e.charCodeAt(n);c<128||t?o(c):(c<2048?o(192|c>>6):(c>55295&&c<57344?(o(240|(c=65536+(1047552&c)|1023&e.charCodeAt(++n))>>18),o(128|c>>12&63)):o(224|c>>12),o(128|c>>6&63)),o(128|63&c))}return tS(a,0,s)}(function(e){this.ondata=e,rE?this.t=new TextDecoder:this.p=tK}).prototype.push=function(e,t){if(!this.ondata)throw"no callback";if(t=!!t,this.t){if(this.ondata(this.t.decode(e,{stream:!0}),t),t){if(this.t.decode().length)throw"invalid utf-8 data";this.t=null}return}if(!this.p)throw"stream finished";var r=new ts(this.p.length+e.length);r.set(this.p),r.set(e,this.p.length);var n=rF(r),i=n[0],a=n[1];if(t){if(a.length)throw"invalid utf-8 data";this.p=null}else this.p=a;this.ondata(i,t)},(function(e){this.ondata=e}).prototype.push=function(e,t){if(!this.ondata)throw"no callback";if(this.d)throw"stream finished";this.ondata(rb(e),this.d=t||!1)};var rw=function(e){return 1==e?3:e<6?2:+(9==e)},rI=function(e,t){for(;1!=t7(e,t);t+=4+t7(e,t+2));return[rt(e,t+12),rt(e,t+4),rt(e,t+20)]},rR=function(e){var t=0;if(e)for(var r in e){var n=e[r].length;if(n>65535)throw"extra field too long";t+=n+4}return t},rG=function(e,t,r,n,i,a,s,o){var l=n.length,c=r.extra,u=o&&o.length,d=rR(c);rr(e,t,null!=s?0x2014b50:0x4034b50),t+=4,null!=s&&(e[t++]=20,e[t++]=r.os),e[t]=20,t+=2,e[t++]=r.flag<<1|(null==a&&8),e[t++]=i&&8,e[t++]=255&r.compression,e[t++]=r.compression>>8;var h=new Date(null==r.mtime?Date.now():r.mtime),f=h.getFullYear()-1980;if(f<0||f>119)throw"date not in range 1980-2099";if(rr(e,t,f<<25|h.getMonth()+1<<21|h.getDate()<<16|h.getHours()<<11|h.getMinutes()<<5|h.getSeconds()>>>1),t+=4,null!=a&&(rr(e,t,r.crc),rr(e,t+4,a),rr(e,t+8,r.size)),rr(e,t+12,l),rr(e,t+14,d),t+=16,null!=s&&(rr(e,t,u),rr(e,t+6,r.attrs),rr(e,t+10,s),t+=14),e.set(n,t),t+=l,d)for(var A in c){var p=c[A],m=p.length;rr(e,t,+A),rr(e,t+2,m),e.set(p,t+4),t+=4+m}return u&&(e.set(o,t),t+=u),t},rD=function(e,t,r,n,i){rr(e,t,0x6054b50),rr(e,t+8,r),rr(e,t+10,r),rr(e,t+12,n),rr(e,t+16,i)},rT=function(){function e(e){this.filename=e,this.c=tY(),this.size=0,this.compression=0}return e.prototype.process=function(e,t){this.ondata(null,e,t)},e.prototype.push=function(e,t){if(!this.ondata)throw"no callback - add to ZIP archive before pushing";this.c.p(e),this.size+=e.length,t&&(this.crc=this.c.d()),this.process(e,t||!1)},e}();function rS(e,t){var r=this;t||(t={}),rT.call(this,e),this.d=new ru(t,function(e,t){r.ondata(null,e,t)}),this.compression=8,this.flag=rw(t.level)}function rH(e,t){var r=this;t||(t={}),rT.call(this,e),this.d=new rd(t,function(e,t,n){r.ondata(e,t,n)}),this.compression=8,this.flag=rw(t.level),this.terminate=this.d.terminate}function rL(e){this.ondata=e,this.u=[],this.d=1}rS.prototype.process=function(e,t){try{this.d.push(e,t)}catch(e){this.ondata(e,null,t)}},rS.prototype.push=function(e,t){rT.prototype.push.call(this,e,t)},rH.prototype.process=function(e,t){this.d.push(e,t)},rH.prototype.push=function(e,t){rT.prototype.push.call(this,e,t)},rL.prototype.add=function(e){var t=this;if(2&this.d)throw"stream finished";var r=rb(e.filename),n=r.length,i=e.comment,a=i&&rb(i),s=n!=e.filename.length||a&&i.length!=a.length,o=n+rR(e.extra)+30;if(n>65535)throw"filename too long";var l=new ts(o);rG(l,0,e,r,s);var c=[l],u=function(){for(var e=0,r=c;e0){var n=Math.min(this.c,e.length),i=e.subarray(0,n);if(this.c-=n,this.d?this.d.push(i,!this.c):this.k[0].push(i),(e=e.subarray(n)).length)return this.push(e,t)}else{var a=0,s=0,o=void 0,l=void 0;this.p.length?e.length?((l=new ts(this.p.length+e.length)).set(this.p),l.set(e,this.p.length)):l=this.p:l=e;for(var c=l.length,u=this.c,d=u&&this.d,h=this;ss+30+d+f){var A,p,m=[];h.k.unshift(m),a=2;var B=re(l,s+18),g=re(l,s+22),C=function(e,t){if(t){for(var r="",n=0;n=0&&(v.size=B,v.originalSize=g),h.onfile(v)}return"break"}if(u){if(0x8074b50==e)return o=s+=12+(-2==u&&8),a=3,h.c=0,"break";else if(0x2014b50==e)return o=s-=4,a=3,h.c=0,"break"}}();++s);if(this.p=tK,u<0){var f=a?l.subarray(0,o-12-(-2==u&&8)-(0x8074b50==re(l,o-16)&&4)):l.subarray(0,s);d?d.push(f,!!a):this.k[+(2==a)].push(f)}if(2&a)return this.push(l.subarray(s),t);this.p=l.subarray(s)}if(t){if(this.c)throw"invalid zip file";this.p=null}},rJ.prototype.register=function(e){this.o[e.compression]=e};let rO=M>=152;class rj extends tn.DataTextureLoader{constructor(e){super(e),this.type=tn.HalfFloatType}parse(e){let t={l:0,c:0,lc:0};function r(e,r,n,i,a){for(;n>(n-=e)&(1<>(n-=8),f=new Uint8Array([f])[0];if(d.value+f>h)return!1;for(var A=u[d.value-1];f-- >0;)u[d.value++]=A}else{if(!(d.value32767?t-65536:t}let c={a:0,b:0};function u(e,t){var r=l(e),n=l(t),i=r+(1&n)+(n>>1),a=i-n;c.a=i,c.b=a}function d(e,t){var r=65535&t,n=(65535&e)-(r>>1)&65535;c.a=r+n-32768&65535,c.b=n}function h(e,l,c,u,d,h){var f=c.value,A=E(l,c),p=E(l,c);c.value+=4;var m=E(l,c);if(c.value+=4,A<0||A>=65537||p<0||p>=65537)throw"Something wrong with HUF_ENCSIZE";for(var B=Array(65537),g=Array(16384),C=0;C<16384;C++)g[C]={},g[C].len=0,g[C].lit=0,g[C].p=null;var v=u-(c.value-f);if(!function(e,i,a,s,o,l){for(var c=0,u=0;s<=o;s++){if(i.value-i.value>a)return!1;r(6,c,u,e,i);var d=t.l;if(c=t.c,u=t.lc,l[s]=d,63==d){if(i.value-i.value>a)throw"Something wrong with hufUnpackEncTable";r(8,c,u,e,i);var h=t.l+6;if(c=t.c,u=t.lc,s+h>o+1)throw"Something wrong with hufUnpackEncTable";for(;h--;)l[s++]=0;s--}else if(d>=59){var h=d-59+2;if(s+h>o+1)throw"Something wrong with hufUnpackEncTable";for(;h--;)l[s++]=0;s--}}!function(e){for(var t=0;t<=58;++t)n[t]=0;for(var t=0;t<65537;++t)n[e[t]]+=1;for(var r=0,t=58;t>0;--t){var i=r+n[t]>>1;n[t]=r,r=i}for(var t=0;t<65537;++t){var a=e[t];a>0&&(e[t]=a|n[a]++<<6)}}(l)}(e,c,v,A,p,B),m>8*(u-(c.value-f)))throw"Something wrong with hufUncompress";!function(e,t,r,n){for(;t<=r;t++){var i=e[t]>>6,a=63&e[t];if(i>>a)throw"Invalid table entry";if(a>14){var s=n[i>>a-14];if(s.len)throw"Invalid table entry";if(s.lit++,s.p){var o=s.p;s.p=Array(s.lit);for(var l=0;l0;l--){var s=n[(i<<14-a)+c];if(s.len||s.p)throw"Invalid table entry";s.len=a,s.lit=t,c++}}}(B,A,p,g),function(e,t,r,n,l,c,u,d,h,f){for(var A=0,p=0,m=Math.trunc(l.value+(c+7)/8);l.value=14;){var B=t[A>>p-14&16383];if(B.len)p-=B.len,o(B.lit,u,A,p,r,n,l,h,f,d),A=s.c,p=s.lc;else{if(!B.p)throw"hufDecode issues";for(g=0;g=C&&e[B.p[g]]>>6==(A>>p-C&(1<>=v,p-=v;p>0;){var B=t[A<<14-p&16383];if(B.len)p-=B.len,o(B.lit,u,A,p,r,n,l,h,f,d),A=s.c,p=s.lc;else throw"hufDecode issues"}}(B,g,e,l,c,m,p,h,d,{value:0})}function f(e){for(var t=1;ta)&&(t[i++]=e[r++],!(i>a));){;t[i++]=e[n++]}}function p(e){for(var t=e.byteLength,r=[],n=0,i=new DataView(e);t>0;){var a=i.getInt8(n++);if(a<0){var s=-a;t-=s+1;for(var o=0;o=8192)throw"Something is wrong with PIZ_COMPRESSION BITMAP_SIZE";if(l<=f)for(var o=0;o>3]&1<<(7&n))&&(t[r++]=n);for(var i=r-1;r<65536;)t[r++]=0;return i}(i,A),m=E(t,r);h(e.array,t,r,m,n,a);for(var o=0;oi?i:r,h=1;h<=l;)h<<=1;for(h>>=1,f=h,h>>=1;h>=1;){for(var f,A,p,m,B,g=0,C=0+a*(i-f),v=a*h,y=a*f,M=n*h,x=n*f;g<=C;g+=y){for(var E=g,F=g+n*(r-f);E<=F;E+=x){var b=E+M,w=E+v,I=w+M;o?(u(e[E+t],e[w+t]),A=c.a,m=c.b,u(e[b+t],e[I+t]),p=c.a,B=c.b,u(A,p),e[E+t]=c.a,e[b+t]=c.b,u(m,B)):(d(e[E+t],e[w+t]),A=c.a,m=c.b,d(e[b+t],e[I+t]),p=c.a,B=c.b,d(A,p),e[E+t]=c.a,e[b+t]=c.b,d(m,B)),e[w+t]=c.a,e[I+t]=c.b}if(r&h){var w=E+v;o?u(e[E+t],e[w+t]):d(e[E+t],e[w+t]),A=c.a,e[w+t]=c.b,e[E+t]=A}}if(i&h)for(var E=g,F=g+n*(r-f);E<=F;E+=x){var b=E+M;o?u(e[E+t],e[b+t]):d(e[E+t],e[b+t]),A=c.a,e[b+t]=c.b,e[E+t]=A}f=h,h>>=1}}(n,B.start+g,B.nx,B.size,B.ny,B.nx*B.size,p);for(var C=a,v=0;v0;){var o=M(t.buffer,r),l=b(t,r),c=l>>2&3,u=new Int8Array([(l>>4)-1])[0],d=b(t,r);a.push({name:o,index:u,type:d,compression:c}),s-=o.length+3}for(var f=U.channels,A=Array(e.channels),m=0;m=0&&(v.idx[x.index]=y),B.offset=y)}if(i.acCompressedSize>0)switch(i.acCompression){case 0:var E=new Uint16Array(i.totalAcUncompressedCount);h(e.array,t,r,i.acCompressedSize,E,i.totalAcUncompressedCount);break;case 1:var F=e.array.slice(r.value,r.value+i.totalAcUncompressedCount),I=rv(F),E=new Uint16Array(I.buffer);r.value+=i.totalAcUncompressedCount}if(i.dcCompressedSize>0){var R=new Uint16Array(g({array:e.array,offset:r,size:i.dcCompressedSize}).buffer);r.value+=i.dcCompressedSize}if(i.rleRawSize>0){var F=e.array.slice(r.value,r.value+i.rleCompressedSize),I=rv(F),T=p(I.buffer);r.value+=i.rleCompressedSize}for(var S=0,H=Array(A.length),m=0;m>8==255?i+=255&n:(r[i]=n,i++),e.value++}(A,n,B[e]),v=B[e],(y=m[e])[0]=G(v[0]),y[1]=G(v[1]),y[2]=G(v[5]),y[3]=G(v[6]),y[4]=G(v[14]),y[5]=G(v[15]),y[6]=G(v[27]),y[7]=G(v[28]),y[8]=G(v[2]),y[9]=G(v[4]),y[10]=G(v[7]),y[11]=G(v[13]),y[12]=G(v[16]),y[13]=G(v[26]),y[14]=G(v[29]),y[15]=G(v[42]),y[16]=G(v[3]),y[17]=G(v[8]),y[18]=G(v[12]),y[19]=G(v[17]),y[20]=G(v[25]),y[21]=G(v[30]),y[22]=G(v[41]),y[23]=G(v[43]),y[24]=G(v[9]),y[25]=G(v[11]),y[26]=G(v[18]),y[27]=G(v[24]),y[28]=G(v[31]),y[29]=G(v[40]),y[30]=G(v[44]),y[31]=G(v[53]),y[32]=G(v[10]),y[33]=G(v[19]),y[34]=G(v[23]),y[35]=G(v[32]),y[36]=G(v[39]),y[37]=G(v[45]),y[38]=G(v[52]),y[39]=G(v[54]),y[40]=G(v[20]),y[41]=G(v[22]),y[42]=G(v[33]),y[43]=G(v[38]),y[44]=G(v[46]),y[45]=G(v[51]),y[46]=G(v[55]),y[47]=G(v[60]),y[48]=G(v[21]),y[49]=G(v[34]),y[50]=G(v[37]),y[51]=G(v[47]),y[52]=G(v[50]),y[53]=G(v[56]),y[54]=G(v[59]),y[55]=G(v[61]),y[56]=G(v[35]),y[57]=G(v[36]),y[58]=G(v[48]),y[59]=G(v[49]),y[60]=G(v[57]),y[61]=G(v[58]),y[62]=G(v[62]),y[63]=G(v[63]),function(e){let t=.5*Math.cos(3.14159/16),r=.5*Math.cos(3.14159/8),n=.5*Math.cos(3*3.14159/16),i=.5*Math.cos(3*3.14159/8);for(var a=[,,,,],s=[,,,,],o=[,,,,],l=[,,,,],c=0;c<8;++c){var u=8*c;a[0]=r*e[u+2],a[1]=i*e[u+2],a[2]=r*e[u+6],a[3]=i*e[u+6],s[0]=t*e[u+1]+n*e[u+3]+.2777854612564676*e[u+5]+.09754573032714427*e[u+7],s[1]=n*e[u+1]-.09754573032714427*e[u+3]-t*e[u+5]-.2777854612564676*e[u+7],s[2]=.2777854612564676*e[u+1]-t*e[u+3]+.09754573032714427*e[u+5]+n*e[u+7],s[3]=.09754573032714427*e[u+1]-.2777854612564676*e[u+3]+n*e[u+5]-t*e[u+7],o[0]=.35355362513961314*(e[u+0]+e[u+4]),o[3]=.35355362513961314*(e[u+0]-e[u+4]),o[1]=a[0]+a[3],o[2]=a[1]-a[2],l[0]=o[0]+o[1],l[1]=o[3]+o[2],l[2]=o[3]-o[2],l[3]=o[0]-o[1],e[u+0]=l[0]+s[0],e[u+1]=l[1]+s[1],e[u+2]=l[2]+s[2],e[u+3]=l[3]+s[3],e[u+4]=l[3]-s[3],e[u+5]=l[2]-s[2],e[u+6]=l[1]-s[1],e[u+7]=l[0]-s[0]}for(var d=0;d<8;++d)a[0]=r*e[16+d],a[1]=i*e[16+d],a[2]=r*e[48+d],a[3]=i*e[48+d],s[0]=t*e[8+d]+n*e[24+d]+.2777854612564676*e[40+d]+.09754573032714427*e[56+d],s[1]=n*e[8+d]-.09754573032714427*e[24+d]-t*e[40+d]-.2777854612564676*e[56+d],s[2]=.2777854612564676*e[8+d]-t*e[24+d]+.09754573032714427*e[40+d]+n*e[56+d],s[3]=.09754573032714427*e[8+d]-.2777854612564676*e[24+d]+n*e[40+d]-t*e[56+d],o[0]=.35355362513961314*(e[d]+e[32+d]),o[3]=.35355362513961314*(e[d]-e[32+d]),o[1]=a[0]+a[3],o[2]=a[1]-a[2],l[0]=o[0]+o[1],l[1]=o[3]+o[2],l[2]=o[3]-o[2],l[3]=o[0]-o[1],e[0+d]=l[0]+s[0],e[8+d]=l[1]+s[1],e[16+d]=l[2]+s[2],e[24+d]=l[3]+s[3],e[32+d]=l[3]-s[3],e[40+d]=l[2]-s[2],e[48+d]=l[1]-s[1],e[56+d]=l[0]-s[0]}(m[e])}for(var E=m,F=0;F<64;++F){var b=E[0][F],w=E[1][F],I=E[2][F];E[0][F]=b+1.5747*I,E[1][F]=b-.1873*w-.4682*I,E[2][F]=b+1.8556*w}for(let t=0;t<3;++t)!function(e,t,r){for(var n,i=0;i<64;++i){t[r+i]=tn.DataUtils.toHalfFloat((n=e[i])<=1?Math.sign(n)*Math.pow(Math.abs(n),2.2):Math.sign(n)*Math.pow(9.025013291561939,Math.abs(n)-1))}}(m[t],g[t],64*e)}let a=0;for(let n=0;n<3;++n){let i=r[e.idx[n]].type;for(let e=8*t;e<8*t+M;++e){a=C[n][e];for(let t=0;t>10,r=1023&e;return(e>>15?-1:1)*(t?31===t?r?NaN:1/0:Math.pow(2,t-15)*(1+r/1024):r/1024*6103515625e-14)}function D(e,t){var r=e.getUint16(t.value,!0);return t.value+=2,r}function T(e,t){return G(D(e,t))}let S=new DataView(e),H=new Uint8Array(e),L={value:0},U=function(e,t,r){let n={};if(0x1312f76!=e.getUint32(0,!0))throw"THREE.EXRLoader: provided file doesn't appear to be in OpenEXR format.";n.version=e.getUint8(4);let i=e.getUint8(5);n.spec={singleTile:!!(2&i),longName:!!(4&i),deepFormat:!!(8&i),multiPart:!!(16&i)},r.value=8;for(var a=!0;a;){var s=M(t,r);if(0==s)a=!1;else{var o=M(t,r),l=E(e,r),c=function(e,t,r,n,i){var a,s,o,l,c,u,d;if("string"===n||"stringvector"===n||"iccProfile"===n)return a=new TextDecoder().decode(new Uint8Array(t).slice(r.value,r.value+i)),r.value=r.value+i,a;if("chlist"===n)return function(e,t,r,n){for(var i=r.value,a=[];r.valueP.height?P.height-t:P.scanlineBlockSize;let r=P.size=P.height)break;for(let e=0;e{let n;switch(e){case d.UnsignedByteType:n=new Uint8ClampedArray(t*r*4);break;case d.HalfFloatType:n=new Uint16Array(t*r*4);break;case d.UnsignedIntType:n=new Uint32Array(t*r*4);break;case d.ByteType:n=new Int8Array(t*r*4);break;case d.ShortType:n=new Int16Array(t*r*4);break;case d.IntType:n=new Int32Array(t*r*4);break;case d.FloatType:n=new Float32Array(t*r*4);break;default:throw Error("Unsupported data type")}return n};class rN{_renderer;_rendererIsDisposable=!1;_material;_scene;_camera;_quad;_renderTarget;_width;_height;_type;_colorSpace;_supportsReadPixels=!0;constructor(e){this._width=e.width,this._height=e.height,this._type=e.type,this._colorSpace=e.colorSpace;const t={format:d.RGBAFormat,depthBuffer:!1,stencilBuffer:!1,type:this._type,colorSpace:this._colorSpace,anisotropy:e.renderTargetOptions?.anisotropy!==void 0?e.renderTargetOptions?.anisotropy:1,generateMipmaps:e.renderTargetOptions?.generateMipmaps!==void 0&&e.renderTargetOptions?.generateMipmaps,magFilter:e.renderTargetOptions?.magFilter!==void 0?e.renderTargetOptions?.magFilter:d.LinearFilter,minFilter:e.renderTargetOptions?.minFilter!==void 0?e.renderTargetOptions?.minFilter:d.LinearFilter,samples:e.renderTargetOptions?.samples!==void 0?e.renderTargetOptions?.samples:void 0,wrapS:e.renderTargetOptions?.wrapS!==void 0?e.renderTargetOptions?.wrapS:d.ClampToEdgeWrapping,wrapT:e.renderTargetOptions?.wrapT!==void 0?e.renderTargetOptions?.wrapT:d.ClampToEdgeWrapping};if(this._material=e.material,e.renderer?this._renderer=e.renderer:(this._renderer=rN.instantiateRenderer(),this._rendererIsDisposable=!0),this._scene=new d.Scene,this._camera=new d.OrthographicCamera,this._camera.position.set(0,0,10),this._camera.left=-.5,this._camera.right=.5,this._camera.top=.5,this._camera.bottom=-.5,this._camera.updateProjectionMatrix(),!((e,t,r,n)=>{if(void 0!==i)return i;let a=new d.WebGLRenderTarget(1,1,n);t.setRenderTarget(a);let s=new d.Mesh(new d.PlaneGeometry,new d.MeshBasicMaterial({color:0xffffff}));t.render(s,r),t.setRenderTarget(null);let o=rk(e,a.width,a.height);return t.readRenderTargetPixels(a,0,0,a.width,a.height,o),a.dispose(),s.geometry.dispose(),s.material.dispose(),i=0!==o[0]})(this._type,this._renderer,this._camera,t)){let e;this._type===d.HalfFloatType&&(e=this._renderer.extensions.has("EXT_color_buffer_float")?d.FloatType:void 0),void 0!==e?(console.warn(`This browser does not support reading pixels from ${this._type} RenderTargets, switching to ${d.FloatType}`),this._type=e):(this._supportsReadPixels=!1,console.warn("This browser dos not support toArray or toDataTexture, calls to those methods will result in an error thrown"))}this._quad=new d.Mesh(new d.PlaneGeometry,this._material),this._quad.geometry.computeBoundingBox(),this._scene.add(this._quad),this._renderTarget=new d.WebGLRenderTarget(this.width,this.height,t),this._renderTarget.texture.mapping=e.renderTargetOptions?.mapping!==void 0?e.renderTargetOptions?.mapping:d.UVMapping}static instantiateRenderer(){let e=new y.WebGLRenderer;return e.setSize(128,128),e}render=()=>{this._renderer.setRenderTarget(this._renderTarget);try{this._renderer.render(this._scene,this._camera)}catch(e){throw this._renderer.setRenderTarget(null),e}this._renderer.setRenderTarget(null)};toArray(){if(!this._supportsReadPixels)throw Error("Can't read pixels in this browser");let e=rk(this._type,this._width,this._height);return this._renderer.readRenderTargetPixels(this._renderTarget,0,0,this._width,this._height,e),e}toDataTexture(e){let t=new d.DataTexture(this.toArray(),this.width,this.height,d.RGBAFormat,this._type,e?.mapping||d.UVMapping,e?.wrapS||d.ClampToEdgeWrapping,e?.wrapT||d.ClampToEdgeWrapping,e?.magFilter||d.LinearFilter,e?.minFilter||d.LinearFilter,e?.anisotropy||1,d.LinearSRGBColorSpace);return t.generateMipmaps=e?.generateMipmaps!==void 0&&e?.generateMipmaps,t}disposeOnDemandRenderer(){this._renderer.setRenderTarget(null),this._rendererIsDisposable&&(this._renderer.dispose(),this._renderer.forceContextLoss())}dispose(e){this.disposeOnDemandRenderer(),e&&this.renderTarget.dispose(),this.material instanceof d.ShaderMaterial&&Object.values(this.material.uniforms).forEach(e=>{e.value instanceof d.Texture&&e.value.dispose()}),Object.values(this.material).forEach(e=>{e instanceof d.Texture&&e.dispose()}),this.material.dispose(),this._quad.geometry.dispose()}get width(){return this._width}set width(e){this._width=e,this._renderTarget.setSize(this._width,this._height)}get height(){return this._height}set height(e){this._height=e,this._renderTarget.setSize(this._width,this._height)}get renderer(){return this._renderer}get renderTarget(){return this._renderTarget}set renderTarget(e){this._renderTarget=e,this._width=e.width,this._height=e.height}get material(){return this._material}get type(){return this._type}get colorSpace(){return this._colorSpace}}var rK=d;class rQ extends Error{}class rX extends Error{}let rY=(e,t,r)=>{let n=RegExp(`${t}="([^"]*)"`,"i").exec(e);if(n)return n[1];let i=RegExp(`<${t}[^>]*>([\\s\\S]*?)`,"i").exec(e);if(i){let e=i[1].match(/([^<]*)<\/rdf:li>/g);return e&&3===e.length?e.map(e=>e.replace(/<\/?rdf:li>/g,"")):i[1].trim()}if(void 0!==r)return r;throw Error(`Can't find ${t} in gainmap metadata`)};class rW{options;constructor(e){this.options={debug:!!e&&void 0!==e.debug&&e.debug,extractFII:!e||void 0===e.extractFII||e.extractFII,extractNonFII:!e||void 0===e.extractNonFII||e.extractNonFII}}extract(e){return new Promise((t,r)=>{let n,i=this.options.debug,a=new DataView(e.buffer);if(65496!==a.getUint16(0))return void r(Error("Not a valid jpeg"));let s=a.byteLength,o=2,l=0;for(;o250)return void r(Error(`Found no marker after ${l} loops 😡`));if(255!==a.getUint8(o))return void r(Error(`Not a valid marker at offset 0x${o.toString(16)}, found: 0x${a.getUint8(o).toString(16)}`));if(n=a.getUint8(o+1),i&&console.log(`Marker: ${n.toString(16)}`),226===n){i&&console.log("Found APP2 marker (0xffe2)");let e=o+4;if(0x4d504600===a.getUint32(e)){let n,i=e+4;if(18761===a.getUint16(i))n=!1;else{if(19789!==a.getUint16(i))return void r(Error("No valid endianness marker found in TIFF header"));n=!0}if(42!==a.getUint16(i+2,!n))return void r(Error("Not valid TIFF data! (no 0x002A marker)"));let s=a.getUint32(i+4,!n);if(s<8)return void r(Error("Not valid TIFF data! (First offset less than 8)"));let o=i+s,l=a.getUint16(o,!n),c=o+2,u=0;for(let e=c;e{let t=(e=>{let t,r=(t="u">typeof TextDecoder?new TextDecoder().decode(e):e.toString()).indexOf("",r),n=t.slice(r,e+10);try{let e=rY(n,"hdrgm:GainMapMin","0"),t=rY(n,"hdrgm:GainMapMax"),r=rY(n,"hdrgm:Gamma","1"),i=rY(n,"hdrgm:OffsetSDR","0.015625"),a=rY(n,"hdrgm:OffsetHDR","0.015625"),s=/hdrgm:HDRCapacityMin="([^"]*)"/.exec(n),o=s?s[1]:"0",l=/hdrgm:HDRCapacityMax="([^"]*)"/.exec(n);if(!l)throw Error("Incomplete gainmap metadata");let c=l[1];return{gainMapMin:Array.isArray(e)?e.map(e=>parseFloat(e)):[parseFloat(e),parseFloat(e),parseFloat(e)],gainMapMax:Array.isArray(t)?t.map(e=>parseFloat(e)):[parseFloat(t),parseFloat(t),parseFloat(t)],gamma:Array.isArray(r)?r.map(e=>parseFloat(e)):[parseFloat(r),parseFloat(r),parseFloat(r)],offsetSdr:Array.isArray(i)?i.map(e=>parseFloat(e)):[parseFloat(i),parseFloat(i),parseFloat(i)],offsetHdr:Array.isArray(a)?a.map(e=>parseFloat(e)):[parseFloat(a),parseFloat(a),parseFloat(a)],hdrCapacityMin:parseFloat(o),hdrCapacityMax:parseFloat(c)}}catch(e){}r=t.indexOf("new Promise((t,r)=>{let n=document.createElement("img");n.onload=()=>{t(n)},n.onerror=e=>{r(e)},n.src=URL.createObjectURL(e)});class rZ extends rK.Loader{_renderer;_renderTargetOptions;_internalLoadingManager;_config;constructor(e,t){super(t),this._config=e,e.renderer&&(this._renderer=e.renderer),this._internalLoadingManager=new rK.LoadingManager}setRenderer(e){return this._renderer=e,this}setRenderTargetOptions(e){return this._renderTargetOptions=e,this}prepareQuadRenderer(){this._renderer||console.warn("WARNING: A Renderer was not passed to this Loader constructor or in setRenderer, the result of this Loader will need to be converted to a Data Texture with toDataTexture() before you can use it in your renderer.");let e=this._config.createMaterial({gainMapMax:[1,1,1],gainMapMin:[0,0,0],gamma:[1,1,1],offsetHdr:[1,1,1],offsetSdr:[1,1,1],hdrCapacityMax:1,hdrCapacityMin:0,maxDisplayBoost:1,gainMap:new rK.Texture,sdr:new rK.Texture});return this._config.createQuadRenderer({width:16,height:16,type:rK.HalfFloatType,colorSpace:rK.LinearSRGBColorSpace,material:e,renderer:this._renderer,renderTargetOptions:this._renderTargetOptions})}async processImages(e,t,r){let n,i,a=t?new Blob([t],{type:"image/jpeg"}):void 0,s=new Blob([e],{type:"image/jpeg"}),o=!1;if("u"new r1(e),createQuadRenderer:e=>new rN(e)},t)}async render(e,t,r,n){let{sdrImage:i,gainMapImage:a,needsFlip:s}=await this.processImages(r,n,"flipY"),{gainMap:o,sdr:l}=this.createTextures(i,a,s);this.updateQuadRenderer(e,i,o,l,t),e.render()}}class r9 extends r2{load([e,t,r],n,i,a){let s,o,l,c=this.prepareQuadRenderer(),u=async()=>{if(s&&o&&l){try{await this.render(c,l,s,o)}catch(n){this.manager.itemError(e),this.manager.itemError(t),this.manager.itemError(r),"function"==typeof a&&a(n),c.disposeOnDemandRenderer();return}"function"==typeof n&&n(c),this.manager.itemEnd(e),this.manager.itemEnd(t),this.manager.itemEnd(r),c.disposeOnDemandRenderer()}},d=!0,h=0,f=0,A=!0,p=0,m=0,B=!0,g=0,C=0,v=()=>{"function"==typeof i&&i(new ProgressEvent("progress",{lengthComputable:d&&A&&B,loaded:f+m+C,total:h+p+g}))};this.manager.itemStart(e),this.manager.itemStart(t),this.manager.itemStart(r);let y=new rq.FileLoader(this._internalLoadingManager);y.setResponseType("arraybuffer"),y.setRequestHeader(this.requestHeader),y.setPath(this.path),y.setWithCredentials(this.withCredentials),y.load(e,async e=>{if("string"==typeof e)throw Error("Invalid sdr buffer");s=e,await u()},e=>{d=e.lengthComputable,f=e.loaded,h=e.total,v()},t=>{this.manager.itemError(e),"function"==typeof a&&a(t)});let M=new rq.FileLoader(this._internalLoadingManager);M.setResponseType("arraybuffer"),M.setRequestHeader(this.requestHeader),M.setPath(this.path),M.setWithCredentials(this.withCredentials),M.load(t,async e=>{if("string"==typeof e)throw Error("Invalid gainmap buffer");o=e,await u()},e=>{A=e.lengthComputable,m=e.loaded,p=e.total,v()},e=>{this.manager.itemError(t),"function"==typeof a&&a(e)});let x=new rq.FileLoader(this._internalLoadingManager);return x.setRequestHeader(this.requestHeader),x.setPath(this.path),x.setWithCredentials(this.withCredentials),x.load(r,async e=>{if("string"!=typeof e)throw Error("Invalid metadata string");l=JSON.parse(e),await u()},e=>{B=e.lengthComputable,C=e.loaded,g=e.total,v()},e=>{this.manager.itemError(r),"function"==typeof a&&a(e)}),c}}class r3 extends r2{load(e,t,r,n){let i=this.prepareQuadRenderer(),a=new rq.FileLoader(this._internalLoadingManager);return a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setPath(this.path),a.setWithCredentials(this.withCredentials),this.manager.itemStart(e),a.load(e,async r=>{let a,s,o;if("string"==typeof r)throw Error("Invalid buffer, received [string], was expecting [ArrayBuffer]");let l=new Uint8Array(r);try{let e=await rz(l);a=e.sdr,s=e.gainMap,o=e.metadata}catch(t){if(t instanceof rX||t instanceof rQ)console.warn(`Failure to reconstruct an HDR image from ${e}: Gain map metadata not found in the file, HDRJPGLoader will render the SDR jpeg`),o={gainMapMin:[0,0,0],gainMapMax:[1,1,1],gamma:[1,1,1],hdrCapacityMin:0,hdrCapacityMax:1,offsetHdr:[0,0,0],offsetSdr:[0,0,0]},a=l;else throw t}try{await this.render(i,o,a.buffer,s?.buffer)}catch(t){this.manager.itemError(e),"function"==typeof n&&n(t),i.disposeOnDemandRenderer();return}"function"==typeof t&&t(i),this.manager.itemEnd(e),i.disposeOnDemandRenderer()},r,t=>{this.manager.itemError(e),"function"==typeof n&&n(t)}),i}}let r8={apartment:"lebombo_1k.hdr",city:"potsdamer_platz_1k.hdr",dawn:"kiara_1_dawn_1k.hdr",forest:"forest_slope_1k.hdr",lobby:"st_fagans_interior_1k.hdr",night:"dikhololo_night_1k.hdr",park:"rooitou_park_1k.hdr",studio:"studio_small_03_1k.hdr",sunset:"venice_sunset_1k.hdr",warehouse:"empty_warehouse_01_1k.hdr"},r6="https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/",r4=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"];function r5({files:e=r4,path:t="",preset:r,colorSpace:n,extensions:i}={}){r&&(nt(r),e=r8[r],t=r6);let a=Array.isArray(e),{extension:o,isCubemap:l}=nr(e),u=nn(o);if(!u)throw Error("useEnvironment: Unrecognized file extension: "+e);let h=(0,c.useThree)(e=>e.gl);(0,s.useLayoutEffect)(()=>{("webp"===o||"jpg"===o||"jpeg"===o)&&h.domElement.addEventListener("webglcontextlost",function(){eZ.useLoader.clear(u,a?[e]:e)},{once:!0})},[e,h.domElement]);let f=(0,eZ.useLoader)(u,a?[e]:e,e=>{("webp"===o||"jpg"===o||"jpeg"===o)&&e.setRenderer(h),null==e.setPath||e.setPath(t),i&&i(e)}),A=a?f[0]:f;if("jpg"===o||"jpeg"===o||"webp"===o){var p;A=null==(p=A.renderTarget)?void 0:p.texture}return A.mapping=l?d.CubeReflectionMapping:d.EquirectangularReflectionMapping,A.colorSpace=null!=n?n:l?"srgb":"srgb-linear",A}let r7={files:r4,path:"",preset:void 0,extensions:void 0};r5.preload=e=>{let t={...r7,...e},{files:r,path:n=""}=t,{preset:i,extensions:a}=t;i&&(nt(i),r=r8[i],n=r6);let{extension:s}=nr(r);if("webp"===s||"jpg"===s||"jpeg"===s)throw Error("useEnvironment: Preloading gainmaps is not supported");let o=nn(s);if(!o)throw Error("useEnvironment: Unrecognized file extension: "+r);eZ.useLoader.preload(o,Array.isArray(r)?[r]:r,e=>{null==e.setPath||e.setPath(n),a&&a(e)})};let ne={files:r4,preset:void 0};function nt(e){if(!(e in r8))throw Error("Preset must be one of: "+Object.keys(r8).join(", "))}function nr(e){var t;let r=Array.isArray(e)&&6===e.length,n=Array.isArray(e)&&3===e.length&&e.some(e=>e.endsWith("json")),i=Array.isArray(e)?e[0]:e;return{extension:r?"cube":n?"webp":i.startsWith("data:application/exr")?"exr":i.startsWith("data:application/hdr")?"hdr":i.startsWith("data:image/jpeg")?"jpg":null==(t=i.split(".").pop())||null==(t=t.split("?"))||null==(t=t.shift())?void 0:t.toLowerCase(),isCubemap:r,isGainmap:n}}function nn(e){return"cube"===e?d.CubeTextureLoader:"hdr"===e?tr:"exr"===e?rj:"jpg"===e||"jpeg"===e?r3:"webp"===e?r9:null}function ni(e,t,r,n,i={}){var a,s,o,l,c;let u;i={backgroundBlurriness:0,backgroundIntensity:1,backgroundRotation:[0,0,0],environmentIntensity:1,environmentRotation:[0,0,0],...i};let d=(u=c=t||r).current&&u.current.isScene?c.current:c,h=d.background,f=d.environment,A={backgroundBlurriness:d.backgroundBlurriness,backgroundIntensity:d.backgroundIntensity,backgroundRotation:null!=(a=null==(s=d.backgroundRotation)||null==s.clone?void 0:s.clone())?a:[0,0,0],environmentIntensity:d.environmentIntensity,environmentRotation:null!=(o=null==(l=d.environmentRotation)||null==l.clone?void 0:l.clone())?o:[0,0,0]};return"only"!==e&&(d.environment=n),e&&(d.background=n),(0,e5.applyProps)(d,i),()=>{"only"!==e&&(d.environment=f),e&&(d.background=h),(0,e5.applyProps)(d,A)}}function na({scene:e,background:t=!1,map:r,...n}){let i=(0,c.useThree)(e=>e.scene);return s.useLayoutEffect(()=>{if(r)return ni(t,e,i,r,n)}),null}function ns({background:e=!1,scene:t,blur:r,backgroundBlurriness:n,backgroundIntensity:i,backgroundRotation:a,environmentIntensity:o,environmentRotation:l,...u}){let d=r5(u),h=(0,c.useThree)(e=>e.scene);return s.useLayoutEffect(()=>ni(e,t,h,d,{backgroundBlurriness:null!=r?r:n,backgroundIntensity:i,backgroundRotation:a,environmentIntensity:o,environmentRotation:l})),s.useEffect(()=>()=>{d.dispose()},[d]),null}function no({children:e,near:t=.1,far:r=1e3,resolution:n=256,frames:i=1,map:a,background:o=!1,blur:u,backgroundBlurriness:h,backgroundIntensity:f,backgroundRotation:A,environmentIntensity:p,environmentRotation:m,scene:B,files:g,path:C,preset:v,extensions:y}){let M=(0,c.useThree)(e=>e.gl),x=(0,c.useThree)(e=>e.scene),E=s.useRef(null),[F]=s.useState(()=>new d.Scene),b=s.useMemo(()=>{let e=new d.WebGLCubeRenderTarget(n);return e.texture.type=d.HalfFloatType,e},[n]);s.useEffect(()=>()=>{b.dispose()},[b]),s.useLayoutEffect(()=>{if(1===i){let e=M.autoClear;M.autoClear=!0,E.current.update(M,F),M.autoClear=e}return ni(o,B,x,b.texture,{backgroundBlurriness:null!=u?u:h,backgroundIntensity:f,backgroundRotation:A,environmentIntensity:p,environmentRotation:m})},[e,F,b.texture,B,x,o,i,M]);let w=1;return(0,l.useFrame)(()=>{if(i===1/0||w(0,K.extend)({GroundProjectedEnvImpl:te}),[]),s.useEffect(()=>()=>{a.dispose()},[a]);let l=s.useMemo(()=>[o],[o]),c=null==(t=e.ground)?void 0:t.height,d=null==(r=e.ground)?void 0:r.radius,h=null!=(n=null==(i=e.ground)?void 0:i.scale)?n:1e3;return s.createElement(s.Fragment,null,s.createElement(na,(0,u.default)({},e,{map:o})),s.createElement("groundProjectedEnvImpl",{args:l,scale:h,height:c,radius:d}))}function nc(e){return e.ground?s.createElement(nl,e):e.map?s.createElement(na,e):e.children?s.createElement(no,e):s.createElement(ns,e)}r5.clear=e=>{let t={...ne,...e},{files:r}=t,{preset:n}=t;n&&(nt(n),r=r8[n]);let{extension:i}=nr(r),a=nn(i);if(!a)throw Error("useEnvironment: Unrecognized file extension: "+r);eZ.useLoader.clear(a,Array.isArray(r)?[r]:r)};let nu=s.forwardRef(({light:e,args:t,map:r,toneMapped:n=!1,color:i="white",form:a="rect",intensity:o=1,scale:l=1,target:c=[0,0,0],children:h,...f},A)=>{let p=s.useRef(null);return s.useImperativeHandle(A,()=>p.current,[]),s.useLayoutEffect(()=>{h||f.material||((0,e5.applyProps)(p.current.material,{color:i}),p.current.material.color.multiplyScalar(o))},[i,o,h,f.material]),s.useLayoutEffect(()=>{f.rotation||p.current.quaternion.identity(),c&&!f.rotation&&("boolean"==typeof c?p.current.lookAt(0,0,0):p.current.lookAt(Array.isArray(c)?new d.Vector3(...c):c))},[c,f.rotation]),l=Array.isArray(l)&&2===l.length?[l[0],l[1],1]:l,s.createElement("mesh",(0,u.default)({ref:p,scale:l},f),"circle"===a?s.createElement("ringGeometry",{args:t||[0,.5,64]}):"ring"===a?s.createElement("ringGeometry",{args:t||[.25,.5,64]}):"rect"===a||"plane"===a?s.createElement("planeGeometry",{args:t||[1,1]}):"box"===a?s.createElement("boxGeometry",{args:t||[1,1,1]}):s.createElement(a,{args:t}),h||s.createElement("meshBasicMaterial",{toneMapped:n,map:r,side:d.DoubleSide}),e&&s.createElement("pointLight",(0,u.default)({castShadow:!0},e)))});function nd({all:e,scene:t,camera:r}){let n=(0,c.useThree)(({gl:e})=>e),i=(0,c.useThree)(({camera:e})=>e),a=(0,c.useThree)(({scene:e})=>e);return s.useLayoutEffect(()=>{let s=[];e&&(t||a).traverse(e=>{!1===e.visible&&(s.push(e),e.visible=!0)}),n.compile(t||a,r||i);let o=new d.WebGLCubeRenderTarget(128);new d.CubeCamera(.01,1e5,o).update(n,t||a),o.dispose(),s.forEach(e=>e.visible=!1)},[]),null}var nh=e.i(79877),nf=e.i(33623),nA=e.i(48228);let np="#eef1f6",nm="#22C55E",nB="#8B5CF6",ng="#3B82F6",nC="#F59E0B",nv="#C01227";function ny(){let e=(0,c.useThree)(e=>e.gl),t=(0,s.useRef)(null),r=(0,s.useRef)({t:0,frames:0,mount:0,firstFrame:0,nav:0});return(0,s.useEffect)(()=>{let e=r.current;e.mount=performance.now();let n=performance.getEntriesByType("navigation")[0];e.nav=n?Math.round(n.loadEventEnd||n.domContentLoadedEventEnd):0;let i=document.createElement("div");return i.style.cssText="position:fixed;top:10px;left:10px;z-index:99999;font:11px/1.5 ui-monospace,monospace;background:rgba(0,0,0,.82);color:#39ff14;padding:8px 11px;border-radius:7px;white-space:pre;pointer-events:none",document.body.appendChild(i),t.current=i,()=>{i.remove()}},[]),(0,l.useFrame)((n,i)=>{let a=r.current;if(!a.firstFrame&&a.mount&&(a.firstFrame=performance.now()-a.mount),a.frames++,a.t+=i,a.t>=.5&&t.current){let r=e.info.render,n=e.info.memory;t.current.textContent=`FPS ${(a.frames/a.t).toFixed(0)} draws ${r.calls}${r.calls<100?" βœ“":" ⚠"} triangles ${r.triangles.toLocaleString()} geometries ${n.geometries} textures ${n.textures} programs ${e.info.programs?.length??0} page load ${a.nav}ms WF3 1st fr ${Math.round(a.firstFrame)}ms`,a.frames=0,a.t=0}}),null}function nM({progress:e,reduced:t,isMobile:r}){let n=(0,s.useRef)(new d.Vector3(...(0,nA.cameraFor)(0).look));return(0,l.useFrame)((i,a)=>{let s=(e.current??0)*(nA.N-1),{pos:o,look:l}=(0,nA.cameraFor)(s),c=i.clock.elapsedTime,u=+!!r,d=o[0]*(1-.25*u)+.22*Math.sin(.22*c),h=o[1]+1.1*u+.1*Math.sin(.3*c),f=o[2]+3*u,A=t?1:1-Math.pow(.0025,a),p=i.camera;p.position.x+=(d-p.position.x)*A,p.position.y+=(h-p.position.y)*A,p.position.z+=(f-p.position.z)*A,n.current.x+=(l[0]-n.current.x)*A,n.current.y+=(l[1]-n.current.y)*A,n.current.z+=(l[2]-n.current.z)*A,p.lookAt(n.current)}),null}function nx(e,t,r){let n=(0,s.useRef)([]);return(0,s.useEffect)(()=>{r||(n.current=[])},[r]),(0,l.useFrame)(()=>{if(!r)return;let i=(t.current??0)*(nA.N-1),a=d.MathUtils.clamp(1-(Math.abs(i-e)-.2)/.3,0,1);for(let e of n.current)e.style.opacity=String(a)}),e=>{e&&!n.current.includes(e)&&n.current.push(e)}}function nE({position:e,color:t,size:r=.1,pulse:n=!1}){let i=(0,s.useRef)(null);return(0,l.useFrame)(t=>{i.current&&i.current.scale.setScalar(1+.2*Math.sin(2*t.clock.elapsedTime+e[0]))}),(0,a.jsxs)("group",{position:e,children:[(0,a.jsxs)("mesh",{children:[(0,a.jsx)("sphereGeometry",{args:[r,16,16]}),(0,a.jsx)("meshStandardMaterial",{color:t,emissive:t,emissiveIntensity:1,toneMapped:!1})]}),n&&(0,a.jsxs)("mesh",{ref:i,rotation:[-Math.PI/2,0,0],position:[0,-(.6*r),0],children:[(0,a.jsx)("ringGeometry",{args:[1.5*r,1.8*r,24]}),(0,a.jsx)("meshBasicMaterial",{color:t,transparent:!0,opacity:.5,side:d.DoubleSide,toneMapped:!1})]})]})}function nF({curve:e,color:t,speed:r=.4,offset:n=0,size:i=.06}){let o=(0,s.useRef)(null);return(0,l.useFrame)(t=>{o.current&&o.current.position.copy(e.getPoint((t.clock.elapsedTime*r+n)%1))}),(0,a.jsxs)("mesh",{ref:o,children:[(0,a.jsx)("sphereGeometry",{args:[i,8,8]}),(0,a.jsx)("meshBasicMaterial",{color:t,toneMapped:!1})]})}function nb(e,t){return new d.LineCurve3(new d.Vector3(...e),new d.Vector3(...t))}let nw={bike:"/models/scooter.glb",auto:"/models/auto_rickshaw.glb",truck:"/models/truck.glb",van:"/models/van.glb"},nI={bike:{size:1,rotY:.72*Math.PI},auto:{size:.92,rotY:.72*Math.PI},truck:{size:1.2,rotY:.72*Math.PI},van:{size:1.02,rotY:.72*Math.PI}};function nR(e,t){let r=e.clone(!0),n=[];r.traverse(e=>{if(/wheel|tyre|tire|\brim\b/i.test(e.name)&&n.push(e),!e.isMesh)return;e.castShadow=!0,e.receiveShadow=!1;let t=e.material,r=e=>{"transmission"in e&&e.transmission>0&&(e.transmission=0,e.transparent=!1,e.opacity=1),"envMapIntensity"in e&&(e.envMapIntensity=.4),e.needsUpdate=!0};Array.isArray(t)?t.forEach(r):r(t)});let i=new d.Box3().setFromObject(r),a=new d.Vector3;i.getSize(a);let s=new d.Vector3;i.getCenter(s);let o=t/Math.max(a.x,a.y,a.z,1e-4);return r.scale.setScalar(o),r.position.set(-s.x*o,-i.min.y*o,-s.z*o),{root:r,wheels:n}}function nG({kind:e,awake:t=!0}){let r=nI[e],{scene:n}=e9(nw[e]),{root:i}=(0,s.useMemo)(()=>nR(n,r.size),[n,r]),o=(0,s.useRef)(null);return(0,l.useFrame)(r=>{let n=o.current;if(!n||!t)return;let i=r.clock.elapsedTime;switch(e){case"bike":n.position.y=.025*Math.abs(Math.sin(3*i)),n.rotation.z=.012*Math.sin(3*i);break;case"auto":n.rotation.z=.045*Math.sin(1.6*i),n.position.x=.02*Math.sin(1.6*i);break;case"truck":n.position.y=.012*Math.sin(+i),n.rotation.x=.006*Math.sin(.8*i);break;default:n.position.y=.05+.03*Math.sin(1.3*i)}}),(0,a.jsx)("group",{ref:o,rotation:[0,r.rotY,0],children:(0,a.jsx)("primitive",{object:i})})}function nD({route:e,reduced:t,i:r,progress:n,awake:i=!0}){let{scene:o}=e9(nw.truck),c=(0,s.useMemo)(()=>nR(o,.85),[o]),u=(0,s.useRef)([]);(0,s.useEffect)(()=>{u.current=c.wheels},[c]);let h=(0,s.useRef)(null),f=(0,s.useRef)(null),A=(0,s.useMemo)(()=>new d.Quaternion,[]),p=(0,s.useMemo)(()=>new d.Euler,[]),m=(0,s.useRef)(0);return(0,l.useFrame)((a,s)=>{let o=h.current;if(!o||!i)return;let l=(n.current??0)*(nA.N-1),c=d.MathUtils.clamp(l-(r-.5),0,1),B=e.getPointAt(c);o.position.set(B.x,.02,B.z);let g=e.getPointAt(Math.min(1,c+.02)),C=g.x-B.x,v=g.z-B.z;if(C*C+v*v>1e-7&&(p.set(0,Math.atan2(-v,C)+0,0),A.setFromEuler(p),o.quaternion.slerp(A,t?1:1-Math.pow(6e-4,s))),!t){let e=Math.abs(c-m.current),t=u.current;for(let r=0;re9.preload(e));let nT=[{id:"A",veh:"EV Bike",icon:"🚲",x:-2,kind:"bike"},{id:"B",veh:"Auto",icon:"πŸ›Ί",x:-.67,kind:"auto"},{id:"C",veh:"Cargo Truck",icon:"🚚",x:.67,kind:"truck"},{id:"D",veh:"EV Van",icon:"🚐",x:2,kind:"van"}];function nS({curve:e,offset:t}){let r=(0,s.useRef)(null),n=(0,s.useRef)(null);return(0,l.useFrame)(i=>{let a=(.3*i.clock.elapsedTime+t)%1;r.current&&(r.current.position.copy(e.getPoint(a)),r.current.rotation.y=6*a),n.current&&(n.current.opacity=a>.9?(1-a)*10:a<.08?12*a:1)}),(0,a.jsxs)("mesh",{ref:r,children:[(0,a.jsx)("boxGeometry",{args:[.16,.12,.16]}),(0,a.jsx)("meshStandardMaterial",{ref:n,color:"#ffffff",emissive:nm,emissiveIntensity:.6,transparent:!0,metalness:.1,roughness:.5,toneMapped:!1})]})}function nH({rider:e,register:t,awake:r,focused:n}){return(0,a.jsxs)("group",{position:[e.x,0,.1],children:[(0,a.jsxs)("mesh",{position:[0,.014,0],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[.52,.64,36]}),(0,a.jsx)("meshBasicMaterial",{color:nm,transparent:!0,opacity:.6,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[0,.008,0],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("circleGeometry",{args:[.52,36]}),(0,a.jsx)("meshBasicMaterial",{color:nm,transparent:!0,opacity:.08,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsx)("group",{position:[0,.02,0],children:(0,a.jsx)(s.Suspense,{fallback:null,children:(0,a.jsx)(nG,{kind:e.kind,awake:r})})}),n&&(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[0,1.5,0],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:"dm-st3d-chip",ref:t,children:[(0,a.jsx)("span",{className:"dm-st3d-chip__ico",children:e.icon}),(0,a.jsxs)("span",{className:"dm-st3d-chip__txt",children:[(0,a.jsxs)("b",{children:["Rider ",e.id]}),e.veh]})]})})]})}let nL=[3.3,.45,-.7],nU=[0,.55,-1.4],nP=s.default.memo(function({i:e,progress:t,reduced:r,awake:n,focused:i}){let o=nx(e,t,n),c=(0,s.useRef)(null),u=(0,s.useRef)(null);(0,l.useFrame)((e,t)=>{if(n){if(c.current)if(r)c.current.textContent="59";else{let t=e.clock.elapsedTime%3.6;c.current.textContent=String(Math.min(59,Math.round(t/2.4*59)))}u.current&&!r&&(u.current.rotation.z+=.5*t)}});let h=(0,s.useMemo)(()=>nb(nL,nU),[]),f=(0,s.useMemo)(()=>nT.map(e=>nb(nU,[e.x,.12,.1])),[]);return(0,a.jsxs)("group",{position:(0,nA.districtPosition)(e),visible:n,children:[(0,a.jsx)(nE,{position:nL,color:nm,size:.12}),(0,a.jsx)(k,{points:h.getPoints(2),color:nm,lineWidth:1.8,transparent:!0,opacity:.5,toneMapped:!1}),n&&!r&&[0,.5].map(e=>(0,a.jsx)(nS,{curve:h,offset:e},e)),(0,a.jsxs)("group",{position:[0,0,-1.4],children:[(0,a.jsxs)("mesh",{position:[0,.02,0],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[.95,1.12,44]}),(0,a.jsx)("meshBasicMaterial",{color:nm,transparent:!0,opacity:.5,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[0,.1,0],children:[(0,a.jsx)("cylinderGeometry",{args:[.72,.86,.2,6]}),(0,a.jsx)("meshStandardMaterial",{color:"#102a1d",metalness:.4,roughness:.45,emissive:nm,emissiveIntensity:.12})]}),(0,a.jsxs)("mesh",{position:[0,.55,0],children:[(0,a.jsx)("icosahedronGeometry",{args:[.32,1]}),(0,a.jsx)("meshStandardMaterial",{color:nm,emissive:nm,emissiveIntensity:1.2,toneMapped:!1,flatShading:!0})]}),(0,a.jsxs)("mesh",{ref:u,position:[0,.55,0],rotation:[Math.PI/2.4,0,0],children:[(0,a.jsx)("torusGeometry",{args:[.5,.025,10,40]}),(0,a.jsx)("meshStandardMaterial",{color:nm,emissive:nm,emissiveIntensity:1,toneMapped:!1})]})]}),f.map((e,t)=>(0,a.jsxs)("group",{children:[(0,a.jsx)(k,{points:e.getPoints(2),color:nm,lineWidth:1.6,transparent:!0,opacity:.45,toneMapped:!1}),n&&!r&&(0,a.jsx)(nF,{curve:e,color:nm,speed:.55,offset:.22*t})]},t)),(0,a.jsx)(e6,{position:[0,.02,.1],scale:[7.5,2.6],resolution:512,blur:2.6,far:1.2,opacity:.4,frames:1,color:"#1e293b"}),nT.map(e=>(0,a.jsx)(nH,{rider:e,register:o,awake:n,focused:i},e.id)),i&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[nL[0],nL[1]+.5,nL[2]],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsx)("div",{className:"dm-st3d-tag",style:{"--tc":nm},ref:o,children:"πŸ“„ orders.csv"})}),(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[0,1.8,-1.4],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:"dm-st3d-count",ref:o,children:[(0,a.jsx)("span",{ref:c,children:"0"})," Orders"]})}),(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[0,1.32,-1.4],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsx)("div",{className:"dm-st3d-tag",style:{"--tc":nm},ref:o,children:"πŸ€– AI Assignment Hub"})})]})]})}),n_=[{name:"EV Aware",unified:!0},{name:"Multi Trip",unified:!0},{name:"Time Aware",unified:!0},{name:"Balanced",unified:!1},{name:"Fuel Saver",unified:!1},{name:"Proximity",unified:!1}],nJ=[0,1.45,-2.7],nO=s.default.memo(function({i:e,progress:t,reduced:r,awake:n,focused:i}){let o=nx(e,t,n),c=(0,s.useRef)(null),u=(0,s.useRef)(null);(0,l.useFrame)((e,t)=>{!r&&n&&(c.current&&(c.current.rotation.z+=.6*t),u.current&&(u.current.rotation.y+=.4*t))});let h=(0,s.useMemo)(()=>n_.map((e,t)=>{let r=-.3+.18*Math.abs(t-2.5),n=[-3.4+1.36*t,.62,r];return{...e,end:n,curve:nb(nJ,n)}}),[]);return(0,a.jsxs)("group",{position:(0,nA.districtPosition)(e),visible:n,children:[(0,a.jsxs)("mesh",{position:[0,.06,-.6],children:[(0,a.jsx)("cylinderGeometry",{args:[5.4,5.6,.12,56]}),(0,a.jsx)("meshStandardMaterial",{color:"#161b30",metalness:.5,roughness:.42,emissive:nB,emissiveIntensity:.07})]}),(0,a.jsxs)("mesh",{position:[0,.13,-.6],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[5.2,5.42,64]}),(0,a.jsx)("meshBasicMaterial",{color:nB,transparent:!0,opacity:.4,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[0,.65,-2.7],children:[(0,a.jsx)("cylinderGeometry",{args:[.4,.62,1.2,24]}),(0,a.jsx)("meshStandardMaterial",{color:"#2a3350",metalness:.5,roughness:.4})]}),(0,a.jsxs)("mesh",{ref:u,position:nJ,children:[(0,a.jsx)("icosahedronGeometry",{args:[.6,1]}),(0,a.jsx)("meshStandardMaterial",{color:nB,emissive:nB,emissiveIntensity:1.3,toneMapped:!1,flatShading:!0})]}),(0,a.jsxs)("mesh",{ref:c,position:nJ,rotation:[Math.PI/2.4,0,0],children:[(0,a.jsx)("torusGeometry",{args:[.98,.03,10,44]}),(0,a.jsx)("meshStandardMaterial",{color:nB,emissive:nB,emissiveIntensity:1.1,toneMapped:!1})]}),i&&(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[0,2.5,-2.7],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsx)("div",{className:"dm-st3d-tag",style:{"--tc":nB},ref:o,children:"πŸ€– AI Engine"})}),h.map((e,t)=>{let s=e.unified?nB:"#a99bd6";return(0,a.jsxs)("group",{children:[(0,a.jsx)(k,{points:e.curve.getPoints(2),color:s,lineWidth:e.unified?2.4:1.6,transparent:!0,opacity:e.unified?.7:.5,toneMapped:!1}),n&&!r&&(0,a.jsx)(nF,{curve:e.curve,color:s,speed:.5,offset:.16*t,size:e.unified?.075:.06}),(0,a.jsxs)("mesh",{position:[e.end[0],.135,e.end[2]],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[.34,.44,28]}),(0,a.jsx)("meshBasicMaterial",{color:s,transparent:!0,opacity:e.unified?.6:.4,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsx)(nE,{position:e.end,color:s,size:e.unified?.15:.11}),i&&(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[e.end[0],e.end[1]+.62,e.end[2]],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsx)("div",{className:`dm-st3d-tag ${e.unified?"is-u":"is-muted"}`,style:{"--tc":e.unified?nB:"#94a3b8"},ref:o,children:e.name})})]},e.name)})]})}),nj=[-2.9,1.9],nk=[[-1.5,-2.6],[.1,-1],[1.7,-2.3],[2.7,.3],[.9,1.5],[-.6,.5]],nN=[{t:"Route Optimization",p:[-2.7,2.5,-.4]},{t:"Battery Validation",p:[2.6,2.9,-1.2]},{t:"SLA Validation",p:[-2.3,2,1.6]},{t:"Feasibility Check",p:[2.5,1.7,1.8]}],nK=["Route Node A",null,"Route Node B",null,"Route Node C","πŸ“¦ Delivery"];function nQ({pos:e,i:t,progress:r}){let n=(0,s.useRef)(null),i=(0,s.useRef)(null);return(0,l.useFrame)(e=>{let a=(r.current??0)*(nA.N-1),s=d.MathUtils.clamp(a-(t-.5),0,1);if(n.current&&i.current)if(s>.85){let t=e.clock.elapsedTime%1.1/1.1;n.current.scale.setScalar(1+3*t),i.current.opacity=(1-t)*.6}else i.current.opacity=0}),(0,a.jsxs)("mesh",{ref:n,position:e,rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[.2,.3,32]}),(0,a.jsx)("meshBasicMaterial",{ref:i,color:ng,transparent:!0,opacity:0,side:d.DoubleSide,toneMapped:!1})]})}function nX({pos:e,i:t,progress:r}){let n=(0,s.useRef)(null);return(0,l.useFrame)(()=>{let e=(r.current??0)*(nA.N-1),i=d.MathUtils.clamp(e-(t-.5),0,1);n.current&&(n.current.style.opacity=i>.9?"1":"0")}),(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:e,zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsx)("div",{className:"dm-st3d-tag is-win",style:{"--tc":ng,opacity:0},ref:n,children:"βœ“ Delivered"})})}let nY=s.default.memo(function({i:e,progress:t,reduced:r,awake:n,focused:i}){let o=nx(e,t,n),l=(0,s.useMemo)(()=>{let e=[nj,...nk].map(([e,t])=>new d.Vector3(e,.12,t));return new d.CatmullRomCurve3(e,!1,"catmullrom",.2)},[]),c=(0,s.useMemo)(()=>l.getPoints(100),[l]),u=nk[nk.length-1];return(0,a.jsxs)("group",{position:(0,nA.districtPosition)(e),visible:n,children:[(0,a.jsx)(k,{points:c,color:ng,lineWidth:2.6,transparent:!0,opacity:.8,toneMapped:!1}),(0,a.jsx)(s.Suspense,{fallback:null,children:(0,a.jsx)(nD,{route:l,reduced:r,i:e,progress:t,awake:n})}),(0,a.jsxs)("group",{position:[nj[0],0,nj[1]],children:[(0,a.jsxs)("mesh",{position:[0,.02,0],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[.62,.74,36]}),(0,a.jsx)("meshBasicMaterial",{color:ng,transparent:!0,opacity:.5,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[0,.13,0],children:[(0,a.jsx)("cylinderGeometry",{args:[.5,.58,.26,6]}),(0,a.jsx)("meshStandardMaterial",{color:"#0f2036",emissive:ng,emissiveIntensity:.15,metalness:.4,roughness:.45})]}),(0,a.jsx)(nE,{position:[0,.52,0],color:ng,size:.14})]}),nk.map(([e,t],r)=>{let n=r===nk.length-1;return(0,a.jsxs)("group",{position:[e,0,t],children:[(0,a.jsxs)("mesh",{position:[0,.02,0],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[.16,.23,20]}),(0,a.jsx)("meshBasicMaterial",{color:ng,transparent:!0,opacity:.55,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[0,.3,0],children:[(0,a.jsx)("cylinderGeometry",{args:[.03,.03,.6,8]}),(0,a.jsx)("meshStandardMaterial",{color:ng,emissive:ng,emissiveIntensity:.4})]}),(0,a.jsx)(nE,{position:[0,.66,0],color:ng,size:n?.16:.12})]},r)}),n&&(0,a.jsx)(nQ,{pos:[u[0],.02,u[1]],i:e,progress:t}),i&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[nj[0],1.05,nj[1]],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsx)("div",{className:"dm-st3d-tag",style:{"--tc":ng},ref:o,children:"🏒 Dispatch Hub"})}),nk.map(([e,t],r)=>{let n=nK[r];return n?(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[e,1.06,t],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsx)("div",{className:"dm-st3d-tag",style:{"--tc":ng},ref:o,children:n})},r):null}),(0,a.jsx)(nX,{pos:[u[0],1.42,u[1]],i:e,progress:t}),nN.map(e=>(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:e.p,zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:"dm-st3d-tag",style:{"--tc":ng},ref:o,children:["βœ“ ",e.t]})},e.t)),(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[0,3.2,-.4],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:"dm-st3d-score",style:{"--tc":ng},ref:o,children:["πŸ—ΊοΈ Route optimized Β· ",(0,a.jsx)("b",{children:"βˆ’18%"})," distance"]})})]})]})}),nW=[{n:"Fulfillment",v:88,a:-.66},{n:"SLA Compliance",v:95,a:-.22},{n:"Efficiency",v:92,a:.22},{n:"Battery",v:100,a:.66}],nz=s.default.memo(function({i:e,progress:t,awake:r,focused:n}){let i=nx(e,t,r),o=(0,s.useMemo)(()=>nW.map(e=>{let t=[3.6*Math.sin(e.a),1.5,-1.4+(1-Math.cos(e.a))*3.6];return{...e,p:t,rotY:-e.a}}),[]);return(0,a.jsxs)("group",{position:(0,nA.districtPosition)(e),visible:r,children:[(0,a.jsxs)("mesh",{position:[0,.45,1.4],rotation:[-.12,0,0],children:[(0,a.jsx)("boxGeometry",{args:[5.6,.18,1.5]}),(0,a.jsx)("meshStandardMaterial",{color:"#dfe4f1",metalness:.4,roughness:.4})]}),(0,a.jsxs)("mesh",{position:[0,.12,.9],children:[(0,a.jsx)("boxGeometry",{args:[5.2,.24,.6]}),(0,a.jsx)("meshStandardMaterial",{color:"#cdd5e6",metalness:.3,roughness:.5})]}),o.map(e=>(0,a.jsxs)("group",{position:e.p,rotation:[0,e.rotY,0],children:[(0,a.jsx)(f,{args:[1.7,1.15,.06],radius:.06,smoothness:2,children:(0,a.jsx)("meshStandardMaterial",{color:"#ffffff",emissive:nC,emissiveIntensity:.18,metalness:.1,roughness:.4,transparent:!0,opacity:.92})}),n&&(0,a.jsx)(q.Html,{center:!0,distanceFactor:8,position:[0,0,.05],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:"dm-st3d-kpi",style:{"--tc":nC},ref:i,children:[(0,a.jsx)("span",{className:"dm-st3d-kpi__n",children:e.n}),(0,a.jsxs)("span",{className:"dm-st3d-kpi__v",children:[e.v,(0,a.jsx)("i",{children:"%"})]}),(0,a.jsx)("span",{className:"dm-st3d-kpi__bar",children:(0,a.jsx)("i",{style:{width:`${e.v}%`}})})]})})]},e.n)),n&&(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[0,3.1,-.4],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:"dm-st3d-score",style:{"--tc":nC},ref:i,children:["Performance Grade ",(0,a.jsx)("b",{children:"A"})," Β· 4.5 / 5"]})})]})}),nV=[{n:"EV Aware",v:88,x:-2.4,win:!0},{n:"Multi Trip",v:79,x:-.8,win:!1},{n:"Balanced",v:71,x:.8,win:!1},{n:"Proximity",v:64,x:2.4,win:!1}];function nZ({p:e,register:t,focused:r}){let n=.6+e.v/100*2.2,i=e.win?nv:"#94a3b8";return(0,a.jsxs)("group",{position:[e.x,0,-.6],children:[(0,a.jsxs)("mesh",{position:[0,n/2+.1,0],children:[(0,a.jsx)("boxGeometry",{args:[1,n,1]}),(0,a.jsx)("meshStandardMaterial",{color:i,emissive:i,emissiveIntensity:e.win?.7:.15,metalness:.2,roughness:.4,transparent:!0,opacity:e.win?.96:.7,toneMapped:!1})]}),r&&(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[0,n+.45,0],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:`dm-st3d-tag ${e.win?"is-win":"is-muted"}`,style:{"--tc":i},ref:t,children:[(0,a.jsxs)("b",{children:[e.v,"%"]}),"Β ",e.n]})})]})}let nq=s.default.memo(function({i:e,progress:t,reduced:r,isMobile:n,awake:i,focused:o}){let c=nx(e,t,i),u=(0,s.useRef)(null);return(0,l.useFrame)(e=>{u.current&&!r&&i&&(u.current.position.y=.6+.88*2.2+.95+.08*Math.sin(1.4*e.clock.elapsedTime),u.current.rotation.y+=.01)}),(0,a.jsxs)("group",{position:(0,nA.districtPosition)(e),visible:i,children:[(0,a.jsxs)("mesh",{position:[0,.05,-.6],children:[(0,a.jsx)("cylinderGeometry",{args:[4.3,4.5,.12,48]}),(0,a.jsx)("meshStandardMaterial",{color:"#1d1622",metalness:.5,roughness:.42,emissive:nv,emissiveIntensity:.06})]}),(0,a.jsxs)("mesh",{position:[0,.12,-.6],rotation:[-Math.PI/2,0,0],children:[(0,a.jsx)("ringGeometry",{args:[4.1,4.32,56]}),(0,a.jsx)("meshBasicMaterial",{color:nv,transparent:!0,opacity:.35,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[-2.4,.14,-.6],children:[(0,a.jsx)("cylinderGeometry",{args:[.85,.9,.14,28]}),(0,a.jsx)("meshStandardMaterial",{color:nv,emissive:nv,emissiveIntensity:.9,toneMapped:!1})]}),nV.map(e=>(0,a.jsx)(nZ,{p:e,register:c,focused:o},e.n)),(0,a.jsxs)("mesh",{position:[-2.4,3,-.6],children:[(0,a.jsx)("coneGeometry",{args:[1,2.6,28,1,!0]}),(0,a.jsx)("meshBasicMaterial",{color:nv,transparent:!0,opacity:.07,side:d.DoubleSide,toneMapped:!1})]}),(0,a.jsxs)("group",{ref:u,position:[-2.4,3.5,-.6],children:[(0,a.jsxs)("mesh",{position:[0,.18,0],children:[(0,a.jsx)("sphereGeometry",{args:[.26,24,12,0,2*Math.PI,0,Math.PI/1.7]}),(0,a.jsx)("meshStandardMaterial",{color:"#FFD45A",emissive:"#FFB020",emissiveIntensity:1.2,metalness:.6,roughness:.25,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[0,-.06,0],children:[(0,a.jsx)("cylinderGeometry",{args:[.05,.05,.24,10]}),(0,a.jsx)("meshStandardMaterial",{color:"#FFD45A",emissive:"#FFB020",emissiveIntensity:1,toneMapped:!1})]}),(0,a.jsxs)("mesh",{position:[0,-.22,0],children:[(0,a.jsx)("cylinderGeometry",{args:[.18,.22,.1,16]}),(0,a.jsx)("meshStandardMaterial",{color:"#FFD45A",emissive:"#FFB020",emissiveIntensity:1,toneMapped:!1})]})]}),i&&!r&&(0,a.jsx)(Z,{count:n?12:16,scale:[5,4,4],position:[-2.4,2.6,-.6],size:3.2,speed:.5,opacity:.9,color:"#ff9aa9"}),o&&(0,a.jsx)(q.Html,{center:!0,distanceFactor:9,position:[.7,3,-.6],zIndexRange:[20,0],pointerEvents:"none",children:(0,a.jsxs)("div",{className:"dm-st3d-winner3d",ref:c,children:[(0,a.jsx)("span",{className:"dm-st3d-winner3d__top",children:"πŸ† Best Strategy"}),(0,a.jsx)("span",{className:"dm-st3d-winner3d__name",children:"EV Aware"}),(0,a.jsxs)("span",{className:"dm-st3d-winner3d__row",children:[(0,a.jsx)("b",{children:"88%"})," Performance Score"]}),(0,a.jsxs)("span",{className:"dm-st3d-winner3d__row",children:[(0,a.jsx)("b",{children:"52/59"})," Orders Fulfilled"]})]})})]})});function n$(){let e=(0,s.useMemo)(()=>{let e=[];for(let t=0;te.getPoints(110),[e]);return(0,a.jsxs)("group",{children:[(0,a.jsx)(k,{points:t,color:"#9aa6c4",lineWidth:2,transparent:!0,opacity:.5,toneMapped:!1}),[0,.33,.66].map(t=>(0,a.jsx)(nF,{curve:e,color:"#c7cee0",speed:.06,offset:t,size:.09},t))]})}function n0(){let e=-(13*(nA.N-1))/2,t=(0,s.useMemo)(()=>{let e=new d.CanvasTexture(function(){let e=document.createElement("canvas");e.width=e.height=256;let t=e.getContext("2d");t.fillStyle="#e7ebf3",t.fillRect(0,0,256,256),t.strokeStyle="#d3dae8",t.lineWidth=1.5;for(let e=0;e<=8;e++){let r=e/8*256+.5;t.beginPath(),t.moveTo(r,0),t.lineTo(r,256),t.stroke(),t.beginPath(),t.moveTo(0,r),t.lineTo(256,r),t.stroke()}return t.strokeStyle="#c0cadd",t.lineWidth=3,t.strokeRect(0,0,256,256),e}());return e.wrapS=e.wrapT=d.RepeatWrapping,e.repeat.set(52,52),e.colorSpace=d.SRGBColorSpace,e.anisotropy=4,e},[]);return(0,a.jsxs)("mesh",{rotation:[-Math.PI/2,0,0],position:[0,-.02,e],children:[(0,a.jsx)("planeGeometry",{args:[120,(nA.N+3)*13]}),(0,a.jsx)("meshStandardMaterial",{map:t,color:"#ffffff",metalness:.05,roughness:.92})]})}function n1({progress:e,reduced:t,isMobile:r,stage:n,active:i,perf:o}){let l=e=>1>=Math.abs(e-n),[c,u]=(0,s.useState)(!1);(0,s.useEffect)(()=>{i&&u(!0)},[i]);let d=c&&!t&&!r;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("color",{attach:"background",args:[np]}),(0,a.jsx)("fog",{attach:"fog",args:[np,12,40]}),(0,a.jsx)("ambientLight",{intensity:.55}),(0,a.jsx)("hemisphereLight",{args:["#ffffff","#dfe4ee",.5]}),(0,a.jsx)("directionalLight",{position:[6,12,8],intensity:.7}),(0,a.jsx)("directionalLight",{position:[-7,5,4],intensity:.22,color:"#cdd6ff"}),(0,a.jsxs)(nc,{resolution:64,frames:1,children:[(0,a.jsx)(nu,{intensity:.5,position:[0,6,-3],scale:[12,6,1]}),(0,a.jsx)(nu,{intensity:.3,position:[-6,3,4],scale:[6,6,1],color:"#dfe6ff"}),(0,a.jsx)(nu,{intensity:.3,position:[6,2,2],scale:[5,5,1],color:"#ffffff"})]}),(0,a.jsx)(nM,{progress:e,reduced:t,isMobile:r}),(0,a.jsx)(n0,{}),(0,a.jsx)(n$,{}),(0,a.jsx)(nP,{i:0,progress:e,reduced:t,awake:l(0),focused:0===n}),(0,a.jsx)(nO,{i:1,progress:e,reduced:t,awake:l(1),focused:1===n}),(0,a.jsx)(nY,{i:2,progress:e,reduced:t,awake:l(2),focused:2===n}),(0,a.jsx)(nz,{i:3,progress:e,awake:l(3),focused:3===n}),(0,a.jsx)(nq,{i:4,progress:e,reduced:t,isMobile:r,awake:l(4),focused:4===n}),d&&(0,a.jsx)(Z,{count:16,scale:[18,7,13*nA.N],position:[0,3,-(13*(nA.N-1))/2],size:2,speed:.22,opacity:.35,color:"#9aa6c4"}),d&&(0,a.jsx)(nh.EffectComposer,{multisampling:0,children:(0,a.jsx)(nh.Bloom,{mipmapBlur:!0,intensity:.7,luminanceThreshold:.74,luminanceSmoothing:.06,radius:.68,kernelSize:nf.KernelSize.SMALL})}),(0,a.jsx)(nd,{all:!0}),o&&(0,a.jsx)(ny,{})]})}e.s(["default",0,function({progress:e,reduced:t=!1,isMobile:r=!1,active:n=!0,stage:i=0}){let s=new URLSearchParams(window.location.search).has("perf");return(0,a.jsx)(o.Canvas,{dpr:[1,r?1:1.25],camera:{position:[0,4,8.2],fov:50,near:.1,far:120},gl:{antialias:!1,powerPreference:"high-performance",alpha:!1},frameloop:n?"always":"never",children:(0,a.jsx)(n1,{progress:e,reduced:t,isMobile:r,stage:i,active:n,perf:s})})}],1517)},20927,e=>{e.n(e.i(1517))}]);