|
class ShaderUtils{static applyDiceSoNiceShader(e){void 0!==this.emissive&&game.dice3d.DiceFactory.realisticLighting&&ShaderUtils.selectiveBloomShaderFragment(e),this.userData.iridescent&&ShaderUtils.iridescentShaderFragment(e),"MeshPhysicalMaterial"==e.shaderName&&e.transmission&&ShaderUtils.transmissionAlphaShaderFragment(e),"MeshPhysicalMaterial"==e.shaderName&&e.iridescence&&ShaderUtils.iridescenceShaderFragment(e)}static transmissionAlphaShaderFragment(e){e.fragmentShader=e.fragmentShader.replace("#include <transmission_fragment>","#include <transmission_fragment>\n\t\t\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor);\n\t\t\tfloat grey = (material.diffuseColor.r + material.diffuseColor.g + material.diffuseColor.b) / 3.0;\n\t\t\ttransmissionAlpha = mix( transmissionAlpha, 1.0-grey, transmissionFactor );")}static selectiveBloomShaderFragment(e){e.uniforms.globalBloom=game.dice3d.uniforms.globalBloom,e.fragmentShader=`\n\t\t\tuniform float globalBloom;\n\t\t\t${e.fragmentShader}\n\t\t`.replace("#include <dithering_fragment>","#include <dithering_fragment>\n\t\t\tif (globalBloom > 0.5) {\n\t\t\t\t#ifdef USE_EMISSIVEMAP\n\t\t\t\t\tgl_FragColor.rgb = texture2D( emissiveMap, vUv ).rgb * emissive;\n\t\t\t\t#else\n\t\t\t\t\tgl_FragColor.rgb = vec3(0.0);\n\t\t\t\t#endif\n\t\t\t}\n\t\t")}static iridescenceShaderFragment(e){e.fragmentShader=e.fragmentShader.replace("#include <lights_physical_fragment>","#include <lights_physical_fragment>\n\t\t\t\t#ifdef USE_IRIDESCENCE\n\t\t\t\t\tmaterial.iridescence = iridescence;\n\t\t\t\t\t#ifdef USE_IRIDESCENCEMAP\n\t\t\t\t\t\tmaterial.iridescence *= texture2D( iridescenceMap, vUv ).b;\n\t\t\t\t\t#endif\n\t\t\t\t#endif")}static iridescentShaderFragment(e){e.uniforms.iridescenceLookUp=game.dice3d.uniforms.iridescenceLookUp,e.uniforms.iridescenceNoise=game.dice3d.uniforms.iridescenceNoise,e.uniforms.boost=game.dice3d.uniforms.boost,e.vertexShader=`\n\t\t\tvarying vec3 viWorldPosition;\n\t\t\tvarying vec3 viWorldNormal;\n\t\t\t${e.vertexShader}\n\t\t`.replace("#include <fog_vertex>","#include <fog_vertex>\n\t\t\tviWorldPosition = worldPosition.xyz;\n\t\t\tviWorldNormal = mat3(modelMatrix) * normalize(normal);\n\t\t\t"),e.fragmentShader=`\n\t\t\tvarying vec3 viWorldPosition;\n\t\t\tvarying vec3 viWorldNormal;\n\t\t\t\n\t\t\tuniform sampler2D iridescenceLookUp;\n\t\t\tuniform sampler2D iridescenceNoise;\n\t\t\tuniform float boost;\n\t\t\t${e.fragmentShader}\n\t\t`.replace("#include <transmission_fragment>","vec3 viewWorldDir = normalize(viWorldPosition - cameraPosition);\n\t\t\tvec3 iNormal = normalize(viWorldNormal); \n\t\t\tfloat NdotV = max(-dot(viewWorldDir, iNormal), 0.0);\n\t\t\tfloat fresnelFactor = pow(1.0 - NdotV, 5.0);\n\t\t\tfloat noise = texture2D(iridescenceNoise, vUv/2.0).r;\n\t\t\tvec3 airy = texture2D(iridescenceLookUp, vec2(NdotV * .99, noise)).xyz;\n\t\t\t\n\t\t\tif(metalnessFactor >= 1.0) {\n\t\t\t\ttotalSpecular = totalSpecular * airy * boost;\n\t\t\t}\n\n\t\t\t#include <transmission_fragment>")}}class DicePreset{constructor(e,t=""){t=t||e,this.type=e,this.term="Die",this.shape=t||e,this.scale=1,this.labels=[],this.valueMap=null,this.values=[],this.bumps=[],this.emissiveMaps=[],this.emissive=0,this.mass=300,this.inertia=13,this.geometry=null,this.model=null,this.system="standard",this.modelLoaded=!1,this.modelLoading=!1,this.modelFile=null,this.internalAdd=!1,this.appearance={labelColor:"#FFFFFF",diceColor:"#000000",outlineColor:"#000000",edgeColor:"#000000",texture:"none",material:"auto",font:"auto",colorset:"custom"}}setValues(e=1,t=20,i=1){this.values=this.range(e,t,i),e<1&&this.setValueMap(e,t,i)}setValueMap(e,t,i){let n={},r=1;for(let s=e;s<=t;s+=i)n[s]=r,r++;this.valueMap=n}registerFaces(e,t="labels"){let i=[];if(i.push(""),["d2","d10"].includes(this.shape)||i.push(""),"d4"==this.shape){let t=e[0],n=e[1],r=e[2],s=e[3];i=[[[],[0,0,0],[n,s,r],[t,r,s],[n,t,s],[t,n,r]],[[],[0,0,0],[n,r,s],[r,t,s],[n,s,t],[r,n,t]],[[],[0,0,0],[s,r,n],[r,s,t],[s,n,t],[r,t,n]],[[],[0,0,0],[s,n,r],[t,s,r],[s,t,n],[t,r,n]]]}else Array.prototype.push.apply(i,e);switch(t){case"labels":this.labels=i;break;case"bumps":this.bumps=i;break;case"emissive":this.emissiveMaps=i}}setLabels(e){this.labels=e,this.modelLoaded=!1,this.modelLoading=!1}setBumpMaps(e){this.bumps=e,this.modelLoaded=!1,this.modelLoading=!1}setEmissiveMaps(e){this.emissiveMaps=e,this.modelLoaded=!1,this.modelLoading=!1}loadTextures(){return this.modelLoaded||!1!==this.modelLoading||(this.modelLoading=new Promise(((e,t)=>{let i,n,r=0;for(let t=0;t<3;t++){switch(t){case 0:i=this.labels,n="labels";break;case 1:i=this.bumps,n="bumps";break;case 2:i=this.emissiveMaps,n="emissive"}let s=0,a=i.length,o=/\.(PNG|JPG|GIF|WEBP)$/i,l=Array(i.length),c=!1;for(let t=0;t<a;t++)null!=i[t]&&""!=i[t]&&i[t].match(o)?(c=!0,l[t]=new Image,l[t].crossOrigin="Anonymous",l.textureType=n,l[t].onload=function(){++s>=a&&(this.registerFaces(l,l.textureType),r<2?r++:(e(),this.modelLoaded=!0))}.bind(this),l[t].onerror=function(t){console.error("[Dice So Nice] Error loading texture:"+t),++s>=a&&(r<2?r++:(e(),this.modelLoaded=!0))}.bind(this,i[t]),l[t].src=i[t]):(l[t]=i[t],++s);c||(this.registerFaces(l,n),r<2?r++:(e(),this.modelLoaded=!0))}}))),this.modelLoading}range(e,t,i=1){for(var n=[e],r=e;r<t;)n.push(r+=i||1);return n}setModel(e){this.modelFile=e,this.modelLoaded=!1}loadModel(e=null){return this.modelLoaded||!1!==this.modelLoading||(this.modelLoading=new Promise(((t,i)=>{e.load(this.modelFile,(e=>{e.scene.traverse((function(e){if(e.isMesh){e.castShadow=!0,e.material.onBeforeCompile=ShaderUtils.applyDiceSoNiceShader;const t=game.dice3d.box.anisotropy;null!==e.material.map&&(e.material.map.anisotropy=t),null!==e.material.normalMap&&(e.material.normalMap.anisotropy=t),null!==e.material.emissiveMap&&(e.material.emissiveMap.anisotropy=t),null!==e.material.roughnessMap&&(e.material.roughnessMap.anisotropy=t),null!==e.material.metalnessMap&&(e.material.metalnessMap.anisotropy=t)}})),this.model=e,this.modelLoaded=!0,Hooks.callAll("diceSoNiceModelLoaded",this),t(e)}))}))),this.modelLoading}}const e=[],t=[];let i;i=new DicePreset("d2"),i.setLabels(["1","2"]),i.setValues(1,2),i.inertia=8,i.mass=400,i.scale=.9,e.push(i),i=new DicePreset("dc","d2"),i.term="Coin",i.setLabels(["modules/dice-so-nice/textures/coin/tail.webp","modules/dice-so-nice/textures/coin/heads.webp"]),i.setBumpMaps(["modules/dice-so-nice/textures/coin/tail_bump.webp","modules/dice-so-nice/textures/coin/heads_bump.webp"]),i.setValues(0,1),i.inertia=8,i.scale=.9,i.colorset="coin_default",e.push(i),i=new DicePreset("d4"),i.setLabels(["1","2","3","4"]),i.setValues(1,4),i.inertia=5,i.scale=1.2,e.push(i),i=new DicePreset("d6"),i.setLabels(["1","2","3","4","5","6"]),i.setValues(1,6),i.scale=.9,e.push(i),i=new DicePreset("d3","d6"),i.setLabels(["1","2","3"]),i.setValues(1,3),i.scale=.9,e.push(i),i=new DicePreset("df","d6"),i.term="FateDie",i.setLabels(["−"," ","+"]),i.setValues(-1,1),i.scale=.9,e.push(i),i=new DicePreset("d8"),i.setLabels(["1","2","3","4","5","6","7","8"]),i.setValues(1,8),e.push(i),i=new DicePreset("d10"),i.setLabels(["1","2","3","4","5","6","7","8","9","0"]),i.setValues(1,10),i.mass=450,i.inertia=9,i.scale=.9,e.push(i),i=new DicePreset("d5","d10"),i.setLabels(["1","2","3","4","5"]),i.setValues(1,5),i.mass=450,i.inertia=9,i.scale=.9,e.push(i),i=new DicePreset("d100","d10"),i.setLabels(["10","20","30","40","50","60","70","80","90","00"]),i.setValues(10,100,10),i.mass=450,i.inertia=9,i.scale=.9,e.push(i),i=new DicePreset("d12"),i.setLabels(["1","2","3","4","5","6","7","8","9","10","11","12"]),i.setValues(1,12),i.mass=450,i.inertia=8,i.scale=.9,e.push(i),i=new DicePreset("d14"),i.setLabels(["1","2","3","4","5","6","7","8","9","10","11","12","13","14"]),i.setValues(1,14),i.mass=450,i.inertia=8,i.scale=1,e.push(i),i=new DicePreset("d7","d14"),i.setLabels(["1","2","3","4","5","6","7"]),i.setValues(1,7),i.mass=450,i.inertia=8,i.scale=1,e.push(i),i=new DicePreset("d16"),i.setLabels(["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"]),i.setValues(1,16),i.mass=450,i.inertia=8,i.scale=1,e.push(i),i=new DicePreset("d20"),i.setLabels(["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"]),i.setValues(1,20),i.mass=500,i.scale=1,i.inertia=6,e.push(i),i=new DicePreset("d24"),i.setLabels(["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24"]),i.setValues(1,24),i.mass=500,i.scale=1,i.inertia=10,e.push(i),i=new DicePreset("d30"),i.setLabels(["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30"]),i.setValues(1,30),i.mass=500,i.scale=1,i.inertia=10,e.push(i),t.push({type:"d6",labels:["modules/dice-so-nice/textures/dot/d6-1.webp","modules/dice-so-nice/textures/dot/d6-2.webp","modules/dice-so-nice/textures/dot/d6-3.webp","modules/dice-so-nice/textures/dot/d6-4.webp","modules/dice-so-nice/textures/dot/d6-5.webp","modules/dice-so-nice/textures/dot/d6-6.webp"],bumpMaps:["modules/dice-so-nice/textures/dot/d6-1-b.webp","modules/dice-so-nice/textures/dot/d6-2-b.webp","modules/dice-so-nice/textures/dot/d6-3-b.webp","modules/dice-so-nice/textures/dot/d6-4-b.webp","modules/dice-so-nice/textures/dot/d6-5-b.webp","modules/dice-so-nice/textures/dot/d6-6-b.webp"],system:"dot"}),t.push({type:"d6",labels:["modules/dice-so-nice/textures/dot/d6-1-black.webp","modules/dice-so-nice/textures/dot/d6-2-black.webp","modules/dice-so-nice/textures/dot/d6-3-black.webp","modules/dice-so-nice/textures/dot/d6-4-black.webp","modules/dice-so-nice/textures/dot/d6-5-black.webp","modules/dice-so-nice/textures/dot/d6-6-black.webp"],bumpMaps:["modules/dice-so-nice/textures/dot/d6-1-b.webp","modules/dice-so-nice/textures/dot/d6-2-b.webp","modules/dice-so-nice/textures/dot/d6-3-b.webp","modules/dice-so-nice/textures/dot/d6-4-b.webp","modules/dice-so-nice/textures/dot/d6-5-b.webp","modules/dice-so-nice/textures/dot/d6-6-b.webp"],system:"dot_b"}),t.push({type:"d2",labels:["1","F"],font:"FoundryVTT",system:"foundry_vtt",fontScale:1.2}),t.push({type:"d4",labels:["1","2","3","E"],font:"FoundryVTT",system:"foundry_vtt",fontScale:.8}),t.push({type:"d6",labels:["1","2","3","4","5","E"],font:"FoundryVTT",system:"foundry_vtt"}),t.push({type:"df",labels:["−"," ","+"],font:"FoundryVTT",system:"foundry_vtt"}),t.push({type:"d3",labels:["1","2","E"],font:"FoundryVTT",system:"foundry_vtt"}),t.push({type:"d8",labels:["1","2","3","4","5","6","7","F"],font:"FoundryVTT",system:"foundry_vtt"}),t.push({type:"d10",labels:["1","2","3","4","5","6","7","8","9","E"],font:"FoundryVTT",system:"foundry_vtt",fontScale:.9}),t.push({type:"d5",labels:["1","2","3","4","E"],font:"FoundryVTT",system:"foundry_vtt",fontScale:.9}),t.push({type:"d100",labels:["10","20","30","40","50","60","70","80","90","E"],font:"FoundryVTT",system:"foundry_vtt"}),t.push({type:"d12",labels:["1","2","3","4","5","6","7","8","9","10","11","E"],font:"FoundryVTT",system:"foundry_vtt"}),t.push({type:"d14",labels:["1","2","3","4","5","6","7","8","9","10","11","12","13","E"],font:"FoundryVTT",system:"foundry_vtt"}),t.push({type:"d7",labels:["1","2","3","4","5","6","E"],font:"FoundryVTT",system:"foundry_vtt"}),t.push({type:"d16",labels:["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","E"],font:"FoundryVTT",system:"foundry_vtt"}),t.push({type:"d20",labels:["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","F"],font:"FoundryVTT",system:"foundry_vtt"}),t.push({type:"d24",labels:["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","F"],font:"FoundryVTT",system:"foundry_vtt"}),t.push({type:"d30",labels:["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","E"],font:"FoundryVTT",system:"foundry_vtt"}),t.push({type:"df",labels:["modules/dice-so-nice/textures/spectrumdice/df-m.webp","modules/dice-so-nice/textures/spectrumdice/df-0.webp","modules/dice-so-nice/textures/spectrumdice/df-p.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/df-m.webp","modules/dice-so-nice/textures/spectrumdice/df-0.webp","modules/dice-so-nice/textures/spectrumdice/df-p.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),t.push({type:"d2",labels:["modules/dice-so-nice/textures/spectrumdice/d2-1.webp","modules/dice-so-nice/textures/spectrumdice/d2-2.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d2-1.webp","modules/dice-so-nice/textures/spectrumdice/d2-2.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),t.push({type:"dc",labels:["modules/dice-so-nice/textures/spectrumdice/dc-h.webp","modules/dice-so-nice/textures/spectrumdice/dc-t.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/dc-h.webp","modules/dice-so-nice/textures/spectrumdice/dc-t.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),t.push({type:"d4",labels:["modules/dice-so-nice/textures/spectrumdice/d4-1.webp","modules/dice-so-nice/textures/spectrumdice/d4-2.webp","modules/dice-so-nice/textures/spectrumdice/d4-3.webp","modules/dice-so-nice/textures/spectrumdice/d4-4.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d4-1.webp","modules/dice-so-nice/textures/spectrumdice/d4-2.webp","modules/dice-so-nice/textures/spectrumdice/d4-3.webp","modules/dice-so-nice/textures/spectrumdice/d4-4.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),t.push({type:"d6",labels:["modules/dice-so-nice/textures/spectrumdice/d6-1.webp","modules/dice-so-nice/textures/spectrumdice/d6-2.webp","modules/dice-so-nice/textures/spectrumdice/d6-3.webp","modules/dice-so-nice/textures/spectrumdice/d6-4.webp","modules/dice-so-nice/textures/spectrumdice/d6-5.webp","modules/dice-so-nice/textures/spectrumdice/d6-6.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d6-1.webp","modules/dice-so-nice/textures/spectrumdice/d6-2.webp","modules/dice-so-nice/textures/spectrumdice/d6-3.webp","modules/dice-so-nice/textures/spectrumdice/d6-4.webp","modules/dice-so-nice/textures/spectrumdice/d6-5.webp","modules/dice-so-nice/textures/spectrumdice/d6-6.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),t.push({type:"d8",labels:["modules/dice-so-nice/textures/spectrumdice/d8-1.webp","modules/dice-so-nice/textures/spectrumdice/d8-2.webp","modules/dice-so-nice/textures/spectrumdice/d8-3.webp","modules/dice-so-nice/textures/spectrumdice/d8-4.webp","modules/dice-so-nice/textures/spectrumdice/d8-5.webp","modules/dice-so-nice/textures/spectrumdice/d8-6.webp","modules/dice-so-nice/textures/spectrumdice/d8-7.webp","modules/dice-so-nice/textures/spectrumdice/d8-8.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d8-1.webp","modules/dice-so-nice/textures/spectrumdice/d8-2.webp","modules/dice-so-nice/textures/spectrumdice/d8-3.webp","modules/dice-so-nice/textures/spectrumdice/d8-4.webp","modules/dice-so-nice/textures/spectrumdice/d8-5.webp","modules/dice-so-nice/textures/spectrumdice/d8-6.webp","modules/dice-so-nice/textures/spectrumdice/d8-7.webp","modules/dice-so-nice/textures/spectrumdice/d8-8.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),t.push({type:"d10",labels:["modules/dice-so-nice/textures/spectrumdice/d10-1.webp","modules/dice-so-nice/textures/spectrumdice/d10-2.webp","modules/dice-so-nice/textures/spectrumdice/d10-3.webp","modules/dice-so-nice/textures/spectrumdice/d10-4.webp","modules/dice-so-nice/textures/spectrumdice/d10-5.webp","modules/dice-so-nice/textures/spectrumdice/d10-6.webp","modules/dice-so-nice/textures/spectrumdice/d10-7.webp","modules/dice-so-nice/textures/spectrumdice/d10-8.webp","modules/dice-so-nice/textures/spectrumdice/d10-9.webp","modules/dice-so-nice/textures/spectrumdice/d10-0.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d10-1.webp","modules/dice-so-nice/textures/spectrumdice/d10-2.webp","modules/dice-so-nice/textures/spectrumdice/d10-3.webp","modules/dice-so-nice/textures/spectrumdice/d10-4.webp","modules/dice-so-nice/textures/spectrumdice/d10-5.webp","modules/dice-so-nice/textures/spectrumdice/d10-6.webp","modules/dice-so-nice/textures/spectrumdice/d10-7.webp","modules/dice-so-nice/textures/spectrumdice/d10-8.webp","modules/dice-so-nice/textures/spectrumdice/d10-9.webp","modules/dice-so-nice/textures/spectrumdice/d10-0.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),t.push({type:"d12",labels:["modules/dice-so-nice/textures/spectrumdice/d12-1.webp","modules/dice-so-nice/textures/spectrumdice/d12-2.webp","modules/dice-so-nice/textures/spectrumdice/d12-3.webp","modules/dice-so-nice/textures/spectrumdice/d12-4.webp","modules/dice-so-nice/textures/spectrumdice/d12-5.webp","modules/dice-so-nice/textures/spectrumdice/d12-6.webp","modules/dice-so-nice/textures/spectrumdice/d12-7.webp","modules/dice-so-nice/textures/spectrumdice/d12-8.webp","modules/dice-so-nice/textures/spectrumdice/d12-9.webp","modules/dice-so-nice/textures/spectrumdice/d12-10.webp","modules/dice-so-nice/textures/spectrumdice/d12-11.webp","modules/dice-so-nice/textures/spectrumdice/d12-12.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d12-1.webp","modules/dice-so-nice/textures/spectrumdice/d12-2.webp","modules/dice-so-nice/textures/spectrumdice/d12-3.webp","modules/dice-so-nice/textures/spectrumdice/d12-4.webp","modules/dice-so-nice/textures/spectrumdice/d12-5.webp","modules/dice-so-nice/textures/spectrumdice/d12-6.webp","modules/dice-so-nice/textures/spectrumdice/d12-7.webp","modules/dice-so-nice/textures/spectrumdice/d12-8.webp","modules/dice-so-nice/textures/spectrumdice/d12-9.webp","modules/dice-so-nice/textures/spectrumdice/d12-10.webp","modules/dice-so-nice/textures/spectrumdice/d12-11.webp","modules/dice-so-nice/textures/spectrumdice/d12-12.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),t.push({type:"d100",labels:["modules/dice-so-nice/textures/spectrumdice/d100-10.webp","modules/dice-so-nice/textures/spectrumdice/d100-20.webp","modules/dice-so-nice/textures/spectrumdice/d100-30.webp","modules/dice-so-nice/textures/spectrumdice/d100-40.webp","modules/dice-so-nice/textures/spectrumdice/d100-50.webp","modules/dice-so-nice/textures/spectrumdice/d100-60.webp","modules/dice-so-nice/textures/spectrumdice/d100-70.webp","modules/dice-so-nice/textures/spectrumdice/d100-80.webp","modules/dice-so-nice/textures/spectrumdice/d100-90.webp","modules/dice-so-nice/textures/spectrumdice/d100-00.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d100-10.webp","modules/dice-so-nice/textures/spectrumdice/d100-20.webp","modules/dice-so-nice/textures/spectrumdice/d100-30.webp","modules/dice-so-nice/textures/spectrumdice/d100-40.webp","modules/dice-so-nice/textures/spectrumdice/d100-50.webp","modules/dice-so-nice/textures/spectrumdice/d100-60.webp","modules/dice-so-nice/textures/spectrumdice/d100-70.webp","modules/dice-so-nice/textures/spectrumdice/d100-80.webp","modules/dice-so-nice/textures/spectrumdice/d100-90.webp","modules/dice-so-nice/textures/spectrumdice/d100-00.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),t.push({type:"d20",labels:["modules/dice-so-nice/textures/spectrumdice/d20-1.webp","modules/dice-so-nice/textures/spectrumdice/d20-2.webp","modules/dice-so-nice/textures/spectrumdice/d20-3.webp","modules/dice-so-nice/textures/spectrumdice/d20-4.webp","modules/dice-so-nice/textures/spectrumdice/d20-5.webp","modules/dice-so-nice/textures/spectrumdice/d20-6.webp","modules/dice-so-nice/textures/spectrumdice/d20-7.webp","modules/dice-so-nice/textures/spectrumdice/d20-8.webp","modules/dice-so-nice/textures/spectrumdice/d20-9.webp","modules/dice-so-nice/textures/spectrumdice/d20-10.webp","modules/dice-so-nice/textures/spectrumdice/d20-11.webp","modules/dice-so-nice/textures/spectrumdice/d20-12.webp","modules/dice-so-nice/textures/spectrumdice/d20-13.webp","modules/dice-so-nice/textures/spectrumdice/d20-14.webp","modules/dice-so-nice/textures/spectrumdice/d20-15.webp","modules/dice-so-nice/textures/spectrumdice/d20-16.webp","modules/dice-so-nice/textures/spectrumdice/d20-17.webp","modules/dice-so-nice/textures/spectrumdice/d20-18.webp","modules/dice-so-nice/textures/spectrumdice/d20-19.webp","modules/dice-so-nice/textures/spectrumdice/d20-20.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d20-1.webp","modules/dice-so-nice/textures/spectrumdice/d20-2.webp","modules/dice-so-nice/textures/spectrumdice/d20-3.webp","modules/dice-so-nice/textures/spectrumdice/d20-4.webp","modules/dice-so-nice/textures/spectrumdice/d20-5.webp","modules/dice-so-nice/textures/spectrumdice/d20-6.webp","modules/dice-so-nice/textures/spectrumdice/d20-7.webp","modules/dice-so-nice/textures/spectrumdice/d20-8.webp","modules/dice-so-nice/textures/spectrumdice/d20-9.webp","modules/dice-so-nice/textures/spectrumdice/d20-10.webp","modules/dice-so-nice/textures/spectrumdice/d20-11.webp","modules/dice-so-nice/textures/spectrumdice/d20-12.webp","modules/dice-so-nice/textures/spectrumdice/d20-13.webp","modules/dice-so-nice/textures/spectrumdice/d20-14.webp","modules/dice-so-nice/textures/spectrumdice/d20-15.webp","modules/dice-so-nice/textures/spectrumdice/d20-16.webp","modules/dice-so-nice/textures/spectrumdice/d20-17.webp","modules/dice-so-nice/textures/spectrumdice/d20-18.webp","modules/dice-so-nice/textures/spectrumdice/d20-19.webp","modules/dice-so-nice/textures/spectrumdice/d20-20.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"});const n={none:{name:"DICESONICE.TextureNone",composite:"source-over",source:"",bump:""},cloudy:{name:"DICESONICE.TextureCloudsTransparent",composite:"destination-in",source:"modules/dice-so-nice/textures/cloudy.webp",bump:"modules/dice-so-nice/textures/cloudy.alt.webp"},cloudy_2:{name:"DICESONICE.TextureClouds",composite:"multiply",source:"modules/dice-so-nice/textures/cloudy.alt.webp",bump:"modules/dice-so-nice/textures/cloudy.alt.webp"},fire:{name:"DICESONICE.TextureFire",composite:"multiply",source:"modules/dice-so-nice/textures/fire.webp",bump:"modules/dice-so-nice/textures/fire.webp"},marble:{name:"DICESONICE.TextureMarble",composite:"multiply",source:"modules/dice-so-nice/textures/marble.webp",bump:"",material:"glass"},water:{name:"DICESONICE.TextureWaterTransparent",composite:"destination-in",source:"modules/dice-so-nice/textures/water.webp",bump:"modules/dice-so-nice/textures/water.webp",material:"glass"},water_2:{name:"DICESONICE.TextureWater",composite:"multiply",source:"modules/dice-so-nice/textures/water.webp",bump:"modules/dice-so-nice/textures/water.webp",material:"glass"},ice:{name:"DICESONICE.TextureIceTransparent",composite:"destination-in",source:"modules/dice-so-nice/textures/ice.webp",bump:"modules/dice-so-nice/textures/ice.webp",material:"glass"},ice_2:{name:"DICESONICE.TextureIce",composite:"multiply",source:"modules/dice-so-nice/textures/ice.webp",bump:"modules/dice-so-nice/textures/ice.webp",material:"glass"},paper:{name:"DICESONICE.TexturePaper",composite:"multiply",source:"modules/dice-so-nice/textures/paper.webp",bump:"modules/dice-so-nice/textures/paper-bump.webp",material:"wood"},speckles:{name:"DICESONICE.TextureSpeckles",composite:"multiply",source:"modules/dice-so-nice/textures/speckles.webp",bump:"modules/dice-so-nice/textures/speckles.webp"},glitter:{name:"DICESONICE.TextureGlitter",composite:"multiply",source:"modules/dice-so-nice/textures/glitter.webp",bump:"modules/dice-so-nice/textures/glitter-bump.webp"},glitter_2:{name:"DICESONICE.TextureGlitterTransparent",composite:"destination-in",source:"modules/dice-so-nice/textures/glitter-alpha.webp",bump:""},stars:{name:"DICESONICE.TextureStars",composite:"multiply",source:"modules/dice-so-nice/textures/stars.webp",bump:"modules/dice-so-nice/textures/stars.webp"},stainedglass:{name:"DICESONICE.TextureStainedGlass",composite:"multiply",source:"modules/dice-so-nice/textures/stainedglass.webp",bump:"modules/dice-so-nice/textures/stainedglass-bump.webp",material:"iridescent"},skulls:{name:"DICESONICE.TextureSkulls",composite:"multiply",source:"modules/dice-so-nice/textures/skulls.webp",bump:"modules/dice-so-nice/textures/skulls.webp"},leopard:{name:"DICESONICE.TextureLeopard",composite:"multiply",source:"modules/dice-so-nice/textures/leopard.webp",bump:"modules/dice-so-nice/textures/leopard.webp",material:"wood"},tiger:{name:"DICESONICE.TextureTiger",composite:"multiply",source:"modules/dice-so-nice/textures/tiger.webp",bump:"modules/dice-so-nice/textures/tiger.webp",material:"wood"},cheetah:{name:"DICESONICE.TextureCheetah",composite:"multiply",source:"modules/dice-so-nice/textures/cheetah.webp",bump:"modules/dice-so-nice/textures/cheetah.webp",material:"wood"},dragon:{name:"Dragon",composite:"multiply",source:"modules/dice-so-nice/textures/dragon.webp",bump:"modules/dice-so-nice/textures/dragon-bump.webp"},lizard:{name:"Lizard",composite:"multiply",source:"modules/dice-so-nice/textures/lizard.webp",bump:"modules/dice-so-nice/textures/lizard-bump.webp"},bird:{name:"Bird",composite:"multiply",source:"modules/dice-so-nice/textures/feather.webp",bump:"modules/dice-so-nice/textures/feather-bump.webp"},astral:{name:"DICESONICE.TextureAstralSea",composite:"multiply",source:"modules/dice-so-nice/textures/astral.webp",bump:"modules/dice-so-nice/textures/stars.webp"},wood:{name:"DICESONICE.TextureWood",composite:"multiply",source:"modules/dice-so-nice/textures/wood.webp",bump:"modules/dice-so-nice/textures/wood.webp",material:"wood"},metal:{name:"DICESONICE.TextureMetal",composite:"multiply",source:"modules/dice-so-nice/textures/metal.webp",bump:"",material:"metal"},stone:{name:"DICESONICE.TextureStone",composite:"soft-light",source:"modules/dice-so-nice/textures/stone.webp",bump:"modules/dice-so-nice/textures/stone.webp",material:"stone"},radial:{name:"DICESONICE.TextureRadial",composite:"source-over",source:"modules/dice-so-nice/textures/radial.webp",bump:""},bronze01:{name:"DICESONICE.TextureBronze1",composite:"difference",source:"modules/dice-so-nice/textures/bronze01.webp",material:"metal",bump:""},bronze02:{name:"DICESONICE.TextureBronze2",composite:"difference",source:"modules/dice-so-nice/textures/bronze02.webp",material:"metal",bump:""},bronze03:{name:"DICESONICE.TextureBronze3",composite:"difference",source:"modules/dice-so-nice/textures/bronze03.webp",material:"metal",bump:""},bronze03a:{name:"DICESONICE.TextureBronze3a",composite:"difference",source:"modules/dice-so-nice/textures/bronze03a.webp",material:"metal",bump:""},bronze03b:{name:"DICESONICE.TextureBronze3b",composite:"difference",source:"modules/dice-so-nice/textures/bronze03b.webp",material:"metal",bump:""},bronze04:{name:"DICESONICE.TextureBronze4",composite:"difference",source:"modules/dice-so-nice/textures/bronze04.webp",material:"metal",bump:""}},r={coin_default:{name:"coin_default",description:"DICESONICE.ColorCoinDefault",category:"DICESONICE.AcquiredTaste",foreground:"#f6c928",background:"#f6c928",outline:"none",edge:"#f6c928",texture:"metal",visibility:"hidden"},spectrum_default:{name:"spectrum_default",description:"DICESONICE.ColorSpectrumDefault",category:"DICESONICE.AcquiredTaste",foreground:"#ffffff",background:"#000000",outline:"#ffffff",edge:"#000000",texture:"none",visibility:"hidden",material:"pristine"},radiant:{name:"radiant",description:"DICESONICE.ColorRadiant",category:"DICESONICE.DamageTypes",foreground:"#F9B333",background:"#FFFFFF",outline:"gray",texture:"paper"},fire:{name:"fire",description:"DICESONICE.ColorFire",category:"DICESONICE.DamageTypes",foreground:"#f8d84f",background:["#f8d84f","#f9b02d","#f43c04","#910200","#4c1009"],outline:"black",texture:"fire"},ice:{name:"ice",description:"DICESONICE.ColorIce",category:"DICESONICE.DamageTypes",foreground:"#60E9FF",background:["#214fa3","#3c6ac1","#253f70","#0b56e2","#09317a"],outline:"black",texture:"ice"},cold:{name:"cold",description:"DICESONICE.ColorCold",category:"DICESONICE.DamageTypes",foreground:"#60E9FF",background:["#214fa3","#3c6ac1","#253f70","#0b56e2","#09317a"],outline:"black",texture:"ice_2"},poison:{name:"poison",description:"DICESONICE.ColorPoison",category:"DICESONICE.DamageTypes",foreground:"#D6A8FF",background:["#313866","#504099","#66409e","#934fc3","#c949fc"],outline:"black",texture:"cloudy"},acid:{name:"acid",description:"DICESONICE.ColorAcid",category:"DICESONICE.DamageTypes",foreground:"#A9FF70",background:["#a6ff00","#83b625","#5ace04","#69f006","#b0f006","#93bc25"],outline:"black",texture:"marble",material:"plastic"},thunder:{name:"thunder",description:"DICESONICE.ColorThunder",category:"DICESONICE.DamageTypes",foreground:"#FFC500",background:"#7D7D7D",outline:"black",texture:"cloudy"},lightning:{name:"lightning",description:"DICESONICE.ColorLightning",category:"DICESONICE.DamageTypes",foreground:"#FFC500",background:["#f17105","#f3ca40","#eddea4","#df9a57","#dea54b"],outline:"#7D7D7D",texture:"ice"},air:{name:"air",description:"DICESONICE.ColorAir",category:"DICESONICE.DamageTypes",foreground:"#ffffff",background:["#d0e5ea","#c3dee5","#a4ccd6","#8dafb7","#80a4ad"],outline:"black",texture:"cloudy"},water:{name:"water",description:"DICESONICE.ColorWater",category:"DICESONICE.DamageTypes",foreground:"#60E9FF",background:["#87b8c4","#77a6b2","#6b98a3","#5b8691","#4b757f"],outline:"black",texture:"water"},earth:{name:"earth",description:"DICESONICE.ColorEarth",category:"DICESONICE.DamageTypes",foreground:"#6C9943",background:["#346804","#184200","#527f22","#3a1d04","#56341a","#331c17","#5a352a","#302210"],outline:"black",texture:"speckles"},force:{name:"force",description:"DICESONICE.ColorForce",category:"DICESONICE.DamageTypes",foreground:"white",background:["#FF97FF","#FF68FF","#C651C6"],outline:"#570000",texture:"stars"},psychic:{name:"psychic",description:"DICESONICE.ColorPsychic",category:"DICESONICE.DamageTypes",foreground:"#D6A8FF",background:["#313866","#504099","#66409E","#934FC3","#C949FC","#313866"],outline:"black",texture:"speckles"},necrotic:{name:"necrotic",description:"DICESONICE.ColorNecrotic",category:"DICESONICE.DamageTypes",foreground:"#ffffff",background:"#6F0000",outline:"black",texture:"skulls"},breebaby:{name:"breebaby",description:"DICESONICE.ColorPastelSunset",category:"DICESONICE.ThemesSoNice",foreground:["#5E175E","#564A5E","#45455E","#3D5A5E","#1E595E","#5E3F3D","#5E1E29","#283C5E","#25295E"],background:["#FE89CF","#DFD4F2","#C2C2E8","#CCE7FA","#A1D9FC","#F3C3C2","#EB8993","#8EA1D2","#7477AD"],outline:"white",texture:"marble",material:"plastic"},pinkdreams:{name:"pinkdreams",description:"DICESONICE.ColorPinkDreams",category:"DICESONICE.ThemesSoNice",foreground:"white",background:["#ff007c","#df73ff","#f400a1","#df00ff","#ff33cc"],outline:"#570000",texture:"skulls"},inspired:{name:"inspired",description:"DICESONICE.ColorInspired",category:"DICESONICE.ThemesSoNice",foreground:"#FFD800",background:"#C4C4B6",outline:"#000000",texture:"stone"},bloodmoon:{name:"bloodmoon",description:"DICESONICE.ColorBloodMoon",category:"DICESONICE.ThemesSoNice",foreground:"#CDB800",background:"#6F0000",outline:"black",texture:"marble",material:"plastic"},starynight:{name:"starynight",description:"DICESONICE.ColorStaryNight",category:"DICESONICE.ThemesSoNice",foreground:"#4F708F",background:["#091636","#233660","#4F708F","#8597AD","#E2E2E2"],outline:"white",texture:"speckles"},glitterparty:{name:"glitterparty",description:"DICESONICE.ColorGlitterParty",category:"DICESONICE.ThemesSoNice",foreground:"white",background:["#FFB5F5","#7FC9FF","#A17FFF"],outline:"none",texture:"glitter"},astralsea:{name:"astralsea",description:"DICESONICE.ColorAstralSea",category:"DICESONICE.ThemesSoNice",foreground:"#565656",background:"white",outline:"none",texture:"astral"},foundry:{name:"foundry",description:"DICESONICE.ColorFoundry",category:"DICESONICE.ThemesSoNice",foreground:"#000000",background:"#ffffff",outline:"none",edge:"#000000",texture:"radial"},dragons:{name:"dragons",description:"DICESONICE.ColorDragons",category:"DICESONICE.AcquiredTaste",foreground:"#FFFFFF",background:["#B80000","#4D5A5A","#5BB8FF","#7E934E","#FFFFFF","#F6ED7C","#7797A3","#A78437","#862C1A","#FFDF8A"],outline:"black",texture:["dragon","lizard"],description:"Here be Dragons"},birdup:{name:"birdup",description:"DICESONICE.ColorBirdUp",category:"DICESONICE.AcquiredTaste",foreground:"#FFFFFF",background:["#F11602","#FFC000","#6EC832","#0094BC","#05608D","#FEABB3","#F75680","#F3F0DF","#C7A57F"],outline:"black",texture:"bird",description:"Bird Up!"},tigerking:{name:"tigerking",description:"DICESONICE.ColorTigerKing",category:"DICESONICE.AcquiredTaste",foreground:"#ffffff",background:"#FFCC40",outline:"black",texture:["leopard","tiger","cheetah"]},toxic:{name:"toxic",description:"DICESONICE.ColorToxic",category:"DICESONICE.AcquiredTaste",foreground:"#A9FF70",background:["#a6ff00","#83b625","#5ace04","#69f006","#b0f006","#93bc25"],outline:"black",texture:"fire"},rainbow:{name:"rainbow",description:"DICESONICE.ColorRainblow",category:"DICESONICE.Colors",foreground:["#FF5959","#FFA74F","#FFFF56","#59FF59","#2374FF","#00FFFF","#FF59FF"],background:["#900000","#CE3900","#BCBC00","#00B500","#00008E","#008282","#A500A5"],outline:"black",texture:"none"},random:{name:"random",description:"DICESONICE.ColorRaNdOm",category:"DICESONICE.Colors",foreground:[],outline:[],background:[],texture:[]},black:{name:"black",description:"DICESONICE.ColorBlack",category:"DICESONICE.Colors",foreground:"#ffffff",background:"#000000",outline:"black",texture:"none"},white:{name:"white",description:"DICESONICE.ColorWhite",category:"DICESONICE.Colors",foreground:"#000000",background:"#FFFFFF",outline:"#FFFFFF",texture:"none"},grey:{name:"grey",description:"DICESONICE.ColorGrey",category:"DICESONICE.Colors",foreground:"#FFFFFF",background:"#888888",outline:"#000000",texture:"none"},red:{name:"red",description:"DICESONICE.ColorRed",category:"DICESONICE.Colors",foreground:"#FFFFFF",background:"#FF0000",outline:"none",texture:"none"},blue:{name:"blue",description:"DICESONICE.ColorBlue",category:"DICESONICE.Colors",foreground:"#FFFFFF",background:"#0000FF",outline:"none",texture:"none"},green:{name:"green",description:"DICESONICE.ColorGreen",category:"DICESONICE.Colors",foreground:"#FFFFFF",background:"#00FF00",outline:"none",texture:"none"},yellow:{name:"yellow",description:"DICESONICE.ColorYellow",category:"DICESONICE.Colors",foreground:"#000000",background:"#FFFF00",outline:"none",texture:"none"},pink:{name:"pink",description:"DICESONICE.ColorPink",category:"DICESONICE.Colors",foreground:"#FFFFFF",background:"#FF00FF",outline:"none",texture:"none"},cyan:{name:"cyan",description:"DICESONICE.ColorCyan",category:"DICESONICE.Colors",foreground:"#000000",background:"#00FFFF",outline:"none",texture:"none"},prism:{name:"prism",description:"DICESONICE.ColorPrism",category:"DICESONICE.AcquiredTaste",foreground:"#FFFFFF",background:"#FFFFFF",outline:"black",texture:"stainedglass"},bronze:{name:"bronze",description:"DICESONICE.ColorBronze",category:"DICESONICE.ThemesSoNice",foreground:["#FF9159","#FFB066","#FFBF59","#FFD059"],background:["#705206","#7A4E06","#643100","#7A2D06"],outline:["#3D2D03","#472D04","#301700","#471A04"],edge:["#FF5D0D","#FF7B00","#FFA20D","#FFBA0D"],texture:[["bronze01","bronze02","bronze03","bronze03b","bronze03b","bronze04"]]},custom:{name:"custom",description:"DICESONICE.ColorCustom",category:"DICESONICE.Colors",foreground:"",background:"",outline:"",edge:"",texture:"none"}},s={d2:1,d4:1,d6:1.3,d8:1.1,d10:1,d12:1.1,d14:.5,d16:.5,d20:1,d24:1,d30:.75,d3:1.3,d5:1,d7:.5,df:2,d100:.75};class DiceColors{static loadTextures(e,t){let i={},n={},r=0,s=Object.entries(e),a=2*s.length;for(const[e,o]of s)""!==o.source?(i[e]=new Image,i[e].crossOrigin="Anonymous",i[e].onload=function(){++r>=a&&(DiceColors.diceTextures=mergeObject(i,DiceColors.diceTextures||{},{performDeletions:!0}),DiceColors.diceBumps=mergeObject(n,DiceColors.diceBumps||{},{performDeletions:!0}),t(i))},i[e].src=o.source,""!==o.bump?(n[e]=new Image,n[e].crossOrigin="Anonymous",n[e].onload=function(){++r>=a&&(DiceColors.diceTextures=mergeObject(i,DiceColors.diceTextures||{},{performDeletions:!0}),DiceColors.diceBumps=mergeObject(n,DiceColors.diceBumps||{},{performDeletions:!0}),t(i))},n[e].src=o.bump):++r):r+=2}static getTexture(e){if(Array.isArray(e)){let t=[];for(let i=0,n=e.length;i<n;i++)("string"==typeof e[i]||Array.isArray(e[i]))&&t.push(this.getTexture(e[i]));return t}if(!e||""==e)return{name:"",texture:"",material:"plastic"};if("none"==e)return{name:"none",texture:"",material:"plastic"};if("random"==e){let e=Object.keys(DiceColors.diceTextures);return e.pop(),this.getTexture(e[Math.floor(Math.random()*e.length)])}return DiceColors.diceTextures?null!=DiceColors.diceTextures[e]?(n[e].material||(n[e].material="plastic"),DiceColors.diceBumps[e]||(DiceColors.diceBumps[e]=""),{name:e,bump:DiceColors.diceBumps[e],material:n[e].material,texture:DiceColors.diceTextures[e],composite:n[e].composite}):{name:"",texture:""}:e}static randomColor(){let e=[];e[0]=Math.floor(254*Math.random()),e[1]=Math.floor(254*Math.random()),e[2]=Math.floor(254*Math.random());let t=(299*parseInt(e[0])+587*parseInt(e[1])+114*parseInt(e[2]))/1e3>126?"rgb(30,30,30)":"rgb(230,230,230)";return{background:"rgb("+e[0]+","+e[1]+","+e[2]+")",foreground:t}}static initColorSets(e=null){let t;if(e){let i={};i[e.name]=e,t=Object.entries(i)}else t=Object.entries(r);for(const[e,i]of t)r[e].id=e,"custom"!=i.texture&&(r[e].texture=this.getTexture(i.texture)),"object"==typeof r[e].texture&&(r[e].texture.id=i.texture),r[e].material||(r[e].material=""),r[e].font||(r[e].font="Arial"),r[e].fontScale?r[e].fontScale=mergeObject(s,r[e].fontScale,{inplace:!1,performDeletions:!0}):r[e].fontScale=s,r[e].visibility||(r[e].visibility="visible");if(!e)for(let e=0;e<10;e++){let e=this.randomColor(),t=this.getTexture("random");""!=t.name?(r.random.foreground.push(e.foreground),r.random.background.push(e.background),r.random.outline.push(e.background),r.random.texture.push(t)):(r.random.foreground.push(e.foreground),r.random.background.push(e.background),r.random.outline.push("black"),r.random.texture.push(""))}}static getColorSet(e){return{...r[e]||r.custom}}static setColorCustom(e="#FFFFFF",t="#000000",i="#FFFFFF",n="#FFFFFF"){r.custom.foreground=e,r.custom.background=t,r.custom.outline=i,r.custom.edge=n}}const a={d2:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"29D8FA3F-1F04-4F5A-985B-16353BAB0B2C",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[88.93379974365234,.0001336209534201771,-4.532903671264648,88.93379974365234,.0001336209534201771,-4.532903671264648,88.93379974365234,.0001336209534201771,-4.532903671264648,90.8361587524414,-6830116763012484e-20,-2.6535863876342773,90.8361587524414,-6830116763012484e-20,-2.6535863876342773,84.580078125,-27.482694625854492,4.547501087188721,84.580078125,-27.482694625854492,4.547501087188721,86.38970947265625,-28.07042121887207,2.668496608734131,27.482057571411133,-84.58028411865234,-4.547504901885986,27.482057571411133,-84.58028411865234,-4.547504901885986,28.06978416442871,-86.38990783691406,-2.6685009002685547,27.481149673461914,-84.58119201660156,4.536083698272705,27.481149673461914,-84.58119201660156,4.536083698272705,28.069250106811523,-86.39043426513672,2.6568350791931152,-.0007737207342870533,-88.93378448486328,4.532901287078857,-.0007737207342870533,-88.93378448486328,4.532901287078857,-.0007737207342870533,-88.93378448486328,4.532901287078857,-.0005998046253807843,-90.83614349365234,2.6535849571228027,-.0005998046253807843,-90.83614349365234,2.6535849571228027,-27.482694625854492,-84.58097839355469,4.5305891036987305,-27.482694625854492,-84.58097839355469,4.5305891036987305,-28.07042121887207,-86.39022827148438,2.6512229442596436,-84.58029174804688,-27.481143951416016,-4.552997589111328,-84.58029174804688,-27.481143951416016,-4.552997589111328,-86.3899154663086,-28.06924819946289,-2.6741106510162354,-88.93379974365234,-.0001336209534201771,4.532903671264648,-88.93379974365234,-.0001336209534201771,4.532903671264648,-88.93379974365234,-.0001336209534201771,4.532903671264648,-90.8361587524414,6830116763012484e-20,2.6535863876342773,-90.8361587524414,6830116763012484e-20,2.6535863876342773,-71.94794464111328,52.27442169189453,-4.543759822845459,-71.94794464111328,52.27442169189453,-4.543759822845459,-73.4873275756836,53.39253234863281,-2.664675235748291,-71.9488525390625,52.27351379394531,4.539828777313232,-71.9488525390625,52.27351379394531,4.539828777313232,-73.48785400390625,53.391998291015625,2.6606605052948,-52.27299499511719,71.94922637939453,-4.539824962615967,-52.27299499511719,71.94922637939453,-4.539824962615967,-53.39146423339844,73.48823547363281,-2.660656213760376,-27.482057571411133,84.58028411865234,4.547504901885986,-27.482057571411133,84.58028411865234,4.547504901885986,-28.06978416442871,86.38990783691406,2.6685009002685547,.0007736866245977581,88.93378448486328,-4.532901287078857,.0007736866245977581,88.93378448486328,-4.532901287078857,.0007736866245977581,88.93378448486328,-4.532901287078857,.0005998046253807843,90.83614349365234,-2.6535849571228027,.0005998046253807843,90.83614349365234,-2.6535849571228027,-.00013426830992102623,88.93287658691406,4.550687789916992,-.00013426830992102623,88.93287658691406,4.550687789916992,-.00013426830992102623,88.93287658691406,4.550687789916992,6751317414455116e-20,90.83562469482422,2.6717519760131836,6751317414455116e-20,90.83562469482422,2.6717519760131836,27.482694625854492,84.58097839355469,-4.5305891036987305,27.482694625854492,84.58097839355469,-4.5305891036987305,28.07042121887207,86.39022827148438,-2.6512229442596436,84.5811996459961,27.482053756713867,-4.530590534210205,84.5811996459961,27.482053756713867,-4.530590534210205,86.39044189453125,28.069782257080078,-2.651224374771118,84.58098602294922,-27.48178482055664,-4.5360870361328125,84.58098602294922,-27.48178482055664,-4.5360870361328125,86.3902359008789,-28.069887161254883,-2.6568384170532227,73.48785400390625,-53.391998291015625,-2.6606605052948,71.9488525390625,-52.27351379394531,-4.539828777313232,71.9488525390625,-52.27351379394531,-4.539828777313232,52.273902893066406,-71.94831848144531,-4.543763637542725,52.273902893066406,-71.94831848144531,-4.543763637542725,53.39199447631836,-73.48770904541016,-2.6646788120269775,.00013430237595457584,-88.93287658691406,-4.550687789916992,.00013430237595457584,-88.93287658691406,-4.550687789916992,.00013430237595457584,-88.93287658691406,-4.550687789916992,-6751317414455116e-20,-90.83562469482422,-2.6717519760131836,-6751317414455116e-20,-90.83562469482422,-2.6717519760131836,-28.069887161254883,-86.38970184326172,-2.6741127967834473,-27.48178482055664,-84.58007049560547,-4.552999496459961,-27.48178482055664,-84.58007049560547,-4.552999496459961,-52.27351760864258,-71.94794464111328,-4.5542144775390625,-52.27351760864258,-71.94794464111328,-4.5542144775390625,-53.39200210571289,-73.4873275756836,-2.67535400390625,-71.94832611083984,-52.27299118041992,-4.554214000701904,-71.94832611083984,-52.27299118041992,-4.554214000701904,-73.48771667480469,-53.391456604003906,-2.675353527069092,-88.93289947509766,.0007747426279820502,-4.550684928894043,-88.93289947509766,.0007747426279820502,-4.550684928894043,-88.93289947509766,.0007747426279820502,-4.550684928894043,-90.83563995361328,.000600832630880177,-2.671748399734497,-90.83563995361328,.000600832630880177,-2.671748399734497,-84.580078125,27.482694625854492,-4.547501087188721,-84.580078125,27.482694625854492,-4.547501087188721,-86.38970947265625,28.07042121887207,-2.668496608734131,-27.481149673461914,84.58119201660156,-4.536083698272705,-27.481149673461914,84.58119201660156,-4.536083698272705,-28.069250106811523,86.39043426513672,-2.6568350791931152,52.2744255065918,71.94884490966797,-4.529373645782471,52.2744255065918,71.94884490966797,-4.529373645782471,53.39253616333008,73.48784637451172,-2.649981737136841,71.94922637939453,52.273895263671875,-4.529374599456787,71.94922637939453,52.273895263671875,-4.529374599456787,73.48823547363281,53.391990661621094,-2.649982452392578,88.93289947509766,-.0007747426279820502,4.550684928894043,88.93289947509766,-.0007747426279820502,4.550684928894043,88.93289947509766,-.0007747426279820502,4.550684928894043,90.83563995361328,-.000600832630880177,2.671748399734497,90.83563995361328,-.000600832630880177,2.671748399734497,71.94794464111328,-52.27442169189453,4.543759346008301,71.94794464111328,-52.27442169189453,4.543759346008301,73.4873275756836,-53.39253234863281,2.664675235748291,52.27299499511719,-71.94922637939453,4.539824962615967,52.27299499511719,-71.94922637939453,4.539824962615967,53.39146423339844,-73.48823547363281,2.660656213760376,-52.2744255065918,-71.94884490966797,4.529373645782471,-52.2744255065918,-71.94884490966797,4.529373645782471,-53.39253616333008,-73.48784637451172,2.649981737136841,-73.48823547363281,-53.391990661621094,2.649982452392578,-71.94922637939453,-52.273895263671875,4.529374599456787,-71.94922637939453,-52.273895263671875,4.529374599456787,-84.5811996459961,-27.482053756713867,4.530590534210205,-84.5811996459961,-27.482053756713867,4.530590534210205,-86.39044189453125,-28.069782257080078,2.651224374771118,-84.58098602294922,27.48178482055664,4.5360870361328125,-84.58098602294922,27.48178482055664,4.5360870361328125,-86.3902359008789,28.069887161254883,2.6568384170532227,-52.273902893066406,71.94831848144531,4.543763637542725,-52.273902893066406,71.94831848144531,4.543763637542725,-53.39199447631836,73.48770904541016,2.6646788120269775,27.48178482055664,84.58007049560547,4.552999496459961,27.48178482055664,84.58007049560547,4.552999496459961,28.069887161254883,86.38970184326172,2.6741127967834473,52.27351760864258,71.94794464111328,4.5542144775390625,52.27351760864258,71.94794464111328,4.5542144775390625,53.39200210571289,73.4873275756836,2.67535400390625,73.48771667480469,53.391456604003906,2.675353527069092,71.94832611083984,52.27299118041992,4.554214000701904,71.94832611083984,52.27299118041992,4.554214000701904,84.58029174804688,27.481143951416016,4.552997589111328,84.58029174804688,27.481143951416016,4.552997589111328,86.3899154663086,28.06924819946289,2.6741106510162354],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[.004305333364754915,.00014043168630450964,-.9999908208847046,.004305333364754915,.00014043168630450964,-.9999908208847046,.004305333364754915,.00014043168630450964,-.9999908208847046,.967370867729187,23871660232543945e-21,-.2533644437789917,.967370867729187,23871660232543945e-21,-.2533644437789917,.003924518823623657,-.0014061331748962402,.9999912977218628,.003924518823623657,-.0014061331748962402,.9999912977218628,.919967532157898,-.2989548146724701,.25354647636413574,.0014187097549438477,-.003943443298339844,-.9999911785125732,.0014187097549438477,-.003943443298339844,-.9999911785125732,.2989460825920105,-.9199705719947815,-.2535456418991089,.001207306981086731,-.004139244556427002,.999990701675415,.001207306981086731,-.004139244556427002,.999990701675415,.29889336228370667,-.9200217723846436,.25342196226119995,-.00010144524276256561,-.004305422306060791,.9999908208847046,-.00010144524276256561,-.004305422306060791,.9999908208847046,-.00010144524276256561,-.004305422306060791,.9999908208847046,-2811197191476822e-20,-.9673709869384766,.25336405634880066,-2811197191476822e-20,-.9673709869384766,.25336405634880066,-.0013865083456039429,-.0041558146476745605,.9999904036521912,-.0013865083456039429,-.0041558146476745605,.9999904036521912,-.29895341396331787,-.9200186133384705,.25336307287216187,-.003935068845748901,-.0012163519859313965,-.9999915361404419,-.003935068845748901,-.0012163519859313965,-.9999915361404419,-.9199703335762024,-.2988958954811096,-.25360578298568726,-.00432974100112915,-.00013017654418945312,.9999905824661255,-.00432974100112915,-.00013017654418945312,.9999905824661255,-.00432974100112915,-.00013017654418945312,.9999905824661255,-.967370867729187,-22581778466701508e-21,.2533644139766693,-.967370867729187,-22581778466701508e-21,.2533644139766693,-.003362357383593917,.002567464951425791,-.9999910593032837,-.003362357383593917,.002567464951425791,-.9999910593032837,-.7825664281845093,.5686163306236267,-.253506064414978,-.0035184919834136963,.0023897886276245117,.9999909996986389,-.0035184919834136963,.0023897886276245117,.9999909996986389,-.7826218605041504,.5685698390007019,.25343894958496094,-.002216615015640855,.0036201775074005127,-.9999910593032837,-.002216615015640855,.0036201775074005127,-.9999910593032837,-.5685653686523438,.782625675201416,-.25343722105026245,-.0013963840901851654,.0039055049419403076,.9999913573265076,-.0013963840901851654,.0039055049419403076,.9999913573265076,-.2989453971385956,.9199708104133606,.2535455524921417,.00011461973190307617,.004342749714851379,-.9999904632568359,.00011461973190307617,.004342749714851379,-.9999904632568359,.00011461973190307617,.004342749714851379,-.9999904632568359,28920238037244417e-21,.9673709273338318,-.25336408615112305,28920238037244417e-21,.9673709273338318,-.25336408615112305,-9849853813648224e-20,.0041036903858184814,.9999915957450867,-9849853813648224e-20,.0041036903858184814,.9999915957450867,-9849853813648224e-20,.0041036903858184814,.9999915957450867,-1982133835554123e-20,.967315137386322,.2535773515701294,-1982133835554123e-20,.967315137386322,.2535773515701294,.001379296649247408,.004155764821916819,-.9999904632568359,.001379296649247408,.004155764821916819,-.9999904632568359,.2989526391029358,.9200189113616943,-.25336307287216187,.004105646628886461,.0014420022489503026,-.9999905824661255,.004105646628886461,.0014420022489503026,-.9999905824661255,.9200265407562256,.29895055294036865,-.25333744287490845,.0041483743116259575,-.001177109545096755,-.999990701675415,.0041483743116259575,-.001177109545096755,-.999990701675415,.92001873254776,-.29890236258506775,-.2534225881099701,.7826225161552429,-.5685691237449646,-.2534385919570923,.0034059027675539255,-.002543120877817273,-.9999909400939941,.0034059027675539255,-.002543120877817273,-.9999909400939941,.0025934576988220215,-.0033233165740966797,-.9999910593032837,.0025934576988220215,-.0033233165740966797,-.9999910593032837,.5686105489730835,-.7825710773468018,-.2535049617290497,.00014024082338437438,-.004108965862542391,-.9999915361404419,.00014024082338437438,-.004108965862542391,-.9999915361404419,.00014024082338437438,-.004108965862542391,-.9999915361404419,21778512746095657e-21,-.9673150777816772,-.253577321767807,21778512746095657e-21,-.9673150777816772,-.253577321767807,-.29890191555023193,-.9199681878089905,-.2536064684391022,-.001328025944530964,-.003906830679625273,-.9999914765357971,-.001328025944530964,-.003906830679625273,-.9999914765357971,-.0024206042289733887,-.0033184662461280823,-.9999915361404419,-.0024206042289733887,-.0033184662461280823,-.9999915361404419,-.56856769323349,-.7825732231140137,-.25359416007995605,-.0033223330974578857,-.002392679452896118,-.9999916553497314,-.0033223330974578857,-.002392679452896118,-.9999916553497314,-.7825719118118286,-.5685604810714722,-.25361454486846924,-.004138410557061434,5978979606879875e-20,-.9999914169311523,-.004138410557061434,5978979606879875e-20,-.9999914169311523,-.004138410557061434,5978979606879875e-20,-.9999914169311523,-.9673154950141907,2910134026024025e-20,-.25357601046562195,-.9673154950141907,2910134026024025e-20,-.25357601046562195,-.003914192318916321,.0014359354972839355,-.9999912977218628,-.003914192318916321,.0014359354972839355,-.9999912977218628,-.9199680089950562,.29895293712615967,-.2535468339920044,-.001218944787979126,.004143953323364258,-.9999906420707703,-.001218944787979126,.004143953323364258,-.9999906420707703,-.2988971769809723,.920020580291748,-.25342193245887756,.002553605241701007,.003544599749147892,-.9999905228614807,.002553605241701007,.003544599749147892,-.9999905228614807,.5686197876930237,.7826223373413086,-.25332552194595337,.0034990310668945312,.0025759339332580566,-.9999905824661255,.0034990310668945312,.0025759339332580566,-.9999905824661255,.7826220393180847,.5686109662055969,-.25334614515304565,.004121424164623022,9648066043155268e-20,.9999914169311523,.004121424164623022,9648066043155268e-20,.9999914169311523,.004121424164623022,9648066043155268e-20,.9999914169311523,.9673154950141907,-2708425745368004e-20,.2535760700702667,.9673154950141907,-2708425745368004e-20,.2535760700702667,.0033468306064605713,-.002586185932159424,.9999910593032837,.0033468306064605713,-.002586185932159424,.9999910593032837,.7825667858123779,-.5686154365539551,.25350672006607056,.002382144331932068,-.003524601459503174,.9999909996986389,.002382144331932068,-.003524601459503174,.9999909996986389,.5685621500015259,-.7826279401779175,.2534373998641968,-.0025890469551086426,-.003517657518386841,.9999905228614807,-.0025890469551086426,-.003517657518386841,.9999905228614807,-.5686206817626953,-.7826217412948608,.253325492143631,-.7826230525970459,-.5686094760894775,.25334617495536804,-.003505319356918335,-.002576306462287903,.9999906420707703,-.003505319356918335,-.002576306462287903,.9999906420707703,-.0041239261627197266,-.001402430236339569,.9999905228614807,-.0041239261627197266,-.001402430236339569,.9999905228614807,-.9200277328491211,-.29894667863845825,.2533373534679413,-.0041457414627075195,.0012131333351135254,.999990701675415,-.0041457414627075195,.0012131333351135254,.999990701675415,-.9200185537338257,.29890307784080505,.2534220814704895,-.0025840699672698975,.003327280282974243,.9999911785125732,-.0025840699672698975,.003327280282974243,.9999911785125732,-.5686099529266357,.7825716137886047,.2535049021244049,.0012101978063583374,.003936886787414551,.9999915361404419,.0012101978063583374,.003936886787414551,.9999915361404419,.2989037334918976,.9199675917625427,.2536064088344574,.0023893117904663086,.003317922353744507,.9999916553497314,.0023893117904663086,.003317922353744507,.9999916553497314,.5685685873031616,.7825725674629211,.2535940706729889,.782572329044342,.5685595870018005,.25361499190330505,.0033287405967712402,.002385169267654419,.9999915361404419,.0033287405967712402,.002385169267654419,.9999915361404419,.003944873809814453,.0012125223875045776,.9999915957450867,.003944873809814453,.0012125223875045776,.9999915957450867,.9199705719947815,.298895001411438,.25360581278800964],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.23704378306865692,.023000359535217285,.2962978482246399,.4792518615722656,.5050051212310791,.2502303123474121,.22790862619876862,.021942079067230225,.2874794006347656,.4803285002708435,.017633967101573944,.6739451289176941,.20161525905132294,.1155695915222168,.21026334166526794,.11554199457168579,.23612302541732788,.3868170976638794,.6741329431533813,.48301517963409424,.22747491300106049,.3868447542190552,.17478206753730774,.5167970061302185,.2012992650270462,.3867114782333374,.2101074755191803,.38673484325408936,.17778971791267395,.4792518615722656,.20069445669651031,.47938668727874756,.2504180371761322,.5048181414604187,.16897115111351013,.4803285002708435,.20982962846755981,.4804449677467346,.17686891555786133,.38681697845458984,.3260548710823059,.5167969465255737,.16822080314159393,.3868447542190552,.1423611342906952,.11557012796401978,.9825537800788879,.32586705684661865,.1510092318058014,.11554241180419922,.17778971791267395,.02300053834915161,.3555530905723572,.4792248010635376,.4951818287372589,.7495819330215454,.16865456104278564,.021942198276519775,.34673523902893066,.480310320854187,.3197054862976074,.29629039764404297,.9477878212928772,.1063617467880249,.32840070128440857,.2962949275970459,.35455501079559326,.2964339256286621,.4484367072582245,.8934502601623535,.34586313366889954,.29642730951309204,.31974896788597107,.20592015981674194,.8936383128166199,.0522121787071228,.32843995094299316,.20592659711837769,.32605481147766113,.9823660254478455,.3545942008495331,.11562323570251465,.34578996896743774,.1155862808227539,.2962978482246399,.023000359535217285,.3192167282104492,.023042798042297363,.7497690320014954,.0054662227630615234,.287162721157074,.021942138671875,.32804927229881287,.022000432014465332,.2504180371761322,.9943457245826721,.25994858145713806,.02313518524169922,.3555530905723572,.023087799549102783,.2687670588493347,.022058546543121338,.3464353084564209,.021996140480041504,.295693039894104,.11567586660385132,.6741330623626709,.017446041107177734,.2868848443031311,.11565232276916504,.2953770160675049,.3868170976638794,.5169848203659058,.17459428310394287,.28672900795936584,.3868447542190552,.2364388257265091,.11567533016204834,.5169847011566162,.32586705684661865,.22763070464134216,.11565178632736206,.2276650071144104,.20608502626419067,.23635976016521454,.20609813928604126,.5517510175704956,.39409929513931274,.23622643947601318,.2964661121368408,.6059006452560425,.44824880361557007,.22753484547138214,.2964508533477783,.1414402574300766,.47938668727874756,.23704378306865692,.4792518615722656,.7497687339782715,.49499499797821045,.15057551860809326,.4804449677467346,.2282252460718155,.4803285002708435,.15085339546203613,.38673484325408936,.14204517006874084,.38671135902404785,.8254057765007019,.48301517963409424,.14212429523468018,.29628849029541016,.893638014793396,.4482489228248596,.15081912279129028,.2963016629219055,.1422577202320099,.20592069625854492,.9477876424789429,.39409929513931274,.15094926953315735,.20593607425689697,.14144045114517212,.02313530445098877,.31920260190963745,.4793957471847534,.9945327043533325,.2502301335334778,.15025892853736877,.02205866575241089,.3283390998840332,.4804449677467346,.31971582770347595,.38671642541885376,.9825538992881775,.17459410429000854,.32852432131767273,.38673120737075806,.31976577639579773,.11558306217193604,.8254058957099915,.017445921897888184,.3284158408641815,.11556941270828247,.29561394453048706,.2060987949371338,.6059007048606873,.05221235752105713,.28691911697387695,.2060856819152832,.29548054933547974,.2964667081832886,.5517511963844299,.1063617467880249,.2867889404296875,.29645150899887085,.005654247011989355,.749582052230835,.20069456100463867,.02313518524169922,.25994864106178284,.47938668727874756,.20951306819915771,.022058427333831787,.26908373832702637,.4804449677467346,.05240018665790558,.605712890625,.20151172578334808,.2059200406074524,.21020328998565674,.2059352993965149,.10654976963996887,.5515632033348083,.2013782411813736,.2962881922721863,.2100730687379837,.29630136489868164,.17697232961654663,.29646652936935425,.39428722858428955,.5515631437301636,.16828079521656036,.2964513301849365,.1684110462665558,.20608550310134888,.17710581421852112,.206098735332489,.44843676686286926,.6057127714157104,.1771848499774933,.11567568778991699,.4832030236721039,.6739450693130493,.168376624584198,.11565232276916504,.3545408844947815,.38678765296936035,.4832029938697815,.8252179622650146,.3458925485610962,.3868238925933838,.35459887981414795,.20606255531311035,.3942871689796448,.9475997686386108,.34590303897857666,.2060578465461731,.17478202283382416,.9823660254478455,.2608692944049835,.11557012796401978,.2695173919200897,.11554241180419922,.10654974728822708,.9475998282432556,.26076579093933105,.20592081546783447,.2694574296474457,.20593613386154175,.2693272829055786,.29630184173583984,.05240019038319588,.8934502601623535,.2606324851512909,.2962886691093445,.0176339503377676,.8252179622650146,.26055341958999634,.3867114782333374,.2693616449832916,.38673484325408936],normalized:!1},color:{itemSize:4,type:"Uint16Array",array:[65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535],normalized:!0}},index:{type:"Uint16Array",array:[35,38,32,129,54,126,123,91,38,130,57,97,18,10,13,21,77,72,120,32,88,17,72,70,27,20,103,105,60,7,130,94,129,126,45,50,28,24,117,13,66,108,117,80,112,29,88,85,111,80,77,41,46,91,108,61,105,135,4,57,76,87,44,38,30,32,54,42,45,72,67,70,77,78,75,94,95,92,104,108,105,113,117,112,125,129,126,134,130,132,113,111,109,15,13,12,14,21,17,49,41,40,61,58,60,61,64,62,77,73,72,88,82,85,135,100,102,132,129,128,60,0,3,66,8,64,10,68,8,80,22,78,24,81,22,32,86,88,38,89,36,91,43,89,94,52,54,57,95,97,57,1,55,6,105,7,19,111,21,26,120,29,12,108,107,48,126,50,25,117,115,118,35,120,40,123,121,99,7,101,121,35,33,7,3,101,35,123,38,129,94,54,123,41,91,130,135,57,18,71,10,21,111,77,120,35,32,17,21,72,103,5,131,5,98,131,98,133,131,131,127,124,124,47,131,47,39,131,39,122,27,122,34,27,34,119,27,27,116,114,114,110,20,20,16,103,16,11,103,11,106,103,27,114,20,103,131,39,39,27,103,105,61,60,130,97,94,126,54,45,28,84,24,13,10,66,117,24,80,29,120,88,111,112,80,41,51,46,108,66,61,135,102,4,56,2,65,2,59,65,59,63,65,65,9,69,69,74,76,76,79,87,79,23,87,23,83,87,87,31,37,37,90,44,44,53,93,93,96,44,96,56,44,65,69,76,87,37,44,56,65,44,65,76,44,38,36,30,54,52,42,72,73,67,77,80,78,94,97,95,104,107,108,113,115,117,125,128,129,134,135,130,113,112,111,15,18,13,14,19,21,49,51,41,61,62,58,61,66,64,77,75,73,88,86,82,135,134,100,132,130,129,60,58,0,66,10,8,10,71,68,80,24,22,24,84,81,32,30,86,38,91,89,91,46,43,94,92,52,57,55,95,57,4,1,6,104,105,19,109,111,26,118,120,12,13,108,48,125,126,25,28,117,118,33,35,40,41,123,99,6,7,121,123,35,7,60,3]},boundingSphere:{center:[0,0,0],radius:128.54241934554352}},faceValues:[0,0,0,0,0,0,0,0,2,1],rotationCombinations:{"1,2":[180,0,0]}},d4:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"C5380F7D-1CC8-4744-8B30-2399F5490F2A",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-67.64075469970703,-67.64099884033203,65.7880630493164,-67.64075469970703,-67.64099884033203,65.7880630493164,-67.64075469970703,-67.64099884033203,65.7880630493164,67.64124298095703,65.7878189086914,67.6407470703125,67.64124298095703,65.7878189086914,67.6407470703125,67.64124298095703,65.7878189086914,67.6407470703125,65.7880630493164,67.64099884033203,67.64075469970703,65.7880630493164,67.64099884033203,67.64075469970703,-67.6412353515625,67.64099884033203,-65.78756713867188,-67.6412353515625,67.64099884033203,-65.78756713867188,-67.6407470703125,-65.7878189086914,67.64124298095703,-67.6407470703125,-65.7878189086914,67.64124298095703,67.6412353515625,67.64099884033203,65.78756713867188,67.6412353515625,67.64099884033203,65.78756713867188,67.6412353515625,67.64099884033203,65.78756713867188,67.64075469970703,-67.64099884033203,-65.7880630493164,67.64075469970703,-67.64099884033203,-65.7880630493164,67.6407470703125,-65.7878189086914,-67.64124298095703,67.6407470703125,-65.7878189086914,-67.64124298095703,65.78756713867188,-67.64099884033203,-67.6412353515625,65.78756713867188,-67.64099884033203,-67.6412353515625,-65.78756713867188,-67.64099884033203,67.6412353515625,-65.78756713867188,-67.64099884033203,67.6412353515625,-65.78756713867188,-67.64099884033203,67.6412353515625,-65.7880630493164,67.64099884033203,-67.64075469970703,-65.7880630493164,67.64099884033203,-67.64075469970703,-65.7880630493164,67.64099884033203,-67.64075469970703,-67.64124298095703,65.7878189086914,-67.6407470703125,-67.64124298095703,65.7878189086914,-67.6407470703125,-67.64124298095703,65.7878189086914,-67.6407470703125],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.5875354409217834,-.5875733494758606,-.5563808679580688,-.5875354409217834,-.5875733494758606,-.5563808679580688,-.5875354409217834,-.5875733494758606,-.5563808679580688,.58754962682724,-.5564354062080383,.5875076055526733,.58754962682724,-.5564354062080383,.5875076055526733,.58754962682724,-.5564354062080383,.5875076055526733,-.5564345121383667,.5875091552734375,.5875489711761475,-.5564345121383667,.5875091552734375,.5875489711761475,-.5875074863433838,.5875474810600281,.5564377903938293,-.5875074863433838,.5875474810600281,.5564377903938293,-.5875458717346191,.5564350485801697,.5875116586685181,-.5875458717346191,.5564350485801697,.5875116586685181,.5875073075294495,.5875475406646729,-.5564377903938293,.5875073075294495,.5875475406646729,-.5564377903938293,.5875073075294495,.5875475406646729,-.5564377903938293,.5875356793403625,-.5875731706619263,.5563808679580688,.5875356793403625,-.5875731706619263,.5563808679580688,.5875458717346191,.5564350485801697,-.5875116586685181,.5875458717346191,.5564350485801697,-.5875116586685181,-.5564398169517517,-.5875092148780823,-.5875437259674072,-.5564398169517517,-.5875092148780823,-.5875437259674072,.5564400553703308,-.5875090956687927,.5875436663627625,.5564400553703308,-.5875090956687927,.5875436663627625,.5564400553703308,-.5875090956687927,.5875436663627625,.5564344525337219,.587509036064148,-.587549090385437,.5564344525337219,.587509036064148,-.587549090385437,.5564344525337219,.587509036064148,-.587549090385437,-.5875496864318848,-.5564355850219727,-.5875071883201599,-.5875496864318848,-.5564355850219727,-.5875071883201599,-.5875496864318848,-.5564355850219727,-.5875071883201599],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.20333926379680634,.01598501205444336,.20718662440776825,.23812401294708252,.5022410154342651,.21281301975250244,.20517542958259583,.22700607776641846,.21218715608119965,.009441137313842773,.6251919865608215,.25002896785736084,.12502600252628326,.24997997283935547,.2080860435962677,.01124197244644165,.0021929999347776175,.4627319574356079,.015251883305609226,.12210333347320557,.2076776623725891,.23367196321487427,.24785800278186798,.4627319574356079,.20334681868553162,.22807049751281738,.20728397369384766,.00649791955947876,.49776899814605713,.46269500255584717,.14456242322921753,.12202131748199463,.7480239868164062,.46278202533721924,.14273378252983093,.12308567762374878,.3749360144138336,.24994301795959473,.14272625744342804,.12096989154815674,.625074028968811,6097555160522461e-20,.20517542958259583,.0170363187789917,.21218715608119965,.23534929752349854,.5023589730262756,.46278202533721924,.011641831137239933,.11945211887359619,.021507836878299713,.12308526039123535,.2521030008792877,.46269500255584717,.011544500477612019,.12516993284225464,.021500281989574432,.12096947431564331,.7479060292243958,.21281301975250244],normalized:!1},color:{itemSize:4,type:"Uint16Array",array:[65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535],normalized:!0}},index:{type:"Uint16Array",array:[6,8,11,26,14,18,29,20,2,5,23,16,17,3,15,25,19,28,10,27,1,0,15,21,9,13,24,9,24,27,7,4,13,10,1,22,17,15,19,7,22,4,17,12,3,25,17,19,10,9,27,0,19,15,9,7,13,7,10,22]},boundingSphere:{center:[0,0,0],radius:117.1579285756433}},faceValues:[2,4,3,1],rotationCombinations:{"1,2":[90,0,90],"1,3":[120,90,150],"1,4":[-180,0,-180],"2,3":[90,0,90],"2,4":[-90,0,-90],"3,4":[-90,0,90]}},d6:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"E18C9F5C-7D15-4FF3-AC5E-A4A56A405499",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[52.081398010253906,-49.99797058105469,49.997779846191406,52.081398010253906,-49.99797058105469,49.997779846191406,52.081398010253906,-49.99797058105469,49.997779846191406,52.081398010253906,-49.99797058105469,49.997779846191406,52.081031799316406,49.99797058105469,-49.99816131591797,52.081031799316406,49.99797058105469,-49.99816131591797,52.081031799316406,49.99797058105469,-49.99816131591797,52.081031799316406,49.99797058105469,-49.99816131591797,52.081398010253906,49.99797058105469,49.997779846191406,52.081398010253906,49.99797058105469,49.997779846191406,52.081398010253906,49.99797058105469,49.997779846191406,52.081398010253906,49.99797058105469,49.997779846191406,-52.081031799316406,49.99797058105469,49.99816131591797,-52.081031799316406,49.99797058105469,49.99816131591797,-52.081031799316406,49.99797058105469,49.99816131591797,-52.081031799316406,49.99797058105469,49.99816131591797,49.99778747558594,52.081214904785156,-49.99814987182617,49.99778747558594,52.081214904785156,-49.99814987182617,49.99778747558594,52.081214904785156,-49.99814987182617,49.99778747558594,52.081214904785156,-49.99814987182617,-49.99814987182617,-52.081214904785156,-49.99778747558594,-49.99814987182617,-52.081214904785156,-49.99778747558594,-49.99814987182617,-52.081214904785156,-49.99778747558594,-49.99814987182617,-52.081214904785156,-49.99778747558594,-49.99816131591797,-49.99797058105469,-52.081031799316406,-49.99816131591797,-49.99797058105469,-52.081031799316406,-49.99816131591797,-49.99797058105469,-52.081031799316406,-49.99816131591797,-49.99797058105469,-52.081031799316406,49.99778747558594,-52.081214904785156,-49.99814987182617,49.99778747558594,-52.081214904785156,-49.99814987182617,49.99778747558594,-52.081214904785156,-49.99814987182617,49.99778747558594,-52.081214904785156,-49.99814987182617,-49.99778747558594,-52.081214904785156,49.99814987182617,-49.99778747558594,-52.081214904785156,49.99814987182617,-49.99778747558594,-52.081214904785156,49.99814987182617,-49.99778747558594,-52.081214904785156,49.99814987182617,52.081031799316406,-49.99797058105469,-49.99816131591797,52.081031799316406,-49.99797058105469,-49.99816131591797,52.081031799316406,-49.99797058105469,-49.99816131591797,52.081031799316406,-49.99797058105469,-49.99816131591797,49.997779846191406,-49.99797058105469,-52.081398010253906,49.997779846191406,-49.99797058105469,-52.081398010253906,49.997779846191406,-49.99797058105469,-52.081398010253906,49.997779846191406,-49.99797058105469,-52.081398010253906,-52.081398010253906,-49.99797058105469,-49.997779846191406,-52.081398010253906,-49.99797058105469,-49.997779846191406,-52.081398010253906,-49.99797058105469,-49.997779846191406,-52.081398010253906,-49.99797058105469,-49.997779846191406,-49.99814987182617,52.081214904785156,-49.99778747558594,-49.99814987182617,52.081214904785156,-49.99778747558594,-49.99814987182617,52.081214904785156,-49.99778747558594,-49.99814987182617,52.081214904785156,-49.99778747558594,49.99814987182617,52.081214904785156,49.99778747558594,49.99814987182617,52.081214904785156,49.99778747558594,49.99814987182617,52.081214904785156,49.99778747558594,49.99814987182617,52.081214904785156,49.99778747558594,-49.997779846191406,-49.99797058105469,52.081398010253906,-49.997779846191406,-49.99797058105469,52.081398010253906,-49.997779846191406,-49.99797058105469,52.081398010253906,-49.997779846191406,-49.99797058105469,52.081398010253906,-49.99778747558594,52.081214904785156,49.99814987182617,-49.99778747558594,52.081214904785156,49.99814987182617,-49.99778747558594,52.081214904785156,49.99814987182617,-49.99778747558594,52.081214904785156,49.99814987182617,49.99816131591797,49.99797058105469,52.081031799316406,49.99816131591797,49.99797058105469,52.081031799316406,49.99816131591797,49.99797058105469,52.081031799316406,49.99816131591797,49.99797058105469,52.081031799316406,49.99814987182617,-52.081214904785156,49.99778747558594,49.99814987182617,-52.081214904785156,49.99778747558594,49.99814987182617,-52.081214904785156,49.99778747558594,49.99814987182617,-52.081214904785156,49.99778747558594,49.99816131591797,-49.99797058105469,52.081031799316406,49.99816131591797,-49.99797058105469,52.081031799316406,49.99816131591797,-49.99797058105469,52.081031799316406,49.99816131591797,-49.99797058105469,52.081031799316406,-52.081031799316406,-49.99797058105469,49.99816131591797,-52.081031799316406,-49.99797058105469,49.99816131591797,-52.081031799316406,-49.99797058105469,49.99816131591797,-52.081031799316406,-49.99797058105469,49.99816131591797,49.997779846191406,49.99797058105469,-52.081398010253906,49.997779846191406,49.99797058105469,-52.081398010253906,49.997779846191406,49.99797058105469,-52.081398010253906,49.997779846191406,49.99797058105469,-52.081398010253906,-49.99816131591797,49.99797058105469,-52.081031799316406,-49.99816131591797,49.99797058105469,-52.081031799316406,-49.99816131591797,49.99797058105469,-52.081031799316406,-49.99816131591797,49.99797058105469,-52.081031799316406,-52.081398010253906,49.99797058105469,-49.997779846191406,-52.081398010253906,49.99797058105469,-49.997779846191406,-52.081398010253906,49.99797058105469,-49.997779846191406,-52.081398010253906,49.99797058105469,-49.997779846191406,-49.997779846191406,49.99797058105469,52.081398010253906,-49.997779846191406,49.99797058105469,52.081398010253906,-49.997779846191406,49.99797058105469,52.081398010253906,-49.997779846191406,49.99797058105469,52.081398010253906],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[.9995923042297363,-.020230919122695923,.020147494971752167,.9995923042297363,-.020230919122695923,.020147494971752167,.9995923042297363,-.020230919122695923,.020147494971752167,.9995923042297363,-.020230919122695923,.020147494971752167,.9995908737182617,.02024438977241516,-.020207354798913002,.9995908737182617,.02024438977241516,-.020207354798913002,.9995908737182617,.02024438977241516,-.020207354798913002,.9995908737182617,.02024438977241516,-.020207354798913002,.9995913505554199,.020214110612869263,.020209431648254395,.9995913505554199,.020214110612869263,.020209431648254395,.9995913505554199,.020214110612869263,.020209431648254395,.9995913505554199,.020214110612869263,.020209431648254395,-.9995912313461304,.020234376192092896,.020197225734591484,-.9995912313461304,.020234376192092896,.020197225734591484,-.9995912313461304,.020234376192092896,.020197225734591484,-.9995912313461304,.020234376192092896,.020197225734591484,.02019399404525757,.9995913505554199,-.02023378014564514,.02019399404525757,.9995913505554199,-.02023378014564514,.02019399404525757,.9995913505554199,-.02023378014564514,.02019399404525757,.9995913505554199,-.02023378014564514,-.02023431658744812,-.9995909333229065,-.020213313400745392,-.02023431658744812,-.9995909333229065,-.020213313400745392,-.02023431658744812,-.9995909333229065,-.020213313400745392,-.02023431658744812,-.9995909333229065,-.020213313400745392,-.02021673321723938,-.02017366886138916,-.9995919466018677,-.02021673321723938,-.02017366886138916,-.9995919466018677,-.02021673321723938,-.02017366886138916,-.9995919466018677,-.02021673321723938,-.02017366886138916,-.9995919466018677,.020203232765197754,-.9995912909507751,-.020224466919898987,.020203232765197754,-.9995912909507751,-.020224466919898987,.020203232765197754,-.9995912909507751,-.020224466919898987,.020203232765197754,-.9995912909507751,-.020224466919898987,-.020203210413455963,-.9995913505554199,.02022451162338257,-.020203210413455963,-.9995913505554199,.02022451162338257,-.020203210413455963,-.9995913505554199,.02022451162338257,-.020203210413455963,-.9995913505554199,.02022451162338257,.9995921850204468,-.020173730328679085,-.020216643810272217,.9995921850204468,-.020173730328679085,-.020216643810272217,.9995921850204468,-.020173730328679085,-.020216643810272217,.9995921850204468,-.020173730328679085,-.020216643810272217,.020147576928138733,-.020230591297149658,-.9995923042297363,.020147576928138733,-.020230591297149658,-.9995923042297363,.020147576928138733,-.020230591297149658,-.9995923042297363,.020147576928138733,-.020230591297149658,-.9995923042297363,-.9995916485786438,-.020208656787872314,-.020204007625579834,-.9995916485786438,-.020208656787872314,-.020204007625579834,-.9995916485786438,-.020208656787872314,-.020204007625579834,-.9995916485786438,-.020208656787872314,-.020204007625579834,-.02024361491203308,.9995908737182617,-.02020406536757946,-.02024361491203308,.9995908737182617,-.02020406536757946,-.02024361491203308,.9995908737182617,-.02020406536757946,-.02024361491203308,.9995908737182617,-.02020406536757946,.02026575803756714,.9995908141136169,.020181983709335327,.02026575803756714,.9995908141136169,.020181983709335327,.02026575803756714,.9995908141136169,.020181983709335327,.02026575803756714,.9995908141136169,.020181983709335327,-.020204126834869385,-.020208358764648438,.9995917081832886,-.020204126834869385,-.020208358764648438,.9995917081832886,-.020204126834869385,-.020208358764648438,.9995917081832886,-.020204126834869385,-.020208358764648438,.9995917081832886,-.02021375298500061,.9995914101600647,.020213931798934937,-.02021375298500061,.9995914101600647,.020213931798934937,-.02021375298500061,.9995914101600647,.020213931798934937,-.02021375298500061,.9995914101600647,.020213931798934937,.020197970792651176,.020234346389770508,.9995912313461304,.020197970792651176,.020234346389770508,.9995912313461304,.020197970792651176,.020234346389770508,.9995912313461304,.020197970792651176,.020234346389770508,.9995912313461304,.02023431658744812,-.9995909333229065,.020213313400745392,.02023431658744812,-.9995909333229065,.020213313400745392,.02023431658744812,-.9995909333229065,.020213313400745392,.02023431658744812,-.9995909333229065,.020213313400745392,.020256830379366875,-.020169764757156372,.9995912909507751,.020256830379366875,-.020169764757156372,.9995912909507751,.020256830379366875,-.020169764757156372,.9995912909507751,.020256830379366875,-.020169764757156372,.9995912909507751,-.9995914101600647,-.02016991376876831,.020256860181689262,-.9995914101600647,-.02016991376876831,.020256860181689262,-.9995914101600647,-.02016991376876831,.020256860181689262,-.9995914101600647,-.02016991376876831,.020256860181689262,.02021026611328125,.020213961601257324,-.9995913505554199,.02021026611328125,.020213961601257324,-.9995913505554199,.02021026611328125,.020213961601257324,-.9995913505554199,.02021026611328125,.020213961601257324,-.9995913505554199,-.02020804025232792,.020244628190994263,-.9995906949043274,-.02020804025232792,.020244628190994263,-.9995906949043274,-.02020804025232792,.020244628190994263,-.9995906949043274,-.02020804025232792,.020244628190994263,-.9995906949043274,-.9995908737182617,.020204482600092888,-.020239561796188354,-.9995908737182617,.020204482600092888,-.020239561796188354,-.9995908737182617,.020204482600092888,-.020239561796188354,-.9995908737182617,.020204482600092888,-.020239561796188354,-.020240217447280884,.020204216241836548,.9995909929275513,-.020240217447280884,.020204216241836548,.9995909929275513,-.020240217447280884,.020204216241836548,.9995909929275513,-.020240217447280884,.020204216241836548,.9995909929275513],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.002862999914214015,.7471370100975037,.07257817685604095,.00783926248550415,.20479217171669006,.24324274063110352,.23563209176063538,.18311190605163574,.16701677441596985,.007843196392059326,.21674437820911407,.007843255996704102,.23563209176063538,.23977500200271606,.24713699519634247,.5028629899024963,.002862999914214015,.5028629899024963,.16701683402061462,.24324274063110352,.20479217171669006,.007843196392059326,.2416384220123291,.12991642951965332,.12230584025382996,.24324274063110352,.14119352400302887,.007843255996704102,.24163848161697388,.2243550419807434,.2481130063533783,.4981130361557007,.11035363376140594,.007843255996704102,.16008129715919495,.007843196392059326,.2416384220123291,.23630714416503906,.4975059926509857,.7470999956130981,.008979067206382751,.00783926248550415,.02786727249622345,.24324274063110352,.2416384220123291,.20546722412109375,.7475240230560303,.002879023551940918,.034802429378032684,.24324274063110352,.08453041315078735,.24324274063110352,.23563209176063538,.20199954509735107,.4974119961261749,.49670398235321045,.027866892516613007,.00783926248550415,.06564302742481232,.24324274063110352,.2416384220123291,.1607564091682434,.5032510161399841,.002879023551940918,.008979566395282745,.24324274063110352,.046754732728004456,.00783926248550415,.2416384220123291,.11102879047393799,.7475240230560303,.24715197086334229,.07257817685604095,.24324274063110352,.21674437820911407,.24324274063110352,.2416384220123291,.1676918864250183,.24713699519634247,.7471370100975037,.03480251133441925,.00783926248550415,.22367990016937256,.24324274063110352,.23563209176063538,.16422414779663086,.2531389892101288,.49670398235321045,.0038399999029934406,.25383996963500977,.015914686024188995,.00783926248550415,.09146587550640106,.24324274063110352,.2416384220123291,.19853174686431885,.11035363376140594,.24324274063110352,.12924134731292725,.007843255996704102,.2416384220123291,.1488041877746582,.4975059926509857,.5028259754180908,.16008129715919495,.24324274063110352,.17896901071071625,.007843196392059326,.2416384220123291,.12298095226287842,.2532320022583008,.7470999956130981,.0536903440952301,.00783926248550415,.14812909066677094,.24324274063110352,.2416384220123291,.10409331321716309,.5033630132675171,.252979040145874,.12924134731292725,.24324274063110352,.17896901071071625,.24324274063110352,.23563209176063538,.22088712453842163,.2532320022583008,.5028259754180908,.18590447306632996,.007843196392059326,.19785669445991516,.007843196392059326,.23563209176063538,.12644875049591064,.7476369738578796,.4972519874572754,.046755194664001465,.24324274063110352,.06564256548881531,.00783926248550415,.2416384220123291,.17964410781860352,.5032510161399841,.24715197086334229,.0536903440952301,.24324274063110352,.19785669445991516,.24324274063110352,.2416384220123291,.18657952547073364,.5033630132675171,.4972519874572754,.0038399999029934406,.4981130361557007,.015914715826511383,.24324274063110352,.14119356870651245,.24324274063110352,.23563209176063538,.10756111145019531,.10341811925172806,.007843255996704102,.22367990016937256,.007843255996704102,.2416384220123291,.24324274063110352,.2531389892101288,.2524310350418091,.08453038334846497,.007843196392059326,.10341812670230865,.24324274063110352,.2416384220123291,.14186859130859375,.4974119961261749,.2524310350418091,.09146586060523987,.007843196392059326,.12230582535266876,.007843255996704102,.23563209176063538,.14533644914627075,.2481130063533783,.25383996963500977,.14812903106212616,.007843255996704102,.18590447306632996,.24324274063110352,.24163848161697388,.21741944551467896,.7476369738578796,.252979040145874],normalized:!1},color:{itemSize:4,type:"Uint16Array",array:[65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535],normalized:!0}},index:{type:"Uint16Array",array:[83,27,87,8,39,7,44,15,91,59,67,95,63,19,51,13,57,92,1,29,36,56,68,72,40,21,24,80,48,16,45,32,77,41,5,37,89,60,49,84,46,88,2,65,73,93,53,61,9,17,52,70,3,74,30,42,38,22,47,26,34,58,79,11,54,66,82,18,6,86,90,50,14,94,62,31,35,23,83,43,27,8,0,39,44,76,15,59,75,67,63,55,19,13,78,57,1,69,29,56,33,68,40,28,21,80,85,48,45,20,32,41,81,5,89,12,60,84,25,46,2,10,65,93,64,53,9,4,17,31,71,35]},boundingSphere:{center:[0,0,0],radius:90.20752176710862}},faceValues:[3,5,1,6,2,4],rotationCombinations:{"1,2":[0,0,90],"1,3":[-90,0,0],"1,4":[90,0,0],"1,5":[0,0,-90],"1,6":[180,0,0],"2,3":[0,90,0],"2,4":[0,-90,0],"2,5":[0,0,180],"2,6":[0,0,90],"3,4":[-180,0,-180],"3,5":[0,90,0],"3,6":[-90,0,0],"4,5":[180,-90,180],"4,6":[90,0,0],"5,6":[0,0,-90]}},d8:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"F0A476BC-C144-4BC6-A327-5E00064C485A",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-1.1684173345565796,1.168058156967163,-97.7831802368164,-1.1684173345565796,1.168058156967163,-97.7831802368164,-1.1684173345565796,1.168058156967163,-97.7831802368164,-1.1684173345565796,1.168058156967163,-97.7831802368164,-97.7831802368164,1.168058156967163,1.1684173345565796,-97.7831802368164,1.168058156967163,1.1684173345565796,-97.7831802368164,1.168058156967163,1.1684173345565796,-97.7831802368164,1.168058156967163,1.1684173345565796,-1.167698860168457,-1.168058156967163,97.7831802368164,-1.167698860168457,-1.168058156967163,97.7831802368164,-1.167698860168457,-1.168058156967163,97.7831802368164,-1.167698860168457,-1.168058156967163,97.7831802368164,-97.7831802368164,-1.168058156967163,1.1684173345565796,-97.7831802368164,-1.168058156967163,1.1684173345565796,-97.7831802368164,-1.168058156967163,1.1684173345565796,-97.7831802368164,-1.168058156967163,1.1684173345565796,-1.1680537462234497,97.7831802368164,1.168062448501587,-1.1680537462234497,97.7831802368164,1.168062448501587,-1.1680537462234497,97.7831802368164,1.168062448501587,-1.1680537462234497,97.7831802368164,1.168062448501587,-97.7831802368164,1.168058156967163,-1.167698860168457,-97.7831802368164,1.168058156967163,-1.167698860168457,-97.7831802368164,1.168058156967163,-1.167698860168457,-97.7831802368164,1.168058156967163,-1.167698860168457,-1.168062448501587,97.7831802368164,-1.1680537462234497,-1.168062448501587,97.7831802368164,-1.1680537462234497,-1.168062448501587,97.7831802368164,-1.1680537462234497,-1.168062448501587,97.7831802368164,-1.1680537462234497,97.7831802368164,-1.168058156967163,-1.1684173345565796,97.7831802368164,-1.168058156967163,-1.1684173345565796,97.7831802368164,-1.168058156967163,-1.1684173345565796,97.7831802368164,-1.168058156967163,-1.1684173345565796,1.167698860168457,-1.168058156967163,-97.7831802368164,1.167698860168457,-1.168058156967163,-97.7831802368164,1.167698860168457,-1.168058156967163,-97.7831802368164,1.167698860168457,-1.168058156967163,-97.7831802368164,1.167698860168457,1.168058156967163,-97.7831802368164,1.167698860168457,1.168058156967163,-97.7831802368164,1.167698860168457,1.168058156967163,-97.7831802368164,1.167698860168457,1.168058156967163,-97.7831802368164,1.1680537462234497,97.7831802368164,-1.168062448501587,1.1680537462234497,97.7831802368164,-1.168062448501587,1.1680537462234497,97.7831802368164,-1.168062448501587,1.1680537462234497,97.7831802368164,-1.168062448501587,97.7831802368164,1.168058156967163,1.167698860168457,97.7831802368164,1.168058156967163,1.167698860168457,97.7831802368164,1.168058156967163,1.167698860168457,97.7831802368164,1.168058156967163,1.167698860168457,-1.168062448501587,-97.7831802368164,-1.1680537462234497,-1.168062448501587,-97.7831802368164,-1.1680537462234497,-1.168062448501587,-97.7831802368164,-1.1680537462234497,-1.168062448501587,-97.7831802368164,-1.1680537462234497,-97.7831802368164,-1.168058156967163,-1.167698860168457,-97.7831802368164,-1.168058156967163,-1.167698860168457,-97.7831802368164,-1.168058156967163,-1.167698860168457,-97.7831802368164,-1.168058156967163,-1.167698860168457,97.7831802368164,-1.168058156967163,1.167698860168457,97.7831802368164,-1.168058156967163,1.167698860168457,97.7831802368164,-1.168058156967163,1.167698860168457,97.7831802368164,-1.168058156967163,1.167698860168457,-1.167698860168457,1.168058156967163,97.7831802368164,-1.167698860168457,1.168058156967163,97.7831802368164,-1.167698860168457,1.168058156967163,97.7831802368164,-1.167698860168457,1.168058156967163,97.7831802368164,1.168062448501587,-97.7831802368164,1.1680537462234497,1.168062448501587,-97.7831802368164,1.1680537462234497,1.168062448501587,-97.7831802368164,1.1680537462234497,1.168062448501587,-97.7831802368164,1.1680537462234497,1.1684173345565796,-1.168058156967163,97.7831802368164,1.1684173345565796,-1.168058156967163,97.7831802368164,1.1684173345565796,-1.168058156967163,97.7831802368164,1.1684173345565796,-1.168058156967163,97.7831802368164,-1.1684173345565796,-1.168058156967163,-97.7831802368164,-1.1684173345565796,-1.168058156967163,-97.7831802368164,-1.1684173345565796,-1.168058156967163,-97.7831802368164,-1.1684173345565796,-1.168058156967163,-97.7831802368164,1.1684173345565796,1.168058156967163,97.7831802368164,1.1684173345565796,1.168058156967163,97.7831802368164,1.1684173345565796,1.168058156967163,97.7831802368164,1.1684173345565796,1.168058156967163,97.7831802368164,97.7831802368164,1.168058156967163,-1.1684173345565796,97.7831802368164,1.168058156967163,-1.1684173345565796,97.7831802368164,1.168058156967163,-1.1684173345565796,97.7831802368164,1.168058156967163,-1.1684173345565796,1.168062448501587,97.7831802368164,1.1680537462234497,1.168062448501587,97.7831802368164,1.1680537462234497,1.168062448501587,97.7831802368164,1.1680537462234497,1.168062448501587,97.7831802368164,1.1680537462234497,-1.1680537462234497,-97.7831802368164,1.168062448501587,-1.1680537462234497,-97.7831802368164,1.168062448501587,-1.1680537462234497,-97.7831802368164,1.168062448501587,-1.1680537462234497,-97.7831802368164,1.168062448501587,1.1680537462234497,-97.7831802368164,-1.168062448501587,1.1680537462234497,-97.7831802368164,-1.168062448501587,1.1680537462234497,-97.7831802368164,-1.168062448501587,1.1680537462234497,-97.7831802368164,-1.168062448501587],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.5682533383369446,.5682891607284546,-.5950928330421448,-.5682533383369446,.5682891607284546,-.5950928330421448,-.5682533383369446,.5682891607284546,-.5950928330421448,-.5682533383369446,.5682891607284546,-.5950928330421448,-.5951133966445923,.568278431892395,.5682425498962402,-.5951133966445923,.568278431892395,.5682425498962402,-.5951133966445923,.568278431892395,.5682425498962402,-.5951133966445923,.568278431892395,.5682425498962402,-.5682530999183655,-.5682904720306396,.5950918197631836,-.5682530999183655,-.5682904720306396,.5950918197631836,-.5682530999183655,-.5682904720306396,.5950918197631836,-.5682530999183655,-.5682904720306396,.5950918197631836,-.5950893759727478,-.5682545304298401,.5682916045188904,-.5950893759727478,-.5682545304298401,.5682916045188904,-.5950893759727478,-.5682545304298401,.5682916045188904,-.5950893759727478,-.5682545304298401,.5682916045188904,-.5682390332221985,.5951166152954102,.5682786107063293,-.5682390332221985,.5951166152954102,.5682786107063293,-.5682390332221985,.5951166152954102,.5682786107063293,-.5682390332221985,.5951166152954102,.5682786107063293,-.5951080918312073,.5682451725006104,-.5682812929153442,-.5951080918312073,.5682451725006104,-.5682812929153442,-.5951080918312073,.5682451725006104,-.5682812929153442,-.5951080918312073,.5682451725006104,-.5682812929153442,-.5682910680770874,.5950912833213806,-.5682533383369446,-.5682910680770874,.5950912833213806,-.5682533383369446,-.5682910680770874,.5950912833213806,-.5682533383369446,-.5682910680770874,.5950912833213806,-.5682533383369446,.595115065574646,-.5682411789894104,-.5682781934738159,.595115065574646,-.5682411789894104,-.5682781934738159,.595115065574646,-.5682411789894104,-.5682781934738159,.595115065574646,-.5682411789894104,-.5682781934738159,.5682530999183655,-.5682904720306396,-.5950918197631836,.5682530999183655,-.5682904720306396,-.5950918197631836,.5682530999183655,-.5682904720306396,-.5950918197631836,.5682530999183655,-.5682904720306396,-.5950918197631836,.5682830810546875,.5682469010353088,-.5951048731803894,.5682830810546875,.5682469010353088,-.5951048731803894,.5682830810546875,.5682469010353088,-.5951048731803894,.5682830810546875,.5682469010353088,-.5951048731803894,.5682392716407776,.5951164960861206,-.5682784914970398,.5682392716407776,.5951164960861206,-.5682784914970398,.5682392716407776,.5951164960861206,-.5682784914970398,.5682392716407776,.5951164960861206,-.5682784914970398,.5951049327850342,.5682469010353088,.5682830214500427,.5951049327850342,.5682469010353088,.5682830214500427,.5951049327850342,.5682469010353088,.5682830214500427,.5951049327850342,.5682469010353088,.5682830214500427,-.5682423114776611,-.5951160788536072,-.5682759881019592,-.5682423114776611,-.5951160788536072,-.5682759881019592,-.5682423114776611,-.5951160788536072,-.5682759881019592,-.5682423114776611,-.5951160788536072,-.5682759881019592,-.595117449760437,-.5682770609855652,-.568239688873291,-.595117449760437,-.5682770609855652,-.568239688873291,-.595117449760437,-.5682770609855652,-.568239688873291,-.595117449760437,-.5682770609855652,-.568239688873291,.5950918197631836,-.5682904720306396,.5682530999183655,.5950918197631836,-.5682904720306396,.5682530999183655,.5950918197631836,-.5682904720306396,.5682530999183655,.5950918197631836,-.5682904720306396,.5682530999183655,-.5682830810546875,.5682469010353088,.5951048731803894,-.5682830810546875,.5682469010353088,.5951048731803894,-.5682830810546875,.5682469010353088,.5951048731803894,-.5682830810546875,.5682469010353088,.5951048731803894,.5682426691055298,-.5951159000396729,.5682759284973145,.5682426691055298,-.5951159000396729,.5682759284973145,.5682426691055298,-.5951159000396729,.5682759284973145,.5682426691055298,-.5951159000396729,.5682759284973145,.5682781934738159,-.5682411193847656,.595115065574646,.5682781934738159,-.5682411193847656,.595115065574646,.5682781934738159,-.5682411193847656,.595115065574646,.5682781934738159,-.5682411193847656,.595115065574646,-.5682781934738159,-.5682411193847656,-.595115065574646,-.5682781934738159,-.5682411193847656,-.595115065574646,-.5682781934738159,-.5682411193847656,-.595115065574646,-.5682781934738159,-.5682411193847656,-.595115065574646,.5682533383369446,.5682891607284546,.5950928330421448,.5682533383369446,.5682891607284546,.5950928330421448,.5682533383369446,.5682891607284546,.5950928330421448,.5682533383369446,.5682891607284546,.5950928330421448,.5950928330421448,.5682891607284546,-.5682533383369446,.5950928330421448,.5682891607284546,-.5682533383369446,.5950928330421448,.5682891607284546,-.5682533383369446,.5950928330421448,.5682891607284546,-.5682533383369446,.5682913064956665,.595090925693512,.5682531595230103,.5682913064956665,.595090925693512,.5682531595230103,.5682913064956665,.595090925693512,.5682531595230103,.5682913064956665,.595090925693512,.5682531595230103,-.5682886838912964,-.5950911641120911,.5682557225227356,-.5682886838912964,-.5950911641120911,.5682557225227356,-.5682886838912964,-.5950911641120911,.5682557225227356,-.5682886838912964,-.5950911641120911,.5682557225227356,.5682889819145203,-.5950908660888672,-.5682554841041565,.5682889819145203,-.5950908660888672,-.5682554841041565,.5682889819145203,-.5950908660888672,-.5682554841041565,.5682889819145203,-.5950908660888672,-.5682554841041565],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.07201391458511353,.011956751346588135,.1601339429616928,.228448748588562,.2343699038028717,.15436840057373047,.9927999973297119,.452796995639801,.14628882706165314,.22844743728637695,.213005930185318,.228448748588562,.23062995076179504,.19327861070632935,.3759610056877136,.5007950067520142,.036765892058610916,.011956632137298584,.2167847901582718,.011955499649047852,.2343699038028717,.13678330183029175,.9929670095443726,.2016180157661438,.1286647915840149,.011955201625823975,.2167847901582718,.22844743728637695,.23062995076179504,.1895385980606079,.8765519857406616,-1895427703857422e-20,.14628879725933075,.011955201625823975,.19916081428527832,.22844743728637695,.23062995076179504,.20712369680404663,.49237701296806335,.7024319767951965,.14250995218753815,.228448748588562,.1601339429616928,.011956632137298584,.2343699038028717,.19327861070632935,.876384973526001,.25116002559661865,.07201394438743591,.228448748588562,.14250992238521576,.011956632137298584,.2343699038028717,.20712369680404663,.7599689960479736,.452796995639801,.022920722141861916,.011955201625823975,.18153679370880127,.22844743728637695,.23062995076179504,.22470879554748535,.6253160238265991,.0010759830474853516,.08963792026042938,.011956632137298584,.18153676390647888,.011955499649047852,.23062995076179504,.15810835361480713,.7397840023040771,.19933903217315674,.00919399969279766,.7025139927864075,.07579275965690613,.011955320835113525,.17775794863700867,.011956751346588135,.23062995076179504,.15436840057373047,.07579278945922852,.22844737768173218,.10726193338632584,.228448748588562,.2343699038028717,.21086370944976807,.2420250028371811,.7025139927864075,.05816878750920296,.22844743728637695,.11104078590869904,.011955320835113525,.2343699038028717,.228448748588562,.6256870031356812,.2503969669342041,.09341679513454437,.22844743728637695,.1248859316110611,.228448748588562,.2343699038028717,.17195343971252441,.49275800585746765,.4534569978713989,.12488594651222229,.011956632137298584,.1639128178358078,.011955201625823975,.2343699038028717,.1895385980606079,.37544700503349304,.25026899576187134,.019141869619488716,.011956572532653809,.05438993498682976,.228448748588562,.12524299323558807,.2504919767379761,.2343699038028717,.22470879554748535,.19916081428527832,.011955499649047852,.2130059003829956,.011956751346588135,.2343699038028717,.1405232548713684,.2595460116863251,.7024319767951965,.019141899421811104,.228448748588562,.0405447743833065,.22844743728637695,.23062995076179504,.17569351196289062,.2416590005159378,.4521290063858032,.008828000165522099,.4521290063858032,.040544744580984116,.011955201625823975,.05438990518450737,.011956632137298584,.23062992095947266,.13678330183029175,.09341679513454437,.011955201625823975,.1639127880334854,.22844743728637695,.2343699038028717,.15810835361480713,.2581369876861572,.4534569978713989,.05816878750920296,.01195526123046875,.19538196921348572,.011956751346588135,.23062992095947266,.14052319526672363,.7421020269393921,.45203500986099243,.10726191848516464,.011956751346588135,.12560999393463135,.5008770227432251,.17775794863700867,.228448748588562,.23062995076179504,.228448748588562,.11104080080986023,.22844737768173218,.19538193941116333,.228448748588562,.23062995076179504,.21086370944976807,.5092710256576538,.45203500986099243,.036765921860933304,.228448748588562,.1286647915840149,.22844737768173218,.2343699038028717,.17569351196289062,.7601360082626343,.2016180157661438,.022920751944184303,.22844743728637695,.08963793516159058,.228448748588562,.23062995076179504,.17195343971252441,.5108489990234375,.19933903217315674],normalized:!1},color:{itemSize:4,type:"Uint16Array",array:[65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535],normalized:!0}},index:{type:"Uint16Array",array:[3,23,27,36,43,81,35,31,95,75,51,55,79,47,87,63,19,7,11,15,91,68,67,58,60,85,17,30,46,59,92,56,64,6,54,14,37,24,40,45,41,84,32,48,72,16,20,4,42,18,86,50,66,90,52,89,12,61,13,9,74,39,34,71,62,10,38,29,33,21,73,53,8,65,69,44,70,57,60,77,85,30,83,46,92,28,56,6,22,54,37,0,24,45,80,41,32,93,48,16,25,20,42,26,18,50,94,66,52,49,89,61,5,13,74,2,39,71,78,62,38,82,29,21,1,73,8,88,65,44,76,70]},boundingSphere:{center:[0,0,0],radius:169.36543629583093}},faceValues:[5,3,1,7,2,8,6,4],rotationCombinations:{"1,2":[180,0,180],"1,3":[90,0,0],"1,4":[0,0,90],"1,5":[-180,0,0],"1,6":[0,0,180],"1,7":[-90,0,0],"1,8":[90,0,180],"2,3":[90,0,180],"2,4":[-90,0,0],"2,5":[0,0,180],"2,6":[-180,0,0],"2,7":[-90,0,-180],"2,8":[90,0,0],"3,4":[-180,0,180],"3,5":[90,0,0],"3,6":[-90,0,-180],"3,7":[-180,0,0],"3,8":[0,0,180],"4,5":[90,0,180],"4,6":[-90,0,0],"4,7":[0,0,-180],"4,8":[180,0,0],"5,6":[-180,0,-180],"5,7":[90,0,0],"5,8":[-90,0,180],"6,7":[90,0,-180],"6,8":[-90,0,0],"7,8":[-180,0,-180]}},d10:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"1B9B60ED-6BEC-48CC-8EB9-EEFFC2DD3ED8",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-2.5946993827819824,1.8790435791015625,86.0141830444336,-2.5946993827819824,1.8790435791015625,86.0141830444336,-2.5946993827819824,1.8790435791015625,86.0141830444336,-2.5946993827819824,1.8790435791015625,86.0141830444336,71.31939697265625,-49.49197769165039,10.200661659240723,71.31939697265625,-49.49197769165039,10.200661659240723,71.31939697265625,-49.49197769165039,10.200661659240723,71.31939697265625,-49.49197769165039,10.200661659240723,87.39810180664062,-.005702871363610029,-7.479601860046387,87.39810180664062,-.005702871363610029,-7.479601860046387,87.39810180664062,-.005702871363610029,-7.479601860046387,87.39810180664062,-.005702871363610029,-7.479601860046387,3.2070045471191406,-.005997277796268463,86.01419830322266,3.2070045471191406,-.005997277796268463,86.01419830322266,3.2070045471191406,-.005997277796268463,86.01419830322266,3.2070045471191406,-.005997277796268463,86.01419830322266,-28.610445022583008,-81.96196746826172,10.200666427612305,-28.610445022583008,-81.96196746826172,10.200666427612305,-28.610445022583008,-81.96196746826172,10.200666427612305,-28.610445022583008,-81.96196746826172,10.200666427612305,69.1033706665039,-52.5421257019043,10.200669288635254,69.1033706665039,-52.5421257019043,10.200669288635254,69.1033706665039,-52.5421257019043,10.200669288635254,69.1033706665039,-52.5421257019043,10.200669288635254,.9909778237342834,-3.0561423301696777,86.01419830322266,.9909778237342834,-3.0561423301696777,86.01419830322266,.9909778237342834,-3.0561423301696777,86.01419830322266,.9909778237342834,-3.0561423301696777,86.01419830322266,70.70691680908203,-51.37708282470703,7.479945659637451,70.70691680908203,-51.37708282470703,7.479945659637451,70.70691680908203,-51.37708282470703,7.479945659637451,70.70691680908203,-51.37708282470703,7.479945659637451,-25.02603530883789,83.11405944824219,10.200100898742676,-25.02603530883789,83.11405944824219,10.200100898742676,-25.02603530883789,83.11405944824219,10.200100898742676,-25.02603530883789,83.11405944824219,10.200100898742676,-69.10337829589844,52.52949142456055,-10.200671195983887,-69.10337829589844,52.52949142456055,-10.200671195983887,-69.10337829589844,52.52949142456055,-10.200671195983887,-69.10337829589844,52.52949142456055,-10.200671195983887,-86.7856216430664,1.8781644105911255,10.200315475463867,-86.7856216430664,1.8781644105911255,10.200315475463867,-86.7856216430664,1.8781644105911255,10.200315475463867,-86.7856216430664,1.8781644105911255,10.200315475463867,-28.611663818359375,81.948974609375,10.200101852416992,-28.611663818359375,81.948974609375,10.200101852416992,-28.611663818359375,81.948974609375,10.200101852416992,-28.611663818359375,81.948974609375,10.200101852416992,-27.008115768432617,83.1140365600586,7.479378700256348,-27.008115768432617,83.1140365600586,7.479378700256348,-27.008115768432617,83.1140365600586,7.479378700256348,-27.008115768432617,83.1140365600586,7.479378700256348,-70.70691680908203,51.364444732666016,-7.479947566986084,-70.70691680908203,51.364444732666016,-7.479947566986084,-70.70691680908203,51.364444732666016,-7.479947566986084,-70.70691680908203,51.364444732666016,-7.479947566986084,71.31866455078125,49.48046112060547,10.200318336486816,71.31866455078125,49.48046112060547,10.200318336486816,71.31866455078125,49.48046112060547,10.200318336486816,71.31866455078125,49.48046112060547,10.200318336486816,86.78557586669922,1.8793641328811646,-10.20033073425293,86.78557586669922,1.8793641328811646,-10.20033073425293,86.78557586669922,1.8793641328811646,-10.20033073425293,86.78557586669922,1.8793641328811646,-10.20033073425293,69.10259246826172,52.53056716918945,10.20030689239502,69.10259246826172,52.53056716918945,10.20030689239502,69.10259246826172,52.53056716918945,10.20030689239502,69.10259246826172,52.53056716918945,10.20030689239502,70.7061538696289,51.36553192138672,7.479590892791748,70.7061538696289,51.36553192138672,7.479590892791748,70.7061538696289,51.36553192138672,7.479590892791748,70.7061538696289,51.36553192138672,7.479590892791748,2.5946712493896484,1.8784899711608887,-86.01419830322266,2.5946712493896484,1.8784899711608887,-86.01419830322266,2.5946712493896484,1.8784899711608887,-86.01419830322266,2.5946712493896484,1.8784899711608887,-86.01419830322266,28.610443115234375,81.9493408203125,-10.200669288635254,28.610443115234375,81.9493408203125,-10.200669288635254,28.610443115234375,81.9493408203125,-10.200669288635254,28.610443115234375,81.9493408203125,-10.200669288635254,86.78562927246094,-1.8908008337020874,-10.2003173828125,86.78562927246094,-1.8908008337020874,-10.2003173828125,86.78562927246094,-1.8908008337020874,-10.2003173828125,86.78562927246094,-1.8908008337020874,-10.2003173828125,.9909327626228333,3.0441155433654785,86.0141830444336,.9909327626228333,3.0441155433654785,86.0141830444336,.9909327626228333,3.0441155433654785,86.0141830444336,.9909327626228333,3.0441155433654785,86.0141830444336,-27.00689125061035,-83.12700653076172,7.479950428009033,-27.00689125061035,-83.12700653076172,7.479950428009033,-27.00689125061035,-83.12700653076172,7.479950428009033,-27.00689125061035,-83.12700653076172,7.479950428009033,-69.10259246826172,-52.54320526123047,-10.200308799743652,-69.10259246826172,-52.54320526123047,-10.200308799743652,-69.10259246826172,-52.54320526123047,-10.200308799743652,-69.10259246826172,-52.54320526123047,-10.200308799743652,2.594700574874878,-1.8916770219802856,-86.0141830444336,2.594700574874878,-1.8916770219802856,-86.0141830444336,2.594700574874878,-1.8916770219802856,-86.0141830444336,2.594700574874878,-1.8916770219802856,-86.0141830444336,25.026033401489258,-83.1266860961914,-10.200102806091309,25.026033401489258,-83.1266860961914,-10.200102806091309,25.026033401489258,-83.1266860961914,-10.200102806091309,25.026033401489258,-83.1266860961914,-10.200102806091309,-86.78559112548828,-1.892000436782837,10.200329780578613,-86.78559112548828,-1.892000436782837,10.200329780578613,-86.78559112548828,-1.892000436782837,10.200329780578613,-86.78559112548828,-1.892000436782837,10.200329780578613,-70.7061538696289,-51.37816619873047,-7.479592323303223,-70.7061538696289,-51.37816619873047,-7.479592323303223,-70.7061538696289,-51.37816619873047,-7.479592323303223,-70.7061538696289,-51.37816619873047,-7.479592323303223,-25.024797439575195,-83.12699127197266,10.200674057006836,-25.024797439575195,-83.12699127197266,10.200674057006836,-25.024797439575195,-83.12699127197266,10.200674057006836,-25.024797439575195,-83.12699127197266,10.200674057006836,-2.5946712493896484,-1.8911232948303223,86.01419830322266,-2.5946712493896484,-1.8911232948303223,86.01419830322266,-2.5946712493896484,-1.8911232948303223,86.01419830322266,-2.5946712493896484,-1.8911232948303223,86.01419830322266,-71.31940460205078,49.47935104370117,-10.200664520263672,-71.31940460205078,49.47935104370117,-10.200664520263672,-71.31940460205078,49.47935104370117,-10.200664520263672,-71.31940460205078,49.47935104370117,-10.200664520263672,28.611663818359375,-81.96160888671875,-10.200103759765625,28.611663818359375,-81.96160888671875,-10.200103759765625,28.611663818359375,-81.96160888671875,-10.200103759765625,28.611663818359375,-81.96160888671875,-10.200103759765625,27.00688934326172,83.1143798828125,-7.479951858520508,27.00688934326172,83.1143798828125,-7.479951858520508,27.00688934326172,83.1143798828125,-7.479951858520508,27.00688934326172,83.1143798828125,-7.479951858520508,25.024797439575195,83.11434936523438,-10.200675010681152,25.024797439575195,83.11434936523438,-10.200675010681152,25.024797439575195,83.11434936523438,-10.200675010681152,25.024797439575195,83.11434936523438,-10.200675010681152,27.008115768432617,-83.12667083740234,-7.4793806076049805,27.008115768432617,-83.12667083740234,-7.4793806076049805,27.008115768432617,-83.12667083740234,-7.4793806076049805,27.008115768432617,-83.12667083740234,-7.4793806076049805,-87.39810180664062,-.006933570373803377,7.479599952697754,-87.39810180664062,-.006933570373803377,7.479599952697754,-87.39810180664062,-.006933570373803377,7.479599952697754,-87.39810180664062,-.006933570373803377,7.479599952697754,-71.31866455078125,-49.493099212646484,-10.20032024383545,-71.31866455078125,-49.493099212646484,-10.20032024383545,-71.31866455078125,-49.493099212646484,-10.20032024383545,-71.31866455078125,-49.493099212646484,-10.20032024383545,-.9909327626228333,-3.056749105453491,-86.0141830444336,-.9909327626228333,-3.056749105453491,-86.0141830444336,-.9909327626228333,-3.056749105453491,-86.0141830444336,-.9909327626228333,-3.056749105453491,-86.0141830444336,-3.2070045471191406,-.006636159960180521,-86.01419830322266,-3.2070045471191406,-.006636159960180521,-86.01419830322266,-3.2070045471191406,-.006636159960180521,-86.01419830322266,-3.2070045471191406,-.006636159960180521,-86.01419830322266,-.9909778237342834,3.0435099601745605,-86.01419830322266,-.9909778237342834,3.0435099601745605,-86.01419830322266,-.9909778237342834,3.0435099601745605,-86.01419830322266,-.9909778237342834,3.0435099601745605,-86.01419830322266],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.5870956778526306,.42651230096817017,.6880449652671814,-.5870956778526306,.42651230096817017,.6880449652671814,-.5870956778526306,.42651230096817017,.6880449652671814,-.5870956778526306,.42651230096817017,.6880449652671814,.745985746383667,-.033444374799728394,.6651214957237244,.745985746383667,-.033444374799728394,.6651214957237244,.745985746383667,-.033444374799728394,.6651214957237244,.745985746383667,-.033444374799728394,.6651214957237244,.7662718892097473,3863871097564697e-20,.6425164937973022,.7662718892097473,3863871097564697e-20,.6425164937973022,.7662718892097473,3863871097564697e-20,.6425164937973022,.7662718892097473,3863871097564697e-20,.6425164937973022,.7256649732589722,32261013984680176e-21,.6880481839179993,.7256649732589722,32261013984680176e-21,.6880481839179993,.7256649732589722,32261013984680176e-21,.6880481839179993,.7256649732589722,32261013984680176e-21,.6880481839179993,-.5838431119918823,-.4655483365058899,.6651255488395691,-.5838431119918823,-.4655483365058899,.6651255488395691,-.5838431119918823,-.4655483365058899,.6651255488395691,-.5838431119918823,-.4655483365058899,.6651255488395691,.2623160779476166,-.6991221904754639,.6651454567909241,.2623160779476166,-.6991221904754639,.6651454567909241,.2623160779476166,-.6991221904754639,.6651454567909241,.2623160779476166,-.6991221904754639,.6651454567909241,.22423836588859558,-.6901593208312988,.6880385875701904,.22423836588859558,-.6901593208312988,.6880385875701904,.22423836588859558,-.6901593208312988,.6880385875701904,.22423836588859558,-.6901593208312988,.6880385875701904,.6199150085449219,-.4504251182079315,-.6425127983093262,.6199150085449219,-.4504251182079315,-.6425127983093262,.6199150085449219,-.4504251182079315,-.6425127983093262,.6199150085449219,-.4504251182079315,-.6425127983093262,.19871656596660614,.7197921276092529,.6651397347450256,.19871656596660614,.7197921276092529,.6651397347450256,.19871656596660614,.7197921276092529,.6651397347450256,.19871656596660614,.7197921276092529,.6651397347450256,-.26231205463409424,.6991309523582458,-.665137767791748,-.26231205463409424,.6991309523582458,-.665137767791748,-.26231205463409424,.6991309523582458,-.665137767791748,-.26231205463409424,.6991309523582458,-.665137767791748,-.6231518387794495,.41137412190437317,.6651715636253357,-.6231518387794495,.41137412190437317,.6651715636253357,-.6231518387794495,.41137412190437317,.6651715636253357,-.6231518387794495,.41137412190437317,.6651715636253357,-.583817720413208,.46555060148239136,.6651462912559509,-.583817720413208,.46555060148239136,.6651462912559509,-.583817720413208,.46555060148239136,.6651462912559509,-.583817720413208,.46555060148239136,.6651462912559509,-.23676739633083344,.7287734746932983,-.6425187587738037,-.23676739633083344,.7287734746932983,-.6425187587738037,-.23676739633083344,.7287734746932983,-.6425187587738037,-.23676739633083344,.7287734746932983,-.6425187587738037,-.6199446320533752,.45038023591041565,.6425155997276306,-.6199446320533752,.45038023591041565,.6425155997276306,-.6199446320533752,.45038023591041565,.6425155997276306,-.6199446320533752,.45038023591041565,.6425155997276306,.7459679841995239,.03343930095434189,.6651415824890137,.7459679841995239,.03343930095434189,.6651415824890137,.7459679841995239,.03343930095434189,.6651415824890137,.7459679841995239,.03343930095434189,.6651415824890137,.623174250125885,.4114120602607727,-.6651270389556885,.623174250125885,.4114120602607727,-.6651270389556885,.623174250125885,.4114120602607727,-.6651270389556885,.623174250125885,.4114120602607727,-.6651270389556885,.26233187317848206,.6991434097290039,.6651169061660767,.26233187317848206,.6991434097290039,.6651169061660767,.26233187317848206,.6991434097290039,.6651169061660767,.26233187317848206,.6991434097290039,.6651169061660767,.6199406385421753,.45038270950317383,-.6425178050994873,.6199406385421753,.45038270950317383,-.6425178050994873,.6199406385421753,.45038270950317383,-.6425178050994873,.6199406385421753,.45038270950317383,-.6425178050994873,.587073564529419,.4265226125717163,-.6880576610565186,.587073564529419,.4265226125717163,-.6880576610565186,.587073564529419,.4265226125717163,-.6880576610565186,.587073564529419,.4265226125717163,-.6880576610565186,.5838503241539001,.4655469059944153,-.6651202440261841,.5838503241539001,.4655469059944153,-.6651202440261841,.5838503241539001,.4655469059944153,-.6651202440261841,.5838503241539001,.4655469059944153,-.6651202440261841,.6231569647789001,-.4114269018173218,-.665134072303772,.6231569647789001,-.4114269018173218,-.665134072303772,.6231569647789001,-.4114269018173218,-.665134072303772,.6231569647789001,-.4114269018173218,-.665134072303772,.22424747049808502,.6901424527168274,.6880526542663574,.22424747049808502,.6901424527168274,.6880526542663574,.22424747049808502,.6901424527168274,.6880526542663574,.22424747049808502,.6901424527168274,.6880526542663574,-.2368125319480896,-.7287622094154358,-.6425150632858276,-.2368125319480896,-.7287622094154358,-.6425150632858276,-.2368125319480896,-.7287622094154358,-.6425150632858276,-.2368125319480896,-.7287622094154358,-.6425150632858276,-.2623360753059387,-.6991369128227234,-.6651220917701721,-.2623360753059387,-.6991369128227234,-.6651220917701721,-.2623360753059387,-.6991369128227234,-.6651220917701721,-.2623360753059387,-.6991369128227234,-.6651220917701721,.5870862603187561,-.42650753259658813,-.6880559921264648,.5870862603187561,-.42650753259658813,-.6880559921264648,.5870862603187561,-.42650753259658813,-.6880559921264648,.5870862603187561,-.42650753259658813,-.6880559921264648,-.19872358441352844,-.7197949886322021,-.6651346683502197,-.19872358441352844,-.7197949886322021,-.6651346683502197,-.19872358441352844,-.7197949886322021,-.6651346683502197,-.19872358441352844,-.7197949886322021,-.6651346683502197,-.623177170753479,-.4114185571670532,.6651203036308289,-.623177170753479,-.4114185571670532,.6651203036308289,-.623177170753479,-.4114185571670532,.6651203036308289,-.623177170753479,-.4114185571670532,.6651203036308289,-.6199068427085876,-.45042937994003296,.6425175666809082,-.6199068427085876,-.45042937994003296,.6425175666809082,-.6199068427085876,-.45042937994003296,.6425175666809082,-.6199068427085876,-.45042937994003296,.6425175666809082,.19873395562171936,-.7197892069816589,.6651378273963928,.19873395562171936,-.7197892069816589,.6651378273963928,.19873395562171936,-.7197892069816589,.6651378273963928,.19873395562171936,-.7197892069816589,.6651378273963928,-.5870490074157715,-.42655661702156067,.6880573630332947,-.5870490074157715,-.42655661702156067,.6880573630332947,-.5870490074157715,-.42655661702156067,.6880573630332947,-.5870490074157715,-.42655661702156067,.6880573630332947,-.7459824085235596,.033452022820711136,-.665124773979187,-.7459824085235596,.033452022820711136,-.665124773979187,-.7459824085235596,.033452022820711136,-.665124773979187,-.7459824085235596,.033452022820711136,-.665124773979187,.5838494300842285,-.4655435383319855,-.665123462677002,.5838494300842285,-.4655435383319855,-.665123462677002,.5838494300842285,-.4655435383319855,-.665123462677002,.5838494300842285,-.4655435383319855,-.665123462677002,.2367572784423828,.7287806272506714,.6425143480300903,.2367572784423828,.7287806272506714,.6425143480300903,.2367572784423828,.7287806272506714,.6425143480300903,.2367572784423828,.7287806272506714,.6425143480300903,-.1987278163433075,.7197844982147217,-.6651448011398315,-.1987278163433075,.7197844982147217,-.6651448011398315,-.1987278163433075,.7197844982147217,-.6651448011398315,-.1987278163433075,.7197844982147217,-.6651448011398315,.23682300746440887,-.7287558913230896,.6425182819366455,.23682300746440887,-.7287558913230896,.6425182819366455,.23682300746440887,-.7287558913230896,.6425182819366455,.23682300746440887,-.7287558913230896,.6425182819366455,-.7662706971168518,20429491996765137e-21,-.6425180435180664,-.7662706971168518,20429491996765137e-21,-.6425180435180664,-.7662706971168518,20429491996765137e-21,-.6425180435180664,-.7662706971168518,20429491996765137e-21,-.6425180435180664,-.7459728717803955,-.03343328833580017,-.6651365756988525,-.7459728717803955,-.03343328833580017,-.6651365756988525,-.7459728717803955,-.03343328833580017,-.6651365756988525,-.7459728717803955,-.03343328833580017,-.6651365756988525,-.22426503896713257,-.6901455521583557,-.6880438327789307,-.22426503896713257,-.6901455521583557,-.6880438327789307,-.22426503896713257,-.6901455521583557,-.6880438327789307,-.22426503896713257,-.6901455521583557,-.6880438327789307,-.7256579995155334,-3316998481750488e-20,-.6880554556846619,-.7256579995155334,-3316998481750488e-20,-.6880554556846619,-.7256579995155334,-3316998481750488e-20,-.6880554556846619,-.7256579995155334,-3316998481750488e-20,-.6880554556846619,-.22427412867546082,.6901446580886841,-.6880418658256531,-.22427412867546082,.6901446580886841,-.6880418658256531,-.22427412867546082,.6901446580886841,-.6880418658256531,-.22427412867546082,.6901446580886841,-.6880418658256531],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.1126541942358017,.23340463638305664,.15771642327308655,.010170280933380127,.1696747988462448,.09594517946243286,.37625399231910706,.5020440220832825,.09763339906930923,.23340469598770142,.17146287858486176,.012006521224975586,.24126237630844116,.007275700569152832,.7849239706993103,.19342201948165894,.18520936369895935,.026231110095977783,.19948936998844147,.1231493353843689,.24126237630844116,.11555743217468262,.8759239912033081,.2386530041694641,.05257079377770424,.23340463638305664,.09763336926698685,.010167598724365234,.1696747988462448,.08392536640167236,.8759239912033081,.0006530284881591797,.015100483782589436,.23340469598770142,.17080335319042206,.06890475749969482,.21341374516487122,.23143154382705688,.4681450128555298,.19335603713989258,.09020465612411499,.23340463638305664,.16530834138393402,.016166627407073975,.22733810544013977,.11358428001403809,.9650390148162842,.44349002838134766,.022529248148202896,.010164380073547363,.09020490944385529,.010167598724365234,.176739901304245,.08622092008590698,.8740389943122864,.2507209777832031,.17146287858486176,.018639087677001953,.22100581228733063,.11555743217468262,.23493003845214844,.005302548408508301,.6253309845924377,.739175021648407,.15028777718544006,.23340463638305664,.18520939350128174,.018639087677001953,.2412623167037964,.23143154382705688,.46857601404190063,.4435969591140747,.06016269698739052,.010176539421081543,.179232656955719,.2314314842224121,.18520936369895935,.05468016862869263,.5344629883766174,.1933860182762146,.11265438795089722,.010173439979553223,.16530834138393402,.12512201070785522,.18389028310775757,.06890475749969482,.46725401282310486,.6948130130767822,.15771642327308655,.23340457677841187,.1790548413991928,.01447904109954834,.1855650693178177,.12512195110321045,.28525400161743164,.6948130130767822,.17923292517662048,.12314879894256592,.18520939350128174,.012006521224975586,.2349299192428589,.23340469598770142,.6254630088806152,.23861700296401978,.1653086096048355,.23340469598770142,.18520936369895935,.06131279468536377,.1855650693178177,.23340469598770142,.37625399231910706,.7400439977645874,.05257079377770424,.01016455888748169,.17146287858486176,.032863736152648926,.19948936998844147,.23143154382705688,.9669240117073059,.19342201948165894,.14269573986530304,.010170340538024902,.18520936369895935,.032863736152648926,.19315698742866516,.12512242794036865,.21655499935150146,.6933860182762146,.04514260217547417,.01016455888748169,.16530832648277283,.02870357036590576,.21341368556022644,.007275700569152832,.2865760028362274,.4435969591140747,.12555499374866486,.7386170029640198,.17146287858486176,.026231110095977783,.1931571662425995,.23340469598770142,.2070813775062561,.005302548408508301,.12555499374866486,.5006170272827148,.12767508625984192,.010170459747314453,.14269573986530304,.23340463638305664,.16530832648277283,.109546959400177,.03455499932169914,.6933860182762146,.12767508625984192,.23340463638305664,.17146290838718414,.040455639362335205,.2070814073085785,.11358422040939331,.1352669894695282,.010170340538024902,.17905481159687042,.028703629970550537,.23493003845214844,.11358428001403809,.5343310236930847,.693943977355957,.04514192417263985,.23340457677841187,.1502876579761505,.010170280933380127,.16530834138393402,.089935302734375,.37757599353790283,.2508280277252197,.12430000305175781,.48809099197387695,.16530832648277283,.07261902093887329,.19948936998844147,.11555695533752441,.20708149671554565,.23340469598770142,.0301218219101429,.23340463638305664,.17146289348602295,.06131279468536377,.2070813775062561,.1251225471496582,.2153010070323944,.4428600072860718,.08261273801326752,.23340463638305664,.13526709377765656,.23340463638305664,.16967478394508362,.11555695533752441,.6253309845924377,.5011749863624573,.03330099955201149,.4428600072860718,.07518399506807327,.010167300701141357,.17905481159687042,.042928099632263184,.19948936998844147,.007275700569152832,.10522530972957611,.010173439979553223,.18389026820659637,.07633346319198608,.22100578248500824,.23143154382705688,.28614500164985657,.19335603713989258,.17146289348602295,.05468016862869263,.21341368556022644,.12314939498901367,.2210056483745575,.1231493353843689,.377144992351532,.23858702182769775,.02252865955233574,.23340469598770142,.17080335319042206,.07633340358734131,.19315703213214874,.11358380317687988,.7830389738082886,.44349002838134766,.015100372023880482,.010164380073547363,.10522563755512238,.23340463638305664,.1767398715019226,.09364962577819824,.377144992351532,.0005869865417480469,.0675920695066452,.010176539421081543,.17164073884487152,.23143154382705688,.17905481159687042,.05884033441543579,.7172229886054993,.4428600072860718,.08261273801326752,.010167300701141357,.18520936369895935,.04708826541900635,.2210056483745575,.007276654243469238,.7163310050964355,.693943977355957,.17146290838718414,.04708826541900635,.21341368556022644,.11555737257003784,.2412623167037964,.12314939498901367,.37757599353790283,.48882800340652466,.12024644762277603,.23340463638305664,.16530834138393402,.044615745544433594,.23493006825447083,.1251225471496582,.716463029384613,.1933860182762146,.18520936369895935,.040455639362335205,.19315698742866516,.005302488803863525,.22733810544013977,.005303502082824707,.8740389943122864,.48872101306915283,.17164073884487152,.1231488585472107,.17839525640010834,.07261908054351807,.2273380160331726,.23340463638305664,.6262230277061462,.48809099197387695,.037550006061792374,.23340463638305664,.16530834138393402,.057152748107910156,.2273380160331726,.12512242794036865,.5352230072021484,.4428600072860718,.030121158808469772,.010164439678192139,.07518427819013596,.23340463638305664,.12430000305175781,.25009095668792725,.176739901304245,.11326134204864502,.037550006061792374,.010164439678192139,.0675920695066452,.23340457677841187,.176739901304245,.10583275556564331,.6262230277061462,.25009095668792725,.06016361340880394,.23340463638305664,.12024631351232529,.010170459747314453,.16967478394508362,.10353708267211914,.6254630088806152,.0006170272827148438],normalized:!1},color:{itemSize:4,type:"Uint16Array",array:[65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535],normalized:!0}},index:{type:"Uint16Array",array:[23,115,139,123,147,143,19,107,111,35,67,131,59,7,11,95,100,88,63,76,68,135,39,51,127,83,31,4,25,20,82,6,30,97,60,80,62,58,9,22,126,29,94,18,109,37,46,48,0,104,117,44,85,32,66,79,129,124,149,96,114,103,137,156,120,36,146,106,142,24,16,112,34,134,50,152,92,144,77,157,132,41,121,140,102,125,136,5,21,28,61,8,81,69,65,57,78,133,128,45,33,49,53,38,122,42,141,105,93,108,145,89,113,17,98,151,154,43,47,55,12,64,84,86,118,26,23,27,115,123,155,147,19,119,107,35,87,67,59,15,7,95,150,100,63,72,76,135,159,39,127,99,83,4,13,25,82,10,6,97,74,60,62,70,58,22,138,126,94,91,18,37,54,46,0,40,104,44,1,85,66,71,79,124,101,149,114,90,103,156,153,120,146,110,106,24,116,16,34,130,134,152,148,92,77,73,157,41,52,121,158,75,154,75,98,154,43,3,47,12,56,64,26,14,86,86,2,118]},boundingSphere:{center:[0,-.006313323974609375,0],radius:148.14155442794186}},faceValues:[1,2,5,10,7,4,3,8,9,6],rotationCombinations:{"1,2":[180,0,36],"1,3":[0,0,-144],"1,4":[-180,0,-108],"1,5":[0,0,144],"1,6":[180,0,-36],"1,7":[0,0,-72],"1,8":[180,0,108],"1,9":[0,0,72],"1,10":[-180,0,180],"2,3":[180,0,-108],"2,4":[0,0,-144],"2,5":[-180,0,-180],"2,6":[0,0,-72],"2,7":[180,0,-36],"2,8":[0,0,72],"2,9":[-180,0,108],"2,10":[0,0,144],"3,4":[-180,0,108],"3,5":[0,0,-72],"3,6":[-180,0,180],"3,7":[0,0,72],"3,8":[180,0,-36],"3,9":[0,0,-144],"3,10":[180,0,36],"4,5":[180,0,36],"4,6":[0,0,72],"4,7":[-180,0,-180],"4,8":[0,0,-144],"4,9":[180,0,-36],"4,10":[0,0,-72],"5,6":[180,0,108],"5,7":[0,0,144],"5,8":[-180,0,-108],"5,9":[0,0,-72],"5,10":[180,0,-36],"6,7":[180,0,-108],"6,8":[0,0,144],"6,9":[-180,0,36],"6,10":[0,0,-144],"7,8":[180,0,36],"7,9":[0,0,144],"7,10":[-180,0,108],"8,9":[-180,0,180],"8,10":[0,0,72],"9,10":[180,0,-108]}},d12:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"04389FAB-5CCD-4FEC-B604-C19AD1000B1C",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-31.141719818115234,83.4803466796875,-1.2052193880081177,-31.141719818115234,83.4803466796875,-1.2052193880081177,-31.141719818115234,83.4803466796875,-1.2052193880081177,-31.141719818115234,83.4803466796875,-1.2052193880081177,83.48023223876953,-1.2053337097167969,-31.14202308654785,83.48023223876953,-1.2053337097167969,-31.14202308654785,83.48023223876953,-1.2053337097167969,-31.14202308654785,83.48023223876953,-1.2053337097167969,-31.14202308654785,83.48045349121094,-1.2053337097167969,31.141408920288086,83.48045349121094,-1.2053337097167969,31.141408920288086,83.48045349121094,-1.2053337097167969,31.141408920288086,83.48045349121094,-1.2053337097167969,31.141408920288086,-82.73528289794922,0,33.09229278564453,-82.73528289794922,0,33.09229278564453,-82.73528289794922,0,33.09229278564453,-82.73528289794922,0,33.09229278564453,51.59387969970703,50.38835906982422,52.338436126708984,51.59387969970703,50.38835906982422,52.338436126708984,51.59387969970703,50.38835906982422,52.338436126708984,51.59387969970703,50.38835906982422,52.338436126708984,50.3885498046875,52.338626861572266,51.593505859375,50.3885498046875,52.338626861572266,51.593505859375,50.3885498046875,52.338626861572266,51.593505859375,50.3885498046875,52.338626861572266,51.593505859375,-31.141712188720703,83.4803466796875,1.2054481506347656,-31.141712188720703,83.4803466796875,1.2054481506347656,-31.141712188720703,83.4803466796875,1.2054481506347656,-31.141712188720703,83.4803466796875,1.2054481506347656,83.48023223876953,1.2053337097167969,-31.14202308654785,83.48023223876953,1.2053337097167969,-31.14202308654785,83.48023223876953,1.2053337097167969,-31.14202308654785,83.48023223876953,1.2053337097167969,-31.14202308654785,-83.48045349121094,-1.2053337097167969,-31.141408920288086,-83.48045349121094,-1.2053337097167969,-31.141408920288086,-83.48045349121094,-1.2053337097167969,-31.141408920288086,-83.48045349121094,-1.2053337097167969,-31.141408920288086,-51.59387969970703,-50.38835906982422,-52.338436126708984,-51.59387969970703,-50.38835906982422,-52.338436126708984,-51.59387969970703,-50.38835906982422,-52.338436126708984,-51.59387969970703,-50.38835906982422,-52.338436126708984,-1.205640435218811,31.14171600341797,-83.48033142089844,-1.205640435218811,31.14171600341797,-83.48033142089844,-1.205640435218811,31.14171600341797,-83.48033142089844,-1.205640435218811,31.14171600341797,-83.48033142089844,-1.205640435218811,-31.14171600341797,-83.48033142089844,-1.205640435218811,-31.14171600341797,-83.48033142089844,-1.205640435218811,-31.14171600341797,-83.48033142089844,-1.205640435218811,-31.14171600341797,-83.48033142089844,1.2050271034240723,31.14171600341797,-83.48035430908203,1.2050271034240723,31.14171600341797,-83.48035430908203,1.2050271034240723,31.14171600341797,-83.48035430908203,1.2050271034240723,31.14171600341797,-83.48035430908203,-83.48045349121094,1.2053337097167969,-31.141408920288086,-83.48045349121094,1.2053337097167969,-31.141408920288086,-83.48045349121094,1.2053337097167969,-31.141408920288086,-83.48045349121094,1.2053337097167969,-31.141408920288086,-83.48023223876953,1.2053337097167969,31.14202308654785,-83.48023223876953,1.2053337097167969,31.14202308654785,-83.48023223876953,1.2053337097167969,31.14202308654785,-83.48023223876953,1.2053337097167969,31.14202308654785,-50.38816833496094,-52.338626861572266,51.593875885009766,-50.38816833496094,-52.338626861572266,51.593875885009766,-50.38816833496094,-52.338626861572266,51.593875885009766,-50.38816833496094,-52.338626861572266,51.593875885009766,31.141712188720703,83.4803466796875,-1.2054481506347656,31.141712188720703,83.4803466796875,-1.2054481506347656,31.141712188720703,83.4803466796875,-1.2054481506347656,31.141712188720703,83.4803466796875,-1.2054481506347656,-50.3885498046875,52.338626861572266,-51.593505859375,-50.3885498046875,52.338626861572266,-51.593505859375,-50.3885498046875,52.338626861572266,-51.593505859375,-50.3885498046875,52.338626861572266,-51.593505859375,50.38816833496094,52.338626861572266,-51.593875885009766,50.38816833496094,52.338626861572266,-51.593875885009766,50.38816833496094,52.338626861572266,-51.593875885009766,50.38816833496094,52.338626861572266,-51.593875885009766,-.000303904089378193,33.09198760986328,-82.73540496826172,-.000303904089378193,33.09198760986328,-82.73540496826172,-.000303904089378193,33.09198760986328,-82.73540496826172,-.000303904089378193,33.09198760986328,-82.73540496826172,82.73552703857422,0,33.0916862487793,82.73552703857422,0,33.0916862487793,82.73552703857422,0,33.0916862487793,82.73552703857422,0,33.0916862487793,52.338809967041016,-51.59368896484375,50.38816833496094,52.338809967041016,-51.59368896484375,50.38816833496094,52.338809967041016,-51.59368896484375,50.38816833496094,52.338809967041016,-51.59368896484375,50.38816833496094,83.48045349121094,1.2053337097167969,31.141408920288086,83.48045349121094,1.2053337097167969,31.141408920288086,83.48045349121094,1.2053337097167969,31.141408920288086,83.48045349121094,1.2053337097167969,31.141408920288086,52.33843994140625,-51.59368896484375,-50.3885498046875,52.33843994140625,-51.59368896484375,-50.3885498046875,52.33843994140625,-51.59368896484375,-50.3885498046875,52.33843994140625,-51.59368896484375,-50.3885498046875,51.593502044677734,-50.38835906982422,-52.33881759643555,51.593502044677734,-50.38835906982422,-52.33881759643555,51.593502044677734,-50.38835906982422,-52.33881759643555,51.593502044677734,-50.38835906982422,-52.33881759643555,82.73528289794922,0,-33.09229278564453,82.73528289794922,0,-33.09229278564453,82.73528289794922,0,-33.09229278564453,82.73528289794922,0,-33.09229278564453,33.09198760986328,-82.73540496826172,-.00012155366130173206,33.09198760986328,-82.73540496826172,-.00012155366130173206,33.09198760986328,-82.73540496826172,-.00012155366130173206,33.09198760986328,-82.73540496826172,-.00012155366130173206,-1.2050271034240723,-31.14171600341797,83.48035430908203,-1.2050271034240723,-31.14171600341797,83.48035430908203,-1.2050271034240723,-31.14171600341797,83.48035430908203,-1.2050271034240723,-31.14171600341797,83.48035430908203,-1.2050271034240723,31.14171600341797,83.48035430908203,-1.2050271034240723,31.14171600341797,83.48035430908203,-1.2050271034240723,31.14171600341797,83.48035430908203,-1.2050271034240723,31.14171600341797,83.48035430908203,-52.33843994140625,-51.59368896484375,50.3885498046875,-52.33843994140625,-51.59368896484375,50.3885498046875,-52.33843994140625,-51.59368896484375,50.3885498046875,-52.33843994140625,-51.59368896484375,50.3885498046875,-51.593502044677734,-50.38835906982422,52.33881759643555,-51.593502044677734,-50.38835906982422,52.33881759643555,-51.593502044677734,-50.38835906982422,52.33881759643555,-51.593502044677734,-50.38835906982422,52.33881759643555,-51.593502044677734,50.38835906982422,52.33881759643555,-51.593502044677734,50.38835906982422,52.33881759643555,-51.593502044677734,50.38835906982422,52.33881759643555,-51.593502044677734,50.38835906982422,52.33881759643555,-52.33843994140625,51.59368896484375,50.3885498046875,-52.33843994140625,51.59368896484375,50.3885498046875,-52.33843994140625,51.59368896484375,50.3885498046875,-52.33843994140625,51.59368896484375,50.3885498046875,.000303904089378193,33.09198760986328,82.73540496826172,.000303904089378193,33.09198760986328,82.73540496826172,.000303904089378193,33.09198760986328,82.73540496826172,.000303904089378193,33.09198760986328,82.73540496826172,52.338809967041016,51.59368896484375,50.38816833496094,52.338809967041016,51.59368896484375,50.38816833496094,52.338809967041016,51.59368896484375,50.38816833496094,52.338809967041016,51.59368896484375,50.38816833496094,1.205640435218811,-31.14171600341797,83.48033142089844,1.205640435218811,-31.14171600341797,83.48033142089844,1.205640435218811,-31.14171600341797,83.48033142089844,1.205640435218811,-31.14171600341797,83.48033142089844,-33.09198760986328,82.73540496826172,.00012155366130173206,-33.09198760986328,82.73540496826172,.00012155366130173206,-33.09198760986328,82.73540496826172,.00012155366130173206,-33.09198760986328,82.73540496826172,.00012155366130173206,-50.38816833496094,52.338626861572266,51.593875885009766,-50.38816833496094,52.338626861572266,51.593875885009766,-50.38816833496094,52.338626861572266,51.593875885009766,-50.38816833496094,52.338626861572266,51.593875885009766,51.593502044677734,50.38835906982422,-52.33881759643555,51.593502044677734,50.38835906982422,-52.33881759643555,51.593502044677734,50.38835906982422,-52.33881759643555,51.593502044677734,50.38835906982422,-52.33881759643555,-52.338809967041016,-51.59368896484375,-50.38816833496094,-52.338809967041016,-51.59368896484375,-50.38816833496094,-52.338809967041016,-51.59368896484375,-50.38816833496094,-52.338809967041016,-51.59368896484375,-50.38816833496094,-33.09198760986328,-82.73540496826172,.00012155366130173206,-33.09198760986328,-82.73540496826172,.00012155366130173206,-33.09198760986328,-82.73540496826172,.00012155366130173206,-33.09198760986328,-82.73540496826172,.00012155366130173206,-83.48023223876953,-1.2053337097167969,31.14202308654785,-83.48023223876953,-1.2053337097167969,31.14202308654785,-83.48023223876953,-1.2053337097167969,31.14202308654785,-83.48023223876953,-1.2053337097167969,31.14202308654785,-50.3885498046875,-52.338626861572266,-51.593505859375,-50.3885498046875,-52.338626861572266,-51.593505859375,-50.3885498046875,-52.338626861572266,-51.593505859375,-50.3885498046875,-52.338626861572266,-51.593505859375,-.000303904089378193,-33.09198760986328,-82.73540496826172,-.000303904089378193,-33.09198760986328,-82.73540496826172,-.000303904089378193,-33.09198760986328,-82.73540496826172,-.000303904089378193,-33.09198760986328,-82.73540496826172,50.38816833496094,-52.338626861572266,-51.593875885009766,50.38816833496094,-52.338626861572266,-51.593875885009766,50.38816833496094,-52.338626861572266,-51.593875885009766,50.38816833496094,-52.338626861572266,-51.593875885009766,31.141719818115234,-83.4803466796875,1.2052193880081177,31.141719818115234,-83.4803466796875,1.2052193880081177,31.141719818115234,-83.4803466796875,1.2052193880081177,31.141719818115234,-83.4803466796875,1.2052193880081177,-31.141719818115234,-83.4803466796875,-1.2052193880081177,-31.141719818115234,-83.4803466796875,-1.2052193880081177,-31.141719818115234,-83.4803466796875,-1.2052193880081177,-31.141719818115234,-83.4803466796875,-1.2052193880081177,1.2050271034240723,-31.14171600341797,-83.48035430908203,1.2050271034240723,-31.14171600341797,-83.48035430908203,1.2050271034240723,-31.14171600341797,-83.48035430908203,1.2050271034240723,-31.14171600341797,-83.48035430908203,-52.338809967041016,51.59368896484375,-50.38816833496094,-52.338809967041016,51.59368896484375,-50.38816833496094,-52.338809967041016,51.59368896484375,-50.38816833496094,-52.338809967041016,51.59368896484375,-50.38816833496094,-31.141712188720703,-83.4803466796875,1.2054481506347656,-31.141712188720703,-83.4803466796875,1.2054481506347656,-31.141712188720703,-83.4803466796875,1.2054481506347656,-31.141712188720703,-83.4803466796875,1.2054481506347656,31.141719818115234,83.4803466796875,1.2052193880081177,31.141719818115234,83.4803466796875,1.2052193880081177,31.141719818115234,83.4803466796875,1.2052193880081177,31.141719818115234,83.4803466796875,1.2052193880081177,33.09198760986328,82.73540496826172,-.00012155366130173206,33.09198760986328,82.73540496826172,-.00012155366130173206,33.09198760986328,82.73540496826172,-.00012155366130173206,33.09198760986328,82.73540496826172,-.00012155366130173206,31.141712188720703,-83.4803466796875,-1.2054481506347656,31.141712188720703,-83.4803466796875,-1.2054481506347656,31.141712188720703,-83.4803466796875,-1.2054481506347656,31.141712188720703,-83.4803466796875,-1.2054481506347656,1.205640435218811,31.14171600341797,83.48033142089844,1.205640435218811,31.14171600341797,83.48033142089844,1.205640435218811,31.14171600341797,83.48033142089844,1.205640435218811,31.14171600341797,83.48033142089844,.000303904089378193,-33.09198760986328,82.73540496826172,.000303904089378193,-33.09198760986328,82.73540496826172,.000303904089378193,-33.09198760986328,82.73540496826172,.000303904089378193,-33.09198760986328,82.73540496826172,-82.73552703857422,0,-33.0916862487793,-82.73552703857422,0,-33.0916862487793,-82.73552703857422,0,-33.0916862487793,-82.73552703857422,0,-33.0916862487793,-51.59387969970703,50.38835906982422,-52.338436126708984,-51.59387969970703,50.38835906982422,-52.338436126708984,-51.59387969970703,50.38835906982422,-52.338436126708984,-51.59387969970703,50.38835906982422,-52.338436126708984,52.33843994140625,51.59368896484375,-50.3885498046875,52.33843994140625,51.59368896484375,-50.3885498046875,52.33843994140625,51.59368896484375,-50.3885498046875,52.33843994140625,51.59368896484375,-50.3885498046875,51.59387969970703,-50.38835906982422,52.338436126708984,51.59387969970703,-50.38835906982422,52.338436126708984,51.59387969970703,-50.38835906982422,52.338436126708984,51.59387969970703,-50.38835906982422,52.338436126708984,50.3885498046875,-52.338626861572266,51.593505859375,50.3885498046875,-52.338626861572266,51.593505859375,50.3885498046875,-52.338626861572266,51.593505859375,50.3885498046875,-52.338626861572266,51.593505859375],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.010959841310977936,.8584385514259338,-.5127993226051331,-.010959841310977936,.8584385514259338,-.5127993226051331,-.010959841310977936,.8584385514259338,-.5127993226051331,-.010959841310977936,.8584385514259338,-.5127993226051331,.8584375977516174,-.5128011703491211,-.010949048213660717,.8584375977516174,-.5128011703491211,-.010949048213660717,.8584375977516174,-.5128011703491211,-.010949048213660717,.8584375977516174,-.5128011703491211,-.010949048213660717,.8584346175193787,-.5128057599067688,.010964557528495789,.8584346175193787,-.5128057599067688,.010964557528495789,.8584346175193787,-.5128057599067688,.010964557528495789,.8584346175193787,-.5128057599067688,.010964557528495789,-.5414749979972839,-2707540988922119e-20,.8407168388366699,-.5414749979972839,-2707540988922119e-20,.8407168388366699,-.5414749979972839,-2707540988922119e-20,.8407168388366699,-.5414749979972839,-2707540988922119e-20,.8407168388366699,.5305333137512207,.017743051052093506,.8474783301353455,.5305333137512207,.017743051052093506,.8474783301353455,.5305333137512207,.017743051052093506,.8474783301353455,.5305333137512207,.017743051052093506,.8474783301353455,.01774728298187256,.8474791646003723,.5305318236351013,.01774728298187256,.8474791646003723,.5305318236351013,.01774728298187256,.8474791646003723,.5305318236351013,.01774728298187256,.8474791646003723,.5305318236351013,-.010942935943603516,.8584372997283936,.5128018856048584,-.010942935943603516,.8584372997283936,.5128018856048584,-.010942935943603516,.8584372997283936,.5128018856048584,-.010942935943603516,.8584372997283936,.5128018856048584,.8584451079368591,.5127884149551392,-.01095967274159193,.8584451079368591,.5127884149551392,-.01095967274159193,.8584451079368591,.5127884149551392,-.01095967274159193,.8584451079368591,.5127884149551392,-.01095967274159193,-.8584290742874146,-.512814462184906,-.010995045304298401,-.8584290742874146,-.512814462184906,-.010995045304298401,-.8584290742874146,-.512814462184906,-.010995045304298401,-.8584290742874146,-.512814462184906,-.010995045304298401,-.5305572152137756,-.017733842134475708,-.8474634885787964,-.5305572152137756,-.017733842134475708,-.8474634885787964,-.5305572152137756,-.017733842134475708,-.8474634885787964,-.5305572152137756,-.017733842134475708,-.8474634885787964,-.5128048658370972,.010960124433040619,-.8584352135658264,-.5128048658370972,.010960124433040619,-.8584352135658264,-.5128048658370972,.010960124433040619,-.8584352135658264,-.5128048658370972,.010960124433040619,-.8584352135658264,-.5128147006034851,-.010991238057613373,-.858428955078125,-.5128147006034851,-.010991238057613373,-.858428955078125,-.5128147006034851,-.010991238057613373,-.858428955078125,-.5128147006034851,-.010991238057613373,-.858428955078125,.5127923488616943,.010975174605846405,-.8584426045417786,.5127923488616943,.010975174605846405,-.8584426045417786,.5127923488616943,.010975174605846405,-.8584426045417786,.5127923488616943,.010975174605846405,-.8584426045417786,-.8584410548210144,.512795627117157,-.010933354496955872,-.8584410548210144,.512795627117157,-.010933354496955872,-.8584410548210144,.512795627117157,-.010933354496955872,-.8584410548210144,.512795627117157,-.010933354496955872,-.8584320545196533,.5128099322319031,.01097819209098816,-.8584320545196533,.5128099322319031,.01097819209098816,-.8584320545196533,.5128099322319031,.01097819209098816,-.8584320545196533,.5128099322319031,.01097819209098816,-.01773303747177124,-.8474655151367188,.5305542349815369,-.01773303747177124,-.8474655151367188,.5305542349815369,-.01773303747177124,-.8474655151367188,.5305542349815369,-.01773303747177124,-.8474655151367188,.5305542349815369,.010984241962432861,.8584214448928833,-.5128273963928223,.010984241962432861,.8584214448928833,-.5128273963928223,.010984241962432861,.8584214448928833,-.5128273963928223,.010984241962432861,.8584214448928833,-.5128273963928223,-.017747551202774048,.847478985786438,-.5305322408676147,-.017747551202774048,.847478985786438,-.5305322408676147,-.017747551202774048,.847478985786438,-.5305322408676147,-.017747551202774048,.847478985786438,-.5305322408676147,.017701515927910805,.8474764823913574,-.5305377244949341,.017701515927910805,.8474764823913574,-.5305377244949341,.017701515927910805,.8474764823913574,-.5305377244949341,.017701515927910805,.8474764823913574,-.5305377244949341,-2969801425933838e-20,.840691328048706,-.54151451587677,-2969801425933838e-20,.840691328048706,-.54151451587677,-2969801425933838e-20,.840691328048706,-.54151451587677,-2969801425933838e-20,.840691328048706,-.54151451587677,.5415211915969849,26792287826538086e-21,.840687096118927,.5415211915969849,26792287826538086e-21,.840687096118927,.5415211915969849,26792287826538086e-21,.840687096118927,.5415211915969849,26792287826538086e-21,.840687096118927,.8474524617195129,-.5305749177932739,.01773586869239807,.8474524617195129,-.5305749177932739,.01773586869239807,.8474524617195129,-.5305749177932739,.01773586869239807,.8474524617195129,-.5305749177932739,.01773586869239807,.8584384322166443,.5127996206283569,.010955426841974258,.8584384322166443,.5127996206283569,.010955426841974258,.8584384322166443,.5127996206283569,.010955426841974258,.8584384322166443,.5127996206283569,.010955426841974258,.8474904298782349,-.530514657497406,-.01772182434797287,.8474904298782349,-.530514657497406,-.01772182434797287,.8474904298782349,-.530514657497406,-.01772182434797287,.8474904298782349,-.530514657497406,-.01772182434797287,.5305161476135254,-.017740633338689804,-.8474891185760498,.5305161476135254,-.017740633338689804,-.8474891185760498,.5305161476135254,-.017740633338689804,-.8474891185760498,.5305161476135254,-.017740633338689804,-.8474891185760498,.5414748787879944,-5863606929779053e-21,-.8407169580459595,.5414748787879944,-5863606929779053e-21,-.8407169580459595,.5414748787879944,-5863606929779053e-21,-.8407169580459595,.5414748787879944,-5863606929779053e-21,-.8407169580459595,.8406915068626404,-.5415142774581909,-934302806854248e-20,.8406915068626404,-.5415142774581909,-934302806854248e-20,.8406915068626404,-.5415142774581909,-934302806854248e-20,.8406915068626404,-.5415142774581909,-934302806854248e-20,-.5128104090690613,-.01098555326461792,.8584316372871399,-.5128104090690613,-.01098555326461792,.8584316372871399,-.5128104090690613,-.01098555326461792,.8584316372871399,-.5128104090690613,-.01098555326461792,.8584316372871399,-.5128028988838196,.010992184281349182,.858436107635498,-.5128028988838196,.010992184281349182,.858436107635498,-.5128028988838196,.010992184281349182,.858436107635498,-.5128028988838196,.010992184281349182,.858436107635498,-.8474770188331604,-.5305349826812744,.017758265137672424,-.8474770188331604,-.5305349826812744,.017758265137672424,-.8474770188331604,-.5305349826812744,.017758265137672424,-.8474770188331604,-.5305349826812744,.017758265137672424,-.5305088758468628,-.017743252217769623,.8474936485290527,-.5305088758468628,-.017743252217769623,.8474936485290527,-.5305088758468628,-.017743252217769623,.8474936485290527,-.5305088758468628,-.017743252217769623,.8474936485290527,-.5305161476135254,.017740704119205475,.8474891781806946,-.5305161476135254,.017740704119205475,.8474891781806946,-.5305161476135254,.017740704119205475,.8474891781806946,-.5305161476135254,.017740704119205475,.8474891781806946,-.8474623560905457,.5305585861206055,.01774775981903076,-.8474623560905457,.5305585861206055,.01774775981903076,-.8474623560905457,.5305585861206055,.01774775981903076,-.8474623560905457,.5305585861206055,.01774775981903076,29221177101135254e-21,.8406913876533508,.5415146350860596,29221177101135254e-21,.8406913876533508,.5415146350860596,29221177101135254e-21,.8406913876533508,.5415146350860596,29221177101135254e-21,.8406913876533508,.5415146350860596,.8474631309509277,.5305578112602234,.017742618918418884,.8474631309509277,.5305578112602234,.017742618918418884,.8474631309509277,.5305578112602234,.017742618918418884,.8474631309509277,.5305578112602234,.017742618918418884,.5128002166748047,-.010964479297399521,.8584378957748413,.5128002166748047,-.010964479297399521,.8584378957748413,.5128002166748047,-.010964479297399521,.8584378957748413,.5128002166748047,-.010964479297399521,.8584378957748413,-.8407147526741028,.5414782166481018,9499490261077881e-21,-.8407147526741028,.5414782166481018,9499490261077881e-21,-.8407147526741028,.5414782166481018,9499490261077881e-21,-.8407147526741028,.5414782166481018,9499490261077881e-21,-.017701396718621254,.847476601600647,.530537486076355,-.017701396718621254,.847476601600647,.530537486076355,-.017701396718621254,.847476601600647,.530537486076355,-.017701396718621254,.847476601600647,.530537486076355,.5305255055427551,.01773667335510254,-.8474833369255066,.5305255055427551,.01773667335510254,-.8474833369255066,.5305255055427551,.01773667335510254,-.8474833369255066,.5305255055427551,.01773667335510254,-.8474833369255066,-.8474682569503784,-.5305496454238892,-.017742810770869255,-.8474682569503784,-.5305496454238892,-.017742810770869255,-.8474682569503784,-.5305496454238892,-.017742810770869255,-.8474682569503784,-.5305496454238892,-.017742810770869255,-.8406901359558105,-.5415164232254028,3986060619354248e-20,-.8406901359558105,-.5415164232254028,3986060619354248e-20,-.8406901359558105,-.5415164232254028,3986060619354248e-20,-.8406901359558105,-.5415164232254028,3986060619354248e-20,-.858434796333313,-.5128055810928345,.010956216603517532,-.858434796333313,-.5128055810928345,.010956216603517532,-.858434796333313,-.5128055810928345,.010956216603517532,-.858434796333313,-.5128055810928345,.010956216603517532,-.017747780308127403,-.8474676012992859,-.530550479888916,-.017747780308127403,-.8474676012992859,-.530550479888916,-.017747780308127403,-.8474676012992859,-.530550479888916,-.017747780308127403,-.8474676012992859,-.530550479888916,33095479011535645e-21,-.8406911492347717,-.5415149331092834,33095479011535645e-21,-.8406911492347717,-.5415149331092834,33095479011535645e-21,-.8406911492347717,-.5415149331092834,33095479011535645e-21,-.8406911492347717,-.5415149331092834,.017742261290550232,-.8474804759025574,-.5305300354957581,.017742261290550232,-.8474804759025574,-.5305300354957581,.017742261290550232,-.8474804759025574,-.5305300354957581,.017742261290550232,-.8474804759025574,-.5305300354957581,.010982692241668701,-.8584359288215637,.5128030776977539,.010982692241668701,-.8584359288215637,.5128030776977539,.010982692241668701,-.8584359288215637,.5128030776977539,.010982692241668701,-.8584359288215637,.5128030776977539,-.011000136844813824,-.8584293127059937,-.512813925743103,-.011000136844813824,-.8584293127059937,-.512813925743103,-.011000136844813824,-.8584293127059937,-.512813925743103,-.011000136844813824,-.8584293127059937,-.512813925743103,.5127899050712585,-.010951489210128784,-.858444333076477,.5127899050712585,-.010951489210128784,-.858444333076477,.5127899050712585,-.010951489210128784,-.858444333076477,.5127899050712585,-.010951489210128784,-.858444333076477,-.8474836945533752,.530524492263794,-.017755359411239624,-.8474836945533752,.530524492263794,-.017755359411239624,-.8474836945533752,.530524492263794,-.017755359411239624,-.8474836945533752,.530524492263794,-.017755359411239624,-.010949179530143738,-.8584410548210144,.5127953290939331,-.010949179530143738,-.8584410548210144,.5127953290939331,-.010949179530143738,-.8584410548210144,.5127953290939331,-.010949179530143738,-.8584410548210144,.5127953290939331,.010959796607494354,.8584384918212891,.5127993226051331,.010959796607494354,.8584384918212891,.5127993226051331,.010959796607494354,.8584384918212891,.5127993226051331,.010959796607494354,.8584384918212891,.5127993226051331,.840688943862915,.5415182709693909,23245811462402344e-22,.840688943862915,.5415182709693909,23245811462402344e-22,.840688943862915,.5415182709693909,23245811462402344e-22,.840688943862915,.5415182709693909,23245811462402344e-22,.010956525802612305,-.85843825340271,-.512799859046936,.010956525802612305,-.85843825340271,-.512799859046936,.010956525802612305,-.85843825340271,-.512799859046936,.010956525802612305,-.85843825340271,-.512799859046936,.5128072500228882,.010947109200060368,.8584340214729309,.5128072500228882,.010947109200060368,.8584340214729309,.5128072500228882,.010947109200060368,.8584340214729309,.5128072500228882,.010947109200060368,.8584340214729309,-2372264862060547e-20,-.8406915664672852,.5415141582489014,-2372264862060547e-20,-.8406915664672852,.5415141582489014,-2372264862060547e-20,-.8406915664672852,.5415141582489014,-2372264862060547e-20,-.8406915664672852,.5415141582489014,-.5415211319923401,58785080909729e-19,-.8406871557235718,-.5415211319923401,58785080909729e-19,-.8406871557235718,-.5415211319923401,58785080909729e-19,-.8406871557235718,-.5415211319923401,58785080909729e-19,-.8406871557235718,-.5305268168449402,.017754971981048584,-.8474822044372559,-.5305268168449402,.017754971981048584,-.8474822044372559,-.5305268168449402,.017754971981048584,-.8474822044372559,-.5305268168449402,.017754971981048584,-.8474822044372559,.8474643230438232,.530555784702301,-.017738506197929382,.8474643230438232,.530555784702301,-.017738506197929382,.8474643230438232,.530555784702301,-.017738506197929382,.8474643230438232,.530555784702301,-.017738506197929382,.5305773615837097,-.017735809087753296,.8474509716033936,.5305773615837097,-.017735809087753296,.8474509716033936,.5305773615837097,-.017735809087753296,.8474509716033936,.5305773615837097,-.017735809087753296,.8474509716033936,.017751533538103104,-.8474733233451843,.5305410623550415,.017751533538103104,-.8474733233451843,.5305410623550415,.017751533538103104,-.8474733233451843,.5305410623550415,.017751533538103104,-.8474733233451843,.5305410623550415],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.04446648806333542,.07376205921173096,.20145824551582336,.23582905530929565,.21539996564388275,.12743210792541504,.37534299492836,.25084298849105835,.04809992015361786,.08560597896575928,.057846054434776306,.11768478155136108,.1833210289478302,.12743109464645386,.7991840243339539,.7345119714736938,.04446648806333542,.10164541006088257,.05784609913825989,.009287774562835693,.1456916183233261,.009287774562835693,.9510290026664734,.7345119714736938,.029962755739688873,.009287834167480469,.08629150688648224,.11558711528778076,.16937947273254395,.23582905530929565,.29914700984954834,.9847790002822876,.09967105835676193,.11768478155136108,.12479200214147568,.5006319880485535,.13174988329410553,.06191825866699219,.14569158852100372,.23582911491394043,.10386674106121063,.11768478155136108,.1178082525730133,.12743109464645386,.12811647355556488,.059820473194122314,.2996180057525635,.7345709800720215,.04809992015361786,.07166439294815063,.1038665845990181,.12743091583251953,.2112043797969818,.12743210792541504,.4983850121498108,.5901579856872559,.04809992015361786,.08980154991149902,.04809992015361786,.1274309754371643,.06204163283109665,.11768478155136108,.9510089755058289,.23450398445129395,.04809992015361786,.11348932981491089,.07598327845335007,.11768478155136108,.11361270397901535,.11768472194671631,.24789699912071228,.8405579924583435,.1178082674741745,.009287655353546143,.15963312983512878,.23582905530929565,.2148379236459732,.11348950862884521,.7521880269050598,.34043699502944946,.04446648806333542,.04587888717651367,.22514608502388,.00928884744644165,.2390877902507782,.23582905530929565,.9978780150413513,.34043699502944946,.12811647355556488,.08770370483398438,.15963324904441833,.12743109464645386,.23908784985542297,.12743210792541504,.8750330209732056,.25118499994277954,.04809989035129547,.0437811017036438,.22934159636497498,.12743210792541504,.24328330159187317,.23582911491394043,.5490679740905762,.2342810034751892,.04446648806333542,.11558705568313599,.0717877745628357,.11768478155136108,.12755444645881653,.12743091583251953,.20090700685977936,.4844740033149719,.03415820747613907,.009287834167480469,.07178772985935211,.009287774562835693,.08992494642734528,.11768484115600586,.24783000349998474,.3400610089302063,.029962942004203796,.1274297833442688,.08629149198532104,.05982053279876709,.17357508838176727,.009289085865020752,.7481870055198669,.5902109742164612,.07598324865102768,.12743091583251953,.13174989819526672,.10374313592910767,.2153998762369156,.23582905530929565,.25249800086021423,.34009504318237305,.08629149198532104,.07376205921173096,.20145824551582336,.1274312138557434,.22934159636497498,.11768591403961182,.49818700551986694,.34009504318237305,.04446648806333542,.05982053279876709,.07598326355218887,.23582905530929565,.22514608502388,.23582905530929565,.29941999912261963,.48450803756713867,.04809989035129547,.04797661304473877,.2251461148262024,.12743210792541504,.22934159636497498,.009288787841796875,.45126500725746155,.48450803756713867,.04809992015361786,.0995476245880127,.14149606227874756,.009287774562835693,.14569158852100372,.12743109464645386,.24763700366020203,.5898839831352234,.08572941273450851,.23582905530929565,.12811647355556488,.04587888717651367,.1456916183233261,.11768472194671631,.9979509711265564,.5900989770889282,.04809992015361786,.10374313592910767,.062041595578193665,.009287774562835693,.14149613678455353,.12743109464645386,.7991650104522705,.23450398445129395,.08629149198532104,.04587888717651367,.18332113325595856,.23582911491394043,.2014583796262741,.11768490076065063,.7522619962692261,.5900989770889282,.08992491662502289,.0437811017036438,.18751657009124756,.23582905530929565,.23908784985542297,.11768591403961182,.6249899864196777,.0006160140037536621,.043904468417167664,.1274309754371643,.0444665253162384,.08770382404327393,.18751657009124756,.12743109464645386,.7478349804878235,.08986800909042358,.08572938293218613,.1274309754371643,.13174991309642792,.0758599042892456,.2014583796262741,.009289026260375977,.8751059770584106,.5008469820022583,.034158237278461456,.23582905530929565,.0899249017238617,.10374313592910767,.15543770790100098,.11768490076065063,.49791398644447327,.840366005897522,.020216554403305054,.1274297833442688,.13174991309642792,.11768472194671631,.15543778240680695,.009287893772125244,.3750689923763275,.751114010810852,.04913000017404556,.9849709868431091,.0899249017238617,.05772274732589722,.1693795919418335,.009289145469665527,.17357489466667175,.12743103504180908,.034158237278461456,.1274297833442688,.0899249017238617,.06191825866699219,.16937938332557678,.1274309754371643,.45099198818206787,.9847790002822876,.020216554403305054,.23582911491394043,.029962696135044098,.11768358945846558,.2148379534482956,.0995478630065918,.25222501158714294,.840366005897522,.034158363938331604,.11768358945846558,.09967107325792313,.23582905530929565,.12498500198125839,.2508090138435364,.2148379534482956,.10374337434768677,.016021236777305603,.1274297833442688,.10386674106121063,.009288907051086426,.12811647355556488,.11558699607849121,.2526949942111969,.5901579856872559,.1136128157377243,.12743109464645386,.13174988329410553,.05772268772125244,.14149603247642517,.23582905530929565,.7522420287132263,.09009099006652832,.020216554403305054,.009286701679229736,.04887000098824501,.734296977519989,.08629149198532104,.10164541006088257,.15963326394557953,.11768490076065063,.002139999996870756,.3400610089302063,.04809992015361786,.0758599042892456,.0996711403131485,.12743091583251953,.197262704372406,.23582911491394043,.016021013259887695,.23582905530929565,.1038665771484375,.23582905530929565,.21120451390743256,.1016455888748169,.37553998827934265,.5009059906005859,.043904371559619904,.23582905530929565,.04809992015361786,.05772274732589722,.22934159636497498,.23582905530929565,.7009119987487793,.2342810034751892,.057846151292324066,.23582905530929565,.11361275613307953,.009287714958190918,.12505200505256653,.7513059973716736,.2148379236459732,.11768490076065063,.0022070000413805246,.8405579924583435,.057846054434776306,.1274309754371643,.08629149198532104,.08770382404327393,.16937938332557678,.11768496036529541,.07598327845335007,.009287774562835693,.08992494642734528,.11348938941955566,.17357489466667175,.23582911491394043,.2009740024805069,.9849709868431091,.06204158067703247,.23582905530929565,.15543770790100098,.23582905530929565,.21120451390743256,.11558717489242554,.5491099953651428,.48442399501800537,.13174989819526672,.08560597896575928,.15543770790100098,.12743109464645386,.24328330159187317,.009288966655731201,.7009549736976624,.48442399501800537,.08992491662502289,.04797661304473877,.1972629427909851,.11768496036529541,.24328330159187317,.11768591403961182,.7478770017623901,.3400120139122009,.08992493152618408,.1274309754371643,.13174991309642792,.07166433334350586,.18751657009124756,.11768484115600586,.5024970173835754,.5902109742164612,.06204158067703247,.1274309754371643,.08992491662502289,.0898016095161438,.18332108855247498,.009287834167480469,.5021880269050598,.3400120139122009,.13174989819526672,.08980154991149902,.2390877902507782,.009288907051086426,.24328330159187317,.12743210792541504,.502144992351532,.08986800909042358,.049063000828027725,.4844740033149719,.0899249017238617,.07166439294815063,.12755438685417175,.23582905530929565,.19726276397705078,.1274312138557434,.08992491662502289,.08560603857040405,.17357507348060608,.11768496036529541,.18751657009124756,.009287834167480469,.6253420114517212,.5009589791297913,.1178082600235939,.23582905530929565,.13174989819526672,.0995476245880127,.2112043797969818,.23582905530929565,.4514620006084442,.7345709800720215,.07178780436515808,.1274309754371643,.11361271142959595,.23582905530929565,.12811647355556488,.10164541006088257,.8750870227813721,.0008389949798583984,.12811648845672607,.07376205921173096,.1833210289478302,.11768484115600586,.197262704372406,.009289026260375977,.6250330209732056,.25075995922088623,.0019470000406727195,.5898839831352234,.09967128932476044,.009288907051086426,.13174991309642792,.11348927021026611,.15963326394557953,.009287893772125244,.01602097600698471,.009286701679229736,.029962696135044098,.23582905530929565,.0899249017238617,.0995476245880127,.7012640237808228,.7346240282058716,.04809992015361786,.11768478155136108,.1178082674741745,.11768472194671631,.13174991309642792,.12743091583251953,.799111008644104,.4848499894142151,.0899249017238617,.0758599042892456,.13174991309642792,.23582911491394043,.22514614462852478,.11768591403961182,.9509549736976624,.4848499894142151,.04809992015361786,.06191825866699219,.04809992015361786,.23582905530929565,.07178771495819092,.23582905530929565,.9979320168495178,.09009099006652832,.020216554403305054,.11768358945846558,.13174989819526672,.047976553440093994,.14149612188339233,.11768472194671631,.20071400701999664,.734296977519989,.01602107286453247,.11768358945846558,.08992485702037811,.23582905530929565,.13174989819526672,.0437811017036438,.5494199991226196,.7346240282058716],normalized:!1},color:{itemSize:4,type:"Uint16Array",array:[65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535],normalized:!0}},index:{type:"Uint16Array",array:[17,212,141,107,7,11,43,39,223,59,130,144,158,116,167,151,23,203,91,231,207,199,183,239,75,71,3,103,191,51,171,179,211,186,182,198,149,146,129,133,16,20,108,60,217,205,21,136,157,221,36,202,2,26,119,14,166,49,74,154,161,168,184,33,57,53,178,189,98,229,100,152,102,93,97,148,112,132,232,216,236,194,222,54,173,37,45,104,237,180,138,82,90,12,128,56,86,81,234,73,204,230,46,50,190,94,210,177,147,69,195,226,78,41,9,30,89,118,197,62,0,145,24,162,185,196,65,201,206,105,181,208,76,48,40,172,44,188,113,214,134,109,218,142,32,52,220,4,101,28,13,58,165,8,88,80,68,224,193,159,38,170,72,228,153,92,176,96,126,150,131,121,117,61,18,137,22,85,233,238,114,143,215,15,111,115,235,83,141,83,17,141,11,87,107,107,95,7,223,227,43,43,47,39,192,55,144,55,59,144,167,35,158,158,160,116,203,27,151,151,135,23,207,139,91,91,31,231,219,63,239,63,199,239,3,67,75,75,79,71,51,155,103,103,99,191,211,187,171,171,175,179,186,209,182,149,25,146,133,213,16,108,120,60,205,200,21,157,34,221,202,66,2,119,122,14,49,77,74,161,156,168,33,164,57,178,174,189,229,29,100,102,6,93,148,124,112,232,140,216,194,225,222,173,169,37,104,84,237,138,19,82,12,125,128,86,10,81,73,64,204,46,42,50,94,106,210,147,1,69,226,70,78,9,5,30,118,163,197,114,110,143,115,127,15,15,123,111]},boundingSphere:{center:[0,0,0],radius:144.59226795520192}},faceValues:[7,5,3,11,12,9,4,1,2,10,8,6],rotationCombinations:{"1,2":[90,0,-90],"1,3":[-90,0,-90],"1,4":[-32,18,-58],"1,5":[32,18,58],"1,6":[0,0,180],"1,7":[-180,0,0],"1,8":[-148,-18,-58],"1,9":[-148,-18,122],"1,10":[-90,0,90],"1,11":[90,0,90],"1,12":[-180,0,-180],"2,3":[-180,0,-180],"2,4":[90,0,-90],"2,5":[90,0,90],"2,6":[-122,-90,148],"2,7":[-69,30,21],"2,8":[-90,0,-90],"2,9":[-32,18,122],"2,10":[-180,0,0],"2,11":[0,0,180],"2,12":[-148,54,122],"3,4":[32,18,58],"3,5":[90,0,-90],"3,6":[32,54,-58],"3,7":[-32,-54,122],"3,8":[-148,-18,122],"3,9":[-90,0,-90],"3,10":[-148,18,-122],"3,11":[-180,0,0],"3,12":[-122,-90,148],"4,5":[0,0,180],"4,6":[90,0,90],"4,7":[-90,0,90],"4,8":[-180,0,-180],"4,9":[-180,0,0],"4,10":[148,-54,-58],"4,11":[-122,-90,148],"4,12":[-90,0,-90],"5,6":[-90,0,-90],"5,7":[90,0,-90],"5,8":[-180,0,0],"5,9":[-180,0,-180],"5,10":[-148,-18,122],"5,11":[32,18,58],"5,12":[90,0,90],"6,7":[-180,0,-180],"6,8":[148,18,122],"6,9":[-122,-90,148],"6,10":[90,0,-90],"6,11":[-148,54,-58],"6,12":[-148,-18,-58],"7,8":[32,-18,-58],"7,9":[-69,30,21],"7,10":[148,54,58],"7,11":[-90,0,90],"7,12":[-32,54,58],"8,9":[0,0,180],"8,10":[-148,-18,-58],"8,11":[-148,-54,58],"8,12":[-90,0,90],"9,10":[-31,18,-58],"9,11":[-148,-90,-58],"9,12":[90,0,-90],"10,11":[-180,0,-180],"10,12":[-90,90,-180],"11,12":[148,-54,-58]}},d14:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"55E8EC8E-D9C5-4E75-86AC-BC4F49CF5FEA",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-3.3639726638793945,6.319602012634277,-77.80762481689453,-3.3639726638793945,6.319602012634277,-77.80762481689453,-3.3639726638793945,6.319602012634277,-77.80762481689453,-3.3639726638793945,6.319602012634277,-77.80762481689453,2.563892364501953,84.39848327636719,-5.970834732055664,2.563892364501953,84.39848327636719,-5.970834732055664,2.563892364501953,84.39848327636719,-5.970834732055664,2.563892364501953,84.39848327636719,-5.970834732055664,2.563892364501953,84.39848327636719,-5.970834732055664,75.92582702636719,-2.281585454940796,-17.299819946289062,75.92582702636719,-2.281585454940796,-17.299819946289062,75.92582702636719,-2.281585454940796,-17.299819946289062,75.92582702636719,-2.281585454940796,-17.299819946289062,4.9952239990234375,84.37457275390625,4.497790336608887,4.9952239990234375,84.37457275390625,4.497790336608887,4.9952239990234375,84.37457275390625,4.497790336608887,4.9952239990234375,84.37457275390625,4.497790336608887,4.9952239990234375,84.37457275390625,4.497790336608887,-30.552932739257812,6.355025291442871,71.34111022949219,-30.552932739257812,6.355025291442871,71.34111022949219,-30.552932739257812,6.355025291442871,71.34111022949219,-30.552932739257812,6.355025291442871,71.34111022949219,31.1562557220459,6.31425142288208,71.49166870117188,31.1562557220459,6.31425142288208,71.49166870117188,31.1562557220459,6.31425142288208,71.49166870117188,31.1562557220459,6.31425142288208,71.49166870117188,-74.74581909179688,-6.299898624420166,-20.404645919799805,-74.74581909179688,-6.299898624420166,-20.404645919799805,-74.74581909179688,-6.299898624420166,-20.404645919799805,-74.74581909179688,-6.299898624420166,-20.404645919799805,30.55293846130371,-6.35502815246582,-71.34111022949219,30.55293846130371,-6.35502815246582,-71.34111022949219,30.55293846130371,-6.35502815246582,-71.34111022949219,30.55293846130371,-6.35502815246582,-71.34111022949219,-31.1562557220459,-6.31424617767334,-71.49166870117188,-31.1562557220459,-6.31424617767334,-71.49166870117188,-31.1562557220459,-6.31424617767334,-71.49166870117188,-31.1562557220459,-6.31424617767334,-71.49166870117188,5.657160758972168,-84.42521667480469,-4.448384761810303,5.657160758972168,-84.42521667480469,-4.448384761810303,5.657160758972168,-84.42521667480469,-4.448384761810303,5.657160758972168,-84.42521667480469,-4.448384761810303,5.657160758972168,-84.42521667480469,-4.448384761810303,62.504119873046875,-6.354261875152588,46.30989074707031,62.504119873046875,-6.354261875152588,46.30989074707031,62.504119873046875,-6.354261875152588,46.30989074707031,62.504119873046875,-6.354261875152588,46.30989074707031,7.009031295776367,-84.40763854980469,1.33268404006958,7.009031295776367,-84.40763854980469,1.33268404006958,7.009031295776367,-84.40763854980469,1.33268404006958,7.009031295776367,-84.40763854980469,1.33268404006958,7.009031295776367,-84.40763854980469,1.33268404006958,75.9446792602539,-6.379278182983398,-14.266926765441895,75.9446792602539,-6.379278182983398,-14.266926765441895,75.9446792602539,-6.379278182983398,-14.266926765441895,75.9446792602539,-6.379278182983398,-14.266926765441895,3.3639724254608154,-6.31959867477417,77.8076171875,3.3639724254608154,-6.31959867477417,77.8076171875,3.3639724254608154,-6.31959867477417,77.8076171875,3.3639724254608154,-6.31959867477417,77.8076171875,3.3671836853027344,-84.35977935791016,6.014355659484863,3.3671836853027344,-84.35977935791016,6.014355659484863,3.3671836853027344,-84.35977935791016,6.014355659484863,3.3671836853027344,-84.35977935791016,6.014355659484863,3.3671836853027344,-84.35977935791016,6.014355659484863,34.1295166015625,2.239828109741211,70.8094711303711,34.1295166015625,2.239828109741211,70.8094711303711,34.1295166015625,2.239828109741211,70.8094711303711,34.1295166015625,2.239828109741211,70.8094711303711,-75.9446792602539,6.379278182983398,14.26693058013916,-75.9446792602539,6.379278182983398,14.26693058013916,-75.9446792602539,6.379278182983398,14.26693058013916,-75.9446792602539,6.379278182983398,14.26693058013916,-76.03756713867188,-6.302979946136475,-14.609931945800781,-76.03756713867188,-6.302979946136475,-14.609931945800781,-76.03756713867188,-6.302979946136475,-14.609931945800781,-76.03756713867188,-6.302979946136475,-14.609931945800781,-76.0564956665039,-2.211188554763794,-17.664764404296875,-76.0564956665039,-2.211188554763794,-17.664764404296875,-76.0564956665039,-2.211188554763794,-17.664764404296875,-76.0564956665039,-2.211188554763794,-17.664764404296875,-62.504119873046875,6.354262351989746,-46.30989074707031,-62.504119873046875,6.354262351989746,-46.30989074707031,-62.504119873046875,6.354262351989746,-46.30989074707031,-62.504119873046875,6.354262351989746,-46.30989074707031,-61.1809196472168,2.2734644412994385,-49.07624435424805,-61.1809196472168,2.2734644412994385,-49.07624435424805,-61.1809196472168,2.2734644412994385,-49.07624435424805,-61.1809196472168,2.2734644412994385,-49.07624435424805,-58.829193115234375,6.3529181480407715,-50.964759826660156,-58.829193115234375,6.3529181480407715,-50.964759826660156,-58.829193115234375,6.3529181480407715,-50.964759826660156,-58.829193115234375,6.3529181480407715,-50.964759826660156,-36.493858337402344,-6.314887523651123,-68.91082763671875,-36.493858337402344,-6.314887523651123,-68.91082763671875,-36.493858337402344,-6.314887523651123,-68.91082763671875,-36.493858337402344,-6.314887523651123,-68.91082763671875,58.31211471557617,6.307106018066406,-50.69571304321289,58.31211471557617,6.307106018066406,-50.69571304321289,58.31211471557617,6.307106018066406,-50.69571304321289,58.31211471557617,6.307106018066406,-50.69571304321289,62.011024475097656,6.3075995445251465,-46.048179626464844,62.011024475097656,6.3075995445251465,-46.048179626464844,62.011024475097656,6.3075995445251465,-46.048179626464844,62.011024475097656,6.3075995445251465,-46.048179626464844,74.60848999023438,-6.379120826721191,-20.05154037475586,74.60848999023438,-6.379120826721191,-20.05154037475586,74.60848999023438,-6.379120826721191,-20.05154037475586,74.60848999023438,-6.379120826721191,-20.05154037475586,76.0564956665039,2.2111899852752686,17.664772033691406,76.0564956665039,2.2111899852752686,17.664772033691406,76.0564956665039,2.2111899852752686,17.664772033691406,76.0564956665039,2.2111899852752686,17.664772033691406,74.74581909179688,6.299901008605957,20.404653549194336,74.74581909179688,6.299901008605957,20.404653549194336,74.74581909179688,6.299901008605957,20.404653549194336,74.74581909179688,6.299901008605957,20.404653549194336,36.493858337402344,6.3148884773254395,68.91082763671875,36.493858337402344,6.3148884773254395,68.91082763671875,36.493858337402344,6.3148884773254395,68.91082763671875,36.493858337402344,6.3148884773254395,68.91082763671875,-2.5638914108276367,-84.39848327636719,5.9708333015441895,-2.5638914108276367,-84.39848327636719,5.9708333015441895,-2.5638914108276367,-84.39848327636719,5.9708333015441895,-2.5638914108276367,-84.39848327636719,5.9708333015441895,-2.5638914108276367,-84.39848327636719,5.9708333015441895,.3401651680469513,-84.3684310913086,-7.083171844482422,.3401651680469513,-84.3684310913086,-7.083171844482422,.3401651680469513,-84.3684310913086,-7.083171844482422,.3401651680469513,-84.3684310913086,-7.083171844482422,.3401651680469513,-84.3684310913086,-7.083171844482422,-5.657160758972168,84.42522430419922,4.448385238647461,-5.657160758972168,84.42522430419922,4.448385238647461,-5.657160758972168,84.42522430419922,4.448385238647461,-5.657160758972168,84.42522430419922,4.448385238647461,-5.657160758972168,84.42522430419922,4.448385238647461,-.4000111222267151,2.242583751678467,-78.4876937866211,-.4000111222267151,2.242583751678467,-78.4876937866211,-.4000111222267151,2.242583751678467,-78.4876937866211,-.4000111222267151,2.242583751678467,-78.4876937866211,-34.1295166015625,-2.239827871322632,-70.8094711303711,-34.1295166015625,-2.239827871322632,-70.8094711303711,-34.1295166015625,-2.239827871322632,-70.8094711303711,-34.1295166015625,-2.239827871322632,-70.8094711303711,2.5671069622039795,6.321245193481445,-77.7981948852539,2.5671069622039795,6.321245193481445,-77.7981948852539,2.5671069622039795,6.321245193481445,-77.7981948852539,2.5671069622039795,6.321245193481445,-77.7981948852539,60.691749572753906,2.211258888244629,-48.80388641357422,60.691749572753906,2.211258888244629,-48.80388641357422,60.691749572753906,2.211258888244629,-48.80388641357422,60.691749572753906,2.211258888244629,-48.80388641357422,35.8908576965332,-6.357795238494873,-68.75081634521484,35.8908576965332,-6.357795238494873,-68.75081634521484,35.8908576965332,-6.357795238494873,-68.75081634521484,35.8908576965332,-6.357795238494873,-68.75081634521484,33.49201583862305,-2.268580436706543,-70.65808868408203,33.49201583862305,-2.268580436706543,-70.65808868408203,33.49201583862305,-2.268580436706543,-70.65808868408203,33.49201583862305,-2.268580436706543,-70.65808868408203,76.03756713867188,6.302982807159424,14.609939575195312,76.03756713867188,6.302982807159424,14.609939575195312,76.03756713867188,6.302982807159424,14.609939575195312,76.03756713867188,6.302982807159424,14.609939575195312,61.1809196472168,-2.2734615802764893,49.07624435424805,61.1809196472168,-2.2734615802764893,49.07624435424805,61.1809196472168,-2.2734615802764893,49.07624435424805,61.1809196472168,-2.2734615802764893,49.07624435424805,-58.31211471557617,-6.307102203369141,50.69571304321289,-58.31211471557617,-6.307102203369141,50.69571304321289,-58.31211471557617,-6.307102203369141,50.69571304321289,-58.31211471557617,-6.307102203369141,50.69571304321289,-33.49201202392578,2.268582582473755,70.65808868408203,-33.49201202392578,2.268582582473755,70.65808868408203,-33.49201202392578,2.268582582473755,70.65808868408203,-33.49201202392578,2.268582582473755,70.65808868408203,-35.8908576965332,6.357793807983398,68.75082397460938,-35.8908576965332,6.357793807983398,68.75082397460938,-35.8908576965332,6.357793807983398,68.75082397460938,-35.8908576965332,6.357793807983398,68.75082397460938,-2.567105293273926,-6.321239948272705,77.7981948852539,-2.567105293273926,-6.321239948272705,77.7981948852539,-2.567105293273926,-6.321239948272705,77.7981948852539,-2.567105293273926,-6.321239948272705,77.7981948852539,.40001073479652405,-2.242581844329834,78.4876937866211,.40001073479652405,-2.242581844329834,78.4876937866211,.40001073479652405,-2.242581844329834,78.4876937866211,.40001073479652405,-2.242581844329834,78.4876937866211,-60.69174575805664,-2.211254835128784,48.803897857666016,-60.69174575805664,-2.211254835128784,48.803897857666016,-60.69174575805664,-2.211254835128784,48.803897857666016,-60.69174575805664,-2.211254835128784,48.803897857666016,-74.60848999023438,6.379125595092773,20.051544189453125,-74.60848999023438,6.379125595092773,20.051544189453125,-74.60848999023438,6.379125595092773,20.051544189453125,-74.60848999023438,6.379125595092773,20.051544189453125,-75.92582702636719,2.2815887928009033,17.29982566833496,-75.92582702636719,2.2815887928009033,17.29982566833496,-75.92582702636719,2.2815887928009033,17.29982566833496,-75.92582702636719,2.2815887928009033,17.29982566833496,-62.011024475097656,-6.307600975036621,46.04818344116211,-62.011024475097656,-6.307600975036621,46.04818344116211,-62.011024475097656,-6.307600975036621,46.04818344116211,-62.011024475097656,-6.307600975036621,46.04818344116211,-6.242546081542969,-84.4273681640625,1.3070549964904785,-6.242546081542969,-84.4273681640625,1.3070549964904785,-6.242546081542969,-84.4273681640625,1.3070549964904785,-6.242546081542969,-84.4273681640625,1.3070549964904785,-6.242546081542969,-84.4273681640625,1.3070549964904785,-4.99522066116333,-84.37457275390625,-4.497788429260254,-4.99522066116333,-84.37457275390625,-4.497788429260254,-4.99522066116333,-84.37457275390625,-4.497788429260254,-4.99522066116333,-84.37457275390625,-4.497788429260254,-4.99522066116333,-84.37457275390625,-4.497788429260254,58.829200744628906,-6.3529205322265625,50.964759826660156,58.829200744628906,-6.3529205322265625,50.964759826660156,58.829200744628906,-6.3529205322265625,50.964759826660156,58.829200744628906,-6.3529205322265625,50.964759826660156,-.34016573429107666,84.3684310913086,7.083171844482422,-.34016573429107666,84.3684310913086,7.083171844482422,-.34016573429107666,84.3684310913086,7.083171844482422,-.34016573429107666,84.3684310913086,7.083171844482422,-.34016573429107666,84.3684310913086,7.083171844482422,6.242546081542969,84.4273681640625,-1.307053804397583,6.242546081542969,84.4273681640625,-1.307053804397583,6.242546081542969,84.4273681640625,-1.307053804397583,6.242546081542969,84.4273681640625,-1.307053804397583,6.242546081542969,84.4273681640625,-1.307053804397583,-3.3671834468841553,84.35977935791016,-6.0143561363220215,-3.3671834468841553,84.35977935791016,-6.0143561363220215,-3.3671834468841553,84.35977935791016,-6.0143561363220215,-3.3671834468841553,84.35977935791016,-6.0143561363220215,-3.3671834468841553,84.35977935791016,-6.0143561363220215,-7.009029865264893,84.40763854980469,-1.3326834440231323,-7.009029865264893,84.40763854980469,-1.3326834440231323,-7.009029865264893,84.40763854980469,-1.3326834440231323,-7.009029865264893,84.40763854980469,-1.3326834440231323,-7.009029865264893,84.40763854980469,-1.3326834440231323,-.36670994758605957,87.28189849853516,.20025108754634857,-.36670994758605957,87.28189849853516,.20025108754634857,-.36670994758605957,87.28189849853516,.20025108754634857,-.36670994758605957,87.28189849853516,.20025108754634857,-.36670994758605957,87.28189849853516,.20025108754634857,-.36670994758605957,87.28189849853516,.20025108754634857,-.36670994758605957,87.28189849853516,.20025108754634857,.366711288690567,-87.28191375732422,-.2002510279417038,.366711288690567,-87.28191375732422,-.2002510279417038,.366711288690567,-87.28191375732422,-.2002510279417038,.366711288690567,-87.28191375732422,-.2002510279417038,.366711288690567,-87.28191375732422,-.2002510279417038,.366711288690567,-87.28191375732422,-.2002510279417038,.366711288690567,-87.28191375732422,-.2002510279417038],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.28516727685928345,.6296403408050537,-.7226566076278687,-.28516727685928345,.6296403408050537,-.7226566076278687,-.28516727685928345,.6296403408050537,-.7226566076278687,-.28516727685928345,.6296403408050537,-.7226566076278687,.3280982971191406,.6602655649185181,-.6755744218826294,.3280982971191406,.6602655649185181,-.6755744218826294,.3280982971191406,.6602655649185181,-.6755744218826294,.3280982971191406,.6602655649185181,-.6755744218826294,.3280982971191406,.6602655649185181,-.6755744218826294,.7842698693275452,.5933358073234558,-.18131035566329956,.7842698693275452,.5933358073234558,-.18131035566329956,.7842698693275452,.5933358073234558,-.18131035566329956,.7842698693275452,.5933358073234558,-.18131035566329956,.589374303817749,.6605231761932373,.46513107419013977,.589374303817749,.6605231761932373,.46513107419013977,.589374303817749,.6605231761932373,.46513107419013977,.589374303817749,.6605231761932373,.46513107419013977,.589374303817749,.6605231761932373,.46513107419013977,-.059090327471494675,.6272545456886292,.7765694260597229,-.059090327471494675,.6272545456886292,.7765694260597229,-.059090327471494675,.6272545456886292,.7765694260597229,-.059090327471494675,.6272545456886292,.7765694260597229,.05634559690952301,.6280144453048706,.7761592268943787,.05634559690952301,.6280144453048706,.7761592268943787,.05634559690952301,.6280144453048706,.7761592268943787,.05634559690952301,.6280144453048706,.7761592268943787,-.6443470120429993,-.6290098428726196,-.43492940068244934,-.6443470120429993,-.6290098428726196,-.43492940068244934,-.6443470120429993,-.6290098428726196,-.43492940068244934,-.6443470120429993,-.6290098428726196,-.43492940068244934,.05909096822142601,-.6272543668746948,-.7765696048736572,.05909096822142601,-.6272543668746948,-.7765696048736572,.05909096822142601,-.6272543668746948,-.7765696048736572,.05909096822142601,-.6272543668746948,-.7765696048736572,-.05632945895195007,-.6280063986778259,-.7761667966842651,-.05632945895195007,-.6280063986778259,-.7761667966842651,-.05632945895195007,-.6280063986778259,-.7761667966842651,-.05632945895195007,-.6280063986778259,-.7761667966842651,.5910056829452515,-.6553013920783997,-.4704173803329468,.5910056829452515,-.6553013920783997,-.4704173803329468,.5910056829452515,-.6553013920783997,-.4704173803329468,.5910056829452515,-.6553013920783997,-.4704173803329468,.5910056829452515,-.6553013920783997,-.4704173803329468,.7470955848693848,-.6255302429199219,.22485576570034027,.7470955848693848,-.6255302429199219,.22485576570034027,.7470955848693848,-.6255302429199219,.22485576570034027,.7470955848693848,-.6255302429199219,.22485576570034027,.7361034154891968,-.6567224264144897,.16391272842884064,.7361034154891968,-.6567224264144897,.16391272842884064,.7361034154891968,-.6567224264144897,.16391272842884064,.7361034154891968,-.6567224264144897,.16391272842884064,.7361034154891968,-.6567224264144897,.16391272842884064,.7726380228996277,-.6246670484542847,.11323241889476776,.7726380228996277,-.6246670484542847,.11323241889476776,.7726380228996277,-.6246670484542847,.11323241889476776,.7726380228996277,-.6246670484542847,.11323241889476776,.2852247953414917,-.6296125650405884,.7226580381393433,.2852247953414917,-.6296125650405884,.7226580381393433,.2852247953414917,-.6296125650405884,.7226580381393433,.2852247953414917,-.6296125650405884,.7226580381393433,.32667452096939087,-.6607898473739624,.6757517457008362,.32667452096939087,-.6607898473739624,.6757517457008362,.32667452096939087,-.6607898473739624,.6757517457008362,.32667452096939087,-.6607898473739624,.6757517457008362,.32667452096939087,-.6607898473739624,.6757517457008362,.3497964143753052,-.5950561165809631,.7235679030418396,.3497964143753052,-.5950561165809631,.7235679030418396,.3497964143753052,-.5950561165809631,.7235679030418396,.3497964143753052,-.5950561165809631,.7235679030418396,-.7726274132728577,.6246878504753113,-.11318989098072052,-.7726274132728577,.6246878504753113,-.11318989098072052,-.7726274132728577,.6246878504753113,-.11318989098072052,-.7726274132728577,.6246878504753113,-.11318989098072052,-.7692402005195618,-.6276887655258179,.11948297917842865,-.7692402005195618,-.6276887655258179,.11948297917842865,-.7692402005195618,-.6276887655258179,.11948297917842865,-.7692402005195618,-.6276887655258179,.11948297917842865,-.7877770662307739,.5905534625053406,-.17508289217948914,-.7877770662307739,.5905534625053406,-.17508289217948914,-.7877770662307739,.5905534625053406,-.17508289217948914,-.7877770662307739,.5905534625053406,-.17508289217948914,-.7470952868461609,.6255304217338562,-.22485589981079102,-.7470952868461609,.6255304217338562,-.22485589981079102,-.7470952868461609,.6255304217338562,-.22485589981079102,-.7470952868461609,.6255304217338562,-.22485589981079102,-.631263256072998,-.5948466658592224,-.4976588785648346,-.631263256072998,-.5948466658592224,-.4976588785648346,-.631263256072998,-.5948466658592224,-.4976588785648346,-.631263256072998,-.5948466658592224,-.4976588785648346,-.38938289880752563,.6292169094085693,-.6726565957069397,-.38938289880752563,.6292169094085693,-.6726565957069397,-.38938289880752563,.6292169094085693,-.6726565957069397,-.38938289880752563,.6292169094085693,-.6726565957069397,-.5729118585586548,-.6292456388473511,-.5251874923706055,-.5729118585586548,-.6292456388473511,-.5251874923706055,-.5729118585586548,-.6292456388473511,-.5251874923706055,-.5729118585586548,-.6292456388473511,-.5251874923706055,.3904346227645874,.628699541091919,-.6725307703018188,.3904346227645874,.628699541091919,-.6725307703018188,.3904346227645874,.628699541091919,-.6725307703018188,.3904346227645874,.628699541091919,-.6725307703018188,.7437728643417358,.6275497078895569,-.2301807701587677,.7437728643417358,.6275497078895569,-.2301807701587677,.7437728643417358,.6275497078895569,-.2301807701587677,.7437728643417358,.6275497078895569,-.2301807701587677,.6457582712173462,-.6233645677566528,-.4409227967262268,.6457582712173462,-.6233645677566528,-.4409227967262268,.6457582712173462,-.6233645677566528,-.4409227967262268,.6457582712173462,-.6233645677566528,-.4409227967262268,.7877867221832275,-.5905534029006958,.17503942549228668,.7877867221832275,-.5905534029006958,.17503942549228668,.7877867221832275,-.5905534029006958,.17503942549228668,.7877867221832275,-.5905534029006958,.17503942549228668,.6443431377410889,.6290005445480347,.43494871258735657,.6443431377410889,.6290005445480347,.43494871258735657,.6443431377410889,.6290005445480347,.43494871258735657,.6443431377410889,.6290005445480347,.43494871258735657,.5729120969772339,.6292457580566406,.5251871347427368,.5729120969772339,.6292457580566406,.5251871347427368,.5729120969772339,.6292457580566406,.5251871347427368,.5729120969772339,.6292457580566406,.5251871347427368,-.3281112611293793,-.6602649092674255,.6755688190460205,-.3281112611293793,-.6602649092674255,.6755688190460205,-.3281112611293793,-.6602649092674255,.6755688190460205,-.3281112611293793,-.6602649092674255,.6755688190460205,-.3281112611293793,-.6602649092674255,.6755688190460205,.0011704713106155396,-.6591591238975525,-.7520025968551636,.0011704713106155396,-.6591591238975525,-.7520025968551636,.0011704713106155396,-.6591591238975525,-.7520025968551636,.0011704713106155396,-.6591591238975525,-.7520025968551636,.0011704713106155396,-.6591591238975525,-.7520025968551636,-.5910052061080933,.6553022861480713,.47041675448417664,-.5910052061080933,.6553022861480713,.47041675448417664,-.5910052061080933,.6553022861480713,.47041675448417664,-.5910052061080933,.6553022861480713,.47041675448417664,-.5910052061080933,.6553022861480713,.47041675448417664,.0015861615538597107,-.5931890606880188,-.8050615787506104,.0015861615538597107,-.5931890606880188,-.8050615787506104,.0015861615538597107,-.5931890606880188,-.8050615787506104,.0015861615538597107,-.5931890606880188,-.8050615787506104,-.34979522228240967,.5950555801391602,-.7235690355300903,-.34979522228240967,.5950555801391602,-.7235690355300903,-.34979522228240967,.5950555801391602,-.7235690355300903,-.34979522228240967,.5950555801391602,-.7235690355300903,.2873671054840088,.6291413903236389,-.7222195863723755,.2873671054840088,.6291413903236389,-.7222195863723755,.2873671054840088,.6291413903236389,-.7222195863723755,.2873671054840088,.6291413903236389,-.7222195863723755,.6324546933174133,-.5889533758163452,-.5031253695487976,.6324546933174133,-.5889533758163452,-.5031253695487976,.6324546933174133,-.5889533758163452,-.5031253695487976,.6324546933174133,-.5889533758163452,-.5031253695487976,.574481725692749,-.6237778663635254,-.5299734473228455,.574481725692749,-.6237778663635254,-.5299734473228455,.574481725692749,-.6237778663635254,-.5299734473228455,.574481725692749,-.6237778663635254,-.5299734473228455,.35163187980651855,.594671368598938,-.7229945659637451,.35163187980651855,.594671368598938,-.7229945659637451,.35163187980651855,.594671368598938,-.7229945659637451,.35163187980651855,.594671368598938,-.7229945659637451,.7692419290542603,.6276857852935791,-.11948888003826141,.7692419290542603,.6276857852935791,-.11948888003826141,.7692419290542603,.6276857852935791,-.11948888003826141,.7692419290542603,.6276857852935791,-.11948888003826141,.6312867403030396,.5948468446731567,.49762865900993347,.6312867403030396,.5948468446731567,.49762865900993347,.6312867403030396,.5948468446731567,.49762865900993347,.6312867403030396,.5948468446731567,.49762865900993347,-.3904343545436859,-.6286999583244324,.6725306510925293,-.3904343545436859,-.6286999583244324,.6725306510925293,-.3904343545436859,-.6286999583244324,.6725306510925293,-.3904343545436859,-.6286999583244324,.6725306510925293,-.3516600430011749,-.5946711301803589,.7229809761047363,-.3516600430011749,-.5946711301803589,.7229809761047363,-.3516600430011749,-.5946711301803589,.7229809761047363,-.3516600430011749,-.5946711301803589,.7229809761047363,-.5744823813438416,.6237770915031433,.5299737453460693,-.5744823813438416,.6237770915031433,.5299737453460693,-.5744823813438416,.6237770915031433,.5299737453460693,-.5744823813438416,.6237770915031433,.5299737453460693,-.28738611936569214,-.6291320323944092,.722220242023468,-.28738611936569214,-.6291320323944092,.722220242023468,-.28738611936569214,-.6291320323944092,.722220242023468,-.28738611936569214,-.6291320323944092,.722220242023468,-.0015616416931152344,.5931897759437561,.8050611615180969,-.0015616416931152344,.5931897759437561,.8050611615180969,-.0015616416931152344,.5931897759437561,.8050611615180969,-.0015616416931152344,.5931897759437561,.8050611615180969,-.632463812828064,.5889529585838318,.5031142830848694,-.632463812828064,.5889529585838318,.5031142830848694,-.632463812828064,.5889529585838318,.5031142830848694,-.632463812828064,.5889529585838318,.5031142830848694,-.6457580924034119,.6233644485473633,.44092315435409546,-.6457580924034119,.6233644485473633,.44092315435409546,-.6457580924034119,.6233644485473633,.44092315435409546,-.6457580924034119,.6233644485473633,.44092315435409546,-.7842698097229004,-.593335747718811,.18131089210510254,-.7842698097229004,-.593335747718811,.18131089210510254,-.7842698097229004,-.593335747718811,.18131089210510254,-.7842698097229004,-.593335747718811,.18131089210510254,-.7437704205513,-.6275736689567566,.23012343049049377,-.7437704205513,-.6275736689567566,.23012343049049377,-.7437704205513,-.6275736689567566,.23012343049049377,-.7437704205513,-.6275736689567566,.23012343049049377,-.7328628301620483,-.6589818596839905,.16927775740623474,-.7328628301620483,-.6589818596839905,.16927775740623474,-.7328628301620483,-.6589818596839905,.16927775740623474,-.7328628301620483,-.6589818596839905,.16927775740623474,-.7328628301620483,-.6589818596839905,.16927775740623474,-.5893685817718506,-.6605226993560791,-.4651390612125397,-.5893685817718506,-.6605226993560791,-.4651390612125397,-.5893685817718506,-.6605226993560791,-.4651390612125397,-.5893685817718506,-.6605226993560791,-.4651390612125397,-.5893685817718506,-.6605226993560791,-.4651390612125397,.38937872648239136,-.6292127966880798,.6726629734039307,.38937872648239136,-.6292127966880798,.6726629734039307,.38937872648239136,-.6292127966880798,.6726629734039307,.38937872648239136,-.6292127966880798,.6726629734039307,-.0011698007583618164,.6591596007347107,.7520022988319397,-.0011698007583618164,.6591596007347107,.7520022988319397,-.0011698007583618164,.6591596007347107,.7520022988319397,-.0011698007583618164,.6591596007347107,.7520022988319397,-.0011698007583618164,.6591596007347107,.7520022988319397,.7328664064407349,.6589823961257935,-.16926002502441406,.7328664064407349,.6589823961257935,-.16926002502441406,.7328664064407349,.6589823961257935,-.16926002502441406,.7328664064407349,.6589823961257935,-.16926002502441406,.7328664064407349,.6589823961257935,-.16926002502441406,-.3266833424568176,.6607902646064758,-.6757471561431885,-.3266833424568176,.6607902646064758,-.6757471561431885,-.3266833424568176,.6607902646064758,-.6757471561431885,-.3266833424568176,.6607902646064758,-.6757471561431885,-.3266833424568176,.6607902646064758,-.6757471561431885,-.7360942959785461,.6567226648330688,-.16395282745361328,-.7360942959785461,.6567226648330688,-.16395282745361328,-.7360942959785461,.6567226648330688,-.16395282745361328,-.7360942959785461,.6567226648330688,-.16395282745361328,-.7360942959785461,.6567226648330688,-.16395282745361328,.0001270859647775069,1,6240241782506928e-20,.0001270859647775069,1,6240241782506928e-20,.0001270859647775069,1,6240241782506928e-20,.0001270859647775069,1,6240241782506928e-20,.0001270859647775069,1,6240241782506928e-20,.0001270859647775069,1,6240241782506928e-20,.0001270859647775069,1,6240241782506928e-20,-.00012663456436712295,-1,-6260263762669638e-20,-.00012663456436712295,-1,-6260263762669638e-20,-.00012663456436712295,-1,-6260263762669638e-20,-.00012663456436712295,-1,-6260263762669638e-20,-.00012663456436712295,-1,-6260263762669638e-20,-.00012663456436712295,-1,-6260263762669638e-20,-.00012663456436712295,-1,-6260263762669638e-20],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.012080706655979156,.01143413782119751,.02038293331861496,.2402452826499939,.07275813817977905,.7014026641845703,.23399420082569122,.044198572635650635,.012080706655979156,.09173142910003662,.09271499514579773,.0920637845993042,.22834762930870056,.033225297927856445,.24569767713546753,.027156472206115723,.8750260472297668,.27947235107421875,.15672194957733154,.03217524290084839,.15672194957733154,.040720343589782715,.21759822964668274,.041023433208465576,.624879777431488,.4702685475349426,.04823240637779236,.03318381309509277,.07462695240974426,.2401202917098999,.1386493444442749,.24023151397705078,.20049551129341125,.03662097454071045,.3756515383720398,.27943485975265503,.04823240637779236,.08685857057571411,.07282328605651855,.45090705156326294,.16252003610134125,.018233835697174072,.2011767327785492,.2402452826499939,.1273123025894165,.01617354154586792,.14694836735725403,.09188961982727051,.17717677354812622,.4513193964958191,.25039011240005493,.08733206987380981,.04823240637779236,.09189057350158691,.05499856173992157,.009189963340759277,.0725666880607605,.9514256715774536,.14694836735725403,.043423593044281006,.07372921705245972,.016311585903167725,.07462692260742188,.08685952425003052,.21925535798072815,.09241074323654175,.4275488257408142,.9517285227775574,.12057686597108841,.09188848733901978,.14611805975437164,.009021878242492676,.22737187147140503,.08733206987380981,.32245123386383057,.9515766501426697,.11080294847488403,.026038765907287598,.12057653814554214,.029400944709777832,.21095037460327148,.2402452826499939,.24711300432682037,.0928187370300293,.6267523169517517,.7800135612487793,.09018958359956741,.008709728717803955,.12057658284902573,.04346507787704468,.1830982267856598,.09213989973068237,.9277936816215515,.951744794845581,.10317572951316833,.0293390154838562,.1393822878599167,.032990872859954834,.1830982267856598,.2402452826499939,.255423367023468,.09287703037261963,.8746025562286377,.7797321677207947,.16253256797790527,.03631782531738281,.16336379945278168,.04333001375198364,.2554234266281128,.2402452826499939,.8222063779830933,.9510524272918701,.03845880925655365,.09173208475112915,.10992515832185745,.01626521348953247,.24376779794692993,.04419851303100586,.42733103036880493,.701709508895874,.03845880925655365,.026774346828460693,.03845880925655365,.24016445875167847,.14694836735725403,.036410391330718994,.174796923995018,.24008393287658691,.37455111742019653,.5295032858848572,.03845880925655365,.08928269147872925,.1273123025894165,.009048819541931152,.24376779794692993,.08995997905731201,.37507760524749756,.7204967141151428,.17645640671253204,.043330609798431396,.21771717071533203,.016403138637542725,.22902902960777283,.2402452826499939,.6778356432914734,.20166105031967163,.04823240637779236,.014015018939971924,.056542813777923584,.09192115068435669,.1830982267856598,.08697599172592163,.9278727769851685,.7018176913261414,.05499856173992157,.0163193941116333,.1403140127658844,.040812790393829346,.17645637691020966,.08961743116378784,.6247076988220215,.22033452987670898,.140313982963562,.08676266670227051,.15672211349010468,.09213924407958984,.18057595193386078,.017045259475708008,.5721643567085266,.201244056224823,.012080706655979156,.08928197622299194,.12499088048934937,.9704728722572327,.14694836735725403,.08941596746444702,.17478692531585693,.012857019901275635,.018697038292884827,.08670186996459961,.16502328217029572,.09206610918045044,.17724192142486572,.7014986276626587,.18057595193386078,.008743643760681152,.012080706655979156,.04335254430770874,.12887565791606903,.09186422824859619,.1393822878599167,.013869822025299072,.1774333119392395,.9517008662223816,.09104300290346146,.04336506128311157,.09271499514579773,.2402452826499939,.19964106380939484,.009263157844543457,.8223589658737183,.45139479637145996,.08440056443214417,.24022287130355835,.1928718537092209,.014091014862060547,.21759822964668274,.08731919527053833,.6777778267860413,.45166242122650146,.16253256797790527,.02800750732421875,.21095037460327148,.04365772008895874,.24711309373378754,.24022060632705688,.6778541803359985,.951484739780426,.12057655304670334,.08941489458084106,.16336379945278168,.08961677551269531,.2351137399673462,.009227573871612549,.8750938177108765,.9702678322792053,.07462695240974426,.0918915867805481,.12721094489097595,.0868040919303894,.2351137399673462,.0163571834564209,.4274844527244568,.45174920558929443,.031842514872550964,.08667910099029541,.12057653814554214,.011325597763061523,.13864925503730774,.09186530113220215,.3225155472755432,.45152556896209717,.012080706655979156,.03307300806045532,.030156202614307404,.026774346828460693,.030156515538692474,.2402452826499939,.10248857736587524,.092063307762146,.6261616945266724,.5296865701675415,.12057653814554214,.2402452826499939,.1281311959028244,.025947153568267822,.21095037460327148,.029455959796905518,.21925535798072815,.2400715947151184,.3766971230506897,.7794159054756165,.07462692260742188,.02608513832092285,.1928718537092209,.09240931272506714,.23733942210674286,.0928187370300293,.24569767713546753,.007925331592559814,.875484049320221,.02962595224380493,.01882428675889969,.009150922298431396,.07462692260742188,.04079252481460571,.22737182676792145,.04158461093902588,.37476611137390137,.9705840945243835,.018697038292884827,.0407489538192749,.12485933303833008,.7203324437141418,.14611805975437164,.016146481037139893,.23399420082569122,.08995997905731201,.012080781161785126,.24023497104644775,.01882428675889969,.01627671718597412,.06800204515457153,.04341691732406616,.9276410341262817,.4518194794654846,.08440056443214417,.04074656963348389,.19964106380939484,.01640307903289795,.21095037460327148,.08995997905731201,.6247829794883728,.9699863791465759,.06695697456598282,.011504054069519043,.08440056443214417,.08688396215438843,.21095052361488342,.09248226881027222,.5721458196640015,.9508618116378784,.06800201535224915,.0894421935081482,.07372921705245972,.009201109409332275,.09104300290346146,.08953815698623657,.8750190138816833,.47052764892578125,.06631660461425781,.09192222356796265,.15672194957733154,.08697539567947388,.22834759950637817,.011532008647918701,.5722221732139587,.4511365294456482,.03184248507022858,.04074972867965698,.08440056443214417,.012897908687591553,.12721094489097595,.04081183671951294,.374919056892395,.47056519985198975,.030156202614307404,.014692902565002441,.10248860716819763,.2402452826499939,.10416048020124435,.043364644050598145,.6775245070457458,.7015867233276367,.054857321083545685,.08944112062454224,.10416045039892197,.08953768014907837,.15672194957733154,.014117896556854248,.6248504519462585,.7203134894371033,.11080294847488403,.086883544921875,.16252003610134125,.009928703308105469,.19287201762199402,.24017375707626343,.9280667304992676,.20186400413513184,.030156604945659637,.09174239635467529,.054857321083545685,.043415963649749756,.10317572951316833,.011430740356445312,.5724754929542542,.7012842297554016,.04823240637779236,.04079157114028931,.10992515832185745,.009145617485046387,.12513083219528198,.4699118137359619,.25039011240005493,.04158461093902588,.03691284358501434,.017000675201416016,.11080294847488403,.04074627161026001,.1928718537092209,.041023433208465576,.8749712705612183,.22037410736083984,.1928718537092209,.0873255729675293,.21095037460327148,.011578857898712158,.23733942210674286,.2402205467224121,.8219332098960876,.20110386610031128,.1830982267856598,.040720999240875244,.19951972365379333,.08995997905731201,.21771717071533203,.009267032146453857,.8749260902404785,.7204409241676331,.03691284358501434,.009847462177276611,.11080294847488403,.24022287130355835,.19951972365379333,.04366427659988403,.8221272826194763,.7012577056884766,.01972394436597824,.03634655475616455,.056542813777923584,.2402452826499939,.11080294847488403,.09198707342147827,.18309825658798218,.026818931102752686,.8757262825965881,.5295590758323669,.04823248088359833,.2401202917098999,.1251671314239502,.7795271873474121,.12887565791606903,.24023151397705078,.17478697001934052,.026818931102752686,.21857404708862305,.026176750659942627,.03845880925655365,.04332977533340454,.09018958359956741,.01701122522354126,.1747969537973404,.09206688404083252,.32266902923583984,.7014552354812622,.06695697456598282,.02927464246749878,.1242377758026123,.2800881862640381,.14694832265377045,.2402452826499939,.1928718090057373,.03334176540374756,.2011767327785492,.09258311986923218,.05590075999498367,.036389052867889404,.06631642580032349,.2402452826499939,.08440063893795013,.09198743104934692,.25401246547698975,.027156472206115723,.6260393857955933,.2797313928604126,.02038293331861496,.09181225299835205,.09270339459180832,.026784837245941162,.12602335214614868,.5296675562858582,.16502328217029572,.24008393287658691,.2359241247177124,.03662097454071045,.08440056443214417,.026784837245941162,.15672194957733154,.2402452826499939,.22902897000312805,.09287703037261963,.25400829315185547,.007925331592559814,.6272023916244507,.02966541051864624,.05590075999498367,.026093125343322754,.07462692260742188,.03639000654220581,.08838308602571487,.03634411096572876,.20049551129341125,.026176750659942627,.2359241247177124,.026130735874176025,.24978983402252197,.01738286018371582,.2499590814113617,.03662097454071045,.01972394436597824,.0260503888130188,.034168489277362823,.036347150802612305,.11080294847488403,.03634369373321533,.1281311959028244,.03640943765640259,.14694836735725403,.02592015266418457,.1791275292634964,.03631848096847534,.21857404708862305,.03662097454071045],normalized:!1}},index:{type:"Uint16Array",array:[96,28,86,33,37,139,108,155,151,195,179,135,120,116,17,171,183,175,84,72,237,2,91,230,100,147,8,163,104,227,46,55,112,170,176,189,19,24,219,101,5,225,106,103,11,83,92,88,45,63,49,192,202,190,209,74,26,182,57,185,165,215,43,93,89,140,194,235,71,3,36,143,168,188,200,142,35,95,75,69,79,228,144,1,31,146,156,107,50,41,44,114,166,136,0,145,97,153,158,162,115,111,124,201,206,14,160,224,82,231,90,30,157,152,70,198,193,102,149,99,214,117,65,34,211,94,53,161,110,9,52,105,73,77,27,58,25,187,66,118,22,154,129,32,81,29,78,222,178,21,15,23,119,18,181,184,76,203,199,180,61,56,59,217,68,20,177,174,6,232,242,229,233,240,236,134,243,131,218,239,221,16,241,13,223,238,226,7,244,60,122,246,121,204,245,207,212,250,213,128,251,127,39,248,38,47,247,48,62,249,96,210,28,33,130,37,108,42,155,195,191,179,120,167,116,171,125,183,84,80,72,2,141,91,100,159,147,163,12,104,46,51,55,170,173,176,19,186,24,101,98,5,106,150,103,45,216,63,192,197,202,209,205,74,93,85,89,194,133,235,3,138,36,75,196,69,228,4,144,31,137,146,107,54,50,44,109,114,97,148,153,124,169,201,14,113,160,82,234,231,214,164,117,34,126,211,53,10,161,58,67,25,154,40,129,81,87,29,222,132,178,15,220,23,18,172,181,76,208,203,180,123,61,59,64,217]},boundingSphere:{center:[0,-762939453125e-17,0],radius:139.86793680588863}},faceValues:[1,2,3,4,5,6,7,8,9,10,11,12,13,14],rotationCombinations:{"1,2":[1,-51,0],"1,3":[-1,-103,-1],"1,4":[0,-155,0],"1,5":[0,154,0],"1,6":[2,103,-2],"1,7":[0,52,1],"1,8":[2,-77,-178],"1,9":[180,-51,-1],"1,10":[-180,0,0],"1,11":[-179,51,-1],"1,12":[-1,77,-179],"1,13":[0,26,180],"1,14":[1,-26,-180],"2,3":[0,-52,0],"2,4":[-2,-103,-2],"2,5":[0,-154,0],"2,6":[0,154,0],"2,7":[2,103,-2],"2,8":[0,-26,-180],"2,9":[2,-77,-178],"2,10":[180,-52,-1],"2,11":[-180,0,0],"2,12":[-180,51,-1],"2,13":[-1,77,-179],"2,14":[0,26,180],"3,4":[1,-52,1],"3,5":[-2,-103,-2],"3,6":[0,-154,0],"3,7":[0,155,-1],"3,8":[0,26,-180],"3,9":[0,-26,-179],"3,10":[1,-77,-179],"3,11":[180,-52,0],"3,12":[180,0,-1],"3,13":[-180,51,-1],"3,14":[0,77,180],"4,5":[0,-51,0],"4,6":[0,-103,1],"4,7":[0,-154,0],"4,8":[1,77,179],"4,9":[0,26,-180],"4,10":[0,-25,-180],"4,11":[-1,-77,180],"4,12":[180,-52,0],"4,13":[180,0,0],"4,14":[179,51,0],"5,6":[0,-51,0],"5,7":[1,-103,1],"5,8":[180,51,0],"5,9":[1,77,179],"5,10":[0,26,-180],"5,11":[0,-25,180],"5,12":[0,-77,180],"5,13":[180,-52,0],"5,14":[180,0,0],"6,7":[0,-51,-1],"6,8":[180,0,0],"6,9":[180,52,1],"6,10":[1,77,180],"6,11":[0,26,180],"6,12":[0,-26,180],"6,13":[0,-77,179],"6,14":[180,-51,0],"7,8":[180,-51,-1],"7,9":[-180,0,0],"7,10":[-180,51,0],"7,11":[-1,77,-179],"7,12":[0,26,180],"7,13":[0,-26,180],"7,14":[2,-77,-178],"8,9":[0,51,1],"8,10":[1,103,0],"8,11":[0,154,0],"8,12":[0,-155,0],"8,13":[0,-103,-1],"8,14":[0,-52,0],"9,10":[0,51,0],"9,11":[-1,103,1],"9,12":[0,154,0],"9,13":[0,-154,0],"9,14":[2,-103,2],"10,11":[0,51,0],"10,12":[0,103,0],"10,13":[0,154,0],"10,14":[0,-154,0],"11,12":[0,52,0],"11,13":[0,103,-1],"11,14":[0,155,0],"12,13":[0,52,0],"12,14":[3,103,-3],"13,14":[-1,51,1]}},d16:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"C14C9443-AE98-4545-B8F9-EEF68D99E5CB",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[1.9203956127166748,-75.6114730834961,4.636213302612305,1.9203956127166748,-75.6114730834961,4.636213302612305,1.9203956127166748,-75.6114730834961,4.636213302612305,1.9203956127166748,-75.6114730834961,4.636213302612305,1.9203956127166748,-75.6114730834961,4.636213302612305,1.9203956127166748,-75.6114730834961,4.636213302612305,-1.9200903177261353,1.4698024988174438,78.77789306640625,-1.9200903177261353,1.4698024988174438,78.77789306640625,-1.9200903177261353,1.4698024988174438,78.77789306640625,-1.9200903177261353,1.4698024988174438,78.77789306640625,-1.9200903177261353,1.4698024988174438,78.77789306640625,57.06234359741211,-1.4698084592819214,54.34610366821289,57.06234359741211,-1.4698084592819214,54.34610366821289,57.06234359741211,-1.4698084592819214,54.34610366821289,57.06234359741211,-1.4698084592819214,54.34610366821289,57.06234359741211,-1.4698084592819214,54.34610366821289,-1.9204055070877075,-75.6114730834961,-4.63621187210083,-1.9204055070877075,-75.6114730834961,-4.63621187210083,-1.9204055070877075,-75.6114730834961,-4.63621187210083,-1.9204055070877075,-75.6114730834961,-4.63621187210083,-1.9204055070877075,-75.6114730834961,-4.63621187210083,54.34610366821289,1.4697924852371216,-57.06234359741211,54.34610366821289,1.4697924852371216,-57.06234359741211,54.34610366821289,1.4697924852371216,-57.06234359741211,54.34610366821289,1.4697924852371216,-57.06234359741211,54.34610366821289,1.4697924852371216,-57.06234359741211,1.9206753969192505,1.4697996377944946,78.77787780761719,1.9206753969192505,1.4697996377944946,78.77787780761719,1.9206753969192505,1.4697996377944946,78.77787780761719,1.9206753969192505,1.4697996377944946,78.77787780761719,1.9206753969192505,1.4697996377944946,78.77787780761719,1.9206753969192505,1.4697996377944946,78.77787780761719,-4.6361985206604,75.6114730834961,1.9204007387161255,-4.6361985206604,75.6114730834961,1.9204007387161255,-4.6361985206604,75.6114730834961,1.9204007387161255,-4.6361985206604,75.6114730834961,1.9204007387161255,-4.6361985206604,75.6114730834961,1.9204007387161255,-57.06234359741211,1.469807744026184,-54.34610366821289,-57.06234359741211,1.469807744026184,-54.34610366821289,-57.06234359741211,1.469807744026184,-54.34610366821289,-57.06234359741211,1.469807744026184,-54.34610366821289,-57.06234359741211,1.469807744026184,-54.34610366821289,-57.06234359741211,1.469807744026184,-54.34610366821289,-57.06234359741211,1.469807744026184,-54.34610366821289,78.77787780761719,-1.4698125123977661,-1.9206798076629639,78.77787780761719,-1.4698125123977661,-1.9206798076629639,78.77787780761719,-1.4698125123977661,-1.9206798076629639,78.77787780761719,-1.4698125123977661,-1.9206798076629639,78.77787780761719,-1.4698125123977661,-1.9206798076629639,78.77787780761719,-1.4698125123977661,-1.9206798076629639,4.6362080574035645,-75.6114730834961,-1.9204015731811523,4.6362080574035645,-75.6114730834961,-1.9204015731811523,4.6362080574035645,-75.6114730834961,-1.9204015731811523,4.6362080574035645,-75.6114730834961,-1.9204015731811523,4.6362080574035645,-75.6114730834961,-1.9204015731811523,4.6362080574035645,-75.6114730834961,-1.9204015731811523,57.06194305419922,-1.4698078632354736,-54.346519470214844,57.06194305419922,-1.4698078632354736,-54.346519470214844,57.06194305419922,-1.4698078632354736,-54.346519470214844,57.06194305419922,-1.4698078632354736,-54.346519470214844,1.9201017618179321,-1.4698004722595215,-78.77789306640625,1.9201017618179321,-1.4698004722595215,-78.77789306640625,1.9201017618179321,-1.4698004722595215,-78.77789306640625,1.9201017618179321,-1.4698004722595215,-78.77789306640625,1.9201017618179321,-1.4698004722595215,-78.77789306640625,54.34610366821289,-1.4698083400726318,-57.06234359741211,54.34610366821289,-1.4698083400726318,-57.06234359741211,54.34610366821289,-1.4698083400726318,-57.06234359741211,54.34610366821289,-1.4698083400726318,-57.06234359741211,54.34610366821289,-1.4698083400726318,-57.06234359741211,54.34610366821289,-1.4698083400726318,-57.06234359741211,57.06194305419922,1.469793438911438,-54.346519470214844,57.06194305419922,1.469793438911438,-54.346519470214844,57.06194305419922,1.469793438911438,-54.346519470214844,57.06194305419922,1.469793438911438,-54.346519470214844,57.06194305419922,1.469793438911438,-54.346519470214844,78.77787780761719,1.4697893857955933,-1.920678734779358,78.77787780761719,1.4697893857955933,-1.920678734779358,78.77787780761719,1.4697893857955933,-1.920678734779358,78.77787780761719,1.4697893857955933,-1.920678734779358,78.77787780761719,1.4697893857955933,-1.920678734779358,-54.34610366821289,1.469807505607605,57.06234359741211,-54.34610366821289,1.469807505607605,57.06234359741211,-54.34610366821289,1.469807505607605,57.06234359741211,-54.34610366821289,1.469807505607605,57.06234359741211,-57.06194305419922,-1.469792366027832,54.346519470214844,-57.06194305419922,-1.469792366027832,54.346519470214844,-57.06194305419922,-1.469792366027832,54.346519470214844,-57.06194305419922,-1.469792366027832,54.346519470214844,-78.77787780761719,1.4698104858398438,1.920676589012146,-78.77787780761719,1.4698104858398438,1.920676589012146,-78.77787780761719,1.4698104858398438,1.920676589012146,-78.77787780761719,1.4698104858398438,1.920676589012146,-78.77787780761719,1.4698104858398438,1.920676589012146,-78.77787780761719,1.4698104858398438,1.920676589012146,-57.06234359741211,-1.469793438911438,-54.34610366821289,-57.06234359741211,-1.469793438911438,-54.34610366821289,-57.06234359741211,-1.469793438911438,-54.34610366821289,-57.06234359741211,-1.469793438911438,-54.34610366821289,4.6362409591674805,75.6114730834961,1.920365810394287,4.6362409591674805,75.6114730834961,1.920365810394287,4.6362409591674805,75.6114730834961,1.920365810394287,4.6362409591674805,75.6114730834961,1.920365810394287,4.6362409591674805,75.6114730834961,1.920365810394287,-1.9203522205352783,75.6114730834961,4.636227607727051,-1.9203522205352783,75.6114730834961,4.636227607727051,-1.9203522205352783,75.6114730834961,4.636227607727051,-1.9203522205352783,75.6114730834961,4.636227607727051,-1.9203522205352783,75.6114730834961,4.636227607727051,-1.9203522205352783,75.6114730834961,4.636227607727051,-1.9203522205352783,75.6114730834961,4.636227607727051,1.9204154014587402,75.61146545410156,4.636213302612305,1.9204154014587402,75.61146545410156,4.636213302612305,1.9204154014587402,75.61146545410156,4.636213302612305,1.9204154014587402,75.61146545410156,4.636213302612305,1.9204154014587402,75.61146545410156,4.636213302612305,1.9204154014587402,75.61146545410156,4.636213302612305,-1.9203720092773438,-75.6114730834961,4.636226177215576,-1.9203720092773438,-75.6114730834961,4.636226177215576,-1.9203720092773438,-75.6114730834961,4.636226177215576,-1.9203720092773438,-75.6114730834961,4.636226177215576,-1.9203720092773438,-75.6114730834961,4.636226177215576,-4.636218547821045,-75.61146545410156,1.920400619506836,-4.636218547821045,-75.61146545410156,1.920400619506836,-4.636218547821045,-75.61146545410156,1.920400619506836,-4.636218547821045,-75.61146545410156,1.920400619506836,-4.636218547821045,-75.61146545410156,1.920400619506836,-4.636218547821045,-75.61146545410156,1.920400619506836,-4.636231899261475,-75.61146545410156,-1.9203662872314453,-4.636231899261475,-75.61146545410156,-1.9203662872314453,-4.636231899261475,-75.61146545410156,-1.9203662872314453,-4.636231899261475,-75.61146545410156,-1.9203662872314453,-4.636231899261475,-75.61146545410156,-1.9203662872314453,-4.636231899261475,-75.61146545410156,-1.9203662872314453,-4.636231899261475,-75.61146545410156,-1.9203662872314453,-54.34610366821289,-1.4697926044464111,57.06234359741211,-54.34610366821289,-1.4697926044464111,57.06234359741211,-54.34610366821289,-1.4697926044464111,57.06234359741211,-54.34610366821289,-1.4697926044464111,57.06234359741211,-54.34610366821289,-1.4697926044464111,57.06234359741211,-54.34610366821289,-1.4697926044464111,57.06234359741211,-57.06194305419922,1.4698082208633423,54.346519470214844,-57.06194305419922,1.4698082208633423,54.346519470214844,-57.06194305419922,1.4698082208633423,54.346519470214844,-57.06194305419922,1.4698082208633423,54.346519470214844,-57.06194305419922,1.4698082208633423,54.346519470214844,-57.06194305419922,1.4698082208633423,54.346519470214844,-1.9206644296646118,-1.469801664352417,-78.77787780761719,-1.9206644296646118,-1.469801664352417,-78.77787780761719,-1.9206644296646118,-1.469801664352417,-78.77787780761719,-1.9206644296646118,-1.469801664352417,-78.77787780761719,-1.9206644296646118,-1.469801664352417,-78.77787780761719,-1.9206644296646118,-1.469801664352417,-78.77787780761719,78.77789306640625,1.469791293144226,1.9200873374938965,78.77789306640625,1.469791293144226,1.9200873374938965,78.77789306640625,1.469791293144226,1.9200873374938965,78.77789306640625,1.469791293144226,1.9200873374938965,78.77789306640625,1.469791293144226,1.9200873374938965,78.77789306640625,1.469791293144226,1.9200873374938965,57.06234359741211,1.4697922468185425,54.34610366821289,57.06234359741211,1.4697922468185425,54.34610366821289,57.06234359741211,1.4697922468185425,54.34610366821289,57.06234359741211,1.4697922468185425,54.34610366821289,57.06234359741211,1.4697922468185425,54.34610366821289,78.77789306640625,-1.4698106050491333,1.9200865030288696,78.77789306640625,-1.4698106050491333,1.9200865030288696,78.77789306640625,-1.4698106050491333,1.9200865030288696,78.77789306640625,-1.4698106050491333,1.9200865030288696,78.77789306640625,-1.4698106050491333,1.9200865030288696,54.346519470214844,-1.4698073863983154,57.06194305419922,54.346519470214844,-1.4698073863983154,57.06194305419922,54.346519470214844,-1.4698073863983154,57.06194305419922,54.346519470214844,-1.4698073863983154,57.06194305419922,54.346519470214844,-1.4698073863983154,57.06194305419922,54.346519470214844,1.4697927236557007,57.06194305419922,54.346519470214844,1.4697927236557007,57.06194305419922,54.346519470214844,1.4697927236557007,57.06194305419922,54.346519470214844,1.4697927236557007,57.06194305419922,54.346519470214844,1.4697927236557007,57.06194305419922,-78.77789306640625,1.469812273979187,-1.920089602470398,-78.77789306640625,1.469812273979187,-1.920089602470398,-78.77789306640625,1.469812273979187,-1.920089602470398,-78.77789306640625,1.469812273979187,-1.920089602470398,-4.636211395263672,75.6114730834961,-1.920365810394287,-4.636211395263672,75.6114730834961,-1.920365810394287,-4.636211395263672,75.6114730834961,-1.920365810394287,-4.636211395263672,75.6114730834961,-1.920365810394287,-4.636211395263672,75.6114730834961,-1.920365810394287,-4.636211395263672,75.6114730834961,-1.920365810394287,-54.346519470214844,1.4698083400726318,-57.06194305419922,-54.346519470214844,1.4698083400726318,-57.06194305419922,-54.346519470214844,1.4698083400726318,-57.06194305419922,-54.346519470214844,1.4698083400726318,-57.06194305419922,-54.346519470214844,1.4698083400726318,-57.06194305419922,-1.9206633567810059,1.4698004722595215,-78.77787780761719,-1.9206633567810059,1.4698004722595215,-78.77787780761719,-1.9206633567810059,1.4698004722595215,-78.77787780761719,-1.9206633567810059,1.4698004722595215,-78.77787780761719,-1.9206633567810059,1.4698004722595215,-78.77787780761719,-1.9206633567810059,1.4698004722595215,-78.77787780761719,-1.920385479927063,75.6114730834961,-4.636212348937988,-1.920385479927063,75.6114730834961,-4.636212348937988,-1.920385479927063,75.6114730834961,-4.636212348937988,-1.920385479927063,75.6114730834961,-4.636212348937988,-1.920385479927063,75.6114730834961,-4.636212348937988,-1.920385479927063,75.6114730834961,-4.636212348937988,1.9201031923294067,1.469801664352417,-78.77789306640625,1.9201031923294067,1.469801664352417,-78.77789306640625,1.9201031923294067,1.469801664352417,-78.77789306640625,1.9201031923294067,1.469801664352417,-78.77789306640625,1.9201031923294067,1.469801664352417,-78.77789306640625,1.9203814268112183,75.61146545410156,-4.636227130889893,1.9203814268112183,75.61146545410156,-4.636227130889893,1.9203814268112183,75.61146545410156,-4.636227130889893,1.9203814268112183,75.61146545410156,-4.636227130889893,1.9203814268112183,75.61146545410156,-4.636227130889893,1.9203814268112183,75.61146545410156,-4.636227130889893,4.636227607727051,75.61146545410156,-1.9204010963439941,4.636227607727051,75.61146545410156,-1.9204010963439941,4.636227607727051,75.61146545410156,-1.9204010963439941,4.636227607727051,75.61146545410156,-1.9204010963439941,4.636227607727051,75.61146545410156,-1.9204010963439941,4.636227607727051,75.61146545410156,-1.9204010963439941,4.636227607727051,75.61146545410156,-1.9204010963439941,1.9203611612319946,-75.6114730834961,-4.636227130889893,1.9203611612319946,-75.6114730834961,-4.636227130889893,1.9203611612319946,-75.6114730834961,-4.636227130889893,1.9203611612319946,-75.6114730834961,-4.636227130889893,1.9203611612319946,-75.6114730834961,-4.636227130889893,1.9203611612319946,-75.6114730834961,-4.636227130889893,4.636220455169678,-75.6114730834961,1.9203660488128662,4.636220455169678,-75.6114730834961,1.9203660488128662,4.636220455169678,-75.6114730834961,1.9203660488128662,4.636220455169678,-75.6114730834961,1.9203660488128662,4.636220455169678,-75.6114730834961,1.9203660488128662,4.636220455169678,-75.6114730834961,1.9203660488128662,4.636220455169678,-75.6114730834961,1.9203660488128662,-1.9200901985168457,-1.4697996377944946,78.77789306640625,-1.9200901985168457,-1.4697996377944946,78.77789306640625,-1.9200901985168457,-1.4697996377944946,78.77789306640625,-1.9200901985168457,-1.4697996377944946,78.77789306640625,-1.9200901985168457,-1.4697996377944946,78.77789306640625,-1.9200901985168457,-1.4697996377944946,78.77789306640625,1.9206759929656982,-1.4698023796081543,78.77787780761719,1.9206759929656982,-1.4698023796081543,78.77787780761719,1.9206759929656982,-1.4698023796081543,78.77787780761719,1.9206759929656982,-1.4698023796081543,78.77787780761719,1.9206759929656982,-1.4698023796081543,78.77787780761719,-78.77789306640625,-1.4697893857955933,-1.9200888872146606,-78.77789306640625,-1.4697893857955933,-1.9200888872146606,-78.77789306640625,-1.4697893857955933,-1.9200888872146606,-78.77789306640625,-1.4697893857955933,-1.9200888872146606,-78.77789306640625,-1.4697893857955933,-1.9200888872146606,-78.77789306640625,-1.4697893857955933,-1.9200888872146606,-78.77787780761719,-1.4697915315628052,1.9206773042678833,-78.77787780761719,-1.4697915315628052,1.9206773042678833,-78.77787780761719,-1.4697915315628052,1.9206773042678833,-78.77787780761719,-1.4697915315628052,1.9206773042678833,-78.77787780761719,-1.4697915315628052,1.9206773042678833,-78.77787780761719,-1.4697915315628052,1.9206773042678833,-54.346519470214844,-1.4697924852371216,-57.06194305419922,-54.346519470214844,-1.4697924852371216,-57.06194305419922,-54.346519470214844,-1.4697924852371216,-57.06194305419922,-54.346519470214844,-1.4697924852371216,-57.06194305419922,-54.346519470214844,-1.4697924852371216,-57.06194305419922,-54.346519470214844,-1.4697924852371216,-57.06194305419922,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[.276015043258667,-.6926735639572144,.6663474440574646,.27601727843284607,-.6926627159118652,.6663578748703003,.2760189175605774,-.692660391330719,.6663596630096436,.2760222256183624,-.6926570534706116,.6663616299629211,.276040256023407,-.6926739811897278,.6663366556167603,.276040256023407,-.6926739811897278,.6663366556167603,-.25681689381599426,.6585057377815247,.707400381565094,-.25677764415740967,.6585237979888916,.7073978781700134,-.25676974654197693,.6585195064544678,.7074047327041626,-.25676843523979187,.658514142036438,.7074101567268372,-.25676360726356506,.6585231423377991,.7074034810066223,.6817693710327148,-.6585230231285095,.3186502456665039,.6817746758460999,-.6585193276405334,.31864672899246216,.6817750930786133,-.6585239171981812,.3186362087726593,.6817806363105774,-.6585127711296082,.3186471462249756,.6818035244941711,-.6585102081298828,.3186035752296448,-.27603888511657715,-.6926746368408203,-.6663365960121155,-.27603888511657715,-.6926746368408203,-.6663365960121155,-.2760240435600281,-.6926567554473877,-.6663613319396973,-.27601906657218933,-.6926603317260742,-.6663596034049988,-.276016503572464,-.6926576495170593,-.6663634777069092,.31860223412513733,.6585102677345276,-.6818041205406189,.31864118576049805,.6585193872451782,-.6817771792411804,.31864672899246216,.6585192680358887,-.6817746162414551,.31865164637565613,.6585074067115784,-.6817838549613953,.3186781108379364,.6585215926170349,-.6817577481269836,.2567409873008728,.6585215926170349,.7074131965637207,.2567734122276306,.6585090756416321,.7074129581451416,.2567753195762634,.6585192680358887,.7074028849601746,.2567766308784485,.6585201025009155,.7074016332626343,.25684815645217896,.6585031747817993,.7073915004730225,.2568749189376831,.6584857106208801,.707397997379303,-.6663634181022644,.6926576495170593,.2760165333747864,-.6663627028465271,.6926561594009399,.27602237462997437,-.6663594245910645,.6926605105400085,.27601903676986694,-.666336178779602,.6926746368408203,.2760397791862488,-.666336178779602,.6926746368408203,.2760397791862488,-.6818409562110901,.6584908962249756,-.3185632526874542,-.6818210482597351,.6585003733634949,-.3185865879058838,-.6817838549613953,.6585077047348022,-.3186509609222412,-.6817764043807983,.6585201025009155,-.3186413049697876,-.6817750930786133,.6585239171981812,-.31863611936569214,-.6817746162414551,.6585193872451782,-.3186466097831726,-.6817693710327148,.6585230827331543,-.3186500072479248,.7073933482170105,-.6585105061531067,-.256823867559433,.7073962092399597,-.6585232615470886,-.2567831575870514,.7074015736579895,-.6585202813148499,-.2567760646343231,.7074017524719238,-.6585232019424438,-.25676846504211426,.707402765750885,-.658519446849823,-.25677525997161865,.7074130177497864,-.6585090756416321,-.2567734122276306,.6663360595703125,-.6926746964454651,-.27603980898857117,.6663360595703125,-.6926746964454651,-.27603980898857117,.6663508415222168,-.6926715970039368,-.276012122631073,.6663575768470764,-.6926620602607727,-.27601906657218933,.6663594841957092,-.6926604509353638,-.2760190963745117,.6663633584976196,-.6926577091217041,-.27601656317710876,.6817554831504822,-.6585215926170349,-.31868305802345276,.6817722320556641,-.6585193276405334,-.3186517655849457,.6817790865898132,-.6585125923156738,-.3186511695384979,.6818022131919861,-.6585102677345276,-.3186061382293701,.2567366063594818,-.65851891040802,-.7074173092842102,.2567683160305023,-.6585140228271484,-.7074102163314819,.2567698359489441,-.6585193872451782,-.7074047923088074,.25684165954589844,-.6584954261779785,-.7074009776115417,.25686919689178467,-.6584891676902771,-.7073968052864075,.3186025023460388,-.6585103273391724,-.6818039417266846,.3186361789703369,-.6585239768028259,-.6817750930786133,.3186422288417816,-.6585192084312439,-.6817768216133118,.31864655017852783,-.6585193276405334,-.6817747354507446,.3186500072479248,-.6585085988044739,-.6817831993103027,.3186507225036621,-.6585209369659424,-.6817711591720581,.6817664504051208,.6585237383842468,-.31865495443344116,.6817724108695984,.6585192084312439,-.3186517655849457,.6817728281021118,.6585238575935364,-.31864115595817566,.6817781925201416,.6585131287574768,-.31865185499191284,.681801974773407,.6585103869438171,-.31860649585723877,.7073934674263,.6585009098052979,-.25684863328933716,.707394540309906,.6584897637367249,-.2568739354610443,.7074029445648193,.6585192680358887,-.25677525997161865,.70740807056427,.6585136651992798,-.2567750811576843,.707412600517273,.6585222482681274,-.2567406892776489,-.318678081035614,.6585216522216797,.6817576885223389,-.3186471462249756,.6585129499435425,.6817804574966431,-.3186464309692383,.658519446849823,.6817746758460999,-.31860098242759705,.6585105657577515,.681804358959198,-.6818021535873413,-.6585102677345276,.3186064064502716,-.6817792654037476,-.6585121750831604,.3186511993408203,-.6817723512649536,-.6585192680358887,.31865155696868896,-.6817554831504822,-.6585215926170349,.31868308782577515,-.7074131965637207,.6585215926170349,.2567409873008728,-.7074130773544312,.6585090756416321,.2567734122276306,-.7074027061462402,.6585195064544678,.2567752003669739,-.7074015140533447,.6585204005241394,.25677624344825745,-.7073948979377747,.6584895253181458,.25687336921691895,-.7073922157287598,.6585012078285217,.25685107707977295,-.681803286075592,-.6585100293159485,-.3186042904853821,-.681780993938446,-.6585121750831604,-.3186477720737457,-.6817747354507446,-.6585192084312439,-.31864655017852783,-.6817577481269836,-.6585215926170349,-.3186781406402588,.6663422584533691,.6926707029342651,.27603498101234436,.6663422584533691,.6926707029342651,.27603498101234436,.6663618087768555,.6926602721214294,.27601414918899536,.6663632988929749,.6926569938659668,.27601855993270874,.6663657426834106,.6926578283309937,.27601078152656555,-.276034414768219,.6926738619804382,.666339099407196,-.276034414768219,.6926738619804382,.666339099407196,-.27601510286331177,.6926615834236145,.6663600206375122,-.27601391077041626,.6926605701446533,.6663616299629211,-.2760116159915924,.6926630735397339,.6663599014282227,-.2760094106197357,.6926736831665039,.6663497686386108,-.2760079801082611,.6926721930503845,.666351854801178,.2760111689567566,.6926732659339905,.6663495302200317,.27601638436317444,.6926575303077698,.666363537311554,.276017963886261,.692661464214325,.6663587093353271,.2760191559791565,.6926603317260742,.6663596034049988,.2760407030582428,.6926730871200562,.6663374900817871,.2760407030582428,.6926730871200562,.6663374900817871,-.27603691816329956,-.6926735043525696,.6663385629653931,-.27603691816329956,-.6926735043525696,.6663385629653931,-.27601784467697144,-.6926572918891907,.6663633584976196,-.2760142683982849,-.692660391330719,.6663615703582764,-.2760106921195984,-.6926577687263489,.6663656830787659,-.6663632392883301,-.6926574110984802,.27601781487464905,-.6663596034049988,-.692660391330719,.276018887758255,-.666358232498169,-.6926620006561279,.2760181128978729,-.6663506031036377,-.6926716566085815,.27601203322410583,-.6663397550582886,-.6926713585853577,.2760394513607025,-.6663397550582886,-.6926713585853577,.2760394513607025,-.6663616299629211,-.6926603317260742,-.2760140001773834,-.6663612723350525,-.6926611661911011,-.2760130763053894,-.6663604378700256,-.6926630735397339,-.2760102152824402,-.6663517951965332,-.6926720142364502,-.27600860595703125,-.6663496494293213,-.6926732659339905,-.2760104537010193,-.6663398742675781,-.6926730871200562,-.27603474259376526,-.6663398742675781,-.6926730871200562,-.27603474259376526,-.318651407957077,-.6585085988044739,.6817827820777893,-.31865057349205017,-.6585232019424438,.6817690134048462,-.3186468183994293,-.6585192680358887,.6817746758460999,-.31864237785339355,-.6585188508033752,.6817769408226013,-.3186362087726593,-.6585239768028259,.6817749738693237,-.3185986876487732,-.6585110425949097,.6818050146102905,-.6818026900291443,.6585108637809753,.3186039626598358,-.6817818284034729,.6585076451301575,.31865543127059937,-.681774914264679,.6585193276405334,.3186458647251129,-.6817728281021118,.6585239171981812,.31864118576049805,-.6817721724510193,.6585193872451782,.3186517059803009,-.6817666888237,.6585231423377991,.3186558485031128,-.25682297348976135,-.6585092544555664,-.7073948383331299,-.25678229331970215,-.6585257649421692,-.7073943018913269,-.25677669048309326,-.6585200428962708,-.7074015140533447,-.2567752003669739,-.6585193276405334,-.7074028849601746,-.25677335262298584,-.6585087776184082,-.7074132561683655,-.25676870346069336,-.6585231423377991,-.7074016332626343,.7073953151702881,.6585105657577515,.25681835412979126,.7073976993560791,.6585239768028259,.2567773759365082,.7074037194252014,.6585230827331543,.25676336884498596,.7074037790298462,.6585202813148499,.25676998496055603,.7074049115180969,.6585192680358887,.2567700147628784,.707414984703064,.658509373664856,.2567674517631531,.6817577481269836,.6585216522216797,.3186781108379364,.6817748546600342,.6585191488265991,.3186466693878174,.6817762851715088,.6585201025009155,.31864142417907715,.6817829012870789,.6585080027580261,.31865206360816956,.6818039417266846,.6585102081298828,.3186025619506836,.7073953747749329,-.6585008502006531,.25684332847595215,.7073964476585388,-.6584898233413696,.25686851143836975,.7074047327041626,-.6585193872451782,.2567700147628784,.7074100375175476,-.6585139036178589,.25676897168159485,.7074150443077087,-.6585217118263245,.2567354738712311,.31860607862472534,-.6585102677345276,.6818023324012756,.31864601373672485,-.6585190892219543,.6817750334739685,.31865158677101135,-.6585192680358887,.6817724108695984,.3186558485031128,-.6585085988044739,.6817806363105774,.31868311762809753,-.6585216522216797,.6817553639411926,.31860703229904175,.658510148525238,.6818019151687622,.3186412453651428,.6585239768028259,.6817727088928223,.31865087151527405,.6585137248039246,.6817781329154968,.31865182518959045,.6585192084312439,.6817723512649536,.3186556100845337,.6585230827331543,.6817667484283447,-.707414984703064,.6585217118263245,-.25673556327819824,-.7074099779129028,.6585142612457275,-.2567688226699829,-.7074046730995178,.6585195064544678,-.25676992535591125,-.7073950171470642,.658510684967041,-.25681883096694946,-.666364312171936,.6926564574241638,-.2760176658630371,-.6663615703582764,.6926605105400085,-.2760140895843506,-.6663599610328674,.6926629543304443,-.2760114371776581,-.6663492918014526,.6926740407943726,-.27600976824760437,-.6663401126861572,.692672848701477,-.276034951210022,-.6663401126861572,.692672848701477,-.276034951210022,-.3186555504798889,.6585217118263245,-.6817682385444641,-.3186514973640442,.6585192680358887,-.6817724108695984,-.31865087151527405,.6585137248039246,-.6817781329154968,-.3186410963535309,.6585239768028259,-.6817727088928223,-.31860843300819397,.6585099697113037,-.6818014979362488,-.25687503814697266,.6584945321083069,-.7073897123336792,-.25684797763824463,.6585018634796143,-.7073926329612732,-.25677669048309326,.6585201025009155,-.7074015736579895,-.25677499175071716,.6585193276405334,-.7074029445648193,-.2567721903324127,.6585090160369873,-.7074134349822998,-.256741464138031,.6585198640823364,-.7074146270751953,-.2760404050350189,.6926735043525696,-.6663371324539185,-.2760404050350189,.6926735043525696,-.6663371324539185,-.27601927518844604,.6926617622375488,-.6663580536842346,-.27601882815361023,.692660391330719,-.6663596630096436,-.27601534128189087,.6926579475402832,-.6663636565208435,-.2760111093521118,.6926732659339905,-.666349470615387,.25676339864730835,.6585231423377991,-.7074035406112671,.2567683756351471,.658514142036438,-.7074102163314819,.2567700743675232,.6585193872451782,-.7074046730995178,.2567768692970276,.6585267186164856,-.7073954343795776,.25681787729263306,.6585150361061096,-.7073912620544434,.27600938081741333,.6926736831665039,-.6663497090339661,.27601268887519836,.6926624774932861,-.6663600206375122,.27601420879364014,.692660391330719,-.6663615703582764,.2760183811187744,.6926562786102295,-.6663641929626465,.27603667974472046,.692672848701477,-.6663392782211304,.27603667974472046,.692672848701477,-.6663392782211304,.6663398146629333,.6926707625389099,-.2760407030582428,.6663398146629333,.6926707625389099,-.2760407030582428,.666347861289978,.6926729083061218,-.2760158181190491,.6663495898246765,.6926727294921875,-.27601224184036255,.666358232498169,.6926625370979309,-.2760171592235565,.6663585901260376,.6926613450050354,-.27601903676986694,.6663596630096436,.6926603317260742,-.2760190963745117,.27600938081741333,-.6926738023757935,-.6663495302200317,.27601149678230286,-.6926628947257996,-.6663601398468018,.2760140001773834,-.6926604509353638,-.6663616299629211,.2760170102119446,-.6926567554473877,-.6663640737533569,.27603477239608765,-.6926739811897278,-.6663388609886169,.27603477239608765,-.6926739811897278,-.6663388609886169,.6663395166397095,-.6926735043525696,.2760348320007324,.6663395166397095,-.6926735043525696,.2760348320007324,.6663496494293213,-.69267338514328,.2760099768638611,.6663513779640198,-.6926727294921875,.2760077118873596,.6663597822189331,-.6926623582839966,.27601343393325806,.6663600206375122,-.6926628947257996,.2760114371776581,.6663615703582764,-.6926604509353638,.27601417899131775,-.2568694055080414,-.6584880352020264,.7073978185653687,-.25684303045272827,-.658505916595459,.7073907852172852,-.25677070021629333,-.6585201025009155,.7074036002159119,-.2567701041698456,-.6585193276405334,.7074047327041626,-.2567673623561859,-.6585090160369873,.7074152231216431,-.25673583149909973,-.6585217118263245,.7074149250984192,.25676846504211426,-.6585231423377991,.7074017524719238,.2567743957042694,-.6585140228271484,.7074080109596252,.2567751109600067,-.6585193276405334,.7074029445648193,.25678279995918274,-.6585239768028259,.7073957920074463,.256822794675827,-.6585081815719604,.7073959708213806,-.7074099779129028,-.6585137248039246,-.25676944851875305,-.7074047923088074,-.6585192680358887,-.2567698359489441,-.7074031233787537,-.6585232019424438,-.25676456093788147,-.7073982357978821,-.658488929271698,-.2568660080432892,-.7073976397514343,-.6585239171981812,-.2567775249481201,-.707395076751709,-.6585009098052979,-.25684383511543274,-.7074130177497864,-.6585085988044739,.25677454471588135,-.7074028849601746,-.6585193872451782,.2567750811576843,-.7074017524719238,-.6585231423377991,.2567686140537262,-.7074016332626343,-.6585202813148499,.2567755877971649,-.7073957920074463,-.6585239171981812,.2567828893661499,-.7073920369148254,-.6585111021995544,.2568261921405792,-.31868305802345276,-.6585215926170349,-.6817554235458374,-.3186575174331665,-.658507764339447,-.6817806363105774,-.3186517059803009,-.6585192084312439,-.6817723512649536,-.3186461925506592,-.658518373966217,-.6817757487297058,-.3185906708240509,-.6585003137588501,-.6818190813064575,-.3185673952102661,-.6584908366203308,-.6818392276763916,1342588575425907e-21,1,-7.968073134634324e-8,1342588575425907e-21,1,-7.968073134634324e-8,1342588575425907e-21,1,-7.968073134634324e-8,1342588575425907e-21,1,-7.968073134634324e-8,1342588575425907e-21,1,-7.968073134634324e-8,1342588575425907e-21,1,-7.968073134634324e-8,1342588575425907e-21,1,-7.968073134634324e-8,1342588575425907e-21,1,-7.968073134634324e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.03048560582101345,.01567864418029785,.03048560582101345,.01567864418029785,.4374997317790985,.2620980143547058,.03719213604927063,.12196230888366699,.034566912800073624,.013053596019744873,.04797939583659172,.007471561431884766,.023779170587658882,.004848778247833252,.11408431828022003,.12196230888366699,.09070630371570587,.23767399787902832,.07480431348085403,.01567620038986206,.11408431828022003,.12196230888366699,.11983299255371094,.12196230888366699,.3407820463180542,.3628087639808655,.11983299255371094,.12196230888366699,.041273150593042374,.015676438808441162,.004617570899426937,.005231618881225586,.08821681886911392,.00785917043685913,.104537233710289,.00896519422531128,.017072739079594612,.12196230888366699,.3124997019767761,.3871912360191345,.04389829561114311,.015676259994506836,.034566912800073624,.004848778247833252,.014447606168687344,.12196230888366699,.5343227386474609,.23762238025665283,.014447606168687344,.12196230888366699,.12820686399936676,.06416767835617065,.11096081137657166,.06416738033294678,.0707232654094696,.01567620038986206,.15942715108394623,.23743665218353271,.0707232654094696,.01567620038986206,.023779170587658882,.0007677078247070312,.023779170587658882,.0007677078247070312,.07742954790592194,.12196230888366699,.007741174660623074,.12196230888366699,.5624786019325256,.012261509895324707,.061391860246658325,.013051092624664307,.07480429112911224,.007857918739318848,.01348982285708189,.004848778247833252,.01348982285708189,.004848778247833252,.027860479429364204,.12196230888366699,.027860479429364204,.12196230888366699,.12245811522006989,.06416767835617065,.4092179536819458,.11280876398086548,.12245811522006989,.06416767835617065,.07072323560714722,.005232870578765869,.12245811522006989,.06679385900497437,.06401706486940384,.12196230888366699,.12245811522006989,.06679385900497437,.21575646102428436,.36276328563690186,.06401706486940384,.12196230888366699,.05060452222824097,.007858037948608398,.06809809058904648,.007857978343963623,.09084202349185944,.12196230888366699,.09084202349185944,.12196230888366699,.18749970197677612,.26223671436309814,.06401699781417847,.015676140785217285,.12245821952819824,.12196230888366699,.15924353897571564,.36276328563690186,.09084194898605347,.015676438808441162,.03144339099526405,.000767827033996582,.13133037090301514,.003871619701385498,.04797939583659172,.12196230888366699,.03418757766485214,.362862765789032,.08725927770137787,.005232870578765869,.08725927770137787,.005232870578765869,.03144339099526405,.004848778247833252,.13133037090301514,.06416767835617065,.09492307156324387,.015676438808441162,.09081242233514786,.362862765789032,.09492307156324387,.015676438808441162,.13133037090301514,.06416767835617065,.1255817413330078,.12196230888366699,.4657820463180542,.23780876398086548,.1255817413330078,.12196230888366699,.01036630105227232,.12196230888366699,.034566912800073624,.000767827033996582,.07384677231311798,.005232870578765869,.07384677231311798,.005232870578765869,.4092180132865906,.23780876398086548,.057310834527015686,.015676259994506836,.1255817413330078,.06679385900497437,.11408431828022003,.0667925477027893,.0036600297316908836,.015675067901611328,.03429369255900383,.23767399787902832,.06497455388307571,.0011516809463500977,.06809809058904648,.005232870578765869,.09754816442728043,.015677452087402344,.15919587016105652,.48784810304641724,.12820686399936676,.12196230888366699,.13133040070533752,.06679350137710571,.07742944359779358,.01567739248275757,.5342592000961304,.11273849010467529,.07742944359779358,.01567739248275757,.05060454457998276,.0011516809463500977,.05060454457998276,.0011516809463500977,.01036630105227232,.004848778247833252,.021154051646590233,.01567864418029785,.09083183109760284,.4878973960876465,.12558168172836304,.06416767835617065,.017355674877762794,.008966445922851562,.07771223783493042,.011559724807739258,.3124997019767761,.1371912956237793,.10425447672605515,.12196230888366699,.06139186769723892,.12196230888366699,.07072321325540543,.007857918739318848,.09112466126680374,.011558711528778076,.003660283051431179,.12196230888366699,.06249973922967911,.13732600212097168,.07480431348085403,.12196230888366699,.07480431348085403,.12196230888366699,.003660283051431179,.12196230888366699,.10833562910556793,.12196230888366699,.07072321325540543,.12196230888366699,.10833562910556793,.12196230888366699,.1875002682209015,.13756322860717773,.021154051646590233,.007474005222320557,.09492305666208267,.013051152229309082,.04418101906776428,.008964121341705322,.09783096611499786,.011559903621673584,.10162932425737381,.12196230888366699,.5625002384185791,.26224493980407715,.034566912800073624,.01567864418029785,.08821682631969452,.12196230888366699,.1874997317790985,.387151837348938,.09754827618598938,.12196230888366699,.09754827618598938,.12196230888366699,.007741096429526806,.00785684585571289,.1016293466091156,.013052403926849365,.06250026077032089,.3871026635169983,.021154044196009636,.12196230888366699,.08413578569889069,.12196230888366699,.021154044196009636,.12196230888366699,.08413578569889069,.12196230888366699,.0036600297316908836,.00785684585571289,.10833562910556793,.0074727535247802734,.10162932425737381,.015677452087402344,.11096075177192688,.0667925477027893,.5907518267631531,.3627550005912781,.10162932425737381,.015677452087402344,.11096075177192688,.0667925477027893,.06809809058904648,.0011516809463500977,.06497455388307571,.005232870578765869,.007741174660623074,.015675067901611328,.007741174660623074,.015675067901611328,.13133040070533752,.12196230888366699,.5907407999038696,.11272633075714111,.13133040070533752,.12196230888366699,.08725927770137787,.0011516809463500977,.11670946329832077,.003871321678161621,.04389836639165878,.12196230888366699,.3407820463180542,.4878087639808655,.04389836639165878,.12196230888366699,.11670946329832077,.003871321678161621,.07384677231311798,.0011516809463500977,.11670953035354614,.06679290533065796,.11670953035354614,.06679290533065796,.06139186769723892,.015676259994506836,.34078195691108704,.2378087043762207,.06139186769723892,.015676259994506836,.11670944094657898,.12196230888366699,.2842180132865906,.2378087043762207,.1042545735836029,.01567751169204712,.1042545735836029,.01567751169204712,.007741096429526806,.005231618881225586,.07072323560714722,.0011516809463500977,.07072323560714722,.0011516809463500977,.2842179536819458,.3628087639808655,.06809809058904648,.12196230888366699,.11983299255371094,.06679290533065796,.004617570899426937,.0011506080627441406,.03719203174114227,.015676438808441162,.40916556119918823,.3629019856452942,.03719203174114227,.015676438808441162,.11408430337905884,.003871619701385498,.007741096429526806,.0011506080627441406,.11096075177192688,.003871619701385498,.10833562910556793,.01567751169204712,.21557284891605377,.23743665218353271,.11096075177192688,.003871619701385498,.12245815992355347,.003871917724609375,.08151060342788696,.01567739248275757,.4657820463180542,.11280876398086548,.05060454457998276,.005232870578765869,.02786046452820301,.01567864418029785,.4374997317790985,.012191295623779297,.08151060342788696,.12196230888366699,.08151060342788696,.12196230888366699,.01036630105227232,.008966505527496338,.05759349465370178,.011558592319488525,.11983299255371094,.06416738033294678,.3407820463180542,.1128087043762207,.02377944253385067,.12196230888366699,.11983299255371094,.06416738033294678,.01348982285708189,.000767827033996582,.0841357409954071,.0011516809463500977,.0841357409954071,.0011516809463500977,.05060460418462753,.015676259994506836,.2842179536819458,.11280876398086548,.05060460418462753,.015676259994506836,.11983299255371094,.003871321678161621,.014164685271680355,.007474005222320557,.03719203174114227,.008964121341705322,.023779170587658882,.01567864418029785,.31250008940696716,.012191236019134521,.05060452222824097,.12196230888366699,.023779170587658882,.01567864418029785,.12820683419704437,.0038716793060302734,.05468563735485077,.01567620038986206,.5906772613525391,.23762238025665283,.12820683419704437,.0038716793060302734,.0841357409954071,.005232870578765869,.05468563735485077,.12196230888366699,.05468563735485077,.12196230888366699,.5624997615814209,.1373775601387024,.014447621069848537,.015678703784942627,.02377917803823948,.008966445922851562,.040990397334098816,.007471561431884766,.027577554807066917,.007474005222320557,.08151061087846756,.01305234432220459,.05731076002120972,.12196230888366699,.010366610251367092,.015678703784942627,.05731076002120972,.12196230888366699,.010366610251367092,.015678703784942627,.4375002980232239,.13719123601913452,.04797941446304321,.015676259994506836,.04797941446304321,.015676259994506836,.06250029802322388,.262137234210968,.09492305666208267,.12196230888366699,.05468561500310898,.007858037948608398,.08413572609424591,.00785917043685913,.03076852671802044,.011561095714569092,.06401699781417847,.007857978343963623,.06809809058904648,.015676140785217285,.04127315804362297,.12196230888366699,.04127315804362297,.12196230888366699,.06809809058904648,.015676140785217285,.3125002682209015,.26219117641448975,.026902692392468452,.004848778247833252,.026902692392468452,.004848778247833252,.034566912800073624,.12196230888366699,.5342481732368469,.3627550005912781,.034566912800073624,.12196230888366699,.11096090078353882,.12196230888366699,.11408430337905884,.06416738033294678,.03048589639365673,.12196230888366699,.46583443880081177,.3629019856452942,.11408430337905884,.06416738033294678,.026902692392468452,.0007677078247070312,.08413572609424591,.015676140785217285,.034168168902397156,.4878973960876465,.12558168172836304,.003871917724609375,.05372808128595352,.005232870578765869,.12558168172836304,.003871917724609375,.05372808128595352,.005232870578765869,.08821682631969452,.015676140785217285,.21580412983894348,.48784810304641724,.12820687890052795,.06679350137710571,.08821682631969452,.015676140785217285,.12820687890052795,.06679350137710571,.05372808128595352,.0011516809463500977,.11670944094657898,.06416738033294678,.01707303337752819,.01567864418029785,.2842179536819458,.4878087639808655,.01707303337752819,.01567864418029785,.01036630105227232,.000767827033996582,.01036630105227232,.000767827033996582,.014164685271680355,.013053655624389648,.021154051646590233,.013053596019744873,.027577554807066917,.013053596019744873,.040990397334098816,.013051152229309082,.061391860246658325,.00747150182723999,.07276374846696854,.013051033020019531,.08151061087846756,.007472634315490723,.09492305666208267,.007471621036529541,.005700557492673397,.013049840927124023,.034566912800073624,.007474005222320557,.04797939583659172,.013051152229309082,.052645064890384674,.013051152229309082,.06605753302574158,.013051152229309082,.08617626875638962,.01305234432220459,.1016293466091156,.0074727535247802734,.10833562910556793,.013052403926849365],normalized:!1}},index:{type:"Uint16Array",array:[97,128,249,171,245,2,83,8,107,137,120,240,12,236,166,262,150,19,23,208,213,190,203,197,78,72,223,101,160,157,255,123,87,114,28,177,91,145,34,42,181,184,48,54,57,238,31,6,76,165,44,254,130,122,108,27,112,126,133,274,192,152,260,142,106,33,38,265,95,253,93,182,185,90,32,239,0,244,69,53,227,212,198,204,161,111,176,129,261,18,85,84,141,258,146,89,13,155,159,219,156,79,139,10,81,169,163,174,170,233,14,21,59,65,125,138,86,73,47,56,40,205,191,224,149,61,246,178,26,222,24,214,250,41,98,232,46,167,209,70,60,63,194,210,68,226,62,36,104,271,105,116,273,115,99,267,100,218,272,217,215,268,216,201,269,200,187,266,188,35,270,134,17,281,16,229,279,228,50,277,51,231,278,230,4,275,5,117,276,118,127,280,237,247,30,77,153,164,257,248,132,109,9,29,189,199,148,143,82,110,37,193,264,251,259,94,186,180,92,241,121,1,67,58,52,211,207,196,162,102,113,131,96,263,85,140,84,256,88,144,11,168,154,221,103,158,136,242,7,169,15,163,172,3,234,21,75,59,124,119,135,71,80,45,39,183,202,225,20,151,243,173,175,220,74,22,252,179,43,235,55,49,206,25,66,64,147,195]},boundingSphere:{center:[0,0,0],radius:135.51845097955697}},faceValues:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],rotationCombinations:{"1,2":[-1,-46,-1],"1,3":[44,-91,44],"1,4":[0,-135,0],"1,5":[-1,179,1],"1,6":[-1,134,1],"1,7":[44,89,-44],"1,8":[1,44,-2],"1,9":[-1,0,180],"1,10":[-2,-45,179],"1,11":[-103,-89,78],"1,12":[-180,-45,0],"1,13":[179,2,1],"1,14":[179,46,1],"1,15":[13,89,166],"1,16":[0,44,179],"2,3":[0,-45,0],"2,4":[43,-90,43],"2,5":[0,-135,0],"2,6":[0,180,0],"2,7":[0,135,0],"2,8":[38,89,-39],"2,9":[0,45,-180],"2,10":[0,0,180],"2,11":[-1,-45,179],"2,12":[-3,-89,177],"2,13":[-180,-44,1],"2,14":[-179,0,0],"2,15":[-179,45,0],"2,16":[-6,90,-174],"3,4":[0,-45,0],"3,5":[-54,-90,-54],"3,6":[0,-135,0],"3,7":[0,-180,0],"3,8":[-1,134,0],"3,9":[-177,90,-3],"3,10":[-1,45,-180],"3,11":[-1,0,180],"3,12":[0,-44,179],"3,13":[-179,-89,2],"3,14":[-179,-45,1],"3,15":[-180,0,0],"3,16":[-180,45,0],"4,5":[0,-45,1],"4,6":[-47,-90,-47],"4,7":[-1,-135,0],"4,8":[-1,179,-1],"4,9":[-180,45,0],"4,10":[-98,89,-83],"4,11":[-1,45,-179],"4,12":[0,1,180],"4,13":[0,-46,-179],"4,14":[-161,-89,20],"4,15":[180,-44,0],"4,16":[180,1,0],"5,6":[-1,-45,0],"5,7":[-60,-90,-59],"5,8":[-1,-136,-1],"5,9":[180,-1,1],"5,10":[180,44,0],"5,11":[-159,89,-21],"5,12":[0,46,179],"5,13":[0,-1,-180],"5,14":[-1,-45,179],"5,15":[-109,-89,72],"5,16":[-180,-45,0],"6,7":[0,-45,0],"6,8":[-38,-91,-39],"6,9":[-180,-45,0],"6,10":[-180,0,0],"6,11":[-179,45,-1],"6,12":[-177,89,-3],"6,13":[0,44,-179],"6,14":[-1,0,-180],"6,15":[-1,-45,180],"6,16":[-174,-90,6],"7,8":[1,-46,0],"7,9":[-3,-90,177],"7,10":[-179,-45,0],"7,11":[-179,0,0],"7,12":[-180,44,-1],"7,13":[-1,89,-178],"7,14":[-1,45,-179],"7,15":[0,0,-180],"7,16":[0,-45,180],"8,9":[0,-44,-179],"8,10":[12,-89,-167],"8,11":[179,-46,-1],"8,12":[179,-2,-1],"8,13":[-180,45,0],"8,14":[-109,89,-71],"8,15":[-2,45,-178],"8,16":[-1,0,-180],"9,10":[1,45,-1],"9,11":[89,89,-89],"9,12":[0,135,0],"9,13":[0,-179,1],"9,14":[0,-134,0],"9,15":[7,-89,7],"9,16":[0,-44,-1],"10,11":[0,45,0],"10,12":[-9,89,8],"10,13":[0,136,1],"10,14":[-1,-179,0],"10,15":[-1,-134,0],"10,16":[11,-89,12],"11,12":[-1,45,-1],"11,13":[4,91,-4],"11,14":[-1,136,1],"11,15":[-1,-179,0],"11,16":[-1,-134,0],"12,13":[-1,47,2],"12,14":[6,91,-6],"12,15":[0,136,0],"12,16":[0,-179,-1],"13,14":[1,44,-1],"13,15":[68,89,-68],"13,16":[-1,135,1],"14,15":[0,45,0],"14,16":[-86,90,85],"15,16":[0,45,-1]}},d20:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"4947963B-5ABA-4507-A373-1DA7805EB4DE",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-83.39456939697266,2.066877841949463,52.33057403564453,-83.39456939697266,2.066877841949463,52.33057403564453,-83.39456939697266,2.066877841949463,52.33057403564453,-83.39456939697266,2.066877841949463,52.33057403564453,-53.607669830322266,82.60527038574219,.00019691196212079376,-53.607669830322266,82.60527038574219,.00019691196212079376,-53.607669830322266,82.60527038574219,.00019691196212079376,-53.607669830322266,82.60527038574219,.00019691196212079376,-84.67233276367188,1.2774014472961426,-50.26307678222656,-84.67233276367188,1.2774014472961426,-50.26307678222656,-84.67233276367188,1.2774014472961426,-50.26307678222656,-84.67233276367188,1.2774014472961426,-50.26307678222656,-84.67233276367188,-1.2774014472961426,-50.26307678222656,-84.67233276367188,-1.2774014472961426,-50.26307678222656,-84.67233276367188,-1.2774014472961426,-50.26307678222656,-84.67233276367188,-1.2774014472961426,-50.26307678222656,-52.330257415771484,-83.39476013183594,2.0670700073242188,-52.330257415771484,-83.39476013183594,2.0670700073242188,-52.330257415771484,-83.39476013183594,2.0670700073242188,-52.330257415771484,-83.39476013183594,2.0670700073242188,-1.2770904302597046,-50.263389587402344,84.67215728759766,-1.2770904302597046,-50.263389587402344,84.67215728759766,-1.2770904302597046,-50.263389587402344,84.67215728759766,-1.2770904302597046,-50.263389587402344,84.67215728759766,-52.33027648925781,83.39476013183594,-2.066685438156128,-52.33027648925781,83.39476013183594,-2.066685438156128,-52.33027648925781,83.39476013183594,-2.066685438156128,-52.33027648925781,83.39476013183594,-2.066685438156128,-50.26338577270508,84.67214965820312,1.2775861024856567,-50.26338577270508,84.67214965820312,1.2775861024856567,-50.26338577270508,84.67214965820312,1.2775861024856567,-50.26338577270508,84.67214965820312,1.2775861024856567,1.2777124643325806,-50.263389587402344,84.6721420288086,1.2777124643325806,-50.263389587402344,84.6721420288086,1.2777124643325806,-50.263389587402344,84.6721420288086,1.2777124643325806,-50.263389587402344,84.6721420288086,-2.0671839714050293,-52.330265045166016,-83.39474487304688,-2.0671839714050293,-52.330265045166016,-83.39474487304688,-2.0671839714050293,-52.330265045166016,-83.39474487304688,-2.0671839714050293,-52.330265045166016,-83.39474487304688,83.39456939697266,2.066877841949463,-52.33057403564453,83.39456939697266,2.066877841949463,-52.33057403564453,83.39456939697266,2.066877841949463,-52.33057403564453,83.39456939697266,2.066877841949463,-52.33057403564453,84.67233276367188,1.2774014472961426,50.26307678222656,84.67233276367188,1.2774014472961426,50.26307678222656,84.67233276367188,1.2774014472961426,50.26307678222656,84.67233276367188,1.2774014472961426,50.26307678222656,53.607669830322266,-82.60527038574219,-.00019691196212079376,53.607669830322266,-82.60527038574219,-.00019691196212079376,53.607669830322266,-82.60527038574219,-.00019691196212079376,53.607669830322266,-82.60527038574219,-.00019691196212079376,83.39456939697266,-2.066877841949463,-52.33057403564453,83.39456939697266,-2.066877841949463,-52.33057403564453,83.39456939697266,-2.066877841949463,-52.33057403564453,83.39456939697266,-2.066877841949463,-52.33057403564453,1.2770904302597046,50.263389587402344,-84.67215728759766,1.2770904302597046,50.263389587402344,-84.67215728759766,1.2770904302597046,50.263389587402344,-84.67215728759766,1.2770904302597046,50.263389587402344,-84.67215728759766,50.26338577270508,84.67214965820312,-1.2775861024856567,50.26338577270508,84.67214965820312,-1.2775861024856567,50.26338577270508,84.67214965820312,-1.2775861024856567,50.26338577270508,84.67214965820312,-1.2775861024856567,83.39495086669922,-2.066877841949463,52.329959869384766,83.39495086669922,-2.066877841949463,52.329959869384766,83.39495086669922,-2.066877841949463,52.329959869384766,83.39495086669922,-2.066877841949463,52.329959869384766,-50.26339340209961,-84.67214965820312,-1.2772167921066284,-50.26339340209961,-84.67214965820312,-1.2772167921066284,-50.26339340209961,-84.67214965820312,-1.2772167921066284,-50.26339340209961,-84.67214965820312,-1.2772167921066284,-1.2777124643325806,-50.263389587402344,-84.6721420288086,-1.2777124643325806,-50.263389587402344,-84.6721420288086,-1.2777124643325806,-50.263389587402344,-84.6721420288086,-1.2777124643325806,-50.263389587402344,-84.6721420288086,-52.330257415771484,83.39476013183594,2.0670700073242188,-52.330257415771484,83.39476013183594,2.0670700073242188,-52.330257415771484,83.39476013183594,2.0670700073242188,-52.330257415771484,83.39476013183594,2.0670700073242188,-82.60507202148438,0,53.60797119140625,-82.60507202148438,0,53.60797119140625,-82.60507202148438,0,53.60797119140625,-82.60507202148438,0,53.60797119140625,-2.0665714740753174,52.330265045166016,83.39476776123047,-2.0665714740753174,52.330265045166016,83.39476776123047,-2.0665714740753174,52.330265045166016,83.39476776123047,-2.0665714740753174,52.330265045166016,83.39476776123047,-84.67196655273438,-1.2774014472961426,50.26369857788086,-84.67196655273438,-1.2774014472961426,50.26369857788086,-84.67196655273438,-1.2774014472961426,50.26369857788086,-84.67196655273438,-1.2774014472961426,50.26369857788086,-84.67196655273438,1.2774014472961426,50.26369857788086,-84.67196655273438,1.2774014472961426,50.26369857788086,-84.67196655273438,1.2774014472961426,50.26369857788086,-84.67196655273438,1.2774014472961426,50.26369857788086,-53.607669830322266,-82.60527038574219,.00019691196212079376,-53.607669830322266,-82.60527038574219,.00019691196212079376,-53.607669830322266,-82.60527038574219,.00019691196212079376,-53.607669830322266,-82.60527038574219,.00019691196212079376,-83.39456939697266,-2.066877841949463,52.33057403564453,-83.39456939697266,-2.066877841949463,52.33057403564453,-83.39456939697266,-2.066877841949463,52.33057403564453,-83.39456939697266,-2.066877841949463,52.33057403564453,-52.33027648925781,-83.39476013183594,-2.066685438156128,-52.33027648925781,-83.39476013183594,-2.066685438156128,-52.33027648925781,-83.39476013183594,-2.066685438156128,-52.33027648925781,-83.39476013183594,-2.066685438156128,-2.0665714740753174,-52.330265045166016,83.39476776123047,-2.0665714740753174,-52.330265045166016,83.39476776123047,-2.0665714740753174,-52.330265045166016,83.39476776123047,-2.0665714740753174,-52.330265045166016,83.39476776123047,-1.2770904302597046,50.263389587402344,84.67215728759766,-1.2770904302597046,50.263389587402344,84.67215728759766,-1.2770904302597046,50.263389587402344,84.67215728759766,-1.2770904302597046,50.263389587402344,84.67215728759766,-.0003034261171706021,53.607669830322266,-82.60527038574219,-.0003034261171706021,53.607669830322266,-82.60527038574219,-.0003034261171706021,53.607669830322266,-82.60527038574219,-.0003034261171706021,53.607669830322266,-82.60527038574219,-2.0671839714050293,52.330265045166016,-83.39474487304688,-2.0671839714050293,52.330265045166016,-83.39474487304688,-2.0671839714050293,52.330265045166016,-83.39474487304688,-2.0671839714050293,52.330265045166016,-83.39474487304688,-83.39495086669922,2.066877841949463,-52.329959869384766,-83.39495086669922,2.066877841949463,-52.329959869384766,-83.39495086669922,2.066877841949463,-52.329959869384766,-83.39495086669922,2.066877841949463,-52.329959869384766,50.26339340209961,84.67214965820312,1.2772167921066284,50.26339340209961,84.67214965820312,1.2772167921066284,50.26339340209961,84.67214965820312,1.2772167921066284,50.26339340209961,84.67214965820312,1.2772167921066284,-50.26339340209961,84.67214965820312,-1.2772167921066284,-50.26339340209961,84.67214965820312,-1.2772167921066284,-50.26339340209961,84.67214965820312,-1.2772167921066284,-50.26339340209961,84.67214965820312,-1.2772167921066284,2.0671839714050293,52.330265045166016,83.39474487304688,2.0671839714050293,52.330265045166016,83.39474487304688,2.0671839714050293,52.330265045166016,83.39474487304688,2.0671839714050293,52.330265045166016,83.39474487304688,82.60547637939453,0,53.607364654541016,82.60547637939453,0,53.607364654541016,82.60547637939453,0,53.607364654541016,82.60547637939453,0,53.607364654541016,83.39495086669922,2.066877841949463,52.329959869384766,83.39495086669922,2.066877841949463,52.329959869384766,83.39495086669922,2.066877841949463,52.329959869384766,83.39495086669922,2.066877841949463,52.329959869384766,50.26339340209961,-84.67214965820312,1.2772167921066284,50.26339340209961,-84.67214965820312,1.2772167921066284,50.26339340209961,-84.67214965820312,1.2772167921066284,50.26339340209961,-84.67214965820312,1.2772167921066284,2.0671839714050293,-52.330265045166016,83.39474487304688,2.0671839714050293,-52.330265045166016,83.39474487304688,2.0671839714050293,-52.330265045166016,83.39474487304688,2.0671839714050293,-52.330265045166016,83.39474487304688,50.26338577270508,-84.67214965820312,-1.2775861024856567,50.26338577270508,-84.67214965820312,-1.2775861024856567,50.26338577270508,-84.67214965820312,-1.2775861024856567,50.26338577270508,-84.67214965820312,-1.2775861024856567,-83.39495086669922,-2.066877841949463,-52.329959869384766,-83.39495086669922,-2.066877841949463,-52.329959869384766,-83.39495086669922,-2.066877841949463,-52.329959869384766,-83.39495086669922,-2.066877841949463,-52.329959869384766,-82.60547637939453,0,-53.607364654541016,-82.60547637939453,0,-53.607364654541016,-82.60547637939453,0,-53.607364654541016,-82.60547637939453,0,-53.607364654541016,52.330257415771484,83.39476013183594,-2.0670700073242188,52.330257415771484,83.39476013183594,-2.0670700073242188,52.330257415771484,83.39476013183594,-2.0670700073242188,52.330257415771484,83.39476013183594,-2.0670700073242188,53.607669830322266,82.60527038574219,-.00019691196212079376,53.607669830322266,82.60527038574219,-.00019691196212079376,53.607669830322266,82.60527038574219,-.00019691196212079376,53.607669830322266,82.60527038574219,-.00019691196212079376,2.0665714740753174,52.330265045166016,-83.39476776123047,2.0665714740753174,52.330265045166016,-83.39476776123047,2.0665714740753174,52.330265045166016,-83.39476776123047,2.0665714740753174,52.330265045166016,-83.39476776123047,84.67233276367188,-1.2774014472961426,50.26307678222656,84.67233276367188,-1.2774014472961426,50.26307678222656,84.67233276367188,-1.2774014472961426,50.26307678222656,84.67233276367188,-1.2774014472961426,50.26307678222656,84.67196655273438,-1.2774014472961426,-50.26369857788086,84.67196655273438,-1.2774014472961426,-50.26369857788086,84.67196655273438,-1.2774014472961426,-50.26369857788086,84.67196655273438,-1.2774014472961426,-50.26369857788086,84.67196655273438,1.2774014472961426,-50.26369857788086,84.67196655273438,1.2774014472961426,-50.26369857788086,84.67196655273438,1.2774014472961426,-50.26369857788086,84.67196655273438,1.2774014472961426,-50.26369857788086,52.33027648925781,83.39476013183594,2.066685438156128,52.33027648925781,83.39476013183594,2.066685438156128,52.33027648925781,83.39476013183594,2.066685438156128,52.33027648925781,83.39476013183594,2.066685438156128,52.330257415771484,-83.39476013183594,-2.0670700073242188,52.330257415771484,-83.39476013183594,-2.0670700073242188,52.330257415771484,-83.39476013183594,-2.0670700073242188,52.330257415771484,-83.39476013183594,-2.0670700073242188,82.60507202148438,0,-53.60797119140625,82.60507202148438,0,-53.60797119140625,82.60507202148438,0,-53.60797119140625,82.60507202148438,0,-53.60797119140625,52.33027648925781,-83.39476013183594,2.066685438156128,52.33027648925781,-83.39476013183594,2.066685438156128,52.33027648925781,-83.39476013183594,2.066685438156128,52.33027648925781,-83.39476013183594,2.066685438156128,-50.26338577270508,-84.67214965820312,1.2775861024856567,-50.26338577270508,-84.67214965820312,1.2775861024856567,-50.26338577270508,-84.67214965820312,1.2775861024856567,-50.26338577270508,-84.67214965820312,1.2775861024856567,1.2770904302597046,-50.263389587402344,-84.67215728759766,1.2770904302597046,-50.263389587402344,-84.67215728759766,1.2770904302597046,-50.263389587402344,-84.67215728759766,1.2770904302597046,-50.263389587402344,-84.67215728759766,2.0665714740753174,-52.330265045166016,-83.39476776123047,2.0665714740753174,-52.330265045166016,-83.39476776123047,2.0665714740753174,-52.330265045166016,-83.39476776123047,2.0665714740753174,-52.330265045166016,-83.39476776123047,-.0003034261171706021,-53.607669830322266,-82.60527038574219,-.0003034261171706021,-53.607669830322266,-82.60527038574219,-.0003034261171706021,-53.607669830322266,-82.60527038574219,-.0003034261171706021,-53.607669830322266,-82.60527038574219,-1.2777124643325806,50.263389587402344,-84.6721420288086,-1.2777124643325806,50.263389587402344,-84.6721420288086,-1.2777124643325806,50.263389587402344,-84.6721420288086,-1.2777124643325806,50.263389587402344,-84.6721420288086,.0003034261171706021,-53.607669830322266,82.60527038574219,.0003034261171706021,-53.607669830322266,82.60527038574219,.0003034261171706021,-53.607669830322266,82.60527038574219,.0003034261171706021,-53.607669830322266,82.60527038574219,1.2777124643325806,50.263389587402344,84.6721420288086,1.2777124643325806,50.263389587402344,84.6721420288086,1.2777124643325806,50.263389587402344,84.6721420288086,1.2777124643325806,50.263389587402344,84.6721420288086,.0003034261171706021,53.607669830322266,82.60527038574219,.0003034261171706021,53.607669830322266,82.60527038574219,.0003034261171706021,53.607669830322266,82.60527038574219,.0003034261171706021,53.607669830322266,82.60527038574219],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.5902835130691528,.5619468092918396,.5794662833213806,-.5902835130691528,.5619468092918396,.5794662833213806,-.5902835130691528,.5619468092918396,.5794662833213806,-.5902835130691528,.5619468092918396,.5794662833213806,-.9267594814300537,.3756551742553711,-3.650784492492676e-7,-.9267594814300537,.3756551742553711,-3.650784492492676e-7,-.9267594814300537,.3756551742553711,-3.650784492492676e-7,-.9267594814300537,.3756551742553711,-3.650784492492676e-7,-.9375927448272705,.3472937345504761,-.01751660369336605,-.9375927448272705,.3472937345504761,-.01751660369336605,-.9375927448272705,.3472937345504761,-.01751660369336605,-.9375927448272705,.3472937345504761,-.01751660369336605,-.9375886917114258,-.34730517864227295,-.01751125603914261,-.9375886917114258,-.34730517864227295,-.01751125603914261,-.9375886917114258,-.34730517864227295,-.01751125603914261,-.9375886917114258,-.34730517864227295,-.01751125603914261,-.5794563889503479,-.5902886986732483,.5619516968727112,-.5794563889503479,-.5902886986732483,.5619516968727112,-.5794563889503479,-.5902886986732483,.5619516968727112,-.5794563889503479,-.5902886986732483,.5619516968727112,-.34728965163230896,-.01751914620399475,.9375942349433899,-.34728965163230896,-.01751914620399475,.9375942349433899,-.34728965163230896,-.01751914620399475,.9375942349433899,-.34728965163230896,-.01751914620399475,.9375942349433899,-.579460859298706,.5902918577194214,-.5619436502456665,-.579460859298706,.5902918577194214,-.5619436502456665,-.579460859298706,.5902918577194214,-.5619436502456665,-.579460859298706,.5902918577194214,-.5619436502456665,-.017521724104881287,.9375901818275452,.34730058908462524,-.017521724104881287,.9375901818275452,.34730058908462524,-.017521724104881287,.9375901818275452,.34730058908462524,-.017521724104881287,.9375901818275452,.34730058908462524,.3473122715950012,-.017512619495391846,.9375860095024109,.3473122715950012,-.017512619495391846,.9375860095024109,.3473122715950012,-.017512619495391846,.9375860095024109,.3473122715950012,-.017512619495391846,.9375860095024109,-.5619495511054993,-.579465389251709,-.5902817845344543,-.5619495511054993,-.579465389251709,-.5902817845344543,-.5619495511054993,-.579465389251709,-.5902817845344543,-.5619495511054993,-.579465389251709,-.5902817845344543,.5902835130691528,.5619468092918396,-.5794662833213806,.5902835130691528,.5619468092918396,-.5794662833213806,.5902835130691528,.5619468092918396,-.5794662833213806,.5902835130691528,.5619468092918396,-.5794662833213806,.9375926852226257,.3472939133644104,.017516572028398514,.9375926852226257,.3472939133644104,.017516572028398514,.9375926852226257,.3472939133644104,.017516572028398514,.9375926852226257,.3472939133644104,.017516572028398514,.9267594814300537,-.3756551742553711,-7398426532745361e-21,.9267594814300537,-.3756551742553711,-7398426532745361e-21,.9267594814300537,-.3756551742553711,-7398426532745361e-21,.9267594814300537,-.3756551742553711,-7398426532745361e-21,.590289294719696,-.5619460344314575,-.5794610977172852,.590289294719696,-.5619460344314575,-.5794610977172852,.590289294719696,-.5619460344314575,-.5794610977172852,.590289294719696,-.5619460344314575,-.5794610977172852,.3473011553287506,.017513729631900787,-.9375900626182556,.3473011553287506,.017513729631900787,-.9375900626182556,.3473011553287506,.017513729631900787,-.9375900626182556,.3473011553287506,.017513729631900787,-.9375900626182556,.01752115786075592,.9375901818275452,-.3473004698753357,.01752115786075592,.9375901818275452,-.3473004698753357,.01752115786075592,.9375901818275452,-.3473004698753357,.01752115786075592,.9375901818275452,-.3473004698753357,.5902906656265259,-.5619435906410217,.5794621706008911,.5902906656265259,-.5619435906410217,.5794621706008911,.5902906656265259,-.5619435906410217,.5794621706008911,.5902906656265259,-.5619435906410217,.5794621706008911,-.01751122623682022,-.9375880360603333,-.34730690717697144,-.01751122623682022,-.9375880360603333,-.34730690717697144,-.01751122623682022,-.9375880360603333,-.34730690717697144,-.01751122623682022,-.9375880360603333,-.34730690717697144,-.34731000661849976,-.01751551777124405,-.9375866651535034,-.34731000661849976,-.01751551777124405,-.9375866651535034,-.34731000661849976,-.01751551777124405,-.9375866651535034,-.34731000661849976,-.01751551777124405,-.9375866651535034,-.5794625282287598,.5902847647666931,.5619492530822754,-.5794625282287598,.5902847647666931,.5619492530822754,-.5794625282287598,.5902847647666931,.5619492530822754,-.5794625282287598,.5902847647666931,.5619492530822754,-.3756488859653473,-4090368747711182e-21,.9267621040344238,-.3756488859653473,-4090368747711182e-21,.9267621040344238,-.3756488859653473,-4090368747711182e-21,.9267621040344238,-.3756488859653473,-4090368747711182e-21,.9267621040344238,-.5619439482688904,.5794651508331299,.5902872681617737,-.5619439482688904,.5794651508331299,.5902872681617737,-.5619439482688904,.5794651508331299,.5902872681617737,-.5619439482688904,.5794651508331299,.5902872681617737,-.9375901818275452,-.34730082750320435,.017511630430817604,-.9375901818275452,-.34730082750320435,.017511630430817604,-.9375901818275452,-.34730082750320435,.017511630430817604,-.9375901818275452,-.34730082750320435,.017511630430817604,-.9375885128974915,.3473053276538849,.017515607178211212,-.9375885128974915,.3473053276538849,.017515607178211212,-.9375885128974915,.3473053276538849,.017515607178211212,-.9375885128974915,.3473053276538849,.017515607178211212,-.9267594814300537,-.3756551742553711,7398426532745361e-21,-.9267594814300537,-.3756551742553711,7398426532745361e-21,-.9267594814300537,-.3756551742553711,7398426532745361e-21,-.9267594814300537,-.3756551742553711,7398426532745361e-21,-.590289294719696,-.5619460344314575,.5794610977172852,-.590289294719696,-.5619460344314575,.5794610977172852,-.590289294719696,-.5619460344314575,.5794610977172852,-.590289294719696,-.5619460344314575,.5794610977172852,-.5794673562049866,-.5902878642082214,-.5619411468505859,-.5794673562049866,-.5902878642082214,-.5619411468505859,-.5794673562049866,-.5902878642082214,-.5619411468505859,-.5794673562049866,-.5902878642082214,-.5619411468505859,-.56194669008255,-.5794578194618225,.5902919173240662,-.56194669008255,-.5794578194618225,.5902919173240662,-.56194669008255,-.5794578194618225,.5902919173240662,-.56194669008255,-.5794578194618225,.5902919173240662,-.3473033905029297,.01751108467578888,.9375893473625183,-.3473033905029297,.01751108467578888,.9375893473625183,-.3473033905029297,.01751108467578888,.9375893473625183,-.3473033905029297,.01751108467578888,.9375893473625183,-6303191184997559e-21,.9267597794532776,-.3756546974182129,-6303191184997559e-21,.9267597794532776,-.3756546974182129,-6303191184997559e-21,.9267597794532776,-.3756546974182129,-6303191184997559e-21,.9267597794532776,-.3756546974182129,-.5619495511054993,.5794599056243896,-.5902870297431946,-.5619495511054993,.5794599056243896,-.5902870297431946,-.5619495511054993,.5794599056243896,-.5902870297431946,-.5619495511054993,.5794599056243896,-.5902870297431946,-.590303897857666,.5619341731071472,-.5794578194618225,-.590303897857666,.5619341731071472,-.5794578194618225,-.590303897857666,.5619341731071472,-.5794578194618225,-.590303897857666,.5619341731071472,-.5794578194618225,.017507383599877357,.9375904202461243,.34730064868927,.017507383599877357,.9375904202461243,.34730064868927,.017507383599877357,.9375904202461243,.34730064868927,.017507383599877357,.9375904202461243,.34730064868927,-.017507383599877357,.9375904202461243,-.3473004698753357,-.017507383599877357,.9375904202461243,-.3473004698753357,-.017507383599877357,.9375904202461243,-.3473004698753357,-.017507383599877357,.9375904202461243,-.3473004698753357,.5619532465934753,.5794590711593628,.5902844667434692,.5619532465934753,.5794590711593628,.5902844667434692,.5619532465934753,.5794590711593628,.5902844667434692,.5619532465934753,.5794590711593628,.5902844667434692,.3756416141986847,29206275939941406e-22,.926764965057373,.3756416141986847,29206275939941406e-22,.926764965057373,.3756416141986847,29206275939941406e-22,.926764965057373,.3756416141986847,29206275939941406e-22,.926764965057373,.5902771949768066,.5619665384292603,.5794534683227539,.5902771949768066,.5619665384292603,.5794534683227539,.5902771949768066,.5619665384292603,.5794534683227539,.5902771949768066,.5619665384292603,.5794534683227539,.017511233687400818,-.937588095664978,.3473067581653595,.017511233687400818,-.937588095664978,.3473067581653595,.017511233687400818,-.937588095664978,.3473067581653595,.017511233687400818,-.937588095664978,.3473067581653595,.5619463324546814,-.579465389251709,.5902849435806274,.5619463324546814,-.579465389251709,.5902849435806274,.5619463324546814,-.579465389251709,.5902849435806274,.5619463324546814,-.579465389251709,.5902849435806274,.017518242821097374,-.9375925660133362,-.34729424118995667,.017518242821097374,-.9375925660133362,-.34729424118995667,.017518242821097374,-.9375925660133362,-.34729424118995667,.017518242821097374,-.9375925660133362,-.34729424118995667,-.5902858376502991,-.5619493722915649,-.5794615745544434,-.5902858376502991,-.5619493722915649,-.5794615745544434,-.5902858376502991,-.5619493722915649,-.5794615745544434,-.5902858376502991,-.5619493722915649,-.5794615745544434,-.37564951181411743,28908252716064453e-22,-.9267617464065552,-.37564951181411743,28908252716064453e-22,-.9267617464065552,-.37564951181411743,28908252716064453e-22,-.9267617464065552,-.37564951181411743,28908252716064453e-22,-.9267617464065552,.5794623494148254,.5902848839759827,-.5619493126869202,.5794623494148254,.5902848839759827,-.5619493126869202,.5794623494148254,.5902848839759827,-.5619493126869202,.5794623494148254,.5902848839759827,-.5619493126869202,.9267598390579224,.3756541609764099,2.980232238769531e-7,.9267598390579224,.3756541609764099,2.980232238769531e-7,.9267598390579224,.3756541609764099,2.980232238769531e-7,.9267598390579224,.3756541609764099,2.980232238769531e-7,.5619441866874695,.5794647932052612,-.5902873873710632,.5619441866874695,.5794647932052612,-.5902873873710632,.5619441866874695,.5794647932052612,-.5902873873710632,.5619441866874695,.5794647932052612,-.5902873873710632,.9375880360603333,-.347307026386261,.017507091164588928,.9375880360603333,-.347307026386261,.017507091164588928,.9375880360603333,-.347307026386261,.017507091164588928,.9375880360603333,-.347307026386261,.017507091164588928,.9375901818275452,-.34730082750320435,-.017511630430817604,.9375901818275452,-.34730082750320435,-.017511630430817604,.9375901818275452,-.34730082750320435,-.017511630430817604,.9375901818275452,-.34730082750320435,-.017511630430817604,.9375885128974915,.3473053276538849,-.017515607178211212,.9375885128974915,.3473053276538849,-.017515607178211212,.9375885128974915,.3473053276538849,-.017515607178211212,.9375885128974915,.3473053276538849,-.017515607178211212,.5794609785079956,.5902916789054871,.5619437098503113,.5794609785079956,.5902916789054871,.5619437098503113,.5794609785079956,.5902916789054871,.5619437098503113,.5794609785079956,.5902916789054871,.5619437098503113,.5794563889503479,-.5902886986732483,-.5619516968727112,.5794563889503479,-.5902886986732483,-.5619516968727112,.5794563889503479,-.5902886986732483,-.5619516968727112,.5794563889503479,-.5902886986732483,-.5619516968727112,.3756488859653473,-4090368747711182e-21,-.9267621040344238,.3756488859653473,-4090368747711182e-21,-.9267621040344238,.3756488859653473,-4090368747711182e-21,-.9267621040344238,.3756488859653473,-4090368747711182e-21,-.9267621040344238,.5794673562049866,-.5902878642082214,.5619410276412964,.5794673562049866,-.5902878642082214,.5619410276412964,.5794673562049866,-.5902878642082214,.5619410276412964,.5794673562049866,-.5902878642082214,.5619410276412964,-.017518242821097374,-.9375925660133362,.34729424118995667,-.017518242821097374,-.9375925660133362,.34729424118995667,-.017518242821097374,-.9375925660133362,.34729424118995667,-.017518242821097374,-.9375925660133362,.34729424118995667,.34729689359664917,-.017507314682006836,-.9375919103622437,.34729689359664917,-.017507314682006836,-.9375919103622437,.34729689359664917,-.017507314682006836,-.9375919103622437,.34729689359664917,-.017507314682006836,-.9375919103622437,.5619431734085083,-.5794587135314941,-.5902944207191467,.5619431734085083,-.5794587135314941,-.5902944207191467,.5619431734085083,-.5794587135314941,-.5902944207191467,.5619431734085083,-.5794587135314941,-.5902944207191467,16316771507263184e-22,-.9267597794532776,-.3756546974182129,16316771507263184e-22,-.9267597794532776,-.3756546974182129,16316771507263184e-22,-.9267597794532776,-.3756546974182129,16316771507263184e-22,-.9267597794532776,-.3756546974182129,-.3473055958747864,.017509743571281433,-.9375884532928467,-.3473055958747864,.017509743571281433,-.9375884532928467,-.3473055958747864,.017509743571281433,-.9375884532928467,-.3473055958747864,.017509743571281433,-.9375884532928467,-12889504432678223e-22,-.9267591834068298,.3756559193134308,-12889504432678223e-22,-.9267591834068298,.3756559193134308,-12889504432678223e-22,-.9267591834068298,.3756559193134308,-12889504432678223e-22,-.9267591834068298,.3756559193134308,.3473014235496521,.01751813292503357,.9375898241996765,.3473014235496521,.01751813292503357,.9375898241996765,.3473014235496521,.01751813292503357,.9375898241996765,.3473014235496521,.01751813292503357,.9375898241996765,6429851055145264e-21,.9267741441726685,.37561920285224915,6429851055145264e-21,.9267741441726685,.37561920285224915,6429851055145264e-21,.9267741441726685,.37561920285224915,6429851055145264e-21,.9267741441726685,.37561920285224915],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.050937071442604065,.0637897253036499,.11147573590278625,.05759662389755249,.1211576759815216,.10764795541763306,.12535500526428223,.35762202739715576,.05231131985783577,.1178632378578186,.07363925129175186,.11786329746246338,.119850754737854,.015513718128204346,.6247040033340454,.2332320213317871,.02066764421761036,.05759531259536743,.07363908737897873,.06378960609436035,.1211576759815216,.005298316478729248,.5624589920043945,.1254199743270874,.0220418032258749,.05759531259536743,.08258064091205597,.0637897253036499,.1211576759815216,.0066724419593811035,.24976900219917297,.6079350113868713,.02066793106496334,.11786329746246338,.02823532558977604,.06378841400146484,.1211576759815216,.09218895435333252,.4997659921646118,.1081160306930542,.08120644837617874,.057596445083618164,.0977153331041336,.11786329746246338,.1190430074930191,.039651691913604736,.4997679889202118,.3578059673309326,.05987865850329399,.0035230517387390137,.07501331716775894,.11786329746246338,.1190430074930191,.014401912689208984,.3747130036354065,.48311901092529297,.037176623940467834,.06378841400146484,.08877374976873398,.0637897253036499,.1211576759815216,.013714849948883057,.3754439949989319,.48308396339416504,.01310031395405531,.057595252990722656,.08258060365915298,.05759638547897339,.119850754737854,.038539886474609375,.24988000094890594,.4829980134963989,.04336973652243614,.003524184226989746,.06254100054502487,.37501800060272217,.08877380937337875,.05759662389755249,.11985072493553162,.04695647954940796,.00035799999022856355,.6079339981079102,.02823505364358425,.05759531259536743,.096341073513031,.0035229921340942383,.1190430074930191,.02281850576400757,.06744597852230072,.05759650468826294,.07363912463188171,.05759662389755249,.121157705783844,.0557977557182312,.3125090003013611,960230827331543e-19,.0055332062765955925,.11786329746246338,.10390840470790863,.0637897253036499,.11985082179307938,.09880667924880981,.5625389814376831,.25025200843811035,.0069072050973773,.06378835439682007,.05093708261847496,.0035218000411987305,.1211576759815216,.02213144302368164,.2504560053348541,.3578009605407715,.0296091977506876,.0035229921340942383,.06246799975633621,.25025999546051025,.10390840470790863,.0035241246223449707,.1211576759815216,.0823981761932373,.044743988662958145,.06378841400146484,.09014798700809479,.11786329746246338,.1211576759815216,.11606442928314209,.5002009868621826,.10809803009033203,.014474472962319851,.003522932529449463,.10528266429901123,.1178632378578186,.119850754737854,.05759662389755249,.24995200335979462,.2328779697418213,.006907171569764614,.057595252990722656,.062495000660419464,.12494999170303345,.0901479572057724,.0035241246223449707,.11904306709766388,.09150189161300659,.04474392160773277,.003524184226989746,.10528260469436646,.05759662389755249,.1190430074930191,.048068225383758545,.37474000453948975,.23276197910308838,.03580237179994583,.06378841400146484,.05093725398182869,.11786329746246338,.1211576759815216,.015089035034179688,.1876010000705719,.24980902671813965,.09771531820297241,.0637897253036499,.1128498986363411,.05759662389755249,.1211576759815216,.10902208089828491,.37527701258659363,.3578059673309326,.03580237179994583,.11786329746246338,.11147570610046387,.003524184226989746,.119850754737854,.030123412609100342,.24984599649906158,.35762202739715576,.02204183302819729,.0035229921340942383,.029609275981783867,.11786329746246338,.11904306709766388,.10833495855331421,.12527799606323242,.6079350113868713,.02066764421761036,.0035229921340942383,.05231131985783577,.0637897253036499,.11985082179307938,.1072232723236084,.5002130270004272,.2332320213317871,.029609275981783867,.06378841400146484,.08258064091205597,.11786329746246338,.1211576759815216,.09081476926803589,.1875240057706833,.5001220107078552,.028234990313649178,.11786329746246338,.096341073513031,.0637897253036499,.11985072493553162,.1094467043876648,.37527498602867126,.1081160306930542,.00029600001289509237,.4828310012817383,.08120640367269516,.11786329746246338,.08877374976873398,.0035241246223449707,.11985082179307938,.09039008617401123,.02066764421761036,.06378841400146484,.09634126722812653,.11786329746246338,.119850754737854,.04076343774795532,.43751999735832214,.00030297040939331055,.08120640367269516,.0035240650177001953,.1128498986363411,.003524184226989746,.1190430074930191,.031235098838806152,.4375219941139221,.2499929666519165,.04474368318915367,.11786329746246338,.05850442126393318,.05759662389755249,.119850754737854,.0841970443725586,.6246920228004456,.10809803009033203,.059878647327423096,.05759662389755249,.06607192009687424,.11786329746246338,.11904306709766388,.08308535814285278,.3124679923057556,.37530601024627686,.06607174873352051,.0637897253036499,.07501332461833954,.06378960609436035,.119850754737854,.00487363338470459,.25022199749946594,.48311901092529297,.05987865850329399,.11786329746246338,.0887739360332489,.11786329746246338,.119850754737854,.11563986539840698,.43768998980522156,.3752709627151489,.05850460007786751,.0035230517387390137,.09014798700809479,.0637897253036499,.11985069513320923,.013290226459503174,.5624470114707947,.00028502941131591797,.05850442126393318,.06378966569900513,.11147573590278625,.11786329746246338,.1211576759815216,.031922221183776855,.43765100836753845,.12517499923706055,.013100284151732922,.003522932529449463,.11284996569156647,.0637897253036499,.1190430074930191,.056484758853912354,.18763400614261627,.3751859664916992,.06607174873352051,.05759650468826294,.11147589981555939,.0637897253036499,.119850754737854,.05537313222885132,.3754050135612488,.23298698663711548,.005532982759177685,.0035241246223449707,.037176575511693954,.0035229921340942383,.119850754737854,.10103017091751099,.5628489851951599,.37501800060272217,.014474472962319851,.057595252990722656,.03580237179994583,.05759531259536743,.1211576759815216,.03896456956863403,.18770700693130493,.12506598234176636,.006907171569764614,.0035241246223449707,.014474536292254925,.11786329746246338,.1211576759815216,.10060548782348633,.12473999708890915,.23276197910308838,.04336966946721077,.05759531259536743,.08120658993721008,.0637897253036499,.119850754737854,.007097125053405762,.12478700280189514,.4828310012817383,.04474392160773277,.05759531259536743,.06744600087404251,.0637897253036499,.1190430074930191,.005985379219055176,.31249499320983887,.12494999170303345,.04336971789598465,.06378841400146484,.06260299682617188,.500120997428894,.09634125232696533,.05759662389755249,.1211576759815216,.11743861436843872,.06744597852230072,.003522932529449463,.09771530330181122,.05759662389755249,.11985082179307938,.11786329746246338,.37475401163101196,.10790902376174927,.02823500521481037,.0035229921340942383,.04336973652243614,.11786329746246338,.1211576759815216,.08377236127853394,.12484899908304214,.6079339981079102,.07501329481601715,.05759662389755249,.10390856862068176,.11786329746246338,.121157705783844,.05717200040817261,.624783992767334,.35806500911712646,.005532919429242611,.06378835439682007,.07501330226659775,.0035242438316345215,.1211576759815216,.02350562810897827,.5002930164337158,.35806500911712646,.07363908737897873,.0035242438316345215,.09771530330181122,.0035229921340942383,.119850754737854,.02393031120300293,.2502630054950714,.10790902376174927,.05850442126393318,.11786329746246338,.06607190519571304,.003522932529449463,.11904306709766388,.11675161123275757,.49989598989486694,.23298698663711548,.0069072050973773,.11786329746246338,.01310060080140829,.11786329746246338,.1211576759815216,.09923136234283447,.3749470114707947,.3578009605407715,.00022200000239536166,.35807204246520996,.0296091977506876,.05759531259536743,.052311308681964874,.0035218000411987305,.119850754737854,.021706759929656982,.035802435129880905,.0035229921340942383,.10528266429901123,.06378966569900513,.11904306709766388,.0999184250831604,.12546099722385406,.2328779697418213,.005532919429242611,.057595252990722656,.02204192988574505,.11786329746246338,.11985082179307938,.09261363744735718,.625095009803772,.4828310012817383,.05231131985783577,.05759531259536743,.10390844196081161,.05759662389755249,.11985072493553162,.049180030822753906,.1247130036354065,.35807204246520996,.013100284151732922,.06378841400146484,.050937261432409286,.05759531259536743,.1211576759815216,.04875540733337402,.3127020001411438,.24998903274536133,.00024900000425986946,.23276197910308838,.014474536292254925,.06378841400146484,.0901479572057724,.05759662389755249,.1211576759815216,.04738116264343262,.06744600087404251,.11786329746246338,.10528260469436646,.0035241246223449707,.11985082179307938,.0819736123085022,.2502489984035492,.23276197910308838,.022041896358132362,.06378841400146484,.037176575511693954,.05759531259536743,.1211576759815216,.040338754653930664,.500603973865509,.4828310012817383,.08258060365915298,.00352400541305542,.11284996569156647,.11786329746246338,.119850754737854,.03234678506851196,.1253889948129654,.4829980134963989,.03717633709311485,.11786329746246338,.05987846478819847,.06378966569900513,.1211576759815216,.03054797649383545,.4999360144138336,.48308396339416504],normalized:!1},color:{itemSize:4,type:"Uint16Array",array:[65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535],normalized:!0}},index:{type:"Uint16Array",array:[3,87,79,95,7,11,91,15,99,103,19,111,83,23,115,127,27,123,31,239,131,235,35,143,231,211,151,104,163,37,40,179,169,191,175,47,187,183,51,55,199,219,200,215,57,63,119,135,147,195,139,207,67,155,220,159,69,227,75,167,42,173,189,176,201,56,168,116,60,58,73,225,144,172,193,36,164,72,49,65,205,106,222,70,221,197,157,92,12,88,233,145,137,54,43,190,148,68,156,140,152,64,52,48,196,117,24,132,228,16,209,229,204,153,125,5,25,124,224,165,202,217,212,192,237,136,0,4,93,133,129,61,85,81,113,100,96,17,76,236,28,80,109,21,97,161,105,188,180,185,26,78,30,10,126,166,206,158,198,86,114,234,110,230,154,62,130,194,59,226,122,107,210,18,74,214,218,102,2,94,112,33,232,66,46,146,42,170,173,176,41,201,168,177,116,58,213,73,144,44,172,36,160,164,49,181,65,106,38,222,221,216,197,92,8,12,233,141,145,190,186,54,54,203,43,148,208,68,140,32,152,52,184,48,117,120,24,228,108,16,229,149,204,125,9,5,124,121,224,202,53,217,192,128,237,0,77,4,133,29,129,85,1,81,100,89,96,76,84,236,80,101,109,97,13,161,188,45,180,30,134,26,26,6,78,166,162,14,14,10,166,198,50,206,206,150,158,234,138,238,238,86,234,154,34,22,22,110,154,174,171,194,171,62,194,118,178,122,178,59,122,18,98,107,107,71,210,223,39,218,39,74,218,94,90,102,102,82,2,112,20,33,146,142,66,66,182,46]},boundingSphere:{center:[0,0,0],radius:146.65657531498138}},faceValues:[10,17,3,16,8,7,12,20,6,19,5,18,4,11,13,15,2,14,9,1],rotationCombinations:{"1,2":[-58,18,148],"1,3":[-21,-30,-69],"1,4":[-159,-30,69],"1,5":[-122,18,32],"1,6":[58,-54,-148],"1,7":[-58,18,-31],"1,8":[180,0,180],"1,9":[58,-54,30],"1,10":[122,54,-148],"1,11":[-122,-54,31],"1,12":[-58,54,-148],"1,13":[58,18,31],"1,14":[58,-18,148],"1,15":[148,90,-58],"1,16":[122,-18,-148],"1,17":[159,30,-110],"1,18":[21,30,110],"1,19":[158,-30,-69],"1,20":[0,0,180],"2,3":[-159,-30,68],"2,4":[-159,-30,-110],"2,5":[122,-54,148],"2,6":[-122,54,148],"2,7":[-32,-90,-122],"2,8":[-20,30,69],"2,9":[-122,54,-32],"2,10":[58,18,30],"2,11":[-180,90,90],"2,12":[21,-30,69],"2,13":[-21,30,-110],"2,14":[158,30,-110],"2,15":[21,-30,-110],"2,16":[0,90,90],"2,17":[-58,-54,148],"2,18":[-58,-54,-32],"2,19":[158,30,69],"2,20":[58,54,-30],"3,4":[0,0,180],"3,5":[-158,30,-69],"3,6":[90,0,90],"3,7":[-159,-30,-110],"3,8":[158,-30,110],"3,9":[90,0,-90],"3,10":[-58,18,-32],"3,11":[58,-54,-148],"3,12":[-90,0,-90],"3,13":[-21,-30,110],"3,14":[21,-30,-110],"3,15":[-90,0,90],"3,16":[58,-54,30],"3,17":[-180,0,180],"3,18":[180,0,0],"3,19":[58,54,-32],"3,20":[158,30,69],"4,5":[58,-18,-32],"4,6":[-58,18,148],"4,7":[158,30,69],"4,8":[-90,-90,0],"4,9":[-58,18,-32],"4,10":[58,-18,148],"4,11":[-122,-18,148],"4,12":[122,18,-32],"4,13":[0,-90,-90],"4,14":[-122,18,-148],"4,15":[122,18,148],"4,16":[-122,-18,-32],"4,17":[58,-54,-148],"4,18":[58,54,-32],"4,19":[-58,-54,148],"4,20":[-158,-30,-110],"5,6":[-122,-18,148],"5,7":[122,54,30],"5,8":[58,-54,-148],"5,9":[-122,-54,-148],"5,10":[0,0,180],"5,11":[-58,-54,-32],"5,12":[58,54,-32],"5,13":[-58,18,-32],"5,14":[180,0,-180],"5,15":[58,54,148],"5,16":[-58,-54,148],"5,17":[122,18,-32],"5,18":[-58,54,32],"5,19":[-180,0,0],"5,20":[-122,54,148],"6,7":[-159,30,110],"6,8":[-58,-54,-32],"6,9":[21,30,-69],"6,10":[122,-54,148],"6,11":[58,54,-32],"6,12":[159,-30,110],"6,13":[-122,54,148],"6,14":[-21,-30,-69],"6,15":[159,-30,-69],"6,16":[58,54,148],"6,17":[90,-90,-180],"6,18":[122,18,-32],"6,19":[-21,-30,110],"6,20":[122,54,32],"7,8":[21,-30,-110],"7,9":[159,-30,-69],"7,10":[21,30,-69],"7,11":[90,0,90],"7,12":[-58,54,32],"7,13":[122,54,32],"7,14":[58,-54,-148],"7,15":[-21,30,69],"7,16":[90,0,-90],"7,17":[58,54,-32],"7,18":[-21,-30,110],"7,19":[-159,-30,-110],"7,20":[-158,30,110],"8,9":[122,54,-148],"8,10":[58,-54,32],"8,11":[-58,54,-148],"8,12":[-122,-54,32],"8,13":[0,0,180],"8,14":[122,18,-32],"8,15":[0,-90,90],"8,16":[-58,54,32],"8,17":[-90,0,90],"8,18":[-90,0,-90],"8,19":[-122,54,148],"8,20":[180,0,0],"9,10":[-159,-30,-110],"9,11":[58,-18,-32],"9,12":[180,0,180],"9,13":[58,54,-32],"9,14":[21,30,110],"9,15":[-180,0,0],"9,16":[-58,-54,-32],"9,17":[-122,-18,-32],"9,18":[90,90,0],"9,19":[-58,-18,32],"9,20":[-58,54,-148],"10,11":[58,54,148],"10,12":[-58,-18,32],"10,13":[58,-18,148],"10,14":[90,0,-90],"10,15":[-58,-54,-32],"10,16":[120,-18,32],"10,17":[-122,-18,148],"10,18":[58,-54,-148],"10,19":[-180,0,-180],"10,20":[122,-54,-32],"11,12":[159,30,-110],"11,13":[-159,-30,69],"11,14":[21,-30,69],"11,15":[122,18,-32],"11,16":[0,0,-180],"11,17":[159,-30,-69],"11,18":[58,18,32],"11,19":[-122,-54,30],"11,20":[21,30,110],"12,13":[58,54,148],"12,14":[-122,18,32],"12,15":[0,0,-180],"12,16":[-122,54,148],"12,17":[-110,-90,159],"12,18":[58,18,-148],"12,19":[159,-30,110],"12,20":[90,0,-90],"13,14":[122,-54,148],"13,15":[58,54,-32],"13,16":[-58,-18,-148],"13,17":[-21,30,-110],"13,18":[-21,30,69],"13,19":[122,-54,-32],"13,20":[-180,0,-180],"14,15":[122,-18,-148],"14,16":[21,30,110],"14,17":[58,-18,148],"14,18":[58,-18,-32],"14,19":[0,0,-180],"14,20":[58,18,32],"15,16":[159,30,-110],"15,17":[58,-18,-32],"15,18":[-58,-18,32],"15,19":[122,-18,32],"15,20":[58,-54,-148],"16,17":[122,-54,148],"16,18":[122,-54,-32],"16,19":[122,54,-148],"16,20":[-122,54,-32],"17,18":[0,0,180],"17,19":[122,-54,148],"17,20":[21,-30,-110],"18,19":[-159,-30,69],"18,20":[158,30,-110],"19,20":[58,54,148]}},d24:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"D1B379DE-9640-4151-A394-D6DF1846E49C",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-93.4049072265625,-3.781350612640381,3.7816989421844482,-93.4049072265625,-3.781350612640381,3.7816989421844482,-93.4049072265625,-3.781350612640381,3.7816989421844482,-93.4049072265625,-3.781350612640381,3.7816989421844482,-49.7835578918457,55.42812728881836,-49.783199310302734,-49.7835578918457,55.42812728881836,-49.783199310302734,-49.7835578918457,55.42812728881836,-49.783199310302734,-49.7835578918457,55.42812728881836,-49.783199310302734,-63.36488342285156,68.7131118774414,-3.781550168991089,-63.36488342285156,68.7131118774414,-3.781550168991089,-63.36488342285156,68.7131118774414,-3.781550168991089,-63.36488342285156,68.7131118774414,-3.781550168991089,-3.7813644409179688,93.4049301147461,-3.7813427448272705,-3.7813644409179688,93.4049301147461,-3.7813427448272705,-3.7813644409179688,93.4049301147461,-3.7813427448272705,-3.7813644409179688,93.4049301147461,-3.7813427448272705,3.7820396423339844,63.364871978759766,68.71309661865234,3.7820396423339844,63.364871978759766,68.71309661865234,3.7820396423339844,63.364871978759766,68.71309661865234,3.7820396423339844,63.364871978759766,68.71309661865234,49.78358840942383,49.783382415771484,55.427940368652344,49.78358840942383,49.783382415771484,55.427940368652344,49.78358840942383,49.783382415771484,55.427940368652344,49.78358840942383,49.783382415771484,55.427940368652344,-93.40494537353516,3.7813589572906494,-3.781012773513794,-93.40494537353516,3.7813589572906494,-3.781012773513794,-93.40494537353516,3.7813589572906494,-3.781012773513794,-93.40494537353516,3.7813589572906494,-3.781012773513794,-55.42829895019531,49.78338623046875,-49.78317642211914,-55.42829895019531,49.78338623046875,-49.78317642211914,-55.42829895019531,49.78338623046875,-49.78317642211914,-55.42829895019531,49.78338623046875,-49.78317642211914,-63.3648567199707,68.7131118774414,3.7820181846618652,-63.3648567199707,68.7131118774414,3.7820181846618652,-63.3648567199707,68.7131118774414,3.7820181846618652,-63.3648567199707,68.7131118774414,3.7820181846618652,49.7835693359375,55.42811965942383,49.783199310302734,49.7835693359375,55.42811965942383,49.783199310302734,49.7835693359375,55.42811965942383,49.783199310302734,49.7835693359375,55.42811965942383,49.783199310302734,63.364891052246094,68.7131118774414,3.781550168991089,63.364891052246094,68.7131118774414,3.781550168991089,63.364891052246094,68.7131118774414,3.781550168991089,63.364891052246094,68.7131118774414,3.781550168991089,63.3646240234375,3.781778573989868,-68.71334075927734,63.3646240234375,3.781778573989868,-68.71334075927734,63.3646240234375,3.781778573989868,-68.71334075927734,63.3646240234375,3.781778573989868,-68.71334075927734,68.71309661865234,63.3648681640625,-3.7820355892181396,68.71309661865234,63.3648681640625,-3.7820355892181396,68.71309661865234,63.3648681640625,-3.7820355892181396,68.71309661865234,63.3648681640625,-3.7820355892181396,93.4049072265625,3.781350612640381,-3.7816996574401855,93.4049072265625,3.781350612640381,-3.7816996574401855,93.4049072265625,3.781350612640381,-3.7816996574401855,93.4049072265625,3.781350612640381,-3.7816996574401855,68.71288299560547,3.781782865524292,-63.36511993408203,68.71288299560547,3.781782865524292,-63.36511993408203,68.71288299560547,3.781782865524292,-63.36511993408203,68.71288299560547,3.781782865524292,-63.36511993408203,55.42794418334961,49.783382415771484,-49.7835807800293,55.42794418334961,49.783382415771484,-49.7835807800293,55.42794418334961,49.783382415771484,-49.7835807800293,55.42794418334961,49.783382415771484,-49.7835807800293,49.783203125,55.42811965942383,-49.7835578918457,49.783203125,55.42811965942383,-49.7835578918457,49.783203125,55.42811965942383,-49.7835578918457,49.783203125,55.42811965942383,-49.7835578918457,3.7813453674316406,93.4049301147461,-3.781369686126709,3.7813453674316406,93.4049301147461,-3.781369686126709,3.7813453674316406,93.4049301147461,-3.781369686126709,3.7813453674316406,93.4049301147461,-3.781369686126709,93.40494537353516,-3.7813589572906494,3.7810134887695312,93.40494537353516,-3.7813589572906494,3.7810134887695312,93.40494537353516,-3.7813589572906494,3.7810134887695312,93.40494537353516,-3.7813589572906494,3.7810134887695312,-3.7816996574401855,3.7813563346862793,-93.40489196777344,-3.7816996574401855,3.7813563346862793,-93.40489196777344,-3.7816996574401855,3.7813563346862793,-93.40489196777344,-3.7816996574401855,3.7813563346862793,-93.40489196777344,-49.7835807800293,49.78338623046875,-55.427940368652344,-49.7835807800293,49.78338623046875,-55.427940368652344,-49.7835807800293,49.78338623046875,-55.427940368652344,-49.7835807800293,49.78338623046875,-55.427940368652344,55.428306579589844,49.783382415771484,49.78317642211914,55.428306579589844,49.783382415771484,49.78317642211914,55.428306579589844,49.783382415771484,49.78317642211914,55.428306579589844,49.783382415771484,49.78317642211914,-3.7813727855682373,-93.4049301147461,-3.781342029571533,-3.7813727855682373,-93.4049301147461,-3.781342029571533,-3.7813727855682373,-93.4049301147461,-3.781342029571533,-3.7813727855682373,-93.4049301147461,-3.781342029571533,-68.71334838867188,-3.781782865524292,-63.36461639404297,-68.71334838867188,-3.781782865524292,-63.36461639404297,-68.71334838867188,-3.781782865524292,-63.36461639404297,-68.71334838867188,-3.781782865524292,-63.36461639404297,-3.7820396423339844,-63.364871978759766,-68.71309661865234,-3.7820396423339844,-63.364871978759766,-68.71309661865234,-3.7820396423339844,-63.364871978759766,-68.71309661865234,-3.7820396423339844,-63.364871978759766,-68.71309661865234,-49.7835807800293,-49.783382415771484,-55.427940368652344,-49.7835807800293,-49.783382415771484,-55.427940368652344,-49.7835807800293,-49.783382415771484,-55.427940368652344,-49.7835807800293,-49.783382415771484,-55.427940368652344,63.3648567199707,-68.7131118774414,-3.7820160388946533,63.3648567199707,-68.7131118774414,-3.7820160388946533,63.3648567199707,-68.7131118774414,-3.7820160388946533,63.3648567199707,-68.7131118774414,-3.7820160388946533,3.781336784362793,-93.4049301147461,-3.7813704013824463,3.781336784362793,-93.4049301147461,-3.7813704013824463,3.781336784362793,-93.4049301147461,-3.7813704013824463,3.781336784362793,-93.4049301147461,-3.7813704013824463,3.7815499305725098,-68.7131118774414,-63.36488342285156,3.7815499305725098,-68.7131118774414,-63.36488342285156,3.7815499305725098,-68.7131118774414,-63.36488342285156,3.7815499305725098,-68.7131118774414,-63.36488342285156,-63.3646240234375,3.781787157058716,68.71334075927734,-63.3646240234375,3.781787157058716,68.71334075927734,-63.3646240234375,3.781787157058716,68.71334075927734,-63.3646240234375,3.781787157058716,68.71334075927734,3.7820351123809814,-63.364871978759766,68.71309661865234,3.7820351123809814,-63.364871978759766,68.71309661865234,3.7820351123809814,-63.364871978759766,68.71309661865234,3.7820351123809814,-63.364871978759766,68.71309661865234,63.3651237487793,-3.781787157058716,68.71287536621094,63.3651237487793,-3.781787157058716,68.71287536621094,63.3651237487793,-3.781787157058716,68.71287536621094,63.3651237487793,-3.781787157058716,68.71287536621094,55.42794418334961,-49.783382415771484,-49.7835807800293,55.42794418334961,-49.783382415771484,-49.7835807800293,55.42794418334961,-49.783382415771484,-49.7835807800293,55.42794418334961,-49.783382415771484,-49.7835807800293,-93.4049072265625,3.7813589572906494,3.7816996574401855,-93.4049072265625,3.7813589572906494,3.7816996574401855,-93.4049072265625,3.7813589572906494,3.7816996574401855,-93.4049072265625,3.7813589572906494,3.7816996574401855,-55.42794418334961,49.78338623046875,49.7835807800293,-55.42794418334961,49.78338623046875,49.7835807800293,-55.42794418334961,49.78338623046875,49.7835807800293,-55.42794418334961,49.78338623046875,49.7835807800293,68.71311950683594,-63.3648796081543,3.7815308570861816,68.71311950683594,-63.3648796081543,3.7815308570861816,68.71311950683594,-63.3648796081543,3.7815308570861816,68.71311950683594,-63.3648796081543,3.7815308570861816,3.781013250350952,3.7813565731048584,-93.4049301147461,3.781013250350952,3.7813565731048584,-93.4049301147461,3.781013250350952,3.7813565731048584,-93.4049301147461,3.781013250350952,3.7813565731048584,-93.4049301147461,-63.3651237487793,3.781787157058716,-68.71288299560547,-63.3651237487793,3.781787157058716,-68.71288299560547,-63.3651237487793,3.781787157058716,-68.71288299560547,-63.3651237487793,3.781787157058716,-68.71288299560547,-63.3651237487793,-3.781778573989868,-68.71287536621094,-63.3651237487793,-3.781778573989868,-68.71287536621094,-63.3651237487793,-3.781778573989868,-68.71287536621094,-63.3651237487793,-3.781778573989868,-68.71287536621094,3.7815260887145996,-63.364871978759766,-68.71311950683594,3.7815260887145996,-63.364871978759766,-68.71311950683594,3.7815260887145996,-63.364871978759766,-68.71311950683594,3.7815260887145996,-63.364871978759766,-68.71311950683594,-3.781545639038086,68.7131118774414,63.36488342285156,-3.781545639038086,68.7131118774414,63.36488342285156,-3.781545639038086,68.7131118774414,63.36488342285156,-3.781545639038086,68.7131118774414,63.36488342285156,-3.7815303802490234,63.364871978759766,68.71312713623047,-3.7815303802490234,63.364871978759766,68.71312713623047,-3.7815303802490234,63.364871978759766,68.71312713623047,-3.7815303802490234,63.364871978759766,68.71312713623047,3.7820241451263428,68.7131118774414,63.3648567199707,3.7820241451263428,68.7131118774414,63.3648567199707,3.7820241451263428,68.7131118774414,63.3648567199707,3.7820241451263428,68.7131118774414,63.3648567199707,3.7820115089416504,-68.7131118774414,63.3648567199707,3.7820115089416504,-68.7131118774414,63.3648567199707,3.7820115089416504,-68.7131118774414,63.3648567199707,3.7820115089416504,-68.7131118774414,63.3648567199707,93.4049072265625,-3.7813589572906494,-3.7816989421844482,93.4049072265625,-3.7813589572906494,-3.7816989421844482,93.4049072265625,-3.7813589572906494,-3.7816989421844482,93.4049072265625,-3.7813589572906494,-3.7816989421844482,63.36486053466797,68.7131118774414,-3.7820181846618652,63.36486053466797,68.7131118774414,-3.7820181846618652,63.36486053466797,68.7131118774414,-3.7820181846618652,63.36486053466797,68.7131118774414,-3.7820181846618652,68.71312713623047,63.3648681640625,3.7815330028533936,68.71312713623047,63.3648681640625,3.7815330028533936,68.71312713623047,63.3648681640625,3.7815330028533936,68.71312713623047,63.3648681640625,3.7815330028533936,3.7815349102020264,63.364871978759766,-68.71312713623047,3.7815349102020264,63.364871978759766,-68.71312713623047,3.7815349102020264,63.364871978759766,-68.71312713623047,3.7815349102020264,63.364871978759766,-68.71312713623047,-3.7820308208465576,63.364871978759766,-68.71309661865234,-3.7820308208465576,63.364871978759766,-68.71309661865234,-3.7820308208465576,63.364871978759766,-68.71309661865234,-3.7820308208465576,63.364871978759766,-68.71309661865234,-68.71309661865234,-63.3648681640625,3.7820377349853516,-68.71309661865234,-63.3648681640625,3.7820377349853516,-68.71309661865234,-63.3648681640625,3.7820377349853516,-68.71309661865234,-63.3648681640625,3.7820377349853516,-68.71312713623047,-63.3648681640625,-3.7815308570861816,-68.71312713623047,-63.3648681640625,-3.7815308570861816,-68.71312713623047,-63.3648681640625,-3.7815308570861816,-68.71312713623047,-63.3648681640625,-3.7815308570861816,-55.42830276489258,-49.783382415771484,-49.78317642211914,-55.42830276489258,-49.783382415771484,-49.78317642211914,-55.42830276489258,-49.783382415771484,-49.78317642211914,-55.42830276489258,-49.783382415771484,-49.78317642211914,3.7813644409179688,-93.4049301147461,3.781342029571533,3.7813644409179688,-93.4049301147461,3.781342029571533,3.7813644409179688,-93.4049301147461,3.781342029571533,3.7813644409179688,-93.4049301147461,3.781342029571533,63.36488342285156,-68.7131118774414,3.781552314758301,63.36488342285156,-68.7131118774414,3.781552314758301,63.36488342285156,-68.7131118774414,3.781552314758301,63.36488342285156,-68.7131118774414,3.781552314758301,93.40494537353516,3.781350612640381,3.781012773513794,93.40494537353516,3.781350612640381,3.781012773513794,93.40494537353516,3.781350612640381,3.781012773513794,93.40494537353516,3.781350612640381,3.781012773513794,-3.7810142040252686,-3.781355857849121,93.4049301147461,-3.7810142040252686,-3.781355857849121,93.4049301147461,-3.7810142040252686,-3.781355857849121,93.4049301147461,-3.7810142040252686,-3.781355857849121,93.4049301147461,-63.36488723754883,-68.7131118774414,-3.781552314758301,-63.36488723754883,-68.7131118774414,-3.781552314758301,-63.36488723754883,-68.7131118774414,-3.781552314758301,-63.36488723754883,-68.7131118774414,-3.781552314758301,-3.7813453674316406,-93.4049301147461,3.7813704013824463,-3.7813453674316406,-93.4049301147461,3.7813704013824463,-3.7813453674316406,-93.4049301147461,3.7813704013824463,-3.7813453674316406,-93.4049301147461,3.7813704013824463,-63.364864349365234,-68.7131118774414,3.7820160388946533,-63.364864349365234,-68.7131118774414,3.7820160388946533,-63.364864349365234,-68.7131118774414,3.7820160388946533,-63.364864349365234,-68.7131118774414,3.7820160388946533,-3.7816994190216064,-3.7813565731048584,-93.40489196777344,-3.7816994190216064,-3.7813565731048584,-93.40489196777344,-3.7816994190216064,-3.7813565731048584,-93.40489196777344,-3.7816994190216064,-3.7813565731048584,-93.40489196777344,63.3646240234375,-3.781787157058716,-68.71334838867188,63.3646240234375,-3.781787157058716,-68.71334838867188,63.3646240234375,-3.781787157058716,-68.71334838867188,63.3646240234375,-3.781787157058716,-68.71334838867188,3.7810134887695312,-3.7813563346862793,-93.4049301147461,3.7810134887695312,-3.7813563346862793,-93.4049301147461,3.7810134887695312,-3.7813563346862793,-93.4049301147461,3.7810134887695312,-3.7813563346862793,-93.4049301147461,68.71309661865234,-63.364871978759766,-3.7820377349853516,68.71309661865234,-63.364871978759766,-3.7820377349853516,68.71309661865234,-63.364871978759766,-3.7820377349853516,68.71309661865234,-63.364871978759766,-3.7820377349853516,68.71288299560547,-3.781787157058716,-63.36511993408203,68.71288299560547,-3.781787157058716,-63.36511993408203,68.71288299560547,-3.781787157058716,-63.36511993408203,68.71288299560547,-3.781787157058716,-63.36511993408203,-93.40494537353516,-3.781350612640381,-3.7810134887695312,-93.40494537353516,-3.781350612640381,-3.7810134887695312,-93.40494537353516,-3.781350612640381,-3.7810134887695312,-93.40494537353516,-3.781350612640381,-3.7810134887695312,-68.71312713623047,63.364871978759766,-3.7815330028533936,-68.71312713623047,63.364871978759766,-3.7815330028533936,-68.71312713623047,63.364871978759766,-3.7815330028533936,-68.71312713623047,63.364871978759766,-3.7815330028533936,68.71334838867188,-3.7817912101745605,63.36461639404297,68.71334838867188,-3.7817912101745605,63.36461639404297,68.71334838867188,-3.7817912101745605,63.36461639404297,68.71334838867188,-3.7817912101745605,63.36461639404297,-3.782020092010498,-68.7131118774414,-63.3648567199707,-3.782020092010498,-68.7131118774414,-63.3648567199707,-3.782020092010498,-68.7131118774414,-63.3648567199707,-3.782020092010498,-68.7131118774414,-63.3648567199707,-3.781336784362793,93.4049301147461,3.781369686126709,-3.781336784362793,93.4049301147461,3.781369686126709,-3.781336784362793,93.4049301147461,3.781369686126709,-3.781336784362793,93.4049301147461,3.781369686126709,3.7813727855682373,93.4049301147461,3.7813427448272705,3.7813727855682373,93.4049301147461,3.7813427448272705,3.7813727855682373,93.4049301147461,3.7813427448272705,3.7813727855682373,93.4049301147461,3.7813427448272705,3.781700372695923,3.781355857849121,93.40489196777344,3.781700372695923,3.781355857849121,93.40489196777344,3.781700372695923,3.781355857849121,93.40489196777344,3.781700372695923,3.781355857849121,93.40489196777344,3.7816989421844482,-3.7813572883605957,93.40489196777344,3.7816989421844482,-3.7813572883605957,93.40489196777344,3.7816989421844482,-3.7813572883605957,93.40489196777344,3.7816989421844482,-3.7813572883605957,93.40489196777344,-3.781012773513794,3.7813572883605957,93.4049301147461,-3.781012773513794,3.7813572883605957,93.4049301147461,-3.781012773513794,3.7813572883605957,93.4049301147461,-3.781012773513794,3.7813572883605957,93.4049301147461,3.7815542221069336,68.7131118774414,-63.36488342285156,3.7815542221069336,68.7131118774414,-63.36488342285156,3.7815542221069336,68.7131118774414,-63.36488342285156,3.7815542221069336,68.7131118774414,-63.36488342285156,-49.78318405151367,-49.783382415771484,55.42829895019531,-49.78318405151367,-49.783382415771484,55.42829895019531,-49.78318405151367,-49.783382415771484,55.42829895019531,-49.78318405151367,-49.783382415771484,55.42829895019531,49.7835807800293,-49.783382415771484,55.42793655395508,49.7835807800293,-49.783382415771484,55.42793655395508,49.7835807800293,-49.783382415771484,55.42793655395508,49.7835807800293,-49.783382415771484,55.42793655395508,49.783565521240234,-55.42811965942383,49.78319549560547,49.783565521240234,-55.42811965942383,49.78319549560547,49.783565521240234,-55.42811965942383,49.78319549560547,49.783565521240234,-55.42811965942383,49.78319549560547,55.42829895019531,-49.783382415771484,49.783172607421875,55.42829895019531,-49.783382415771484,49.783172607421875,55.42829895019531,-49.783382415771484,49.783172607421875,55.42829895019531,-49.783382415771484,49.783172607421875,-49.7835578918457,-55.42811965942383,-49.783199310302734,-49.7835578918457,-55.42811965942383,-49.783199310302734,-49.7835578918457,-55.42811965942383,-49.783199310302734,-49.7835578918457,-55.42811965942383,-49.783199310302734,-49.783199310302734,-55.42811965942383,49.7835578918457,-49.783199310302734,-55.42811965942383,49.7835578918457,-49.783199310302734,-55.42811965942383,49.7835578918457,-49.783199310302734,-55.42811965942383,49.7835578918457,49.78318405151367,-49.783382415771484,-55.42829895019531,49.78318405151367,-49.783382415771484,-55.42829895019531,49.78318405151367,-49.783382415771484,-55.42829895019531,49.78318405151367,-49.783382415771484,-55.42829895019531,-55.42794418334961,-49.783382415771484,49.7835807800293,-55.42794418334961,-49.783382415771484,49.7835807800293,-55.42794418334961,-49.783382415771484,49.7835807800293,-55.42794418334961,-49.783382415771484,49.7835807800293,49.78318405151367,49.783382415771484,-55.42829895019531,49.78318405151367,49.783382415771484,-55.42829895019531,49.78318405151367,49.783382415771484,-55.42829895019531,49.78318405151367,49.783382415771484,-55.42829895019531,-49.78318405151367,49.78338623046875,55.42829895019531,-49.78318405151367,49.78338623046875,55.42829895019531,-49.78318405151367,49.78338623046875,55.42829895019531,-49.78318405151367,49.78338623046875,55.42829895019531,-49.783199310302734,55.42812728881836,49.7835578918457,-49.783199310302734,55.42812728881836,49.7835578918457,-49.783199310302734,55.42812728881836,49.7835578918457,-49.783199310302734,55.42812728881836,49.7835578918457,-63.3646240234375,-3.781782865524292,68.71334838867188,-63.3646240234375,-3.781782865524292,68.71334838867188,-63.3646240234375,-3.781782865524292,68.71334838867188,-63.3646240234375,-3.781782865524292,68.71334838867188,-68.71288299560547,-3.781778573989868,63.36511993408203,-68.71288299560547,-3.781778573989868,63.36511993408203,-68.71288299560547,-3.781778573989868,63.36511993408203,-68.71288299560547,-3.781778573989868,63.36511993408203,-3.7815349102020264,-63.364871978759766,68.71311950683594,-3.7815349102020264,-63.364871978759766,68.71311950683594,-3.7815349102020264,-63.364871978759766,68.71311950683594,-3.7815349102020264,-63.364871978759766,68.71311950683594,-3.7815582752227783,-68.7131118774414,63.36488342285156,-3.7815582752227783,-68.7131118774414,63.36488342285156,-3.7815582752227783,-68.7131118774414,63.36488342285156,-3.7815582752227783,-68.7131118774414,63.36488342285156,-3.782015800476074,68.7131118774414,-63.3648567199707,-3.782015800476074,68.7131118774414,-63.3648567199707,-3.782015800476074,68.7131118774414,-63.3648567199707,-3.782015800476074,68.7131118774414,-63.3648567199707,-68.71334838867188,3.781787157058716,-63.36461639404297,-68.71334838867188,3.781787157058716,-63.36461639404297,-68.71334838867188,3.781787157058716,-63.36461639404297,-68.71334838867188,3.781787157058716,-63.36461639404297,63.3651237487793,3.781782865524292,68.71288299560547,63.3651237487793,3.781782865524292,68.71288299560547,63.3651237487793,3.781782865524292,68.71288299560547,63.3651237487793,3.781782865524292,68.71288299560547,68.71334838867188,3.781778573989868,63.36461639404297,68.71334838867188,3.781778573989868,63.36461639404297,68.71334838867188,3.781778573989868,63.36461639404297,68.71334838867188,3.781778573989868,63.36461639404297,-68.71309661865234,63.3648796081543,3.7820355892181396,-68.71309661865234,63.3648796081543,3.7820355892181396,-68.71309661865234,63.3648796081543,3.7820355892181396,-68.71309661865234,63.3648796081543,3.7820355892181396,-68.71288299560547,3.7817912101745605,63.36511993408203,-68.71288299560547,3.7817912101745605,63.36511993408203,-68.71288299560547,3.7817912101745605,63.36511993408203,-68.71288299560547,3.7817912101745605,63.36511993408203,49.783203125,-55.42811965942383,-49.7835578918457,49.783203125,-55.42811965942383,-49.7835578918457,49.783203125,-55.42811965942383,-49.7835578918457,49.783203125,-55.42811965942383,-49.7835578918457],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.8930176496505737,-.31821155548095703,.31821513175964355,-.8930176496505737,-.31821155548095703,.31821513175964355,-.8930176496505737,-.31821155548095703,.31821513175964355,-.8930176496505737,-.31821155548095703,.31821513175964355,-.3939540982246399,.8304173350334167,-.3939635753631592,-.3939540982246399,.8304173350334167,-.3939635753631592,-.3939540982246399,.8304173350334167,-.3939635753631592,-.3939540982246399,.8304173350334167,-.3939635753631592,-.39820414781570435,.8611265420913696,-.31606101989746094,-.39820414781570435,.8611265420913696,-.31606101989746094,-.39820414781570435,.8611265420913696,-.31606101989746094,-.39820414781570435,.8611265420913696,-.31606101989746094,-.3181779980659485,.8930322527885437,-.3182079792022705,-.3181779980659485,.8930322527885437,-.3182079792022705,-.3181779980659485,.8930322527885437,-.3182079792022705,-.3181779980659485,.8930322527885437,-.3182079792022705,.3160579800605774,.3982042074203491,.8611275553703308,.3160579800605774,.3982042074203491,.8611275553703308,.3160579800605774,.3982042074203491,.8611275553703308,.3160579800605774,.3982042074203491,.8611275553703308,.39394938945770264,.39396142959594727,.8304205536842346,.39394938945770264,.39396142959594727,.8304205536842346,.39394938945770264,.39396142959594727,.8304205536842346,.39394938945770264,.39396142959594727,.8304205536842346,-.8930201530456543,.3182116746902466,-.31820809841156006,-.8930201530456543,.3182116746902466,-.31820809841156006,-.8930201530456543,.3182116746902466,-.31820809841156006,-.8930201530456543,.3182116746902466,-.31820809841156006,-.8304393887519836,.3939298987388611,-.39394134283065796,-.8304393887519836,.3939298987388611,-.39394134283065796,-.8304393887519836,.3939298987388611,-.39394134283065796,-.8304393887519836,.3939298987388611,-.39394134283065796,-.39819657802581787,.8611276745796204,.31606724858283997,-.39819657802581787,.8611276745796204,.31606724858283997,-.39819657802581787,.8611276745796204,.31606724858283997,-.39819657802581787,.8611276745796204,.31606724858283997,.3939548134803772,.8304223418235779,.3939521610736847,.3939548134803772,.8304223418235779,.3939521610736847,.3939548134803772,.8304223418235779,.3939521610736847,.3939548134803772,.8304223418235779,.3939521610736847,.398190438747406,.8611446022987366,.31602901220321655,.398190438747406,.8611446022987366,.31602901220321655,.398190438747406,.8611446022987366,.31602901220321655,.398190438747406,.8611446022987366,.31602901220321655,.39820146560668945,.3160552680492401,-.8611298203468323,.39820146560668945,.3160552680492401,-.8611298203468323,.39820146560668945,.3160552680492401,-.8611298203468323,.39820146560668945,.3160552680492401,-.8611298203468323,.8611258268356323,.39821386337280273,-.31605064868927,.8611258268356323,.39821386337280273,-.31605064868927,.8611258268356323,.39821386337280273,-.31605064868927,.8611258268356323,.39821386337280273,-.31605064868927,.8930308818817139,.3181929588317871,-.318196564912796,.8930308818817139,.3181929588317871,-.318196564912796,.8930308818817139,.3181929588317871,-.318196564912796,.8930308818817139,.3181929588317871,-.318196564912796,.8611277937889099,.3160572052001953,-.39820432662963867,.8611277937889099,.3160572052001953,-.39820432662963867,.8611277937889099,.3160572052001953,-.39820432662963867,.8611277937889099,.3160572052001953,-.39820432662963867,.8304156064987183,.3939667344093323,-.3939545154571533,.8304156064987183,.3939667344093323,-.3939545154571533,.8304156064987183,.3939667344093323,-.3939545154571533,.8304156064987183,.3939667344093323,-.3939545154571533,.39395228028297424,.8304221630096436,-.3939549922943115,.39395228028297424,.8304221630096436,-.3939549922943115,.39395228028297424,.8304221630096436,-.3939549922943115,.39395228028297424,.8304221630096436,-.3939549922943115,.31819266080856323,.893029510974884,-.31820082664489746,.31819266080856323,.893029510974884,-.31820082664489746,.31819266080856323,.893029510974884,-.31820082664489746,.31819266080856323,.893029510974884,-.31820082664489746,.8930361866950989,-.3181893527507782,.3181857466697693,.8930361866950989,-.3181893527507782,.3181857466697693,.8930361866950989,-.3181893527507782,.3181857466697693,.8930361866950989,-.3181893527507782,.3181857466697693,-.3182153105735779,.31821152567863464,-.8930174708366394,-.3182153105735779,.31821152567863464,-.8930174708366394,-.3182153105735779,.31821152567863464,-.8930174708366394,-.3182153105735779,.31821152567863464,-.8930174708366394,-.3939494788646698,.39396119117736816,-.8304205536842346,-.3939494788646698,.39396119117736816,-.8304205536842346,-.3939494788646698,.39396119117736816,-.8304205536842346,-.3939494788646698,.39396119117736816,-.8304205536842346,.8304232358932495,.3939468264579773,.3939582109451294,.8304232358932495,.3939468264579773,.3939582109451294,.8304232358932495,.3939468264579773,.3939582109451294,.8304232358932495,.3939468264579773,.3939582109451294,-.3181976079940796,-.8930297493934631,-.3181954622268677,-.3181976079940796,-.8930297493934631,-.3181954622268677,-.3181976079940796,-.8930297493934631,-.3181954622268677,-.3181976079940796,-.8930297493934631,-.3181954622268677,-.8611258268356323,-.3160642981529236,-.3982030749320984,-.8611258268356323,-.3160642981529236,-.3982030749320984,-.8611258268356323,-.3160642981529236,-.3982030749320984,-.8611258268356323,-.3160642981529236,-.3982030749320984,-.31608039140701294,-.3982047438621521,-.8611190915107727,-.31608039140701294,-.3982047438621521,-.8611190915107727,-.31608039140701294,-.3982047438621521,-.8611190915107727,-.31608039140701294,-.3982047438621521,-.8611190915107727,-.3939639627933502,-.3939467966556549,-.8304204940795898,-.3939639627933502,-.3939467966556549,-.8304204940795898,-.3939639627933502,-.3939467966556549,-.8304204940795898,-.3939639627933502,-.3939467966556549,-.8304204940795898,.39820337295532227,-.8611286282539368,-.31605619192123413,.39820337295532227,-.8611286282539368,-.31605619192123413,.39820337295532227,-.8611286282539368,-.31605619192123413,.39820337295532227,-.8611286282539368,-.31605619192123413,.3181878924369812,-.8930350542068481,-.31819045543670654,.3181878924369812,-.8930350542068481,-.31819045543670654,.3181878924369812,-.8930350542068481,-.31819045543670654,.3181878924369812,-.8930350542068481,-.31819045543670654,.3160671591758728,-.8611257672309875,-.39820101857185364,.3160671591758728,-.8611257672309875,-.39820101857185364,.3160671591758728,-.8611257672309875,-.39820101857185364,.3160671591758728,-.8611257672309875,-.39820101857185364,-.3982013761997223,.3160552680492401,.861129879951477,-.3982013761997223,.3160552680492401,.861129879951477,-.3982013761997223,.3160552680492401,.861129879951477,-.3982013761997223,.3160552680492401,.861129879951477,.31605467200279236,-.39822202920913696,.8611205220222473,.31605467200279236,-.39822202920913696,.8611205220222473,.31605467200279236,-.39822202920913696,.8611205220222473,.31605467200279236,-.39822202920913696,.8611205220222473,.39822128415107727,-.3160440921783447,.8611248135566711,.39822128415107727,-.3160440921783447,.8611248135566711,.39822128415107727,-.3160440921783447,.8611248135566711,.39822128415107727,-.3160440921783447,.8611248135566711,.830415666103363,-.3939518928527832,-.39396917819976807,.830415666103363,-.3939518928527832,-.39396917819976807,.830415666103363,-.3939518928527832,-.39396917819976807,.830415666103363,-.3939518928527832,-.39396917819976807,-.8930335640907288,.31818917393684387,.3181927800178528,-.8930335640907288,.31818917393684387,.3181927800178528,-.8930335640907288,.31818917393684387,.3181927800178528,-.8930335640907288,.31818917393684387,.3181927800178528,-.8304204344749451,.3939615488052368,.39394932985305786,-.8304204344749451,.3939615488052368,.39394932985305786,-.8304204344749451,.3939615488052368,.39394932985305786,-.8304204344749451,.3939615488052368,.39394932985305786,.8611295819282532,-.39820489287376404,.3160513937473297,.8611295819282532,-.39820489287376404,.3160513937473297,.8611295819282532,-.39820489287376404,.3160513937473297,.8611295819282532,-.39820489287376404,.3160513937473297,.31818902492523193,.3181936740875244,-.8930333852767944,.31818902492523193,.3181936740875244,-.8930333852767944,.31818902492523193,.3181936740875244,-.8930333852767944,.31818902492523193,.3181936740875244,-.8930333852767944,-.3982042670249939,.3160568177700043,-.861128032207489,-.3982042670249939,.3160568177700043,-.861128032207489,-.3982042670249939,.3160568177700043,-.861128032207489,-.3982042670249939,.3160568177700043,-.861128032207489,-.3982074558734894,-.31605467200279236,-.8611272573471069,-.3982074558734894,-.31605467200279236,-.8611272573471069,-.3982074558734894,-.31605467200279236,-.8611272573471069,-.3982074558734894,-.31605467200279236,-.8611272573471069,.31604087352752686,-.3982185125350952,-.8611272573471069,.31604087352752686,-.3982185125350952,-.8611272573471069,.31604087352752686,-.3982185125350952,-.8611272573471069,.31604087352752686,-.3982185125350952,-.8611272573471069,-.31601834297180176,.8611423373222351,.39820387959480286,-.31601834297180176,.8611423373222351,.39820387959480286,-.31601834297180176,.8611423373222351,.39820387959480286,-.31601834297180176,.8611423373222351,.39820387959480286,-.31606096029281616,.39820629358291626,.8611255288124084,-.31606096029281616,.39820629358291626,.8611255288124084,-.31606096029281616,.39820629358291626,.8611255288124084,-.31606096029281616,.39820629358291626,.8611255288124084,.31606805324554443,.8611271977424622,.39819690585136414,.31606805324554443,.8611271977424622,.39819690585136414,.31606805324554443,.8611271977424622,.39819690585136414,.31606805324554443,.8611271977424622,.39819690585136414,.31605327129364014,-.8611239194869995,.3982159495353699,.31605327129364014,-.8611239194869995,.3982159495353699,.31605327129364014,-.8611239194869995,.3982159495353699,.31605327129364014,-.8611239194869995,.3982159495353699,.8930177092552185,-.31821155548095703,-.31821513175964355,.8930177092552185,-.31821155548095703,-.31821513175964355,.8930177092552185,-.31821155548095703,-.31821513175964355,.8930177092552185,-.31821155548095703,-.31821513175964355,.39822056889533997,.8611229658126831,-.3160500228404999,.39822056889533997,.8611229658126831,-.3160500228404999,.39822056889533997,.8611229658126831,-.3160500228404999,.39822056889533997,.8611229658126831,-.3160500228404999,.8611273765563965,.3982042968273163,.3160584568977356,.8611273765563965,.3982042968273163,.3160584568977356,.8611273765563965,.3982042968273163,.3160584568977356,.8611273765563965,.3982042968273163,.3160584568977356,.31604790687561035,.3982231020927429,-.8611226081848145,.31604790687561035,.3982231020927429,-.8611226081848145,.31604790687561035,.3982231020927429,-.8611226081848145,.31604790687561035,.3982231020927429,-.8611226081848145,-.3160579800605774,.39820435643196106,-.8611276149749756,-.3160579800605774,.39820435643196106,-.8611276149749756,-.3160579800605774,.39820435643196106,-.8611276149749756,-.3160579800605774,.39820435643196106,-.8611276149749756,-.8611293435096741,-.3981947600841522,.31606513261795044,-.8611293435096741,-.3981947600841522,.31606513261795044,-.8611293435096741,-.3981947600841522,.31606513261795044,-.8611293435096741,-.3981947600841522,.31606513261795044,-.8611273169517517,-.3982181251049042,-.31604093313217163,-.8611273169517517,-.3982181251049042,-.31604093313217163,-.8611273169517517,-.3982181251049042,-.31604093313217163,-.8611273169517517,-.3982181251049042,-.31604093313217163,-.8304233551025391,-.3939613699913025,-.39394333958625793,-.8304233551025391,-.3939613699913025,-.39394333958625793,-.8304233551025391,-.3939613699913025,-.39394333958625793,-.8304233551025391,-.3939613699913025,-.39394333958625793,.31822317838668823,-.8930189609527588,.31819969415664673,.31822317838668823,-.8930189609527588,.31819969415664673,.31822317838668823,-.8930189609527588,.31819969415664673,.31822317838668823,-.8930189609527588,.31819969415664673,.398205429315567,-.861126184463501,.3160603642463684,.398205429315567,-.861126184463501,.3160603642463684,.398205429315567,-.861126184463501,.3160603642463684,.398205429315567,-.861126184463501,.3160603642463684,.8930307030677795,.31819677352905273,.31819313764572144,.8930307030677795,.31819677352905273,.31819313764572144,.8930307030677795,.31819677352905273,.31819313764572144,.8930307030677795,.31819677352905273,.31819313764572144,-.31818729639053345,-.31819117069244385,.8930348753929138,-.31818729639053345,-.31819117069244385,.8930348753929138,-.31818729639053345,-.31819117069244385,.8930348753929138,-.31818729639053345,-.31819117069244385,.8930348753929138,-.39820730686187744,-.8611242771148682,-.31606295704841614,-.39820730686187744,-.8611242771148682,-.31606295704841614,-.39820730686187744,-.8611242771148682,-.31606295704841614,-.39820730686187744,-.8611242771148682,-.31606295704841614,-.3181917071342468,-.8930321931838989,.31819429993629456,-.3181917071342468,-.8930321931838989,.31819429993629456,-.3181917071342468,-.8930321931838989,.31819429993629456,-.3181917071342468,-.8930321931838989,.31819429993629456,-.39820390939712524,-.8611285090446472,.31605613231658936,-.39820390939712524,-.8611285090446472,.31605613231658936,-.39820390939712524,-.8611285090446472,.31605613231658936,-.39820390939712524,-.8611285090446472,.31605613231658936,-.3181929588317871,-.3181893825531006,-.8930334448814392,-.3181929588317871,-.3181893825531006,-.8930334448814392,-.3181929588317871,-.3181893825531006,-.8930334448814392,-.3181929588317871,-.3181893825531006,-.8930334448814392,.398214727640152,-.3160427510738373,-.8611282706260681,.398214727640152,-.3160427510738373,-.8611282706260681,.398214727640152,-.3160427510738373,-.8611282706260681,.398214727640152,-.3160427510738373,-.8611282706260681,.31819266080856323,-.31819653511047363,-.8930309414863586,.31819266080856323,-.31819653511047363,-.8930309414863586,.31819266080856323,-.31819653511047363,-.8930309414863586,.31819266080856323,-.31819653511047363,-.8930309414863586,.8611248731613159,-.39820438623428345,-.31606507301330566,.8611248731613159,-.39820438623428345,-.31606507301330566,.8611248731613159,-.39820438623428345,-.31606507301330566,.8611248731613159,-.39820438623428345,-.31606507301330566,.8611255884170532,-.3160474896430969,-.39821693301200867,.8611255884170532,-.3160474896430969,-.39821693301200867,.8611255884170532,-.3160474896430969,-.39821693301200867,.8611255884170532,-.3160474896430969,-.39821693301200867,-.8930345773696899,-.3181912899017334,-.31818774342536926,-.8930345773696899,-.3181912899017334,-.31818774342536926,-.8930345773696899,-.3181912899017334,-.31818774342536926,-.8930345773696899,-.3181912899017334,-.31818774342536926,-.8611279726028442,.3982178866863251,-.3160398602485657,-.8611279726028442,.3982178866863251,-.3160398602485657,-.8611279726028442,.3982178866863251,-.3160398602485657,-.8611279726028442,.3982178866863251,-.3160398602485657,.8611286878585815,-.3160666823387146,.39819496870040894,.8611286878585815,-.3160666823387146,.39819496870040894,.8611286878585815,-.3160666823387146,.39819496870040894,.8611286878585815,-.3160666823387146,.39819496870040894,-.31604599952697754,-.8611259460449219,-.3982173800468445,-.31604599952697754,-.8611259460449219,-.3982173800468445,-.31604599952697754,-.8611259460449219,-.3982173800468445,-.31604599952697754,-.8611259460449219,-.3982173800468445,-.3182077705860138,.8930187225341797,.31821584701538086,-.3182077705860138,.8930187225341797,.31821584701538086,-.3182077705860138,.8930187225341797,.31821584701538086,-.3182077705860138,.8930187225341797,.31821584701538086,.31819307804107666,.8930350542068481,.3181852102279663,.31819307804107666,.8930350542068481,.3181852102279663,.31819307804107666,.8930350542068481,.3181852102279663,.31819307804107666,.8930350542068481,.3181852102279663,.3181931972503662,.3181889057159424,.893033504486084,.3181931972503662,.3181889057159424,.893033504486084,.3181931972503662,.3181889057159424,.893033504486084,.3181931972503662,.3181889057159424,.893033504486084,.3182152509689331,-.3182116150856018,.893017590045929,.3182152509689331,-.3182116150856018,.893017590045929,.3182152509689331,-.3182116150856018,.893017590045929,.3182152509689331,-.3182116150856018,.893017590045929,-.3182075023651123,.31821173429489136,.8930203914642334,-.3182075023651123,.31821173429489136,.8930203914642334,-.3182075023651123,.31821173429489136,.8930203914642334,-.3182075023651123,.31821173429489136,.8930203914642334,.3160323202610016,.8611453771591187,-.39818620681762695,.3160323202610016,.8611453771591187,-.39818620681762695,.3160323202610016,.8611453771591187,-.39818620681762695,.3160323202610016,.8611453771591187,-.39818620681762695,-.39394327998161316,-.39396142959594727,.8304233551025391,-.39394327998161316,-.39396142959594727,.8304233551025391,-.39394327998161316,-.39396142959594727,.8304233551025391,-.39394327998161316,-.39396142959594727,.8304233551025391,.39394742250442505,-.3939295709133148,.8304365277290344,.39394742250442505,-.3939295709133148,.8304365277290344,.39394742250442505,-.3939295709133148,.8304365277290344,.39394742250442505,-.3939295709133148,.8304365277290344,.393976092338562,-.8304168581962585,.39394256472587585,.393976092338562,-.8304168581962585,.39394256472587585,.393976092338562,-.8304168581962585,.39394256472587585,.393976092338562,-.8304168581962585,.39394256472587585,.8304234743118286,-.39396101236343384,.3939433991909027,.8304234743118286,-.39396101236343384,.3939433991909027,.8304234743118286,-.39396101236343384,.3939433991909027,.8304234743118286,-.39396101236343384,.3939433991909027,-.3939476013183594,-.8304222822189331,-.3939594626426697,-.3939476013183594,-.8304222822189331,-.3939594626426697,-.3939476013183594,-.8304222822189331,-.3939594626426697,-.3939476013183594,-.8304222822189331,-.3939594626426697,-.3939593434333801,-.8304222822189331,.3939477205276489,-.3939593434333801,-.8304222822189331,.3939477205276489,-.3939593434333801,-.8304222822189331,.3939477205276489,-.3939593434333801,-.8304222822189331,.3939477205276489,.393926739692688,-.3939448595046997,-.8304391503334045,.393926739692688,-.3939448595046997,-.8304391503334045,.393926739692688,-.3939448595046997,-.8304391503334045,.393926739692688,-.3939448595046997,-.8304391503334045,-.8304203152656555,-.39394691586494446,.39396411180496216,-.8304203152656555,-.39394691586494446,.39396411180496216,-.8304203152656555,-.39394691586494446,.39396411180496216,-.8304203152656555,-.39394691586494446,.39396411180496216,.3939414918422699,.393930047750473,-.8304392099380493,.3939414918422699,.393930047750473,-.8304392099380493,.3939414918422699,.393930047750473,-.8304392099380493,.3939414918422699,.393930047750473,-.8304392099380493,-.3939580023288727,.39394649863243103,.8304234743118286,-.3939580023288727,.39394649863243103,.8304234743118286,-.3939580023288727,.39394649863243103,.8304234743118286,-.3939580023288727,.39394649863243103,.8304234743118286,-.39395201206207275,.8304221630096436,.39395517110824585,-.39395201206207275,.8304221630096436,.39395517110824585,-.39395201206207275,.8304221630096436,.39395517110824585,-.39395201206207275,.8304221630096436,.39395517110824585,-.39820295572280884,-.3160640299320221,.8611259460449219,-.39820295572280884,-.3160640299320221,.8611259460449219,-.39820295572280884,-.3160640299320221,.8611259460449219,-.39820295572280884,-.3160640299320221,.8611259460449219,-.8611248135566711,-.3160442113876343,.39822128415107727,-.8611248135566711,-.3160442113876343,.39822128415107727,-.8611248135566711,-.3160442113876343,.39822128415107727,-.8611248135566711,-.3160442113876343,.39822128415107727,-.31604111194610596,-.3982183337211609,.8611273169517517,-.31604111194610596,-.3982183337211609,.8611273169517517,-.31604111194610596,-.3982183337211609,.8611273169517517,-.31604111194610596,-.3982183337211609,.8611273169517517,-.3160600960254669,-.8611261248588562,.39820581674575806,-.3160600960254669,-.8611261248588562,.39820581674575806,-.3160600960254669,-.8611261248588562,.39820581674575806,-.3160600960254669,-.8611261248588562,.39820581674575806,-.31606826186180115,.8611270189285278,-.39819711446762085,-.31606826186180115,.8611270189285278,-.39819711446762085,-.31606826186180115,.8611270189285278,-.39819711446762085,-.31606826186180115,.8611270189285278,-.39819711446762085,-.8611301183700562,.3160545825958252,-.3982013463973999,-.8611301183700562,.3160545825958252,-.3982013463973999,-.8611301183700562,.3160545825958252,-.3982013463973999,-.8611301183700562,.3160545825958252,-.3982013463973999,.3982081413269043,.31607723236083984,.8611186742782593,.3982081413269043,.31607723236083984,.8611186742782593,.3982081413269043,.31607723236083984,.8611186742782593,.3982081413269043,.31607723236083984,.8611186742782593,.8611276745796204,.3160439729690552,.3982152044773102,.8611276745796204,.3160439729690552,.3982152044773102,.8611276745796204,.3160439729690552,.3982152044773102,.8611276745796204,.3160439729690552,.3982152044773102,-.8611273765563965,.39820489287376404,.3160577416419983,-.8611273765563965,.39820489287376404,.3160577416419983,-.8611273765563965,.39820489287376404,.3160577416419983,-.8611273765563965,.39820489287376404,.3160577416419983,-.8611289858818054,.3160620927810669,.3981979489326477,-.8611289858818054,.3160620927810669,.3981979489326477,-.8611289858818054,.3160620927810669,.3981979489326477,-.8611289858818054,.3160620927810669,.3981979489326477,.3939596116542816,-.8304221630096436,-.39394763112068176,.3939596116542816,-.8304221630096436,-.39394763112068176,.3939596116542816,-.8304221630096436,-.39394763112068176,.3939596116542816,-.8304221630096436,-.39394763112068176],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.04120219498872757,.12086033821105957,.05345028638839722,.08731907606124878,.11187556385993958,.0670785903930664,.6875278949737549,.13345998525619507,.04903397709131241,.004412055015563965,.0771341323852539,.03593343496322632,.11686006188392639,.03130292892456055,.31248292326927185,.10850334167480469,.0489392951130867,.02688688039779663,.06469712406396866,.01563972234725952,.0803603008389473,.0917351245880127,.3686402440071106,.07315778732299805,.08036012947559357,.12086033821105957,.09260810911655426,.08731895685195923,.10864977538585663,.015640199184417725,.31252771615982056,.008440375328063965,.07252871245145798,.0917351245880127,.08828651905059814,.02688688039779663,.10081818699836731,.02688688039779663,.4936917722225189,.19815367460250854,.08025602996349335,.04575681686401367,.08838120102882385,.004412055015563965,.1084604263305664,.0983855128288269,.4374849796295166,.23353207111358643,.037787072360515594,.08731907606124878,.049033790826797485,.08731907606124878,.1084604263305664,.06366342306137085,.18752798438072205,.38353127241134644,.04542912542819977,.004412055015563965,.08025602996349335,.034130990505218506,.1040443629026413,.06484419107437134,.18748320639133453,.4834633469581604,.006349444389343262,.5731359720230103,.006555216386914253,.02688688039779663,.06469712406396866,.01905524730682373,.07694480568170547,.0917351245880127,.030523335561156273,.02688688039779663,.0771341323852539,.043954312801361084,.08477634936571121,.004412055015563965,.4374811053276062,.35838615894317627,.014292115345597267,.12086033821105957,.03061802126467228,.004412055015563965,.0964021235704422,.015639781951904297,.4934193789958954,.32318025827407837,.053450047969818115,.01905524730682373,.06469716131687164,.0917351245880127,.09630745649337769,.05377775430679321,.49373188614845276,.44814980030059814,.009876048192381859,.0917351245880127,.09298662841320038,.01905524730682373,.11999154090881348,.09396946430206299,.6183853149414062,.3231801986694336,.00987587682902813,.12086033821105957,.029955485835671425,.12086033821105957,.06469673663377762,.007808566093444824,.562527596950531,.2587568163871765,.0299553032964468,.0917351245880127,.05686555057764053,.01905524730682373,.09289196133613586,.05377775430679321,.5065897703170776,.32315701246261597,.056571945548057556,.0421520471572876,.09279727190732956,.03130292892456055,.1200861781835556,.07149463891983032,.5624833106994629,.35836511850357056,.018086323514580727,.004412055015563965,.056571945548057556,.04575687646865845,.11648134887218475,.07149463891983032,.18748287856578827,.3584839701652527,.017707442864775658,.09173506498336792,.09602326154708862,.08731895685195923,.1120648980140686,.015640199184417725,.1875280737876892,.2584848999977112,.05345025658607483,.12086033821105957,.06128161400556564,.011223673820495605,.07252849638462067,.08731907606124878,.3125280439853668,.13357031345367432,.03337060660123825,.08731913566589355,.0769449844956398,.087319016456604,.10864977538585663,.0078089237213134766,.5625283718109131,.133742094039917,.08025602996349335,.03773587942123413,.10043948143720627,.06484419107437134,.12046489119529724,.03130292892456055,.5624833703041077,.23337173461914062,.03412818908691406,.02688688039779663,.08025602996349335,.04215192794799805,.11206528544425964,.0983855128288269,.18748319149017334,.23347699642181396,.006460724398493767,.087319016456604,.017707442864775658,.087319016456604,.06252795457839966,.25844651460647583,.1120649129152298,.023471713066101074,.014576157554984093,.05377775430679321,.04561847448348999,.058193862438201904,.1008182168006897,.01563972234725952,.25627732276916504,.44812923669815063,.006148636341094971,.4481179118156433,.05686555057764053,.026886820793151855,.08819183707237244,.12086033821105957,.10893382132053375,.05377775430679321,.018086323514580727,.03130292892456055,.056571945548057556,.05017292499542236,.06248307228088379,.48360395431518555,.10883913934230804,.03130292892456055,.025539224967360497,.05819380283355713,.07252870500087738,.01563972234725952,.1039496660232544,.12086033821105957,.49378809332847595,.07314485311508179,.014292331412434578,.087319016456604,.025539005175232887,.087319016456604,.10864977538585663,.023471713066101074,.4375278651714325,.008257150650024414,.009970692917704582,.03130298852920532,.014292115345597267,.05819380283355713,.053450047969818115,.023471355438232422,.3811866044998169,.07312166690826416,.0490339919924736,.0917351245880127,.0803602933883667,.01563972234725952,.10432836413383484,.05377775430679321,.6185856461524963,.44816309213638306,.02601257897913456,.03130292892456055,.061281636357307434,.05819380283355713,.06469713896512985,.02688688039779663,.6315924525260925,.32315754890441895,.03061799891293049,.03130292892456055,.06911320239305496,.023471355438232422,.09602341055870056,.09173518419265747,.7433825731277466,.32318103313446045,.08477634936571121,.05377775430679321,.10043948143720627,.0983855128288269,.11629162728786469,.0652761459350586,.687483012676239,.4834805130958557,.037787072360515594,.12086033821105957,.041202202439308167,.08731907606124878,.11187553405761719,.06366342306137085,.5625277757644653,.00847846269607544,.010065404698252678,.004412055015563965,.05345005542039871,.035933494567871094,.1008182168006897,.03130298852920532,.5624833703041077,.10848653316497803,.02601257897913456,.02688688039779663,.06911320239305496,.01905524730682373,.07252870500087738,.05819380283355713,.3685356378555298,.19816696643829346,.029955485835671425,.08731913566589355,.06469696015119553,.12086033821105957,.10864977538585663,.011224091053009033,.43752849102020264,.38332629203796387,.07694479078054428,.05819380283355713,.10053417086601257,.08731895685195923,.10423369705677032,.01905524730682373,.5065778493881226,.19815611839294434,.017991656437516212,.05377775430679321,.0803602933883667,.05819380283355713,.10423369705677032,.01563972234725952,.1188262403011322,.4481416940689087,.0065551940351724625,.03130298852920532,.05686555057764053,.023471355438232422,.084776371717453,.12086033821105957,.7436801791191101,.07315462827682495,.025539247319102287,.09173518419265747,.06460244953632355,.05377769470214844,.10423369705677032,.023471355438232422,.11862531304359436,.5731591582298279,.06118693947792053,.05377769470214844,.06911322474479675,.0917351245880127,.10081818699836731,.023471355438232422,.5063889026641846,.4481391906738281,.022123711183667183,.09173518419265747,.08487099409103394,.02688688039779663,.10423369705677032,.02688688039779663,.38155296444892883,.3231542706489563,.02259708009660244,.03130292892456055,.06128162145614624,.02688688039779663,.08819186687469482,.05819392204284668,.24363532662391663,.5731584429740906,.03337061405181885,.12086033821105957,.06469673663377762,.011223673820495605,.0691133663058281,.08731907606124878,.687528133392334,.3834933042526245,.017707636579871178,.12086033821105957,.0964021235704422,.01905524730682373,.11657601594924927,.09396946430206299,.1313704252243042,.32313746213912964,.006460549309849739,.0917351245880127,.03403352200984955,.004412055015563965,.09298662841320038,.015639781951904297,.13138353824615479,.1981390118598938,.014576157554984093,.02688688039779663,.0299553032964468,.05819392204284668,.0803602784872055,.026886820793151855,.38124242424964905,.4481261968612671,.033370792865753174,.05819392204284668,.0803602784872055,.023471355438232422,.12037022411823273,.05377775430679321,.6183971166610718,.19817936420440674,.05345005542039871,.058193862438201904,.0964021235704422,.02688688039779663,.11999151110649109,.0983855128288269,.6313499808311462,.1981356143951416,.056865572929382324,.058193862438201904,.06920789182186127,.03130286931991577,.0964021235704422,.023471355438232422,.3686973452568054,.4481528401374817,.014481494203209877,.03130292892456055,.056571945548057556,.05377781391143799,.06911319494247437,.05377769470214844,.3124830424785614,.48353415727615356,.022123875096440315,.087319016456604,.08819165080785751,.08731907606124878,.10864977538585663,.02688688039779663,.18752774596214294,.5084468126296997,.022123703733086586,.05819380283355713,.02259708009660244,.02688688039779663,.07252870500087738,.01905524730682373,.1313396394252777,.5731350779533386,.00646076537668705,.12086033821105957,.05686537176370621,.12086033821105957,.06128161400556564,.007808566093444824,.18752765655517578,.1335013508796692,.04561866074800491,.12086033821105957,.053450047969818115,.007808566093444824,.06252825260162354,.1334705352783203,.06469693779945374,.08731907606124878,.006339132785797119,.3231348991394043,.006460549309849739,.05819380283355713,.07262339442968369,.03130286931991577,.09298662841320038,.023471355438232422,.009875854477286339,.087319016456604,.08477649837732315,.08731907606124878,.1120649129152298,.02688688039779663,.31252795457839966,.25839555263519287,.009876048192381859,.05819380283355713,.09298662841320038,.02688688039779663,.11657601594924927,.0983855128288269,.36867624521255493,.3231545090675354,.06252825260162354,.383209228515625,.08036010712385178,.087319016456604,.0881916955113411,.09173506498336792,.1120649129152298,.0078089237213134766,.053450047969818115,.01563972234725952,.06128164380788803,.0917351245880127,.08828655630350113,.03130298852920532,.6312947273254395,.073131263256073,.061281830072402954,.12086033821105957,.08477656543254852,.09173506498336792,.1120649129152298,.011224091053009033,.6875279545783997,.008391082286834717,.06911320239305496,.01563972234725952,.06911322474479675,.05819380283355713,.10053417086601257,.12086033821105957,.631377100944519,.44813835620880127,.033370815217494965,.0917351245880127,.05686555057764053,.01563972234725952,.08487105369567871,.03130298852920532,.7435976266860962,.44816213846206665,.04561866074800491,.08731907606124878,.05686540901660919,.08731907606124878,.1084604263305664,.0670785903930664,.3125280737876892,.3833693861961365,.037786878645420074,.05819380283355713,.04552379250526428,.02688688039779663,.06128161400556564,.01563972234725952,.13140809535980225,.4481407403945923,.03403349965810776,.03130292892456055,.05345005542039871,.0917351245880127,.06911320239305496,.026886820793151855,.2564394772052765,.19814354181289673,.017707636579871178,.05819380283355713,.053450047969818115,.026886820793151855,.11234933137893677,.05377775430679321,.11863547563552856,.32315850257873535,.025539016351103783,.12086033821105957,.0625276267528534,.5084590315818787,.07694500684738159,.12086033821105957,.10864977538585663,.01905524730682373,.014292312785983086,.09173506498336792,.022123919799923897,.12086033821105957,.1120648980140686,.01905524730682373,.43752825260162354,.2587151527404785,.05686517059803009,.011223673820495605,.07252854108810425,.12086033821105957,.09260810166597366,.12086033821105957,.4375276267528534,.13337987661361694,.053450047969818115,.011223673820495605,.06128180772066116,.08731907606124878,.09602323174476624,.12086033821105957,.687527596950531,.2587602138519287,.049033790826797485,.12086033821105957,.05686517059803009,.007808566093444824,.06911341845989227,.12086033821105957,.5625280141830444,.38350802659988403,.017991656437516212,.02688688039779663,.07694479078054428,.02688688039779663,.09602341055870056,.05819380283355713,.24360424280166626,.3231614828109741,.045429132878780365,.03130298852920532,.06248307228088379,.2334902286529541,.11206528544425964,.07149463891983032,.11960287392139435,.023281991481781006,.026107268407940865,.05377775430679321,.030523335561156273,.05377775430679321,.08025602996349335,.05377769470214844,.6874831914901733,.3583640456199646,.022502413019537926,.004412055015563965,.022502413019537926,.05377775430679321,.08025602996349335,.05017286539077759,.18748320639133453,.6085007190704346,.026107246056199074,.004412055015563965,.03412819653749466,.05377775430679321,.0771341323852539,.0519753098487854,.3124833106994629,.2334464192390442,.05345005542039871,.051975369453430176,.062483012676239014,.3585008978843689,.0727180615067482,.05377769470214844,.11244398355484009,.03130292892456055,.1084604263305664,.07149463891983032,.11648134887218475,.12086033821105957,.11960287392139435,.02688688039779663,.31248316168785095,.35852259397506714,.006460549309849739,.05377775430679321,.08838121592998505,.05377775430679321,.11941350996494293,.06347370147705078,.6874832510948181,.10852515697479248,.0490339919924736,.03130298852920532,.11648097634315491,.02508443593978882,.1200861781835556,.12086033821105957,.6874829530715942,.23349487781524658,.014481494203209877,.004412055015563965,.05345005542039871,.043954432010650635,.0964021235704422,.03130292892456055,.43748292326927185,.4835529923439026,.05657196044921875,.037735939025878906,.061092279851436615,.03130286931991577,.10442306846380234,.03130298852920532,.5624828934669495,.4834739565849304,.006460549309849739,.004412055015563965,.056571945548057556,.03413110971450806,.06248317286372185,.6084953546524048,.06469713896512985,.03130286931991577,.006358683109283447,.198136568069458,.04552381485700607,.05377781391143799,.04561847448348999,.0917351245880127,.0803602933883667,.01905524730682373,.04120240360498428,.0917351245880127,.04893931746482849,.05377781391143799,.07694479078054428,.01905524730682373,.7436245679855347,.1981593370437622,.06469712406396866,.023471355438232422,.06469712406396866,.05819380283355713,.11197057366371155,.09396946430206299,.11861595511436462,.1981601119041443,.06128162145614624,.023471355438232422,.084776371717453,.05819392204284668,.10855509340763092,.09396940469741821,.25629860162734985,.32313108444213867,.07694478332996368,.023471355438232422,.09260791540145874,.05819380283355713,.1169547289609909,.05377775430679321,.256334125995636,.07313430309295654,.049033984541893005,.058193862438201904,.1008182168006897,.01905524730682373,.1039496511220932,.08731895685195923,.2435668408870697,.448164165019989,.07252871245145798,.023471355438232422,.09260791540145874,.09173518419265747,.10855511575937271,.12086033821105957,.38128527998924255,.19813251495361328,.056865572929382324,.0917351245880127,.07252871245145798,.026886820793151855,.11197061836719513,.12086033821105957,.2435913383960724,.19816231727600098,.009970737621188164,.02688688039779663,.04120238125324249,.05819380283355713,.06128162145614624,.01905524730682373,.6186096668243408,.07316023111343384,.037786878645420074,.0917351245880127,.07694479078054428,.01563972234725952,.10091288387775421,.05377775430679321,.5063652992248535,.07313716411590576,.010065404698252678,.05377775430679321,.10404433310031891,.0983855128288269,.11941350996494293,.0670785903930664,.4374832212924957,.10858356952667236],normalized:!1}},index:{type:"Uint16Array",array:[283,23,19,231,319,235,27,31,363,338,273,32,39,279,171,147,331,47,55,63,51,67,71,183,75,311,143,79,83,195,222,297,351,219,87,371,90,313,271,259,207,203,236,102,155,111,383,107,291,335,119,247,323,159,287,303,127,179,131,255,135,139,375,3,327,347,308,213,140,91,210,230,70,275,278,348,173,122,269,157,114,36,185,41,193,293,190,108,268,113,28,8,4,294,13,69,18,162,166,9,374,34,82,358,194,26,2,134,361,154,94,233,202,227,277,160,168,117,346,343,99,315,103,260,133,373,246,78,146,212,109,104,276,180,68,301,264,124,369,125,266,284,289,221,177,218,73,381,250,106,172,300,120,33,136,336,322,130,382,112,320,380,298,354,350,238,158,98,285,349,121,249,74,142,228,225,88,176,56,53,132,344,376,189,76,192,274,10,35,368,72,217,237,148,77,1,200,196,342,288,116,165,281,16,184,52,48,241,145,45,25,93,256,126,282,286,339,164,161,42,49,181,92,100,204,341,324,296,378,334,138,312,205,101,149,30,81,337,137,332,105,141,214,226,206,314,5,80,29,60,329,65,44,253,240,66,50,62,299,325,318,328,292,64,37,20,85,366,86,22,58,330,61,254,321,242,211,307,175,15,7,11,310,302,306,198,317,326,353,209,174,21,169,17,283,367,23,231,355,319,27,263,31,338,163,273,39,43,279,147,191,331,55,59,63,67,295,71,75,267,311,79,151,83,222,340,297,219,187,87,90,224,313,259,95,207,236,96,102,111,115,383,291,167,335,247,243,323,287,123,303,179,251,131,135,379,139,3,199,327,308,304,213,91,110,210,70,14,275,348,352,173,269,97,157,36,84,185,193,356,293,108,89,268,28,261,8,294,357,13,18,170,162,9,262,374,82,6,358,26,258,2,361,150,154,233,197,202,277,272,160,117,377,346,99,270,315,260,24,133,246,239,78,212,208,109,276,40,180,301,309,264,369,364,125,284,280,289,177,54,218,381,129,250,172,305,300,33,372,136,112,156,320,298,316,354,238,245,158,285,223,349,249,178,74,228,232,225,176,252,56,132,0,344,189,144,76,274,12,10,368,265,72,237,153,148,1,257,200,342,220,288,165,290,281,184,216,52,241,244,145,25,360,93,126,365,282,339,333,164,42,186,49,92,152,100,341,345,324,378,118,334,149,362,30,105,248,141,226,201,206,44,57,253,66,182,50,328,188,292,366,370,86,58,46,330,254,128,321,211,215,307,15,359,7,198,234,317,353,229,209,21,38,169]},boundingSphere:{center:[0,0,0],radius:161.78209344582697}},faceValues:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24],rotationCombinations:{"1,2":[0,0,180],"1,3":[-180,0,90],"1,4":[90,0,-90],"1,5":[-90,0,-90],"1,6":[-130,-90,-40],"1,7":[0,-180,90],"1,8":[-90,0,90],"1,9":[90,0,90],"1,10":[50,-90,-40],"1,11":[0,90,-180],"1,12":[0,90,0],"1,13":[180,0,0],"1,14":[0,180,0],"1,15":[0,0,90],"1,16":[90,180,0],"1,17":[90,0,0],"1,18":[-130,90,40],"1,19":[0,0,-90],"1,20":[90,0,-180],"1,21":[-90,0,0],"1,22":[50,90,40],"1,23":[0,-90,0],"1,24":[0,-90,-180],"2,3":[0,180,90],"2,4":[-90,0,90],"2,5":[90,0,90],"2,6":[-50,90,-40],"2,7":[180,0,90],"2,8":[90,0,-90],"2,9":[-90,0,-90],"2,10":[130,90,-40],"2,11":[0,-90,0],"2,12":[0,-90,180],"2,13":[0,-180,0],"2,14":[-180,0,0],"2,15":[0,0,-90],"2,16":[90,0,0],"2,17":[-90,0,-180],"2,18":[-50,-90,40],"2,19":[0,0,90],"2,20":[-90,0,0],"2,21":[-90,-180,0],"2,22":[130,-90,40],"2,23":[0,90,-180],"2,24":[0,90,0],"3,4":[0,90,-180],"3,5":[0,-90,180],"3,6":[-90,0,-180],"3,7":[0,0,180],"3,8":[0,-90,0],"3,9":[0,90,0],"3,10":[-90,0,0],"3,11":[90,0,-90],"3,12":[90,0,90],"3,13":[0,0,-90],"3,14":[0,0,90],"3,15":[0,180,0],"3,16":[45,-90,135],"3,17":[-135,90,45],"3,18":[90,0,0],"3,19":[-180,0,0],"3,20":[45,90,45],"3,21":[45,-90,-45],"3,22":[-90,180,0],"3,23":[-90,0,90],"3,24":[-90,0,-90],"4,5":[0,180,0],"4,6":[90,0,-90],"4,7":[0,90,0],"4,8":[180,0,0],"4,9":[0,0,-180],"4,10":[90,0,90],"4,11":[-90,0,180],"4,12":[-90,0,0],"4,13":[-40,90,130],"4,14":[-40,90,-50],"4,15":[0,-90,-180],"4,16":[-180,0,90],"4,17":[0,0,90],"4,18":[-90,0,-90],"4,19":[0,-90,0],"4,20":[0,0,-90],"4,21":[0,180,90],"4,22":[-90,0,90],"4,23":[-90,180,0],"4,24":[90,0,0],"5,6":[90,0,90],"5,7":[0,-90,0],"5,8":[0,0,180],"5,9":[180,0,0],"5,10":[90,0,-90],"5,11":[-90,0,0],"5,12":[90,180,0],"5,13":[40,-90,130],"5,14":[40,-90,-50],"5,15":[0,90,180],"5,16":[0,0,-90],"5,17":[180,0,-90],"5,18":[-90,0,90],"5,19":[0,90,0],"5,20":[0,180,-90],"5,21":[0,0,90],"5,22":[-90,0,-90],"5,23":[90,0,0],"5,24":[90,0,-180],"6,7":[-90,0,0],"6,8":[45,90,45],"6,9":[45,-90,-45],"6,10":[0,0,-180],"6,11":[0,180,-90],"6,12":[-180,0,-90],"6,13":[-90,0,90],"6,14":[-90,0,-90],"6,15":[90,0,0],"6,16":[0,90,-180],"6,17":[0,-90,-180],"6,18":[0,-180,0],"6,19":[-90,-180,0],"6,20":[0,-90,0],"6,21":[0,90,0],"6,22":[-180,0,0],"6,23":[0,0,-90],"6,24":[0,0,90],"7,8":[0,90,180],"7,9":[0,-90,-180],"7,10":[90,0,-180],"7,11":[-90,0,90],"7,12":[-90,0,-90],"7,13":[0,0,90],"7,14":[0,0,-90],"7,15":[180,0,0],"7,16":[-45,90,-45],"7,17":[-45,-90,45],"7,18":[90,-180,0],"7,19":[0,180,0],"7,20":[135,-90,45],"7,21":[135,90,-45],"7,22":[-90,0,0],"7,23":[90,0,-90],"7,24":[90,0,90],"8,9":[0,-180,0],"8,10":[-90,0,90],"8,11":[-90,-180,0],"8,12":[90,0,0],"8,13":[-40,90,-50],"8,14":[-40,90,130],"8,15":[0,-90,0],"8,16":[0,0,90],"8,17":[0,-180,-90],"8,18":[90,0,-90],"8,19":[0,-90,-180],"8,20":[-180,0,-90],"8,21":[0,0,-90],"8,22":[90,0,90],"8,23":[-90,0,-180],"8,24":[-90,0,0],"9,10":[-90,0,-90],"9,11":[90,0,0],"9,12":[90,0,180],"9,13":[40,-90,-50],"9,14":[40,-90,130],"9,15":[0,90,0],"9,16":[0,-180,90],"9,17":[0,0,-90],"9,18":[90,0,90],"9,19":[0,90,-180],"9,20":[0,0,90],"9,21":[180,0,90],"9,22":[90,0,-90],"9,23":[-90,0,0],"9,24":[90,-180,0],"10,11":[180,0,-90],"10,12":[0,-180,-90],"10,13":[90,0,-90],"10,14":[90,0,90],"10,15":[90,180,0],"10,16":[0,-90,0],"10,17":[0,90,0],"10,18":[180,0,0],"10,19":[-90,0,0],"10,20":[0,90,180],"10,21":[0,-90,-180],"10,22":[0,180,0],"10,23":[0,0,90],"10,24":[0,0,-90],"11,12":[0,0,180],"11,13":[0,-90,0],"11,14":[0,-90,180],"11,15":[-50,90,-40],"11,16":[90,0,-90],"11,17":[-90,0,-90],"11,18":[0,0,90],"11,19":[130,90,-40],"11,20":[-90,0,90],"11,21":[90,0,90],"11,22":[0,0,-90],"11,23":[-180,0,0],"11,24":[0,-180,0],"12,13":[0,90,-180],"12,14":[0,90,0],"12,15":[-130,-90,-40],"12,16":[-90,0,90],"12,17":[90,0,90],"12,18":[0,0,-90],"12,19":[50,-90,-40],"12,20":[90,0,-90],"12,21":[-90,0,-90],"12,22":[0,0,90],"12,23":[0,-180,0],"12,24":[-180,0,0],"13,14":[0,0,180],"13,15":[0,180,-90],"13,16":[90,0,180],"13,17":[-90,0,0],"13,18":[50,90,40],"13,19":[-180,0,-90],"13,20":[90,-180,0],"13,21":[90,0,0],"13,22":[-130,90,40],"13,23":[0,-90,180],"13,24":[0,-90,0],"14,15":[180,0,-90],"14,16":[-90,0,0],"14,17":[-90,180,0],"14,18":[130,-90,40],"14,19":[0,-180,-90],"14,20":[90,0,0],"14,21":[-90,0,180],"14,22":[-50,-90,40],"14,23":[0,90,0],"14,24":[0,90,-180],"15,16":[-45,90,135],"15,17":[-45,-90,-135],"15,18":[90,0,180],"15,19":[0,0,180],"15,20":[-45,-90,45],"15,21":[-45,90,-45],"15,22":[90,0,0],"15,23":[-90,0,-90],"15,24":[-90,0,90],"16,17":[0,180,0],"16,18":[0,-90,-180],"16,19":[-90,0,90],"16,20":[180,0,0],"16,21":[0,0,180],"16,22":[0,-90,0],"16,23":[40,90,50],"16,24":[40,90,-130],"17,18":[0,90,-180],"17,19":[-90,0,-90],"17,20":[0,0,180],"17,21":[180,0,0],"17,22":[0,90,0],"17,23":[-40,-90,50],"17,24":[-40,-90,-130],"18,19":[90,0,0],"18,20":[0,90,0],"18,21":[0,-90,0],"18,22":[0,0,180],"18,23":[180,0,90],"18,24":[0,180,90],"19,20":[-135,90,45],"19,21":[-135,-90,-45],"19,22":[-90,0,180],"19,23":[90,0,90],"19,24":[90,0,-90],"20,21":[0,180,0],"20,22":[0,-90,180],"20,23":[40,90,-130],"20,24":[40,90,50],"21,22":[0,90,180],"21,23":[-40,-90,-130],"21,24":[-40,-90,50],"22,23":[0,-180,90],"22,24":[-180,0,90],"23,24":[0,0,-180]}},d30:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"6D1EB50D-67F2-45C7-BF93-23245B31E912",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-55.942420959472656,58.09579086303711,-56.76457214355469,-55.942420959472656,58.09579086303711,-56.76457214355469,-55.942420959472656,58.09579086303711,-56.76457214355469,-55.942420959472656,58.09579086303711,-56.76457214355469,-55.942420959472656,58.09579086303711,-56.76457214355469,-55.942420959472656,58.09579086303711,-56.76457214355469,-55.54539108276367,91.2035140991211,-2.153374433517456,-55.54539108276367,91.2035140991211,-2.153374433517456,-55.54539108276367,91.2035140991211,-2.153374433517456,-55.54539108276367,91.2035140991211,-2.153374433517456,-55.54539108276367,91.2035140991211,-2.153374433517456,58.09599685668945,56.76477813720703,55.94200897216797,58.09599685668945,56.76477813720703,55.94200897216797,58.09599685668945,56.76477813720703,55.94200897216797,58.09599685668945,56.76477813720703,55.94200897216797,58.09599685668945,56.76477813720703,55.94200897216797,-2.1539175510406494,-55.545379638671875,-91.20350646972656,-2.1539175510406494,-55.545379638671875,-91.20350646972656,-2.1539175510406494,-55.545379638671875,-91.20350646972656,-2.1539175510406494,-55.545379638671875,-91.20350646972656,-2.1539175510406494,-55.545379638671875,-91.20350646972656,-2.1539175510406494,-55.545379638671875,-91.20350646972656,35.903011322021484,1.3310145139694214,-91.8457260131836,35.903011322021484,1.3310145139694214,-91.8457260131836,35.903011322021484,1.3310145139694214,-91.8457260131836,35.903011322021484,1.3310145139694214,-91.8457260131836,35.903011322021484,1.3310145139694214,-91.8457260131836,35.903011322021484,1.3310145139694214,-91.8457260131836,33.74937438964844,-5.019184072807548e-7,-92.66828918457031,33.74937438964844,-5.019184072807548e-7,-92.66828918457031,33.74937438964844,-5.019184072807548e-7,-92.66828918457031,33.74937438964844,-5.019184072807548e-7,-92.66828918457031,35.903690338134766,1.331014633178711,91.84544372558594,35.903690338134766,1.331014633178711,91.84544372558594,35.903690338134766,1.331014633178711,91.84544372558594,35.903690338134766,1.331014633178711,91.84544372558594,35.903690338134766,1.331014633178711,91.84544372558594,56.76499557495117,55.94220733642578,58.0955924987793,56.76499557495117,55.94220733642578,58.0955924987793,56.76499557495117,55.94220733642578,58.0955924987793,56.76499557495117,55.94220733642578,58.0955924987793,56.76499557495117,55.94220733642578,58.0955924987793,-1.3306841850280762,-57.6989631652832,89.87248229980469,-1.3306841850280762,-57.6989631652832,89.87248229980469,-1.3306841850280762,-57.6989631652832,89.87248229980469,-1.3306841850280762,-57.6989631652832,89.87248229980469,-1.3306841850280762,-57.6989631652832,89.87248229980469,-1.3306841850280762,-57.6989631652832,89.87248229980469,92.66816711425781,33.749717712402344,-.00033652668935246766,92.66816711425781,33.749717712402344,-.00033652668935246766,92.66816711425781,33.749717712402344,-.00033652668935246766,92.66816711425781,33.749717712402344,-.00033652668935246766,.0001248687185579911,92.66816711425781,33.74972152709961,.0001248687185579911,92.66816711425781,33.74972152709961,.0001248687185579911,92.66816711425781,33.74972152709961,.0001248687185579911,92.66816711425781,33.74972152709961,-91.8455810546875,-35.903350830078125,1.3313559293746948,-91.8455810546875,-35.903350830078125,1.3313559293746948,-91.8455810546875,-35.903350830078125,1.3313559293746948,-91.8455810546875,-35.903350830078125,1.3313559293746948,-91.8455810546875,-35.903350830078125,1.3313559293746948,-91.8455810546875,-35.903350830078125,1.3313559293746948,-56.76499557495117,55.94220733642578,-58.095577239990234,-56.76499557495117,55.94220733642578,-58.095577239990234,-56.76499557495117,55.94220733642578,-58.095577239990234,-56.76499557495117,55.94220733642578,-58.095577239990234,-92.66815185546875,-33.749717712402344,.000344159547239542,-92.66815185546875,-33.749717712402344,.000344159547239542,-92.66815185546875,-33.749717712402344,.000344159547239542,-92.66815185546875,-33.749717712402344,.000344159547239542,-91.84559631347656,-35.903350830078125,-1.3306736946105957,-91.84559631347656,-35.903350830078125,-1.3306736946105957,-91.84559631347656,-35.903350830078125,-1.3306736946105957,-91.84559631347656,-35.903350830078125,-1.3306736946105957,-91.84559631347656,-35.903350830078125,-1.3306736946105957,-91.2037124633789,-2.1535837650299072,-55.54503631591797,-91.2037124633789,-2.1535837650299072,-55.54503631591797,-91.2037124633789,-2.1535837650299072,-55.54503631591797,-91.2037124633789,-2.1535837650299072,-55.54503631591797,-91.2037124633789,-2.1535837650299072,-55.54503631591797,1.3308831453323364,91.84559631347656,-35.90335464477539,1.3308831453323364,91.84559631347656,-35.90335464477539,1.3308831453323364,91.84559631347656,-35.90335464477539,1.3308831453323364,91.84559631347656,-35.90335464477539,1.3308831453323364,91.84559631347656,-35.90335464477539,55.545372009277344,91.2035140991211,-2.1537835597991943,55.545372009277344,91.2035140991211,-2.1537835597991943,55.545372009277344,91.2035140991211,-2.1537835597991943,55.545372009277344,91.2035140991211,-2.1537835597991943,55.545372009277344,91.2035140991211,-2.1537835597991943,55.545372009277344,91.2035140991211,-2.1537835597991943,-91.84558868408203,35.903350830078125,1.331355094909668,-91.84558868408203,35.903350830078125,1.331355094909668,-91.84558868408203,35.903350830078125,1.331355094909668,-91.84558868408203,35.903350830078125,1.331355094909668,-91.84558868408203,35.903350830078125,1.331355094909668,-91.84558868408203,35.903350830078125,1.331355094909668,-58.09558868408203,56.76477813720703,55.94243240356445,-58.09558868408203,56.76477813720703,55.94243240356445,-58.09558868408203,56.76477813720703,55.94243240356445,-58.09558868408203,56.76477813720703,55.94243240356445,-58.09558868408203,56.76477813720703,55.94243240356445,-57.698951721191406,89.87249755859375,1.3312309980392456,-57.698951721191406,89.87249755859375,1.3312309980392456,-57.698951721191406,89.87249755859375,1.3312309980392456,-57.698951721191406,89.87249755859375,1.3312309980392456,-55.54539108276367,-91.20350646972656,-2.1533758640289307,-55.54539108276367,-91.20350646972656,-2.1533758640289307,-55.54539108276367,-91.20350646972656,-2.1533758640289307,-55.54539108276367,-91.20350646972656,-2.1533758640289307,-55.54539108276367,-91.20350646972656,-2.1533758640289307,-55.545372009277344,91.2035140991211,2.1537914276123047,-55.545372009277344,91.2035140991211,2.1537914276123047,-55.545372009277344,91.2035140991211,2.1537914276123047,-55.545372009277344,91.2035140991211,2.1537914276123047,-55.545372009277344,91.2035140991211,2.1537914276123047,-55.545372009277344,91.2035140991211,2.1537914276123047,-55.545372009277344,91.2035140991211,2.1537914276123047,-55.9420051574707,58.09578323364258,56.764991760253906,-55.9420051574707,58.09578323364258,56.764991760253906,-55.9420051574707,58.09578323364258,56.764991760253906,-55.9420051574707,58.09578323364258,56.764991760253906,1.3308836221694946,-91.84559631347656,-35.90335464477539,1.3308836221694946,-91.84559631347656,-35.90335464477539,1.3308836221694946,-91.84559631347656,-35.90335464477539,1.3308836221694946,-91.84559631347656,-35.90335464477539,1.3308836221694946,-91.84559631347656,-35.90335464477539,-91.20330047607422,-2.153582811355591,55.54571533203125,-91.20330047607422,-2.153582811355591,55.54571533203125,-91.20330047607422,-2.153582811355591,55.54571533203125,-91.20330047607422,-2.153582811355591,55.54571533203125,-91.20330047607422,-2.153582811355591,55.54571533203125,-91.20330047607422,2.1535825729370117,55.54571533203125,-91.20330047607422,2.1535825729370117,55.54571533203125,-91.20330047607422,2.1535825729370117,55.54571533203125,-91.20330047607422,2.1535825729370117,55.54571533203125,-91.20330047607422,2.1535825729370117,55.54571533203125,-91.20330047607422,2.1535825729370117,55.54571533203125,-91.8456039428711,35.903350830078125,-1.3306739330291748,-91.8456039428711,35.903350830078125,-1.3306739330291748,-91.8456039428711,35.903350830078125,-1.3306739330291748,-91.8456039428711,35.903350830078125,-1.3306739330291748,-91.8456039428711,35.903350830078125,-1.3306739330291748,33.750057220458984,-3.255321701089997e-7,92.66802978515625,33.750057220458984,-3.255321701089997e-7,92.66802978515625,33.750057220458984,-3.255321701089997e-7,92.66802978515625,33.750057220458984,-3.255321701089997e-7,92.66802978515625,89.87269592285156,-1.3310151100158691,57.698638916015625,89.87269592285156,-1.3310151100158691,57.698638916015625,89.87269592285156,-1.3310151100158691,57.698638916015625,89.87269592285156,-1.3310151100158691,57.698638916015625,89.87269592285156,-1.3310151100158691,57.698638916015625,91.2037124633789,2.153581380844116,55.545047760009766,91.2037124633789,2.153581380844116,55.545047760009766,91.2037124633789,2.153581380844116,55.545047760009766,91.2037124633789,2.153581380844116,55.545047760009766,91.2037124633789,2.153581380844116,55.545047760009766,91.2037124633789,2.153581380844116,55.545047760009766,-35.903011322021484,1.3310145139694214,91.84571075439453,-35.903011322021484,1.3310145139694214,91.84571075439453,-35.903011322021484,1.3310145139694214,91.84571075439453,-35.903011322021484,1.3310145139694214,91.84571075439453,-35.903011322021484,1.3310145139694214,91.84571075439453,-35.903011322021484,-1.33101487159729,91.84571075439453,-35.903011322021484,-1.33101487159729,91.84571075439453,-35.903011322021484,-1.33101487159729,91.84571075439453,-35.903011322021484,-1.33101487159729,91.84571075439453,-35.903011322021484,-1.33101487159729,91.84571075439453,-33.74938201904297,-5.100424687043414e-7,92.66827392578125,-33.74938201904297,-5.100424687043414e-7,92.66827392578125,-33.74938201904297,-5.100424687043414e-7,92.66827392578125,-33.74938201904297,-5.100424687043414e-7,92.66827392578125,1.0764577388763428,55.84297561645508,-91.01956939697266,1.0764577388763428,55.84297561645508,-91.01956939697266,1.0764577388763428,55.84297561645508,-91.01956939697266,1.0764577388763428,55.84297561645508,-91.01956939697266,1.0764577388763428,55.84297561645508,-91.01956939697266,1.0764577388763428,55.84297561645508,-91.01956939697266,1.0764577388763428,55.84297561645508,-91.01956939697266,-.00033518741838634014,55.17742919921875,-91.43085479736328,-.00033518741838634014,55.17742919921875,-91.43085479736328,-.00033518741838634014,55.17742919921875,-91.43085479736328,-.00033518741838634014,55.17742919921875,-91.43085479736328,-.00033518741838634014,55.17742919921875,-91.43085479736328,-.00033518741838634014,55.17742919921875,-91.43085479736328,54.21428298950195,-92.02606964111328,-.00019521401554811746,54.21428298950195,-92.02606964111328,-.00019521401554811746,54.21428298950195,-92.02606964111328,-.00019521401554811746,54.21428298950195,-92.02606964111328,-.00019521401554811746,54.21428298950195,-92.02606964111328,-.00019521401554811746,54.21428298950195,-92.02606964111328,-.00019521401554811746,55.545372009277344,-91.20350646972656,-2.153782844543457,55.545372009277344,-91.20350646972656,-2.153782844543457,55.545372009277344,-91.20350646972656,-2.153782844543457,55.545372009277344,-91.20350646972656,-2.153782844543457,55.545372009277344,-91.20350646972656,-2.153782844543457,91.8455810546875,-35.903350830078125,-1.331348180770874,91.8455810546875,-35.903350830078125,-1.331348180770874,91.8455810546875,-35.903350830078125,-1.331348180770874,91.8455810546875,-35.903350830078125,-1.331348180770874,91.8455810546875,-35.903350830078125,-1.331348180770874,91.8455810546875,-35.903350830078125,-1.331348180770874,-54.21428298950195,92.02607727050781,.00020320962357800454,-54.21428298950195,92.02607727050781,.00020320962357800454,-54.21428298950195,92.02607727050781,.00020320962357800454,-54.21428298950195,92.02607727050781,.00020320962357800454,-54.21428298950195,92.02607727050781,.00020320962357800454,-54.21428298950195,92.02607727050781,.00020320962357800454,55.9420051574707,58.09579086303711,-56.76498031616211,55.9420051574707,58.09579086303711,-56.76498031616211,55.9420051574707,58.09579086303711,-56.76498031616211,55.9420051574707,58.09579086303711,-56.76498031616211,55.9420051574707,58.09579086303711,-56.76498031616211,57.69895935058594,89.87249755859375,1.3308056592941284,57.69895935058594,89.87249755859375,1.3308056592941284,57.69895935058594,89.87249755859375,1.3308056592941284,57.69895935058594,89.87249755859375,1.3308056592941284,57.69895935058594,89.87249755859375,1.3308056592941284,57.69895935058594,89.87249755859375,1.3308056592941284,57.69895935058594,89.87249755859375,1.3308056592941284,-1.330683946609497,57.698951721191406,89.87248229980469,-1.330683946609497,57.698951721191406,89.87248229980469,-1.330683946609497,57.698951721191406,89.87248229980469,-1.330683946609497,57.698951721191406,89.87248229980469,-1.330683946609497,57.698951721191406,89.87248229980469,1.3313459157943726,57.698951721191406,89.87246704101562,1.3313459157943726,57.698951721191406,89.87246704101562,1.3313459157943726,57.698951721191406,89.87246704101562,1.3313459157943726,57.698951721191406,89.87246704101562,1.3313459157943726,57.698951721191406,89.87246704101562,1.3313459157943726,57.698951721191406,89.87246704101562,-33.75006103515625,-3.2792155479910434e-7,-92.66804504394531,-33.75006103515625,-3.2792155479910434e-7,-92.66804504394531,-33.75006103515625,-3.2792155479910434e-7,-92.66804504394531,-33.75006103515625,-3.2792155479910434e-7,-92.66804504394531,1.3306846618652344,-57.69895935058594,-89.87250518798828,1.3306846618652344,-57.69895935058594,-89.87250518798828,1.3306846618652344,-57.69895935058594,-89.87250518798828,1.3306846618652344,-57.69895935058594,-89.87250518798828,1.3306846618652344,-57.69895935058594,-89.87250518798828,35.903011322021484,-1.33101487159729,-91.8457260131836,35.903011322021484,-1.33101487159729,-91.8457260131836,35.903011322021484,-1.33101487159729,-91.8457260131836,35.903011322021484,-1.33101487159729,-91.8457260131836,35.903011322021484,-1.33101487159729,-91.8457260131836,1.331345796585083,-57.6989631652832,89.87246704101562,1.331345796585083,-57.6989631652832,89.87246704101562,1.331345796585083,-57.6989631652832,89.87246704101562,1.331345796585083,-57.6989631652832,89.87246704101562,1.331345796585083,-57.6989631652832,89.87246704101562,1.331345796585083,-57.6989631652832,89.87246704101562,-58.09558868408203,-56.76478576660156,55.94243240356445,-58.09558868408203,-56.76478576660156,55.94243240356445,-58.09558868408203,-56.76478576660156,55.94243240356445,-58.09558868408203,-56.76478576660156,55.94243240356445,-55.9420051574707,-58.09579849243164,56.764991760253906,-55.9420051574707,-58.09579849243164,56.764991760253906,-55.9420051574707,-58.09579849243164,56.764991760253906,-55.9420051574707,-58.09579849243164,56.764991760253906,-55.9420051574707,-58.09579849243164,56.764991760253906,-89.87269592285156,1.3310145139694214,-57.69862365722656,-89.87269592285156,1.3310145139694214,-57.69862365722656,-89.87269592285156,1.3310145139694214,-57.69862365722656,-89.87269592285156,1.3310145139694214,-57.69862365722656,-89.87269592285156,1.3310145139694214,-57.69862365722656,-89.87269592285156,1.3310145139694214,-57.69862365722656,55.942420959472656,58.09578323364258,56.764583587646484,55.942420959472656,58.09578323364258,56.764583587646484,55.942420959472656,58.09578323364258,56.764583587646484,55.942420959472656,58.09578323364258,56.764583587646484,55.942420959472656,58.09578323364258,56.764583587646484,-.00012307056749705225,-92.66816711425781,-33.749717712402344,-.00012307056749705225,-92.66816711425781,-33.749717712402344,-.00012307056749705225,-92.66816711425781,-33.749717712402344,-.00012307056749705225,-92.66816711425781,-33.749717712402344,-1.3311455249786377,-91.84559631347656,-35.90334701538086,-1.3311455249786377,-91.84559631347656,-35.90334701538086,-1.3311455249786377,-91.84559631347656,-35.90334701538086,-1.3311455249786377,-91.84559631347656,-35.90334701538086,-1.3311455249786377,-91.84559631347656,-35.90334701538086,-1.3311455249786377,-91.84559631347656,-35.90334701538086,58.09599685668945,-56.76478576660156,55.94200897216797,58.09599685668945,-56.76478576660156,55.94200897216797,58.09599685668945,-56.76478576660156,55.94200897216797,58.09599685668945,-56.76478576660156,55.94200897216797,55.54539108276367,91.2035140991211,2.15338134765625,55.54539108276367,91.2035140991211,2.15338134765625,55.54539108276367,91.2035140991211,2.15338134765625,55.54539108276367,91.2035140991211,2.15338134765625,55.54539108276367,91.2035140991211,2.15338134765625,2.153247594833374,-55.545379638671875,-91.20352172851562,2.153247594833374,-55.545379638671875,-91.20352172851562,2.153247594833374,-55.545379638671875,-91.20352172851562,2.153247594833374,-55.545379638671875,-91.20352172851562,2.153247594833374,-55.545379638671875,-91.20352172851562,2.153247594833374,-55.545379638671875,-91.20352172851562,2.153247594833374,-55.545379638671875,-91.20352172851562,-.0003373770450707525,-54.21428298950195,-92.02607727050781,-.0003373770450707525,-54.21428298950195,-92.02607727050781,-.0003373770450707525,-54.21428298950195,-92.02607727050781,-.0003373770450707525,-54.21428298950195,-92.02607727050781,-.0003373770450707525,-54.21428298950195,-92.02607727050781,-.0003373770450707525,-54.21428298950195,-92.02607727050781,1.3311474323272705,91.84559631347656,35.90334701538086,1.3311474323272705,91.84559631347656,35.90334701538086,1.3311474323272705,91.84559631347656,35.90334701538086,1.3311474323272705,91.84559631347656,35.90334701538086,1.3311474323272705,91.84559631347656,35.90334701538086,54.21428298950195,92.02607727050781,-.00019560271175578237,54.21428298950195,92.02607727050781,-.00019560271175578237,54.21428298950195,92.02607727050781,-.00019560271175578237,54.21428298950195,92.02607727050781,-.00019560271175578237,54.21428298950195,92.02607727050781,-.00019560271175578237,54.21428298950195,92.02607727050781,-.00019560271175578237,-56.76456832885742,55.94220733642578,58.096012115478516,-56.76456832885742,55.94220733642578,58.096012115478516,-56.76456832885742,55.94220733642578,58.096012115478516,-56.76456832885742,55.94220733642578,58.096012115478516,-56.76456832885742,55.94220733642578,58.096012115478516,-56.76456832885742,55.94220733642578,58.096012115478516,-1.3308817148208618,91.84559631347656,35.90335464477539,-1.3308817148208618,91.84559631347656,35.90335464477539,-1.3308817148208618,91.84559631347656,35.90335464477539,-1.3308817148208618,91.84559631347656,35.90335464477539,-1.3308817148208618,91.84559631347656,35.90335464477539,-1.3308817148208618,91.84559631347656,35.90335464477539,-92.66816711425781,33.749717712402344,.0003441836452111602,-92.66816711425781,33.749717712402344,.0003441836452111602,-92.66816711425781,33.749717712402344,.0003441836452111602,-92.66816711425781,33.749717712402344,.0003441836452111602,-92.02587127685547,-3.414504305965238e-7,54.21462631225586,-92.02587127685547,-3.414504305965238e-7,54.21462631225586,-92.02587127685547,-3.414504305965238e-7,54.21462631225586,-92.02587127685547,-3.414504305965238e-7,54.21462631225586,-92.02587127685547,-3.414504305965238e-7,54.21462631225586,-92.02587127685547,-3.414504305965238e-7,54.21462631225586,-92.02587127685547,-3.414504305965238e-7,54.21462631225586,-89.87227630615234,-1.3310153484344482,57.69929885864258,-89.87227630615234,-1.3310153484344482,57.69929885864258,-89.87227630615234,-1.3310153484344482,57.69929885864258,-89.87227630615234,-1.3310153484344482,57.69929885864258,-89.87227630615234,-1.3310153484344482,57.69929885864258,-89.87227630615234,-1.3310153484344482,57.69929885864258,-56.76499557495117,-55.94221496582031,-58.095577239990234,-56.76499557495117,-55.94221496582031,-58.095577239990234,-56.76499557495117,-55.94221496582031,-58.095577239990234,-56.76499557495117,-55.94221496582031,-58.095577239990234,-89.87269592285156,-1.3310151100158691,-57.69862365722656,-89.87269592285156,-1.3310151100158691,-57.69862365722656,-89.87269592285156,-1.3310151100158691,-57.69862365722656,-89.87269592285156,-1.3310151100158691,-57.69862365722656,-89.87269592285156,-1.3310151100158691,-57.69862365722656,-91.2037124633789,2.1535816192626953,-55.54503631591797,-91.2037124633789,2.1535816192626953,-55.54503631591797,-91.2037124633789,2.1535816192626953,-55.54503631591797,-91.2037124633789,2.1535816192626953,-55.54503631591797,-91.2037124633789,2.1535816192626953,-55.54503631591797,-91.2037124633789,2.1535816192626953,-55.54503631591797,-57.6989631652832,-89.87248229980469,-1.3307993412017822,-57.6989631652832,-89.87248229980469,-1.3307993412017822,-57.6989631652832,-89.87248229980469,-1.3307993412017822,-57.6989631652832,-89.87248229980469,-1.3307993412017822,-57.6989631652832,-89.87248229980469,-1.3307993412017822,-57.6989631652832,-89.87248229980469,-1.3307993412017822,-57.69895553588867,-89.87248229980469,1.331230640411377,-57.69895553588867,-89.87248229980469,1.331230640411377,-57.69895553588867,-89.87248229980469,1.331230640411377,-57.69895553588867,-89.87248229980469,1.331230640411377,-57.69895553588867,-89.87248229980469,1.331230640411377,-57.69895553588867,-89.87248229980469,1.331230640411377,-57.69895553588867,-89.87248229980469,1.331230640411377,91.2037124633789,-2.1535840034484863,55.545047760009766,91.2037124633789,-2.1535840034484863,55.545047760009766,91.2037124633789,-2.1535840034484863,55.545047760009766,91.2037124633789,-2.1535840034484863,55.545047760009766,91.2037124633789,-2.1535840034484863,55.545047760009766,91.84559631347656,-35.903350830078125,1.3306814432144165,91.84559631347656,-35.903350830078125,1.3306814432144165,91.84559631347656,-35.903350830078125,1.3306814432144165,91.84559631347656,-35.903350830078125,1.3306814432144165,91.84559631347656,-35.903350830078125,1.3306814432144165,.00033884088043123484,-54.21428298950195,92.02606964111328,.00033884088043123484,-54.21428298950195,92.02606964111328,.00033884088043123484,-54.21428298950195,92.02606964111328,.00033884088043123484,-54.21428298950195,92.02606964111328,.00033884088043123484,-54.21428298950195,92.02606964111328,.00033884088043123484,-54.21428298950195,92.02606964111328,1.3311470746994019,-91.84559631347656,35.90334701538086,1.3311470746994019,-91.84559631347656,35.90334701538086,1.3311470746994019,-91.84559631347656,35.90334701538086,1.3311470746994019,-91.84559631347656,35.90334701538086,1.3311470746994019,-91.84559631347656,35.90334701538086,91.8456039428711,35.903350830078125,1.330681324005127,91.8456039428711,35.903350830078125,1.330681324005127,91.8456039428711,35.903350830078125,1.330681324005127,91.8456039428711,35.903350830078125,1.330681324005127,91.8456039428711,35.903350830078125,1.330681324005127,57.698951721191406,89.87249755859375,-1.3312232494354248,57.698951721191406,89.87249755859375,-1.3312232494354248,57.698951721191406,89.87249755859375,-1.3312232494354248,57.698951721191406,89.87249755859375,-1.3312232494354248,35.903690338134766,-1.331014633178711,91.84544372558594,35.903690338134766,-1.331014633178711,91.84544372558594,35.903690338134766,-1.331014633178711,91.84544372558594,35.903690338134766,-1.331014633178711,91.84544372558594,35.903690338134766,-1.331014633178711,91.84544372558594,35.903690338134766,-1.331014633178711,91.84544372558594,-56.76456832885742,-55.94221496582031,58.096012115478516,-56.76456832885742,-55.94221496582031,58.096012115478516,-56.76456832885742,-55.94221496582031,58.096012115478516,-56.76456832885742,-55.94221496582031,58.096012115478516,-56.76456832885742,-55.94221496582031,58.096012115478516,-56.76456832885742,-55.94221496582031,58.096012115478516,-2.1532464027404785,-55.545379638671875,91.20350646972656,-2.1532464027404785,-55.545379638671875,91.20350646972656,-2.1532464027404785,-55.545379638671875,91.20350646972656,-2.1532464027404785,-55.545379638671875,91.20350646972656,-2.1532464027404785,-55.545379638671875,91.20350646972656,.00012470953515730798,-92.66816711425781,33.74972152709961,.00012470953515730798,-92.66816711425781,33.74972152709961,.00012470953515730798,-92.66816711425781,33.74972152709961,.00012470953515730798,-92.66816711425781,33.74972152709961,-1.33088219165802,-91.84559631347656,35.90335464477539,-1.33088219165802,-91.84559631347656,35.90335464477539,-1.33088219165802,-91.84559631347656,35.90335464477539,-1.33088219165802,-91.84559631347656,35.90335464477539,-1.33088219165802,-91.84559631347656,35.90335464477539,-1.33088219165802,-91.84559631347656,35.90335464477539,-55.545372009277344,-91.20350646972656,2.153789758682251,-55.545372009277344,-91.20350646972656,2.153789758682251,-55.545372009277344,-91.20350646972656,2.153789758682251,-55.545372009277344,-91.20350646972656,2.153789758682251,56.76456832885742,-55.94221878051758,-58.09599304199219,56.76456832885742,-55.94221878051758,-58.09599304199219,56.76456832885742,-55.94221878051758,-58.09599304199219,56.76456832885742,-55.94221878051758,-58.09599304199219,92.66815185546875,-33.749717712402344,-.0003363910655025393,92.66815185546875,-33.749717712402344,-.0003363910655025393,92.66815185546875,-33.749717712402344,-.0003363910655025393,92.66815185546875,-33.749717712402344,-.0003363910655025393,91.20330047607422,-2.1535825729370117,-55.54570388793945,91.20330047607422,-2.1535825729370117,-55.54570388793945,91.20330047607422,-2.1535825729370117,-55.54570388793945,91.20330047607422,-2.1535825729370117,-55.54570388793945,91.20330047607422,-2.1535825729370117,-55.54570388793945,92.02587127685547,-3.892050415288395e-7,-54.2146110534668,92.02587127685547,-3.892050415288395e-7,-54.2146110534668,92.02587127685547,-3.892050415288395e-7,-54.2146110534668,92.02587127685547,-3.892050415288395e-7,-54.2146110534668,92.02587127685547,-3.892050415288395e-7,-54.2146110534668,92.02587127685547,-3.892050415288395e-7,-54.2146110534668,92.02587127685547,-3.892050415288395e-7,-54.2146110534668,.0003386797325219959,54.21427536010742,92.02606964111328,.0003386797325219959,54.21427536010742,92.02606964111328,.0003386797325219959,54.21427536010742,92.02606964111328,.0003386797325219959,54.21427536010742,92.02606964111328,.0003386797325219959,54.21427536010742,92.02606964111328,.0003386797325219959,54.21427536010742,92.02606964111328,2.1539180278778076,55.54536819458008,91.2034912109375,2.1539180278778076,55.54536819458008,91.2034912109375,2.1539180278778076,55.54536819458008,91.2034912109375,2.1539180278778076,55.54536819458008,91.2034912109375,91.20330047607422,2.153582811355591,-55.54570388793945,91.20330047607422,2.153582811355591,-55.54570388793945,91.20330047607422,2.153582811355591,-55.54570388793945,91.20330047607422,2.153582811355591,-55.54570388793945,91.20330047607422,2.153582811355591,-55.54570388793945,89.87227630615234,1.3310145139694214,-57.69927978515625,89.87227630615234,1.3310145139694214,-57.69927978515625,89.87227630615234,1.3310145139694214,-57.69927978515625,89.87227630615234,1.3310145139694214,-57.69927978515625,89.87227630615234,1.3310145139694214,-57.69927978515625,89.87227630615234,1.3310145139694214,-57.69927978515625,56.76456832885742,55.94220733642578,-58.09599304199219,56.76456832885742,55.94220733642578,-58.09599304199219,56.76456832885742,55.94220733642578,-58.09599304199219,56.76456832885742,55.94220733642578,-58.09599304199219,56.76456832885742,55.94220733642578,-58.09599304199219,58.09558868408203,56.76477813720703,-55.942420959472656,58.09558868408203,56.76477813720703,-55.942420959472656,58.09558868408203,56.76477813720703,-55.942420959472656,58.09558868408203,56.76477813720703,-55.942420959472656,55.54539108276367,-91.20350646972656,2.153383255004883,55.54539108276367,-91.20350646972656,2.153383255004883,55.54539108276367,-91.20350646972656,2.153383255004883,55.54539108276367,-91.20350646972656,2.153383255004883,55.54539108276367,-91.20350646972656,2.153383255004883,55.54539108276367,-91.20350646972656,2.153383255004883,91.84558868408203,35.903350830078125,-1.3313480615615845,91.84558868408203,35.903350830078125,-1.3313480615615845,91.84558868408203,35.903350830078125,-1.3313480615615845,91.84558868408203,35.903350830078125,-1.3313480615615845,91.84558868408203,35.903350830078125,-1.3313480615615845,91.84558868408203,35.903350830078125,-1.3313480615615845,-35.903690338134766,-1.331014633178711,-91.84546661376953,-35.903690338134766,-1.331014633178711,-91.84546661376953,-35.903690338134766,-1.331014633178711,-91.84546661376953,-35.903690338134766,-1.331014633178711,-91.84546661376953,-35.903690338134766,-1.331014633178711,-91.84546661376953,-35.903690338134766,-1.331014633178711,-91.84546661376953,-54.21428298950195,-92.02606964111328,.00020284479251131415,-54.21428298950195,-92.02606964111328,.00020284479251131415,-54.21428298950195,-92.02606964111328,.00020284479251131415,-54.21428298950195,-92.02606964111328,.00020284479251131415,-54.21428298950195,-92.02606964111328,.00020284479251131415,-54.21428298950195,-92.02606964111328,.00020284479251131415,-54.21428298950195,-92.02606964111328,.00020284479251131415,-35.903690338134766,1.331014633178711,-91.84546661376953,-35.903690338134766,1.331014633178711,-91.84546661376953,-35.903690338134766,1.331014633178711,-91.84546661376953,-35.903690338134766,1.331014633178711,-91.84546661376953,-35.903690338134766,1.331014633178711,-91.84546661376953,89.87227630615234,-1.3310154676437378,-57.69927978515625,89.87227630615234,-1.3310154676437378,-57.69927978515625,89.87227630615234,-1.3310154676437378,-57.69927978515625,89.87227630615234,-1.3310154676437378,-57.69927978515625,89.87227630615234,-1.3310154676437378,-57.69927978515625,89.87227630615234,-1.3310154676437378,-57.69927978515625,55.942420959472656,-58.09579849243164,56.764583587646484,55.942420959472656,-58.09579849243164,56.764583587646484,55.942420959472656,-58.09579849243164,56.764583587646484,55.942420959472656,-58.09579849243164,56.764583587646484,55.942420959472656,-58.09579849243164,56.764583587646484,56.76499557495117,-55.94221496582031,58.0955924987793,56.76499557495117,-55.94221496582031,58.0955924987793,56.76499557495117,-55.94221496582031,58.0955924987793,56.76499557495117,-55.94221496582031,58.0955924987793,56.76499557495117,-55.94221496582031,58.0955924987793,2.1539194583892822,-55.545379638671875,91.2034912109375,2.1539194583892822,-55.545379638671875,91.2034912109375,2.1539194583892822,-55.545379638671875,91.2034912109375,2.1539194583892822,-55.545379638671875,91.2034912109375,2.1539194583892822,-55.545379638671875,91.2034912109375,2.1539194583892822,-55.545379638671875,91.2034912109375,-55.942420959472656,-58.09579849243164,-56.76457214355469,-55.942420959472656,-58.09579849243164,-56.76457214355469,-55.942420959472656,-58.09579849243164,-56.76457214355469,-55.942420959472656,-58.09579849243164,-56.76457214355469,-55.942420959472656,-58.09579849243164,-56.76457214355469,-55.942420959472656,-58.09579849243164,-56.76457214355469,-58.09599685668945,-56.76478576660156,-55.941993713378906,-58.09599685668945,-56.76478576660156,-55.941993713378906,-58.09599685668945,-56.76478576660156,-55.941993713378906,-58.09599685668945,-56.76478576660156,-55.941993713378906,92.0262680053711,-4.4363298457028577e-7,54.21394729614258,92.0262680053711,-4.4363298457028577e-7,54.21394729614258,92.0262680053711,-4.4363298457028577e-7,54.21394729614258,92.0262680053711,-4.4363298457028577e-7,54.21394729614258,92.0262680053711,-4.4363298457028577e-7,54.21394729614258,92.0262680053711,-4.4363298457028577e-7,54.21394729614258,55.9420051574707,-58.095802307128906,-56.76498031616211,55.9420051574707,-58.095802307128906,-56.76498031616211,55.9420051574707,-58.095802307128906,-56.76498031616211,55.9420051574707,-58.095802307128906,-56.76498031616211,55.9420051574707,-58.095802307128906,-56.76498031616211,55.9420051574707,-58.095802307128906,-56.76498031616211,58.09558868408203,-56.76478576660156,-55.942420959472656,58.09558868408203,-56.76478576660156,-55.942420959472656,58.09558868408203,-56.76478576660156,-55.942420959472656,58.09558868408203,-56.76478576660156,-55.942420959472656,58.09558868408203,-56.76478576660156,-55.942420959472656,89.87269592285156,1.3310145139694214,57.698638916015625,89.87269592285156,1.3310145139694214,57.698638916015625,89.87269592285156,1.3310145139694214,57.698638916015625,89.87269592285156,1.3310145139694214,57.698638916015625,89.87269592285156,1.3310145139694214,57.698638916015625,89.87269592285156,1.3310145139694214,57.698638916015625,57.6989631652832,-89.87248229980469,1.330806851387024,57.6989631652832,-89.87248229980469,1.330806851387024,57.6989631652832,-89.87248229980469,1.330806851387024,57.6989631652832,-89.87248229980469,1.330806851387024,57.6989631652832,-89.87248229980469,1.330806851387024,57.6989631652832,-89.87248229980469,1.330806851387024,57.69895553588867,-89.87248229980469,-1.3312231302261353,57.69895553588867,-89.87248229980469,-1.3312231302261353,57.69895553588867,-89.87248229980469,-1.3312231302261353,57.69895553588867,-89.87248229980469,-1.3312231302261353,57.69895553588867,-89.87248229980469,-1.3312231302261353,57.69895553588867,-89.87248229980469,-1.3312231302261353,-1.331344485282898,-57.69895935058594,-89.87249755859375,-1.331344485282898,-57.69895935058594,-89.87249755859375,-1.331344485282898,-57.69895935058594,-89.87249755859375,-1.331344485282898,-57.69895935058594,-89.87249755859375,-1.331344485282898,-57.69895935058594,-89.87249755859375,-92.0262680053711,-3.9587837363797007e-7,-54.21393585205078,-92.0262680053711,-3.9587837363797007e-7,-54.21393585205078,-92.0262680053711,-3.9587837363797007e-7,-54.21393585205078,-92.0262680053711,-3.9587837363797007e-7,-54.21393585205078,-92.0262680053711,-3.9587837363797007e-7,-54.21393585205078,-92.0262680053711,-3.9587837363797007e-7,-54.21393585205078,-58.09599685668945,56.76477813720703,-55.941993713378906,-58.09599685668945,56.76477813720703,-55.941993713378906,-58.09599685668945,56.76477813720703,-55.941993713378906,-58.09599685668945,56.76477813720703,-55.941993713378906,-58.09599685668945,56.76477813720703,-55.941993713378906,-57.69895935058594,89.87249755859375,-1.3307981491088867,-57.69895935058594,89.87249755859375,-1.3307981491088867,-57.69895935058594,89.87249755859375,-1.3307981491088867,-57.69895935058594,89.87249755859375,-1.3307981491088867,-57.69895935058594,89.87249755859375,-1.3307981491088867,-57.69895935058594,89.87249755859375,-1.3307981491088867,-57.69895935058594,89.87249755859375,-1.3307981491088867,-1.0771249532699585,55.84297561645508,-91.01956939697266,-1.0771249532699585,55.84297561645508,-91.01956939697266,-1.0771249532699585,55.84297561645508,-91.01956939697266,-1.0771249532699585,55.84297561645508,-91.01956939697266,-1.0771249532699585,55.84297561645508,-91.01956939697266,-1.0771249532699585,55.84297561645508,-91.01956939697266,.6651760339736938,56.91976547241211,-90.35406494140625,.6651760339736938,56.91976547241211,-90.35406494140625,.6651760339736938,56.91976547241211,-90.35406494140625,.6651760339736938,56.91976547241211,-90.35406494140625,.6651760339736938,56.91976547241211,-90.35406494140625,-.6658390760421753,56.91976547241211,-90.35406494140625,-.6658390760421753,56.91976547241211,-90.35406494140625,-.6658390760421753,56.91976547241211,-90.35406494140625,-.6658390760421753,56.91976547241211,-90.35406494140625,-.6658390760421753,56.91976547241211,-90.35406494140625,-1.3311461210250854,91.84559631347656,-35.90334701538086,-1.3311461210250854,91.84559631347656,-35.90334701538086,-1.3311461210250854,91.84559631347656,-35.90334701538086,-1.3311461210250854,91.84559631347656,-35.90334701538086,-1.3311461210250854,91.84559631347656,-35.90334701538086,-1.3311461210250854,91.84559631347656,-35.90334701538086,-.00012322973634582013,92.66816711425781,-33.749717712402344,-.00012322973634582013,92.66816711425781,-33.749717712402344,-.00012322973634582013,92.66816711425781,-33.749717712402344,-.00012322973634582013,92.66816711425781,-33.749717712402344,-89.87227630615234,1.3310145139694214,57.69929885864258,-89.87227630615234,1.3310145139694214,57.69929885864258,-89.87227630615234,1.3310145139694214,57.69929885864258,-89.87227630615234,1.3310145139694214,57.69929885864258,-2.153247833251953,55.54536819458008,91.20350646972656,-2.153247833251953,55.54536819458008,91.20350646972656,-2.153247833251953,55.54536819458008,91.20350646972656,-2.153247833251953,55.54536819458008,91.20350646972656],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.32300448417663574,.7980563640594482,-.5086984634399414,-.3229999840259552,.7980471849441528,-.5087158679962158,-.32299789786338806,.7980540990829468,-.5087060928344727,-.3229975402355194,.7980594038963318,-.5086981654167175,-.322995662689209,.7980546951293945,-.5087066292762756,-.32297030091285706,.7980630397796631,-.5087097883224487,-.3145313560962677,.8124136924743652,-.4909725487232208,-.3145303428173065,.8124191761016846,-.4909641742706299,-.31452667713165283,.8123946189880371,-.49100714921951294,-.31452617049217224,.8124018907546997,-.49099525809288025,-.31451353430747986,.8124081492424011,-.49099329113960266,.7977177500724792,.5067335963249207,.3269055485725403,.797724187374115,.5067331790924072,.3268907070159912,.7977266907691956,.5067335367202759,.32688409090042114,.797727644443512,.5067120790481567,.3269153833389282,.7977277636528015,.5067290663719177,.3268887996673584,-.48681509494781494,-.3170761168003082,-.8139249086380005,-.486814022064209,-.31705862283706665,-.8139324188232422,-.4868130683898926,-.31705430150032043,-.8139346241950989,-.486799031496048,-.3170582056045532,-.8139415383338928,-.48679620027542114,-.31705963611602783,-.8139426112174988,-.4867938756942749,-.3170706033706665,-.8139398097991943,.4910266399383545,.2948715388774872,-.8197216391563416,.4910283386707306,.29487162828445435,-.8197205662727356,.4910544753074646,.29487064480781555,-.8197053670883179,.49105706810951233,.2948714792728424,-.8197034597396851,.49106070399284363,.2948935925960541,-.8196933269500732,.49107053875923157,.29487308859825134,-.8196947574615479,.019486773759126663,.0034609902650117874,-.9998041391372681,.01950395107269287,.003431154415011406,-.9998038411140442,.01951080560684204,.0034348517656326294,-.9998037219047546,.019518375396728516,.003450945019721985,-.9998035430908203,.4929899275302887,.2909228503704071,.8199541568756104,.4929942488670349,.29094332456588745,.8199442028999329,.49299705028533936,.29093438386917114,.8199459314346313,.49300453066825867,.29094645380973816,.8199370503425598,.49301400780677795,.29092937707901,.8199374079704285,.506730854511261,.3268951177597046,.7977238893508911,.5067356824874878,.32688724994659424,.797724187374115,.5067362189292908,.3268929123878479,.7977213859558105,.5067363381385803,.3269083499908447,.7977150082588196,.5067551732063293,.32688796520233154,.7977114319801331,-.30085650086402893,-.8039307594299316,.5130113363265991,-.3008539080619812,-.8039156794548035,.5130366683006287,-.3008496165275574,-.8039196729660034,.5130329728126526,-.30084699392318726,-.8039218187332153,.5130308866500854,-.3008323013782501,-.8039500713348389,.5129954814910889,-.3008321523666382,-.8039198517799377,.5130428671836853,.999752938747406,.022229939699172974,-27254223823547363e-21,.9997531175613403,.02221774309873581,2555549144744873e-21,.9997531175613403,.022219747304916382,-11578202247619629e-21,.9997537136077881,.022191841155290604,-5044043064117432e-21,-6690621376037598e-21,.9997531771659851,.022219300270080566,15208497643470764e-22,.9997526407241821,.02224019356071949,7711350917816162e-21,.9997531771659851,.022218987345695496,25779008865356445e-21,.9997528791427612,.022229254245758057,-.8199474215507507,-.4929923415184021,.29093796014785767,-.8199467658996582,-.49298861622810364,.29094576835632324,-.8199445605278015,-.4929924011230469,.2909456789493561,-.8199410438537598,-.4930053651332855,.2909337878227234,-.8199405670166016,-.4929971694946289,.29094862937927246,-.8199316263198853,-.4930025041103363,.2909652292728424,-.503142237663269,.32643717527389526,-.800179123878479,-.503139078617096,.3264300227165222,-.8001841306686401,-.5031341314315796,.3264409899711609,-.8001827001571655,-.5031154155731201,.32642847299575806,-.800199568271637,-.9997532367706299,-.02221621572971344,-50961971282958984e-22,-.9997530579566956,-.02221750095486641,10980293154716492e-21,-.9997529983520508,-.022224798798561096,-216066837310791e-19,-.9997526407241821,-.022240420803427696,5041249096393585e-21,-.8199519515037537,-.4929916560649872,-.29092633724212646,-.8199494481086731,-.4929870665073395,-.29094117879867554,-.8199440240859985,-.4930054545402527,-.29092511534690857,-.8199396729469299,-.4930015802383423,-.29094383120536804,-.8199336528778076,-.4930025637149811,-.29095908999443054,-.8139479756355286,-.48679518699645996,-.3170475959777832,-.8139445185661316,-.4867909550666809,-.31706294417381287,-.8139359951019287,-.4868128299713135,-.3170514404773712,-.8139359951019287,-.4868128299713135,-.3170514404773712,-.8139272928237915,-.4868120551109314,-.3170749247074127,.291377991437912,.817572832107544,-.4966624081134796,.2913815379142761,.817571222782135,-.4966628849506378,.29140985012054443,.8175534605979919,-.49667567014694214,.29141905903816223,.8175671696662903,-.49664777517318726,.2914317846298218,.8175531625747681,-.49666333198547363,.3144916296005249,.8124189376831055,-.4909893870353699,.314521849155426,.812416136264801,-.4909745156764984,.31452593207359314,.8124017119407654,-.4909958243370056,.31453219056129456,.8123990893363953,-.4909961223602295,.31453219056129456,.8123990893363953,-.4909961223602295,.31453603506088257,.8124093413352966,-.49097663164138794,-.8199474215507507,.4929920434951782,.2909386157989502,-.8199455142021179,.4929906129837036,.29094627499580383,-.8199436664581299,.492990642786026,.29095107316970825,-.8199414610862732,.4929976165294647,.2909456193447113,-.8199408054351807,.49300891160964966,.290928453207016,-.8199315071105957,.4930025339126587,.2909652292728424,-.7977402210235596,.5067192316055298,.3268728256225586,-.797728419303894,.5067235827445984,.3268952965736389,-.7977269291877747,.5067242383956909,.32689791917800903,-.7977257370948792,.5067130923271179,.3269180655479431,-.7977219223976135,.5067331790924072,.32689642906188965,-.8039276003837585,.513014554977417,.30085939168930054,-.803920328617096,.5130298733711243,.30085256695747375,-.8039193153381348,.513033926486969,.30084848403930664,-.8039184808731079,.5130314230918884,.3008551299571991,-.3170892596244812,-.8139346837997437,-.4867902398109436,-.3170653283596039,-.813935399055481,-.48680463433265686,-.3170589804649353,-.8139439225196838,-.4867946207523346,-.3170560896396637,-.8139365315437317,-.486808717250824,-.31703075766563416,-.813947319984436,-.4868071973323822,-.3170735538005829,.8139387965202332,.4867936074733734,-.31706538796424866,.8139315843582153,.48681098222732544,-.3170650601387024,.8139441609382629,.4867902994155884,-.31706249713897705,.8139439225196838,.4867921471595764,-.3170546293258667,.8139438629150391,.4867975413799286,-.31705403327941895,.8139353394508362,.4868120551109314,-.31705284118652344,.8139360547065735,.4868115782737732,-.32690656185150146,.797716498374939,.5067349672317505,-.32688647508621216,.7977249026298523,.5067349076271057,-.32688552141189575,.7977311611175537,.506725549697876,-.3268853724002838,.7977126240730286,.5067547559738159,.2909286618232727,-.8199402689933777,-.49300962686538696,.290932297706604,-.8199490904808044,-.4929928183555603,.290941059589386,-.8199471831321716,-.49299079179763794,.2909466624259949,-.8199383020401001,-.49300238490104675,.2909603714942932,-.8199326395988464,-.49300357699394226,-.8139441013336182,-.4867924749851227,.31706178188323975,-.8139419555664062,-.4867969751358032,.3170603811740875,-.8139404058456421,-.4868042469024658,.31705325841903687,-.8139353394508362,-.48680993914604187,.31705722212791443,-.8139327764511108,-.486809641122818,.3170642554759979,-.8139600157737732,.48677366971969604,.31704968214035034,-.8139446973800659,.4867933988571167,.31705862283706665,-.8139420747756958,.48679694533348083,.31706005334854126,-.813937246799469,.48679330945014954,.3170780539512634,-.8139326572418213,.4868103265762329,.3170636296272278,-.8139210939407349,.4868491590023041,.31703364849090576,-.8199512958526611,.4929920434951782,-.29092729091644287,-.8199489712715149,.4929892122745514,-.2909389138221741,-.8199403882026672,.49300849437713623,-.29093047976493835,-.8199390172958374,.4930011034011841,-.2909468710422516,-.8199335932731628,.49300262331962585,-.2909591794013977,.022224154323339462,8113682270050049e-21,.999752938747406,.022224217653274536,-7063150405883789e-21,.9997529983520508,.02223508059978485,-2683699131011963e-20,.9997528195381165,.022243808954954147,14416873455047607e-22,.9997525811195374,.5130226612091064,-.30085763335227966,.8039230704307556,.5130249857902527,-.30090412497520447,.8039043545722961,.5130347013473511,-.3008493185043335,.8039185404777527,.5130426287651062,-.30085936188697815,.8039097785949707,.5130426287651062,-.30085936188697815,.8039097785949707,.8139259815216064,.4868123233318329,.31707778573036194,.8139373064041138,.4867918789386749,.31708046793937683,.8139375448226929,.48680996894836426,.3170512318611145,.8139379024505615,.4868050515651703,.3170582354068756,.8139469027519226,.48679566383361816,.3170495331287384,.8139491677284241,.48678889870643616,.31705406308174133,-.49300631880760193,.29092955589294434,.8199419379234314,-.4929933547973633,.29095086455345154,.8199421167373657,-.4929933547973633,.29095086455345154,.8199421167373657,-.49299073219299316,.2909349799156189,.8199493885040283,-.4929877817630768,.290939062833786,.8199498057365417,-.49300646781921387,-.29092955589294434,.8199418783187866,-.4929991066455841,-.2909305989742279,.8199458718299866,-.4929991066455841,-.2909305989742279,.8199458718299866,-.4929906129837036,-.29093536734580994,.8199493885040283,-.49298787117004395,-.2909401059150696,.819949209690094,-.022236576303839684,-14398247003555298e-22,.9997527003288269,-.022226199507713318,26732683181762695e-21,.9997529983520508,-.022215761244297028,-4159286618232727e-21,.9997531771659851,-.022215470671653748,28014183044433594e-22,.9997532963752747,.4860762059688568,.31750911474227905,-.8141976594924927,.4860828220844269,.3174929618835449,-.8142000436782837,.4860839545726776,.31748220324516296,-.8142036199569702,.48609045147895813,.31749191880226135,-.8141958713531494,.48609644174575806,.31749197840690613,-.8141922950744629,.48610714077949524,.3175130784511566,-.8141777515411377,.48611539602279663,.31747305393218994,-.8141883611679077,-346451997756958e-19,.016819089651107788,-.9998586177825928,-2047419548034668e-20,.016789883375167847,-.999859094619751,-13813376426696777e-21,.016806378960609436,-.9998587369918823,-277138315141201e-20,.016810698434710503,-.9998586773872375,65267086029052734e-22,.016805753111839294,-.9998587965965271,18220569472759962e-21,.016794271767139435,-.9998589754104614,.016185671091079712,-.9998690485954285,-3345310688018799e-20,.01620444655418396,-.999868631362915,-10926742106676102e-22,.016207069158554077,-.999868631362915,11086463928222656e-21,.01620793342590332,-.999868631362915,-10415911674499512e-21,.016219258308410645,-.9998684525489807,-2.980232238769531e-7,.016219640150666237,-.9998684525489807,-4.5890919864177704e-7,.3170523941516876,-.8139364719390869,-.486811101436615,.3170545697212219,-.8139440417289734,-.48679736256599426,.31706172227859497,-.8139370083808899,-.48680418729782104,.3170723617076874,-.8139404058456421,-.486791729927063,.31707704067230225,-.8139263391494751,-.48681217432022095,.8199406266212463,-.4929971992969513,-.29094862937927246,.8199410438537598,-.49300533533096313,-.290933758020401,.8199447989463806,-.49299201369285583,-.2909456193447113,.8199467658996582,-.4929884672164917,-.290946364402771,.819947361946106,-.492992103099823,-.2909383773803711,.8199547529220581,-.49298709630966187,-.2909259796142578,-.016219263896346092,.9998684525489807,5.702022463083267e-7,-.016217336058616638,.9998685717582703,-4.023313522338867e-7,-.016208097338676453,.9998686909675598,-1023709774017334e-20,-.016207024455070496,.9998686909675598,11369585990905762e-21,-.01620444655418396,.9998686909675598,10926742106676102e-22,-.01616719365119934,.9998693466186523,33482909202575684e-21,.32295531034469604,.7980619072914124,-.5087209343910217,.32295531034469604,.7980619072914124,-.5087209343910217,.3229907155036926,.798053503036499,-.5087116956710815,.3229965567588806,.7980476021766663,-.50871741771698,.32300084829330444,.7980570793151855,-.5086997747421265,.8039142489433289,.5130448937416077,.30084332823753357,.8039181232452393,.5130343437194824,.3008510172367096,.8039227724075317,.5130297541618347,.300846129655838,.8039230108261108,.5130389332771301,.300830215215683,.8039236664772034,.5130265355110168,.30084937810897827,.8039326667785645,.5130090117454529,.3008555769920349,.8039484024047852,.512998104095459,.3008320927619934,-.30085283517837524,.8039165735244751,.5130358934402466,-.300849586725235,.8039194345474243,.5130332708358765,-.3008473813533783,.803921639919281,.5130310654640198,-.3008348345756531,.8039216995239258,.5130383372306824,-.3008311986923218,.8039206862449646,.5130419731140137,.300837904214859,.803917407989502,.5130431056022644,.30084890127182007,.8039129972457886,.5130437016487122,.30085113644599915,.803921639919281,.5130288004875183,.3008517622947693,.8039230704307556,.5130261182785034,.3008546531200409,.8039194941520691,.5130301117897034,.3008613586425781,.8039342164993286,.5130031108856201,-.019525907933712006,.0034512635320425034,-.999803364276886,-.019515730440616608,.003434911370277405,-.9998036623001099,-.01951080560684204,.0034344345331192017,-.9998037815093994,-.01949400082230568,.003460988402366638,-.9998040795326233,.30084559321403503,-.8039190173149109,-.5130363702774048,.3008456826210022,-.8039130568504333,-.5130454301834106,.30084726214408875,-.8039217591285706,-.5130307674407959,.30084937810897827,-.8039229512214661,-.5130279660224915,.3008571267127991,-.803926944732666,-.5130170583724976,.49298426508903503,-.29092302918434143,-.8199574947357178,.4929867684841156,-.290944904088974,-.819948136806488,.4929903745651245,-.29092836380004883,-.8199520111083984,.4929988384246826,-.29094645380973816,-.819940447807312,.4930066466331482,-.29092955589294434,-.8199417591094971,.30083754658699036,-.8039181232452393,.5130423307418823,.3008488714694977,-.8039132356643677,.5130434036254883,.3008507788181305,-.8039216995239258,.5130287408828735,.30085182189941406,-.8039235472679138,.5130254030227661,.30085495114326477,-.8039181232452393,.5130321383476257,.30085986852645874,-.8039340376853943,.5130043029785156,-.797728419303894,-.5067229270935059,.3268962502479553,-.7977258563041687,-.506712794303894,.3269183933734894,-.797725260257721,-.5067326426506042,.3268887996673584,-.7977154850959778,-.5067335367202759,.32691144943237305,-.3269064426422119,-.7977167367935181,.5067347884178162,-.3268938660621643,-.7977226376533508,.5067335367202759,-.3268907070159912,-.7977270483970642,.5067287087440491,-.3268868923187256,-.7977240085601807,.5067360997200012,-.3268852233886719,-.7977129817008972,.5067545175552368,-.5089601278305054,.3034306466579437,-.805536687374115,-.5089573860168457,.30343058705329895,-.805538535118103,-.5089519619941711,.30339932441711426,-.8055538535118103,-.5089257955551147,.30343857407569885,-.8055554628372192,-.5089184045791626,.3034357726573944,-.8055611252784729,-.5088995695114136,.30344462394714355,-.8055697679519653,.3268873393535614,.7977280616760254,.5067291259765625,.32689282298088074,.7977269887924194,.5067273378372192,.3269011378288269,.7977209091186523,.5067315101623535,.3269102871417999,.7977165579795837,.5067325234413147,.32691535353660583,.7977278828620911,.5067119002342224,-26047229766845703e-21,-.999752938747406,-.02222883701324463,-8940696716308594e-21,-.9997531175613403,-.022218912839889526,-15245750546455383e-22,-.9997526407241821,-.02224019728600979,7366761565208435e-21,-.9997531175613403,-.02221873588860035,-.290948748588562,-.8199450969696045,-.49298956990242004,-.2909458875656128,-.8199467658996582,-.49298855662345886,-.2909458577632904,-.8199422955513,-.4929962456226349,-.29093700647354126,-.8199491500854492,-.4929898679256439,-.29093021154403687,-.8199409246444702,-.4930077791213989,-.2909247875213623,-.8199558854103088,-.4929860532283783,.7977120280265808,-.5067539215087891,.32688847184181213,.7977270483970642,-.506733775138855,.3268832564353943,.7977273464202881,-.5067236423492432,.32689768075942993,.7977273464202881,-.5067236423492432,.32689768075942993,.3170563578605652,.8139361143112183,.48680925369262695,.3170570433139801,.8139445185661316,.4867948889732361,.3170689344406128,.813934862613678,.4868030846118927,.3170716166496277,.8139290809631348,.4868110716342926,.31707435846328735,.8139417171478271,.48678815364837646,.4867840111255646,-.3170663118362427,-.8139473795890808,.486789345741272,-.3170621991157532,-.8139458894729614,.4867922365665436,-.31707215309143066,-.8139402270317078,.48679348826408386,-.317050039768219,-.8139480948448181,.4868071973323822,-.3170592784881592,-.8139362335205078,.48680734634399414,-.31705474853515625,-.8139378428459167,.4868084490299225,-.3170764446258545,-.8139288425445557,-13574957847595215e-21,-.01111060380935669,-.9999383091926575,-4933535819873214e-21,-.011075659655034542,-.9999386072158813,7039896445348859e-21,-.011118302121758461,-.9999381303787231,852346420288086e-20,-.01112416386604309,-.9999381899833679,14200806617736816e-21,-.011078417301177979,-.9999385476112366,3071129322052002e-20,-.011100709438323975,-.9999383687973022,.29092466831207275,.8199556469917297,.49298620223999023,.2909298241138458,.8199406862258911,.4930081367492676,.2909347116947174,.8199495077133179,.4929908514022827,.2909448742866516,.8199471235275269,.49298879504203796,.29094886779785156,.8199383020401001,.49300071597099304,.016171813011169434,.9998692274093628,-3343820571899414e-20,.01620444655418396,.999868631362915,-10915100574493408e-22,.01620711386203766,.9998686909675598,-10520219802856445e-21,.01620851457118988,.9998686909675598,1023709774017334e-20,.01621788740158081,.9998685121536255,1.7881393432617188e-7,.016219263896346092,.9998685121536255,-3.4598633646965027e-7,-.5067505836486816,.3268905580043793,.7977132201194763,-.5067304372787476,.3269084393978119,.7977187037467957,-.5067296028137207,.3268975615501404,.797723650932312,-.5067266225814819,.3268991708755493,.7977248430252075,-.5067264437675476,.32688987255096436,.7977288961410522,-.5067263245582581,.32689154148101807,.7977282404899597,-.2909603714942932,.8199325203895569,.49300387501716614,-.2909455895423889,.8199446797370911,.4929923117160797,-.2909436821937561,.8199417591094971,.4929981827735901,-.2909405529499054,.8199470639228821,.4929913282394409,-.2909325659275055,.8199489712715149,.4929928183555603,-.2909291386604309,.819939911365509,.4930098354816437,-.9997537136077881,.022191839292645454,504031777381897e-20,-.9997531175613403,.02221798151731491,-2693384885787964e-21,-.9997531175613403,.022219747304916382,11652708053588867e-21,-.9997529983520508,.022228829562664032,273287296295166e-19,-.9998690485954285,-4357099533081055e-20,.01618865132331848,-.999868631362915,8.069910109043121e-7,.016208183020353317,-.9998685717582703,-448375940322876e-19,.01621093973517418,-.9998685717582703,-8761882781982422e-21,.01621145009994507,-.9998685717582703,11309981346130371e-21,.01621215045452118,-.9998684525489807,-10132789611816406e-22,.01622423529624939,-.9998683929443359,10335352271795273e-22,.016223950311541557,-.5130453705787659,-.3008093237876892,.8039266467094421,-.5130453705787659,-.3008093237876892,.8039266467094421,-.5130347013473511,-.30084866285324097,.8039188385009766,-.5130272507667542,-.3008646070957184,.803917646408081,-.5130270719528198,-.3008405864238739,.8039267659187317,-.5130001902580261,-.3008325397968292,.8039469718933105,-.5067576169967651,-.3268996477127075,-.7977050542831421,-.5067576169967651,-.3268996477127075,-.7977050542831421,-.5067268013954163,-.3268904387950897,-.7977283596992493,-.5067136287689209,-.32691413164138794,-.7977270483970642,-.5130422711372375,-.30085960030555725,-.8039097785949707,-.5130422711372375,-.30085960030555725,-.8039097785949707,-.5130351185798645,-.3008493185043335,-.8039183616638184,-.5130186080932617,-.30085819959640503,-.8039255738258362,-.5130038857460022,-.3008323609828949,-.8039445877075195,-.8139479756355286,.4867886006832123,-.31705790758132935,-.8139469027519226,.4867956042289734,-.3170493245124817,-.8139386773109436,.4867936074733734,-.31707385182380676,-.8139375448226929,.48680996894836426,-.3170512914657593,-.8139374256134033,.486805260181427,-.3170590400695801,-.8139272928237915,.4868119955062866,-.31707483530044556,-.8039371967315674,-.5130016803741455,-.3008561134338379,-.8039246797561646,-.5130265951156616,-.30084672570228577,-.8039228916168213,-.5130297541618347,-.30084607005119324,-.803920567035675,-.5130411386489868,-.3008330762386322,-.803917407989502,-.5130360126495361,-.3008502721786499,-.8039128184318542,-.5130437016487122,-.30084937810897827,-.8039510250091553,-.5129914879798889,.30083632469177246,-.803925633430481,-.513030469417572,.30083781480789185,-.8039206862449646,-.5130295753479004,.3008521795272827,-.8039200901985168,-.5130325555801392,.3008491098880768,-.8039183616638184,-.5130420923233032,.30083730816841125,-.8039169311523438,-.513033390045166,.3008556663990021,-.8039165735244751,-.5130240321159363,.3008728623390198,.8139259219169617,-.4868123531341553,.3170778751373291,.8139362335205078,-.48681262135505676,.31705108284950256,.8139362335205078,-.48681262135505676,.31705108284950256,.8139456510543823,-.4867914915084839,.31705909967422485,.8139479756355286,-.4867952764034271,.3170475363731384,.8199337124824524,-.4930025637149811,.29095906019210815,.8199397325515747,-.4930015802383423,.29094383120536804,.8199440240859985,-.4930053949356079,.29092511534690857,.8199495673179626,-.49298688769340515,.290941059589386,.8199518918991089,-.4929915964603424,.29092657566070557,-30502676963806152e-21,-.01617613434791565,.9998691082000732,-8180737495422363e-21,-.016205251216888428,.999868631362915,11175870895385742e-22,-.01622094213962555,.9998685121536255,46496279537677765e-22,-.01620444841682911,.9998686909675598,6626127287745476e-21,-.016218557953834534,.9998685121536255,16480684280395508e-21,-.016207247972488403,.999868631362915,.2909298837184906,-.8199405670166016,.493008553981781,.2909371554851532,-.819949209690094,.49298959970474243,.290944904088974,-.8199470043182373,.4929887652397156,.29094886779785156,-.8199384212493896,.4930006265640259,.29096388816833496,-.8199325799942017,.49300146102905273,.8199388980865479,.4930010437965393,.2909468710422516,.8199397325515747,.4930093288421631,.2909305691719055,.8199490904808044,.49298906326293945,.2909387946128845,.8199512362480164,.4929920732975006,.2909274697303772,.8199567198753357,.4929872155189514,.29091987013816833,.8039079904556274,.5130425095558167,-.30086418986320496,.8039079904556274,.5130425095558167,-.30086418986320496,.8039183616638184,.513031542301178,-.3008551597595215,.8039308786392212,.5130091905593872,-.30085980892181396,.4929937720298767,-.29094550013542175,.8199437856674194,.4929945468902588,-.2909424602985382,.819944441318512,.4929971694946289,-.2909335792064667,.8199460506439209,.49299973249435425,-.29094603657722473,.8199400305747986,.4930054247379303,-.2909621000289917,.819930911064148,.4930139482021332,-.2909294068813324,.8199374079704285,-.5067506432533264,-.326890766620636,.7977131605148315,-.5067328214645386,-.32690688967704773,.797717809677124,-.5067287087440491,-.326896071434021,.7977248430252075,-.5067263841629028,-.3268885314464569,.7977295517921448,-.5067260265350342,-.3268907368183136,.7977287173271179,-.5067246556282043,-.3268979489803314,.7977266907691956,-.4868078827857971,-.31707385182380676,.8139301538467407,-.48680680990219116,-.31705403327941895,.8139384388923645,-.4868009090423584,-.3170638084411621,.8139382600784302,-.4867950677871704,-.3170577883720398,.8139441013336182,-.486785888671875,-.31707119941711426,.8139443397521973,-63907355070114136e-22,-.9997531175613403,.02221914753317833,15255063772201538e-22,-.9997526407241821,.022240199148654938,7659196853637695e-21,-.9997530579566956,.022218987345695496,25704503059387207e-21,-.9997528791427612,.022229783236980438,-.2909602224826813,-.8199326992034912,.49300363659858704,-.2909456193447113,-.8199447989463806,.4929920732975006,-.2909436523914337,-.8199417591094971,.4929981827735901,-.2909403145313263,-.8199471235275269,.4929913580417633,-.2909320592880249,-.8199489116668701,.4929931163787842,-.2909291386604309,-.8199397325515747,.4930102229118347,-.3170614242553711,-.8139365911483765,.4868052303791046,-.3170546591281891,-.8139438629150391,.4867975413799286,-.31705236434936523,-.8139365911483765,.4868110716342926,-.31705206632614136,-.8139435052871704,.4867997169494629,.5067088007926941,-.32691431045532227,-.7977301478385925,.5067205429077148,-.32689112424850464,-.7977320551872253,.506729781627655,-.32688722014427185,-.7977279424667358,.5067307949066162,-.32690852880477905,-.797718346118927,.9997526407241821,-.022240418940782547,-5042180418968201e-21,.9997529983520508,-.02222476899623871,216066837310791e-19,.9997532367706299,-.022217553108930588,-11643394827842712e-21,.9997532963752747,-.022216007113456726,49620866775512695e-22,.8139346837997437,-.48679178953170776,-.31708675622940063,.8139352798461914,-.48680993914604187,-.31705716252326965,.8139358758926392,-.48680379986763,-.31706541776657104,.8139419555664062,-.4867968261241913,-.3170607388019562,.8139616847038269,-.4867711067199707,-.3170492947101593,.9998683333396912,9.019859135150909e-7,-.016223222017288208,.9998684525489807,-9.5367431640625e-7,-.016224414110183716,.999868631362915,-858306884765625e-20,-.01621215045452118,.999868631362915,8.074566721916199e-7,-.016208184882998466,.999868631362915,11593103408813477e-21,-.016211628913879395,.9998686909675598,-31620264053344727e-21,-.016208022832870483,.9998689293861389,-4826486110687256e-20,-.0161912702023983,-838935375213623e-20,.016203731298446655,.9998688101768494,9.622890502214432e-7,.01622016541659832,.9998683929443359,4648929461836815e-21,.01620445027947426,.9998686909675598,64373016357421875e-22,.01621994376182556,.9998685717582703,1582503318786621e-20,.016208693385124207,.9998685121536255,3847479820251465e-20,.016177505254745483,.999869167804718,.48680007457733154,.31705743074417114,.813941240310669,.48680129647254944,.3170565962791443,.8139409422874451,.4868077337741852,.3170599937438965,.8139355778694153,.48685207962989807,.3170304000377655,.8139206767082214,.8139327168464661,.48680904507637024,-.31706565618515015,.8139352798461914,.48680996894836426,-.3170573115348816,.813941240310669,.48680001497268677,-.31705746054649353,.8139423727989197,.4867967665195465,-.31705957651138306,.8139436841011047,.48679426312446594,-.3170599341392517,.5088772773742676,.30341875553131104,-.8055935502052307,.5089110136032104,.3034226894378662,-.8055708408355713,.5089132785797119,.30345800518989563,-.8055559992790222,.5089139342308044,.30345267057418823,-.8055576086044312,.508934497833252,.30343055725097656,-.8055529594421387,.5089894533157349,.303387314081192,-.8055344820022583,.5031076073646545,.3264298439025879,-.8002038598060608,.5031241178512573,.3264410197734833,-.8001890182495117,.5031249523162842,.32645124197006226,-.8001842498779297,.5031318664550781,.3264358937740326,-.8001861572265625,.5031365752220154,.3264387249946594,-.8001821041107178,.797707200050354,.506753146648407,-.3269011378288269,.797707200050354,.506753146648407,-.3269011378288269,.7977266907691956,.5067112445831299,-.32691892981529236,.7977287769317627,.5067213773727417,-.3268980383872986,.3170560896396637,-.8139365315437317,.486808717250824,.31705886125564575,-.8139439821243286,.48679447174072266,.3170628845691681,-.813936173915863,.4868050217628479,.3170718252658844,-.8139439821243286,.48678603768348694,.31708014011383057,-.8139369487762451,.48679235577583313,.31708040833473206,-.8139251470565796,.48681211471557617,.8199315071105957,.4930025637149811,-.2909652590751648,.8199403285980225,.49300968647003174,-.2909284830093384,.8199413418769836,.49299755692481995,-.2909456491470337,.8199435472488403,.49299076199531555,-.29095104336738586,.8199455142021179,.4929905831813812,-.2909463047981262,.8199475407600403,.4929920434951782,-.2909378409385681,-.49301081895828247,-.2909294068813324,-.8199392557144165,-.4930001497268677,-.29094603657722473,-.8199397325515747,-.4929942190647125,-.29094552993774414,-.8199436664581299,-.49299415946006775,-.2909356355667114,-.8199470043182373,-.4929927885532379,-.2909421920776367,-.8199455738067627,-.49299028515815735,-.29092299938201904,-.8199537992477417,-.016219697892665863,-.9998685121536255,1.8882565200328827e-7,-.016219332814216614,-.9998683929443359,4.917383193969727e-7,-.016213014721870422,-.9998685121536255,4868209362030029e-20,-.016209125518798828,-.999868631362915,-10088086128234863e-21,-.016207367181777954,-.999868631362915,10952353477478027e-21,-.01620444655418396,-.9998686909675598,-9.727664291858673e-7,-.01618608832359314,-.9998689889907837,3844499588012695e-20,-.49107488989830017,.2948729395866394,-.8196921944618225,-.49106675386428833,.29489362239837646,-.8196896314620972,-.49106061458587646,.2948709726333618,-.8197014927864075,-.49105924367904663,.2948675751686096,-.8197035193443298,-.4910484552383423,.2948729693889618,-.8197080492973328,.5130017399787903,-.30085939168930054,-.8039357662200928,.5130244493484497,-.30084937810897827,-.803925096988678,.513026773929596,-.3008493483066559,-.8039234280586243,.513030469417572,-.30085432529449463,-.8039193749427795,.5130401253700256,-.30083391070365906,-.8039209842681885,.5130414366722107,-.30084913969039917,-.8039143681526184,.32688838243484497,-.7977268695831299,.5067307949066162,.3268934488296509,-.797727644443512,.5067262649536133,.3268952965736389,-.7977220416069031,.5067338347434998,.3269088566303253,-.7977157235145569,.5067347288131714,.32691681385040283,-.7977270483970642,.5067120790481567,.506731390953064,-.3268928527832031,.7977245450019836,.5067368745803833,-.3268938362598419,.7977205514907837,.5067563056945801,-.3268866240978241,.7977113723754883,.5067574977874756,-.3268994987010956,.7977052927017212,.5067574977874756,-.3268994987010956,.7977052927017212,.48679232597351074,-.31706538796424866,.8139427304267883,.4867943525314331,-.3170838952064514,.8139344453811646,.48680126667022705,-.317055344581604,.8139413595199585,.48680776357650757,-.31706103682518005,.8139351010322571,.4868128001689911,-.3170541524887085,.813934862613678,.4868144989013672,-.3170735836029053,.8139262199401855,-.3269168436527252,-.7977273464202881,-.5067114233970642,-.3269089162349701,-.7977157235145569,-.5067346096038818,-.32690006494522095,-.7977253198623657,-.5067254304885864,-.3268975615501404,-.7977211475372314,-.5067336559295654,-.326894074678421,-.7977250218391418,-.5067296624183655,-.32689133286476135,-.7977280020713806,-.5067267417907715,-.7977375388145447,-.5067383050918579,-.3268502950668335,-.7977375388145447,-.5067383050918579,-.3268502950668335,-.7977255582809448,-.5067352652549744,-.326884001493454,-.7977122068405151,-.5067542791366577,-.32688724994659424,.9998685717582703,-1.9371509552001953e-7,.016211718320846558,.9998686909675598,-7063150405883789e-21,.01620452105998993,.9998686909675598,5.688052624464035e-7,.01620963215827942,.9998687505722046,8.088536560535431e-7,.01620098017156124,.9998687505722046,9447336196899414e-21,.016203224658966064,.9998690485954285,-34227967262268066e-21,.01618596911430359,.3268680274486542,-.7977415323257446,-.5067204236984253,.3268900513648987,-.7977254986763,-.5067315697669983,.32689306139945984,-.7977262735366821,-.5067285299301147,.3268945813179016,-.7977228164672852,-.5067329406738281,.32689517736434937,-.7977268099784851,-.5067262649536133,.32691502571105957,-.7977272272109985,-.5067128539085388,.7977112531661987,-.5067529678344727,-.32689201831817627,.7977154850959778,-.5067335963249207,-.32691144943237305,.7977215647697449,-.506732702255249,-.32689809799194336,.7977254390716553,-.5067287087440491,-.32689452171325684,.7977267503738403,-.5067309141159058,-.32688814401626587,.5130077004432678,.30085963010787964,.8039320707321167,.5130297541618347,.30084937810897827,.8039216995239258,.5130323171615601,.3008490204811096,.8039200901985168,.5130364894866943,.30085432529449463,.8039156794548035,.5130462050437927,.3008359372615814,.8039162158966064,.51304692029953,.30084913969039917,.8039107918739319,.8039127588272095,-.5130437612533569,.30084940791130066,.8039186596870422,-.5130347609519958,.3008493483066559,.8039190769195557,-.5130429863929749,.30083420872688293,.8039229512214661,-.5130298137664795,.30084604024887085,.8039247393608093,-.5130265951156616,.3008466958999634,.8039315938949585,-.5130106210708618,.3008553087711334,.8039183616638184,-.5130316615104675,-.30085524916648865,.803918719291687,-.5130422711372375,-.3008360266685486,.8039200305938721,-.5130326151847839,-.30084913969039917,.8039206862449646,-.5130296349525452,-.3008522093296051,.8039317727088928,-.513005793094635,-.30086347460746765,.8039458394050598,-.5129998922348022,-.3008357584476471,-.30086222290992737,-.8039306402206421,-.5130082964897156,-.30085277557373047,-.8039199113845825,-.513030469417572,-.300851047039032,-.8039217591285706,-.513028621673584,-.3008507788181305,-.8039173483848572,-.5130357146263123,-.3008337914943695,-.8039432168006897,-.5130053162574768,-.9998691082000732,-34242868423461914e-21,-.01618131995201111,-.9998687505722046,8.067581802606583e-7,-.01620098017156124,-.9998687505722046,9641051292419434e-21,-.016203448176383972,-.9998686909675598,-7212162017822266e-21,-.016204625368118286,-.9998686909675598,6.223563104867935e-7,-.016209648922085762,-.9998685121536255,-1.9371509552001953e-7,-.01621153950691223,-.7977283596992493,.5067322254180908,-.326882004737854,-.7977277636528015,.5067290663719177,-.3268887996673584,-.7977234125137329,.5067338943481445,-.32689157128334045,-.7977177500724792,.5067336559295654,-.32690560817718506,-.7977122068405151,.5067541599273682,-.326887309551239,-.8039452433586121,.5130032300949097,-.3008318245410919,-.8039326071739197,.5130090713500977,-.3008555769920349,-.8039237856864929,.5130265951156616,-.30084937810897827,-.8039227724075317,.5130298137664795,-.3008461892604828,-.8039199709892273,.5130324363708496,-.30084940791130066,-.8039199709892273,.5130419135093689,-.30083346366882324,-.8039143681526184,.5130447745323181,-.30084335803985596,-.4861213266849518,.3174731433391571,-.8141847252845764,-.4861072897911072,.3175134062767029,-.8141775131225586,-.4861047863960266,.31748297810554504,-.8141908049583435,-.4861007332801819,.3174685537815094,-.8141988515853882,-.4860859811306,.31749480962753296,-.8141974210739136,-.48608478903770447,.3174983561038971,-.814196765422821,.30044397711753845,.8036642670631409,-.5136703848838806,.30044645071029663,.8036598563194275,-.5136758685112,.3004480004310608,.8036625981330872,-.5136705636978149,.3004538118839264,.8036926984786987,-.5136200785636902,.30045652389526367,.8036901950836182,-.5136222839355469,-.3004720211029053,.8036836981773376,-.5136234760284424,-.30045682191848755,.8036627769470215,-.513664960861206,-.3004477024078369,.8036642670631409,-.5136681795120239,-.30044496059417725,.8036916851997375,-.5136268734931946,-.3004448711872101,.8036707043647766,-.5136595964431763,-.29143548011779785,.8175532221794128,-.4966612160205841,-.2914249300956726,.8175643086433411,-.4966491460800171,-.2914220690727234,.8175652623176575,-.49664899706840515,-.2914113402366638,.8175539374351501,-.4966740012168884,-.2913860082626343,.8175709843635559,-.49666067957878113,-.2913796901702881,.8175732493400574,-.49666085839271545,-2612173557281494e-20,.9997528791427612,-.022229932248592377,-7601454854011536e-21,.9997532367706299,-.02221878245472908,13606622815132141e-22,.9997526407241821,-.02224019542336464,6318092346191406e-21,.9997531771659851,-.022218704223632812,-.5130420923233032,.3008320927619934,.8039203882217407,-.5130420923233032,.3008320927619934,.8039203882217407,-.513036847114563,.30085039138793945,.8039168119430542,-.5130102634429932,.3008587956428528,.8039306998252869,-.48680686950683594,.31705421209335327,.8139384388923645,-.48680058121681213,.31706511974334717,.8139378428459167,-.4867952764034271,.3170567750930786,.8139443397521973,-.48679250478744507,.3170604407787323,.8139445781707764],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.01962309330701828,.012889564037322998,.02023136429488659,.10979831218719482,.07965327799320221,.07732349634170532,.07965327799320221,.07732349634170532,.02023136429488659,.10979831218719482,.5619750022888184,.14709901809692383,.02450018748641014,.02645343542098999,.06788178533315659,.04795658588409424,.0796533077955246,.04795646667480469,.02450018748641014,.02645343542098999,.503350019454956,.1835920214653015,.3125010132789612,.3969320058822632,.10002404451370239,.04638880491256714,.0839850902557373,.04795658588409424,.01962309330701828,.008929312229156494,.10002404451370239,.04638880491256714,.018139563500881195,.03942161798477173,.05488619580864906,.04795628786087036,.503491997718811,.058592021465301514,.09820473194122314,.10979831218719482,.05488619580864906,.04795628786087036,.018139563500881195,.03942161798477173,.04933025687932968,.08043122291564941,.04933025687932968,.08043122291564941,.03322688490152359,.0800524353981018,.03322688490152359,.0800524353981018,.0619719997048378,.7201650142669678,.012844499200582504,.020931720733642578,.5630499720573425,.345100998878479,.09606381505727768,.008966565132141113,.011493649333715439,.020151853561401367,.03200281038880348,.0800524353981018,.6875010132789612,.5218279957771301,.05055434629321098,.07732337713241577,.05055434629321098,.07732337713241577,.11814413964748383,.008967041969299316,.0850236713886261,.029828131198883057,.057423245161771774,.008966565132141113,.10158386081457138,.04638880491256714,.057423245161771774,.008966565132141113,.6874989867210388,.5953599810600281,.01827225834131241,.008149445056915283,.019623126834630966,.045423686504364014,.03755871579051018,.047578275203704834,.09387288242578506,.07732349634170532,.24622400104999542,.4335950016975403,.019623126834630966,.045423686504364014,.03755871579051018,.047578275203704834,.0850236713886261,.040868282318115234,.07398355007171631,.008967041969299316,.07532140612602234,.08043128252029419,.18750199675559998,.5220270156860352,.04066653922200203,.04795628786087036,.3125,.021938025951385498,.10997618734836578,.10979831218719482,.02358332648873329,.01918947696685791,.05190323293209076,.046388089656829834,.05190323293209076,.046388089656829834,.05488622561097145,.08043128252029419,.08367279171943665,.023528218269348145,.05488622561097145,.08043128252029419,.3124989867210388,.5957159996032715,.018272243440151215,.013669490814208984,.10554412007331848,.008966803550720215,.019007263705134392,.10979831218719482,.4383139908313751,.39722001552581787,.10253656655550003,.10979831218719482,.0503433421254158,.04638814926147461,.0850236713886261,.024307966232299805,.3124980032444,.22047501802444458,.10131248831748962,.10979825258255005,.10131248831748962,.10979825258255005,.0850236713886261,.022748231887817383,.05366211757063866,.08043128252029419,.1875,.27190500497817993,.10131251811981201,.08043169975280762,.02450021728873253,.04338186979293823,.06294332444667816,.008966565132141113,.1285640001296997,.3085939884185791,.02450021728873253,.04338186979293823,.09387288242578506,.08043169975280762,.09387288242578506,.08043169975280762,.006182555109262466,.02567189931869507,.027670973911881447,.08005237579345703,.312734991312027,.34500598907470703,.09387288242578506,.10979831218719482,.007099363952875137,.04590404033660889,.007099363952875137,.04590404033660889,.059218067675828934,.08043104410171509,.37151700258255005,.3090599775314331,.007099363952875137,.04590404033660889,.10997628420591354,.07732337713241577,.10997628420591354,.07732337713241577,.10253656655550003,.07732349634170532,.10253656655550003,.07732349634170532,.006182555109262466,.020151853561401367,.0625,.14693999290466309,.0625,.2202470302581787,.03322688490152359,.07694470882415771,.03378301486372948,.04638814926147461,.08502364158630371,.013267934322357178,.03378301486372948,.04638814926147461,.02598363533616066,.024411678314208984,.12137900292873383,.1835939884185791,.03378315269947052,.008967041969299316,.10253656655550003,.04795682430267334,.02450018748641014,.030413687229156494,.028895026072859764,.047577083110809326,.04622248187661171,.07732313871383667,.6290850043296814,.1835920214653015,.02450018748641014,.030413687229156494,.02450018748641014,.0239296555519104,.02450018748641014,.0239296555519104,.02450018748641014,.0239296555519104,.035342950373888016,.008967041969299316,.041890617460012436,.07732313871383667,.035342950373888016,.008967041969299316,.4962030053138733,.3085950016975403,.4375010132789612,.27205002307891846,.02333913929760456,.07694411277770996,.035342950373888016,.04638814926147461,.08367279171943665,.012488067150115967,.012844499200582504,.024891972541809082,.06232589855790138,.047956228256225586,.06232589855790138,.047956228256225586,.0883169174194336,.07732337713241577,.06249900162220001,.47056400775909424,.08087734878063202,.10979831218719482,.05190323293209076,.00896763801574707,.024500157684087753,.03689777851104736,.25286900997161865,.5585929751396179,.08087734878063202,.10979831218719482,.02598368003964424,.038939595222473145,.03322688490152359,.047577738761901855,.10997621715068817,.04795706272125244,.02598368003964424,.038939595222473145,.03322688490152359,.047577738761901855,.003621000098064542,.1835939884185791,.07794374972581863,.008966684341430664,.07794374972581863,.008966684341430664,.007533404976129532,.020931720733642578,.10131248831748962,.07732349634170532,.5625010132789612,.5218250155448914,.04933026805520058,.07732349634170532,.07532145082950592,.04795658588409424,.0850236713886261,.028268277645111084,.6875020265579224,.2718750238418579,.008582886308431625,.03737819194793701,.008582886308431625,.03737819194793701,.11658430099487305,.04638892412185669,.11106422543525696,.00896674394607544,.12150800228118896,.3085930347442627,.007099427282810211,.03942000865936279,.007099427282810211,.03942000865936279,.25360798835754395,.4335930347442627,.10002404451370239,.00896674394607544,.07242370396852493,.046388447284698486,.007099427282810211,.03942000865936279,.01857360079884529,.019969403743743896,.0462225005030632,.10979831218719482,.06249900162220001,.5952410101890564,.059218067675828934,.04795658588409424,.059218067675828934,.04795658588409424,.01857360079884529,.018409550189971924,.044998399913311005,.10979831218719482,.4374989867210388,.09534800052642822,.06690356880426407,.008966684341430664,.06690356880426407,.008966684341430664,.6874979734420776,.34531301259994507,.017222747206687927,.01918947696685791,.06846341490745544,.008966624736785889,.057993993163108826,.04795658588409424,.032921500504016876,.10979831218719482,.029636148363351822,.019969403743743896,.02364526502788067,.10979831218719482,.029636148363351822,.019969403743743896,.02364526502788067,.10979831218719482,.01326248049736023,.04464298486709595,.12177500128746033,.6835950016975403,.012804049998521805,.04527390003204346,.0372520349919796,.10979831218719482,.0372520349919796,.10979831218719482,.5033249855041504,.3086329698562622,.03230946138501167,.10979831218719482,.03230946138501167,.10979831218719482,.019623063504695892,.032455623149871826,.12873399257659912,.6835910081863403,.06665770709514618,.10979819297790527,.06354992836713791,.07732325792312622,.06354992836713791,.07732325792312622,.06665770709514618,.10979819297790527,.0031109999399632215,.4335930347442627,.06232583895325661,.077323317527771,.04066653922200203,.08043086528778076,.019623063504695892,.030895769596099854,.019623063504695892,.030895769596099854,.0635499358177185,.08043128252029419,.08367279171943665,.018008112907409668,.0635499358177185,.08043128252029419,.07098956406116486,.04795658588409424,.07098956406116486,.04795658588409424,.4375010132789612,.5215610265731812,.04066656902432442,.0773230791091919,.06665772199630737,.047956645488739014,.06665772199630737,.047956645488739014,.04066656902432442,.0773230791091919,.37138599157333374,.0585939884185791,.0235833041369915,.02519160509109497,.05921806022524834,.10979831218719482,.3133150041103363,.27218103408813477,.024563191458582878,.08005183935165405,.024563191458582878,.08005183935165405,.006182555109262466,.014631807804107666,.1068684309720993,.10979831218719482,.08398514240980148,.07732337713241577,.37139201164245605,.4335950016975403,.08398514240980148,.07732337713241577,.1068684309720993,.10979831218719482,.007099427282810211,.04338020086288452,.007099427282810211,.04338020086288452,.02333918772637844,.047576963901519775,.1056443378329277,.07732349634170532,.3787969946861267,.3085930347442627,.018139638006687164,.02645343542098999,.02333918772637844,.047576963901519775,.0558633916079998,.046388328075408936,.1068684458732605,.07732337713241577,.6207290291786194,.4335950016975403,.1068684458732605,.07732337713241577,.0558633916079998,.046388328075408936,.017222747206687927,.02519160509109497,.037558771669864655,.08005297183990479,.08367282897233963,.04560840129852295,.09698063135147095,.08043169975280762,.5630019903182983,.2720860242843628,.09054373949766159,.008966386318206787,.08831693977117538,.047956764698028564,.12188900262117386,.4335950016975403,.08831693977117538,.047956764698028564,.018139630556106567,.03689777851104736,.4375010132789612,.14693796634674072,.09450394660234451,.008966565132141113,.09450394660234451,.008966565132141113,.05055436119437218,.08043122291564941,.012844499200582504,.01937192678451538,.039303116500377655,.008966505527496338,.09264880418777466,.07732337713241577,.7453330159187317,.4335939884185791,.09264880418777466,.07732337713241577,.039303116500377655,.008966505527496338,.019623126834630966,.043863773345947266,.08087734878063202,.08043140172958374,.012844476848840714,.01385188102722168,.08831700682640076,.08043140172958374,.3125010132789612,.5214719772338867,.1875009983778,.3970370292663574,.08954101800918579,.08043140172958374,.08954101800918579,.08043140172958374,.03755873069167137,.0769452452659607,.011493649333715439,.014631807804107666,.07098963111639023,.08043122291564941,.07098963111639023,.08043122291564941,.10554413497447968,.046388864517211914,.10554413497447968,.046388864517211914,.49645400047302246,.4340590238571167,.025983694940805435,.045423686504364014,.05586344376206398,.008966565132141113,.08520916849374771,.04795658588409424,.08520916849374771,.04795658588409424,.5625010132789612,.39734500646591187,.01962309330701828,.007369518280029297,.011493649333715439,.02567189931869507,.04499842971563339,.04795628786087036,.18750199675559998,.6470130085945129,.06354992836713791,.04795616865158081,.08954101800918579,.07732349634170532,.04622248187661171,.04795628786087036,.08954101800918579,.07732349634170532,.04622248187661171,.04795628786087036,.012844499200582504,.026451826095581055,.6875010132789612,.14722901582717896,.024934161454439163,.01444941759109497,.04638303443789482,.008966565132141113,.11262404918670654,.046388864517211914,.6874989867210388,.09525102376937866,.5042709708213806,.4335930347442627,.1112002432346344,.08043169975280762,.08520916849374771,.07732337713241577,.008582878857851028,.043862223625183105,.008582878857851028,.043862223625183105,.01962309330701828,.03737986087799072,.08898389339447021,.008966386318206787,.01962309330701828,.03737986087799072,.09450394660234451,.04638838768005371,.08898389339447021,.008966386318206787,.4963819980621338,.18359601497650146,.01962309330701828,.03737986087799072,.09606381505727768,.046388328075408936,.6216750144958496,.308555006980896,.09698067605495453,.10979819297790527,.09698067605495453,.10979819297790527,.09606381505727768,.046388328075408936,.01962309330701828,.038939714431762695,.5624989867210388,.46984195709228516,.02493416890501976,.0184096097946167,.1112002432346344,.10979825258255005,.1112002432346344,.10979825258255005,.1068684458732605,.04795706272125244,.008582878857851028,.04542207717895508,.25361400842666626,.0585939884185791,.09264880418777466,.10979819297790527,.10997617989778519,.08043175935745239,.10997617989778519,.08043175935745239,.09264880418777466,.10979819297790527,.08502364158630371,.01170814037322998,.06250099837779999,.5219460129737854,.024563191458582878,.07694411277770996,.03200285881757736,.07694464921951294,.024563191458582878,.07694411277770996,.03200285881757736,.07694464921951294,.4374989867210388,.3451380133628845,.10564440488815308,.04795706272125244,.10564440488815308,.04795706272125244,.041890617460012436,.04795628786087036,.041890617460012436,.04795628786087036,.02493416890501976,.019969403743743896,.3125019967556,.14671200513839722,.0795036107301712,.008966624736785889,.11120033264160156,.07732337713241577,.007533404976129532,.01937192678451538,.02598368003964424,.03737974166870117,.37174901366233826,.18359798192977905,.02598368003964424,.03737974166870117,.05034333094954491,.00896763801574707,.11120033264160156,.04795718193054199,.05034333094954491,.00896763801574707,.11120033264160156,.04795718193054199,.04499838873744011,.08043122291564941,.49654099345207214,.058596014976501465,.07965327799320221,.10979831218719482,.023583341389894485,.038159728050231934,.023583341389894485,.038159728050231934,.023583341389894485,.038159728050231934,.06138351559638977,.04638826847076416,.5624989867210388,.09532797336578369,.05488619580864906,.07732349634170532,.007533375173807144,.009891688823699951,.061383482068777084,.008966565132141113,.621508002281189,.058596014976501465,.07221363484859467,.08043122291564941,.025983694940805435,.043863773345947266,.025983694940805435,.043863773345947266,.02450021728873253,.04590564966201782,.07794374972581863,.04638850688934326,.02450021728873253,.04590564966201782,.6215639710426331,.5585950016975403,.10710396617650986,.046388864517211914,.02450021728873253,.04590564966201782,.025983672589063644,.030895769596099854,.05366221442818642,.10979831218719482,.2464359998703003,.3085939884185791,.02767101861536503,.047577083110809326,.02767101861536503,.047577083110809326,.05366221442818642,.10979831218719482,.025983672589063644,.032455503940582275,.025983672589063644,.032455503940582275,.37213099002838135,.5585950016975403,.05488622561097145,.10979831218719482,.08831696212291718,.10979831218719482,.08831696212291718,.10979831218719482,.025983672589063644,.032455503940582275,.007099442183971405,.03689616918563843,.11262404918670654,.00896674394607544,.6286150217056274,.058592021465301514,.007099442183971405,.03689616918563843,.12366431206464767,.046389102935791016,.6875010132789612,.021937012672424316,.06232582405209541,.08043128252029419,.0850236713886261,.017228126525878906,.12366431206464767,.00896763801574707,.12366431206464767,.00896763801574707,.017222747206687927,.04464375972747803,.06846341490745544,.04638838768005371,.06846341490745544,.04638838768005371,.7464879751205444,.30859601497650146,.07532142847776413,.077323317527771,.07532142847776413,.077323317527771,.0850236713886261,.033788442611694336,.06788180023431778,.08043128252029419,.06788180023431778,.08043128252029419,.09264878183603287,.04795682430267334,.6875,.3975909948348999,.1068684309720993,.08043169975280762,.08367282897233963,.04008835554122925,.07242365181446075,.008967041969299316,.07242365181446075,.008967041969299316,.3124989867210388,.4702550172805786,.057993993163108826,.08043110370635986,.2463259994983673,.18359601497650146,.1056443527340889,.10979831218719482,.006182555109262466,.044642090797424316,.11658430099487305,.008967041969299316,.07654549926519394,.04795658588409424,.07654549926519394,.04795658588409424,.11658430099487305,.008967041969299316,.0625,.2718600034713745,.08367279171943665,.029048264026641846,.012844476848840714,.015411734580993652,.4375010132789612,.02183997631072998,.03633471950888634,.0769452452659607,.03633471950888634,.0769452452659607,.07965333014726639,.08043140172958374,.07965333014726639,.08043140172958374,.018139638006687164,.04590564966201782,.37845900654792786,.058592021465301514,.036334652453660965,.047578275203704834,.06690356880426407,.04638850688934326,.018139638006687164,.04590564966201782,.09698062390089035,.07732349634170532,.18749800324440002,.7201740145683289,.06665777415037155,.08043122291564941,.0850236713886261,.03534823656082153,.1874990016222,.47015100717544556,.09387288242578506,.04795682430267334,.09387288242578506,.04795682430267334,.09820473194122314,.07732337713241577,.09820473194122314,.07732337713241577,.08367279171943665,.03456830978393555,.08954101800918579,.10979831218719482,.09820473194122314,.04795682430267334,.12877599895000458,.4335930347442627,.02450018748641014,.032937586307525635,.012844454497098923,.008331894874572754,.08898389339447021,.04638838768005371,.08398512005805969,.08043140172958374,.4374989867210388,.2202489972114563,.18749800324440002,.5951610207557678,.0850236713886261,.018788039684295654,.07221363484859467,.04795658588409424,.12210442870855331,.00896763801574707,.007099363952875137,.03041207790374756,.4969879984855652,.5585939884185791,.0852091833949089,.10979831218719482,.07098958641290665,.07732349634170532,.007099363952875137,.03041207790374756,.0753214880824089,.10979819297790527,.07221363484859467,.07732337713241577,.07221363484859467,.07732337713241577,.24624399840831757,.5585960149765015,.0753214880824089,.10979819297790527,.008582886308431625,.030893981456756592,.008582886308431625,.030893981456756592,.05799401178956032,.07732337713241577,.05799401178956032,.07732337713241577,.6285120248794556,.30859100818634033,.04933030903339386,.047956645488739014,.04933030903339386,.047956645488739014,.01962307095527649,.024411559104919434,.018139563500881195,.0239296555519104,.05055434629321098,.04795658588409424,.057423245161771774,.046388328075408936,.7465599775314331,.5585950016975403,.02023131214082241,.0475764274597168,.1286740005016327,.1835920214653015,.008582886308431625,.032453835010528564,.07654549926519394,.10979831218719482,.02023131214082241,.0475764274597168,.007099427282810211,.03293585777282715,.007099427282810211,.03293585777282715,.019007263705134392,.0475764274597168,.007099427282810211,.03293585777282715,.04933033511042595,.10979831218719482,.0032250001095235348,.6835929751396179,.061973001807928085,.647022008895874,.01900731585919857,.07694333791732788,.02333913929760456,.08005183935165405,.01900731585919857,.07694333791732788,.007533375173807144,.01385188102722168,.05799407511949539,.10979831218719482,.1874990016222,.22021400928497314,.007533375173807144,.015411734580993652,.02023131214082241,.07694333791732788,.6296669840812683,.4335930347442627,.06788180023431778,.10979831218719482,.04482320323586464,.04638856649398804,.018139563500881195,.032937586307525635,.018139563500881195,.032937586307525635,.018139563500881195,.032937586307525635,.1875009983778,.14697301387786865,.0850236713886261,.03930848836898804,.1056443378329277,.08043169975280762,.1056443378329277,.08043169975280762,.07654549926519394,.08043128252029419,.07654549926519394,.08043128252029419,.0850236713886261,.04638838768005371,.07221363484859467,.10979831218719482,.07221363484859467,.10979831218719482,.09820473194122314,.08043169975280762,.09820473194122314,.08043169975280762,.5625010132789612,.02186000347137451,.044998399913311005,.0773230791091919,.09698063135147095,.04795682430267334,.023583319038152695,.031675636768341064,.044998399913311005,.0773230791091919,.09698063135147095,.04795682430267334,.24626600742340088,.6835960149765015,.023583319038152695,.031675636768341064,.0850236713886261,.044828593730926514,.437734991312027,.46996796131134033,.036334652453660965,.08005297183990479,.036334652453660965,.08005297183990479,.07098956406116486,.10979831218719482,.006182555109262466,.031673967838287354,.05055436119437218,.10979831218719482,.3786180019378662,.1835920214653015,.08398512005805969,.10979831218719482,.08398512005805969,.10979831218719482,.05055436119437218,.10979831218719482,.03930313140153885,.04638850688934326,.04482320323586464,.008966565132141113,.04482320323586464,.008966565132141113,.6875,.4695960283279419,.02358332648873329,.013669490814208984,.04086293280124664,.04638850688934326,.04086293280124664,.04638850688934326,.024934161454439163,.012889564037322998,.0625,.3453270196914673,.11106422543525696,.04638880491256714,.018139638006687164,.04338186979293823,.018139638006687164,.04338186979293823,.07654549926519394,.07732349634170532,.04086294770240784,.008966505527496338,.0034920000471174717,.3085939884185791,.018139638006687164,.04338186979293823,.007533375173807144,.008331894874572754,.6874989867210388,.21995800733566284,.05366221442818642,.07732349634170532,.028895026072859764,.07694411277770996,.05366221442818642,.07732349634170532,.028895026072859764,.07694411277770996,.06294332444667816,.04638826847076416,.1875,.34528303146362305,.027670973911881447,.07694411277770996,.006182555109262466,.009111762046813965,.07398355007171631,.04638838768005371,.12210451066493988,.046389102935791016,.12210451066493988,.046389102935791016,.12875600159168243,.5585910081863403,.07398355007171631,.04638838768005371,.006182555109262466,.03815799951553345,.06250099837779999,.39662301540374756,.0905437171459198,.04638838768005371,.040666673332452774,.10979831218719482,.040666673332452774,.10979831218719482,.0905437171459198,.04638838768005371,.012844454497098923,.009891688823699951,.011493615806102753,.009111762046813965,.4374989867210388,.5956270098686218,.08520913124084473,.08043140172958374,.08520913124084473,.08043140172958374,.04189063608646393,.10979831218719482,.008582908660173416,.03893798589706421,.11814413964748383,.04638892412185669,.6284400224685669,.5585929751396179,.10158386081457138,.00896674394607544,.10158386081457138,.00896674394607544,.11814413964748383,.04638892412185669,.06232590600848198,.10979831218719482,.04638301953673363,.04638856649398804,.04638301953673363,.04638856649398804,.7463849782943726,.058596014976501465,.06232590600848198,.10979831218719482,.01722273975610733,.031675636768341064,.04189063608646393,.08043086528778076,.04189063608646393,.08043086528778076,.0635499358177185,.10979831218719482,.3780120015144348,.5585929751396179,.018139611929655075,.030413687229156494,.018139611929655075,.030413687229156494,.017222747206687927,.038159728050231934,.08954101800918579,.047956764698028564,.7459149956703186,.18359500169754028,.05366213247179985,.04795628786087036,.017222747206687927,.038159728050231934,.023583341389894485,.04464375972747803,.25325098633766174,.18358999490737915,.0795036107301712,.04638838768005371,.10253656655550003,.08043175935745239,.10253656655550003,.08043175935745239,.0795036107301712,.04638838768005371,.08087733387947083,.07732349634170532,.10710396617650986,.008966803550720215,.10710396617650986,.008966803550720215,.5624989867210388,.5953620076179504,.01962309330701828,.014449357986450195,.025983653962612152,.02597147226333618,.025983653962612152,.02597147226333618,.10131251811981201,.04795682430267334,.5034360289573669,.5585929751396179,.08087733387947083,.04795646667480469,.08087733387947083,.04795646667480469,.10131251811981201,.04795682430267334,.37854599952697754,.4331200122833252,.01326248049736023,.04590487480163574,.019313467666506767,.08005118370056152,.03664000332355499,.10979831218719482,.019313467666506767,.08005118370056152,.029636148363351822,.018707633018493652,.25348299741744995,.3081200122833252,.02889440953731537,.019728541374206543,.024257240816950798,.10979831218719482,.02797701396048069,.10979831218719482,.02797701396048069,.10979831218719482,.02889440953731537,.01894855499267578,.028589049354195595,.10979831218719482,.621649980545044,.18359601497650146,.02889440953731537,.01894855499267578,.019925372675061226,.08005118370056152,.561972975730896,.22008800506591797,.02889503724873066,.08005237579345703,.02889503724873066,.08005237579345703,.007533404976129532,.02645176649093628,.06788178533315659,.07732349634170532,.06788178533315659,.07732349634170532,.007533404976129532,.024891972541809082,.06665770709514618,.07732349634170532,.3125,.0952489972114563,.09264882653951645,.08043169975280762,.0036299999337643385,.5585929751396179,.04622241482138634,.08043122291564941,.03200281038880348,.047577738761901855,.024500224739313126,.03942161798477173,.12137000262737274,.5585950016975403,.024563191458582878,.047576963901519775,.059218067675828934,.07732349634170532,.01962307095527649,.025971412658691406],normalized:!1}},index:{type:"Uint16Array",array:[28,234,182,303,269,285,521,391,482,142,593,355,209,84,89,440,512,467,168,146,454,320,118,222,535,280,109,40,32,563,488,479,398,419,273,186,541,74,78,326,69,331,240,435,295,473,26,178,626,53,309,51,436,448,96,97,103,255,422,45,5,618,615,65,508,264,284,376,373,315,160,632,550,126,237,254,61,366,499,344,348,165,408,414,557,201,576,506,431,365,329,95,140,145,406,36,578,572,486,16,302,296,72,59,68,158,163,169,177,179,603,62,594,0,393,48,489,352,350,76,543,346,534,378,197,437,528,417,42,480,477,212,613,173,607,230,223,635,595,102,111,555,432,556,494,507,232,86,289,218,314,121,100,244,30,27,407,252,259,304,55,325,157,147,374,396,11,154,14,270,41,271,279,122,330,129,341,522,281,525,624,82,621,427,421,387,199,447,438,495,260,511,80,313,85,573,552,560,501,426,429,43,410,258,187,389,420,248,424,390,493,445,465,347,540,77,411,131,251,462,474,481,12,565,155,150,283,372,490,217,392,587,71,66,386,402,144,161,453,634,58,363,367,94,597,141,277,238,125,3,600,8,136,319,98,300,498,233,17,538,345,324,202,115,394,548,49,318,220,119,33,456,143,335,56,128,39,225,460,91,336,134,198,567,575,361,537,107,383,166,416,404,562,35,189,123,192,211,174,610,116,101,120,208,397,478,515,559,434,226,321,221,306,311,54,620,612,614,369,257,253,291,554,235,139,586,327,245,524,531,268,216,287,569,520,484,23,513,243,622,204,625,1,604,64,545,379,439,592,263,356,509,181,231,25,184,172,297,242,293,503,276,272,405,526,151,159,337,164,28,298,234,303,227,269,521,247,391,142,598,593,209,608,84,468,464,451,450,444,470,168,384,146,320,117,118,535,581,280,40,461,32,488,463,479,419,505,273,541,360,74,326,585,69,240,514,435,473,472,26,626,206,53,51,547,436,96,137,97,255,430,422,5,10,618,65,602,508,284,570,376,315,628,160,550,191,126,254,130,61,499,18,344,165,338,408,557,441,201,358,106,364,110,502,370,185,195,487,194,577,485,239,583,292,579,21,290,79,584,357,354,265,351,46,250,529,533,381,413,616,609,175,457,458,635,458,230,635,112,207,9,6,596,113,219,400,90,87,308,288,371,549,152,153,561,148,396,215,11,631,135,342,132,332,340,200,443,446,496,349,261,81,627,310,574,193,553,504,418,425,47,415,409,190,483,388,246,44,423,492,50,449,347,343,540,412,339,127,466,469,476,15,38,564,150,527,283,491,399,213,588,75,70,385,530,403,162,171,452,60,73,359,93,105,601,275,580,236,2,590,599,133,630,317,299,19,497,20,582,536,323,52,205,395,156,544,316,633,224,34,459,455,333,67,57,37,266,229,92,328,334,196,377,571,362,542,539,382,170,167,401,149,566,188,274,124,210,475,176,114,104,99,208,88,397,516,442,558,228,307,322,305,286,312,619,83,611,368,428,256,294,433,551,138,353,589,249,518,523,267,13,214,568,282,519,22,471,517,623,7,203,4,617,606,546,375,380,591,63,262,510,605,180,24,31,183,301,29,241,500,108,278,405,532,526,159,629,337]},boundingSphere:{center:[0,0,-762939453125e-17],radius:160.50603975869993}},faceValues:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],rotationCombinations:{"1,2":[-58,-18,-148],"1,3":[122,-18,32],"1,4":[-159,30,-69],"1,5":[21,150,-69],"1,6":[21,-30,69],"1,7":[0,90,-90],"1,8":[122,18,-32],"1,9":[-58,126,32],"1,10":[58,54,148],"1,11":[-122,-18,-32],"1,12":[159,30,69],"1,13":[58,54,-32],"1,14":[-58,54,32],"1,15":[90,0,90],"1,16":[-90,0,-90],"1,17":[122,54,32],"1,18":[-122,54,-32],"1,19":[-21,30,69],"1,20":[58,-18,-32],"1,21":[58,126,-32],"1,22":[-58,54,-148],"1,23":[-58,18,-32],"1,24":[0,90,90],"1,25":[-21,30,-111],"1,26":[21,30,111],"1,27":[-21,-150,-69],"1,28":[-58,-18,32],"1,29":[58,18,32],"1,30":[-180,0,0],"2,3":[-21,150,69],"2,4":[-58,-126,-32],"2,5":[122,-54,-32],"2,6":[-58,54,-148],"2,7":[-122,-54,32],"2,8":[0,-180,0],"2,9":[-159,-30,69],"2,10":[-122,-18,-32],"2,11":[58,-18,148],"2,12":[159,-30,-69],"2,13":[58,-162,-32],"2,14":[-58,-54,148],"2,15":[-159,30,-69],"2,16":[21,-30,69],"2,17":[21,-150,69],"2,18":[0,-90,90],"2,19":[-58,-18,-148],"2,20":[58,126,-32],"2,21":[0,-90,-90],"2,22":[-58,-54,-32],"2,23":[-21,-30,111],"2,24":[58,-126,32],"2,25":[-58,-18,32],"2,26":[-90,0,-90],"2,27":[122,18,-32],"2,28":[0,0,-180],"2,29":[58,162,32],"2,30":[-58,-162,32],"3,4":[90,0,-90],"3,5":[90,0,90],"3,6":[-90,0,90],"3,7":[122,54,32],"3,8":[21,30,-69],"3,9":[58,54,148],"3,10":[0,90,90],"3,11":[122,-54,-32],"3,12":[58,18,32],"3,13":[0,90,-90],"3,14":[159,30,69],"3,15":[-21,30,69],"3,16":[159,-30,-69],"3,17":[58,54,-32],"3,18":[122,18,-32],"3,19":[21,150,-69],"3,20":[-58,18,-32],"3,21":[-58,162,-32],"3,22":[-21,150,69],"3,23":[180,0,0],"3,24":[-58,126,32],"3,25":[-159,30,-69],"3,26":[58,126,-32],"3,27":[21,-30,69],"3,28":[-159,-30,69],"3,29":[-58,54,32],"3,30":[58,-18,-32],"4,5":[0,0,180],"4,6":[180,0,0],"4,7":[-58,18,148],"4,8":[-58,-54,-32],"4,9":[-58,-18,-148],"4,10":[-90,0,90],"4,11":[58,18,32],"4,12":[-21,-30,111],"4,13":[-90,0,-90],"4,14":[-58,54,-148],"4,15":[-122,-54,32],"4,16":[58,54,-32],"4,17":[-58,-18,32],"4,18":[-21,30,69],"4,19":[-122,54,-32],"4,20":[21,-150,69],"4,21":[-21,30,-111],"4,22":[-58,54,32],"4,23":[0,90,90],"4,24":[-58,18,-32],"4,25":[58,126,-32],"4,26":[-122,18,32],"4,27":[58,-54,-148],"4,28":[122,54,32],"4,29":[-122,-18,-32],"4,30":[21,-30,69],"5,6":[0,180,0],"5,7":[58,-18,-32],"5,8":[58,54,148],"5,9":[58,18,32],"5,10":[90,0,-90],"5,11":[-58,-18,-148],"5,12":[21,30,-69],"5,13":[90,0,90],"5,14":[58,-54,32],"5,15":[-58,126,32],"5,16":[-58,-54,148],"5,17":[58,18,-148],"5,18":[21,-30,-111],"5,19":[-58,-126,-32],"5,20":[159,30,69],"5,21":[21,-30,69],"5,22":[58,-54,-148],"5,23":[0,-90,-90],"5,24":[58,-18,148],"5,25":[122,-54,-32],"5,26":[-58,-162,32],"5,27":[-58,54,32],"5,28":[58,-126,32],"5,29":[-58,162,-32],"5,30":[-21,30,-111],"6,7":[-58,162,-32],"6,8":[122,-54,-32],"6,9":[-58,-162,32],"6,10":[90,0,90],"6,11":[-122,18,32],"6,12":[-21,-150,-69],"6,13":[90,0,-90],"6,14":[-58,126,32],"6,15":[58,-54,32],"6,16":[-122,54,-32],"6,17":[122,-18,32],"6,18":[159,30,69],"6,19":[58,54,-32],"6,20":[21,-30,-111],"6,21":[-21,150,69],"6,22":[122,54,32],"6,23":[0,90,-90],"6,24":[122,18,-32],"6,25":[58,54,148],"6,26":[58,18,32],"6,27":[58,-126,32],"6,28":[-58,54,32],"6,29":[58,-18,-32],"6,30":[-159,-30,69],"7,8":[-58,54,-148],"7,9":[-21,30,69],"7,10":[21,30,-69],"7,11":[58,-126,32],"7,12":[-58,18,-32],"7,13":[21,30,111],"7,14":[21,-30,69],"7,15":[0,90,-90],"7,16":[0,-90,-90],"7,17":[-21,30,-111],"7,18":[-21,-30,-69],"7,19":[58,-18,148],"7,20":[122,54,32],"7,21":[-21,-30,111],"7,22":[21,-30,-111],"7,23":[58,-54,32],"7,24":[0,0,180],"7,25":[58,-18,-32],"7,26":[58,18,-148],"7,27":[-122,18,32],"7,28":[-58,-126,-32],"7,29":[58,54,148],"7,30":[-90,0,-90],"8,9":[-21,30,-111],"8,10":[-58,18,148],"8,11":[122,18,-32],"8,12":[21,30,111],"8,13":[-58,18,-32],"8,14":[-122,54,-32],"8,15":[-21,-30,111],"8,16":[-21,150,69],"8,17":[-21,30,69],"8,18":[0,90,90],"8,19":[-122,18,32],"8,20":[-58,-54,-32],"8,21":[0,90,-90],"8,22":[58,126,-32],"8,23":[-159,30,-69],"8,24":[-58,54,32],"8,25":[58,162,32],"8,26":[-90,0,90],"8,27":[58,-18,148],"8,28":[180,0,0],"8,29":[-58,-18,32],"8,30":[58,18,32],"9,10":[21,-30,-111],"9,11":[58,162,32],"9,12":[-21,30,-111],"9,13":[21,-30,69],"9,14":[-58,-54,-32],"9,15":[58,18,-148],"9,16":[58,-162,-32],"9,17":[0,0,-180],"9,18":[-58,-18,-148],"9,19":[0,-90,90],"9,20":[90,0,90],"9,21":[-58,-18,32],"9,22":[-58,-54,148],"9,23":[58,-126,32],"9,24":[-21,-30,111],"9,25":[0,-90,-90],"9,26":[58,-54,-148],"9,27":[0,90,-90],"9,28":[21,-150,69],"9,29":[58,-18,148],"9,30":[-58,54,-148],"10,11":[-21,-150,-69],"10,12":[-58,-54,-32],"10,13":[0,0,180],"10,14":[58,-18,148],"10,15":[-58,18,-32],"10,16":[122,-18,32],"10,17":[-21,-30,-69],"10,18":[58,-54,32],"10,19":[58,18,-148],"10,20":[-58,54,-148],"10,21":[58,-54,-148],"10,22":[58,-18,-32],"10,23":[90,0,90],"10,24":[21,-30,-111],"10,25":[58,18,32],"10,26":[21,30,-69],"10,27":[-122,-18,-32],"10,28":[-58,162,-32],"10,29":[-21,30,-111],"10,30":[58,-126,32],"11,12":[-90,0,90],"11,13":[-159,30,-69],"11,14":[0,90,90],"11,15":[-159,-30,69],"11,16":[21,30,-69],"11,17":[-122,18,32],"11,18":[-58,54,32],"11,19":[122,54,32],"11,20":[159,-30,-69],"11,21":[-58,54,-148],"11,22":[0,90,-90],"11,23":[58,54,-32],"11,24":[-122,54,-32],"11,25":[-58,126,32],"11,26":[159,30,69],"11,27":[-58,-54,148],"11,28":[58,18,32],"11,29":[-180,0,0],"11,30":[-58,-18,32],"12,13":[58,54,148],"12,14":[90,0,90],"12,15":[-58,54,32],"12,16":[122,-54,-32],"12,17":[21,30,-69],"12,18":[58,-18,-32],"12,19":[-58,162,-32],"12,20":[-122,54,-32],"12,21":[58,-18,148],"12,22":[90,0,-90],"12,23":[122,-18,32],"12,24":[58,18,-148],"12,25":[122,18,-32],"12,26":[-58,126,32],"12,27":[-58,-18,32],"12,28":[-21,-150,-69],"12,29":[0,90,-90],"12,30":[-21,-30,-69],"13,14":[-58,18,-32],"13,15":[58,-18,148],"13,16":[58,162,32],"13,17":[21,30,111],"13,18":[-58,54,-148],"13,19":[-58,-18,32],"13,20":[58,-54,32],"13,21":[-58,54,32],"13,22":[-58,18,148],"13,23":[-90,0,-90],"13,24":[-21,30,69],"13,25":[-58,-18,-148],"13,26":[-21,-30,111],"13,27":[-58,162,-32],"13,28":[-122,-18,-32],"13,29":[21,-30,69],"13,30":[122,54,32],"14,15":[-58,162,-32],"14,16":[-58,-18,-148],"14,17":[58,54,148],"14,18":[-21,30,-111],"14,19":[21,-30,69],"14,20":[122,-18,32],"14,21":[-21,30,69],"14,22":[0,0,180],"14,23":[-21,-30,-69],"14,24":[21,30,111],"14,25":[21,-30,-111],"14,26":[58,-18,148],"14,27":[21,150,-69],"14,28":[-58,-54,-32],"14,29":[90,0,90],"14,30":[-122,54,-32],"15,16":[180,0,0],"15,17":[58,-18,-32],"15,18":[122,-18,32],"15,19":[-58,126,32],"15,20":[-21,30,-111],"15,21":[-58,-162,32],"15,22":[122,18,-32],"15,23":[159,30,69],"15,24":[90,0,-90],"15,25":[122,54,32],"15,26":[58,54,-32],"15,27":[-58,-54,-32],"15,28":[21,150,-69],"15,29":[21,30,-69],"15,30":[0,-90,-90],"16,17":[-122,-18,-32],"16,18":[-58,-18,32],"16,19":[-58,54,-148],"16,20":[-21,150,69],"16,21":[-58,-18,-148],"16,22":[-58,18,-32],"16,23":[-21,30,69],"16,24":[-90,0,-90],"16,25":[-58,54,32],"16,26":[-122,54,-32],"16,27":[122,-54,-32],"16,28":[21,30,111],"16,29":[-159,30,-69],"16,30":[0,-90,90],"17,18":[58,18,32],"17,19":[0,90,-90],"17,20":[-90,0,-90],"17,21":[58,18,-148],"17,22":[58,54,-32],"17,23":[122,54,32],"17,24":[21,30,-69],"17,25":[0,90,90],"17,26":[-58,54,32],"17,27":[0,-90,90],"17,28":[159,30,69],"17,29":[-58,18,-32],"17,30":[58,-54,32],"18,19":[58,54,148],"18,20":[-159,30,-69],"18,21":[0,0,-180],"18,22":[21,30,-69],"18,23":[58,18,32],"18,24":[-21,30,-111],"18,25":[58,54,-32],"18,26":[0,90,-90],"18,27":[-122,-54,32],"18,28":[90,0,90],"18,29":[-122,54,-32],"18,30":[-58,-54,-32],"19,20":[0,-90,-90],"19,21":[58,54,-32],"19,22":[21,30,111],"19,23":[-21,30,-111],"19,24":[58,18,32],"19,25":[0,0,180],"19,26":[21,-30,69],"19,27":[0,180,0],"19,28":[-58,18,-32],"19,29":[58,-54,32],"19,30":[159,30,69],"20,21":[21,150,-69],"20,22":[58,162,32],"20,23":[-122,-18,-32],"20,24":[58,126,-32],"20,25":[-90,0,-90],"20,26":[-58,18,148],"20,27":[90,0,90],"20,28":[-122,-54,32],"20,29":[-21,30,69],"20,30":[122,18,-32],"21,22":[-21,-30,111],"21,23":[-58,-18,-148],"21,24":[21,-30,69],"21,25":[-58,-54,148],"21,26":[0,-90,90],"21,27":[-58,126,32],"21,28":[-90,0,-90],"21,29":[-58,-126,-32],"21,30":[58,54,148],"22,23":[21,30,111],"22,24":[-21,-30,-69],"22,25":[-21,30,69],"22,26":[-58,18,-32],"22,27":[159,-30,-69],"22,28":[58,54,148],"22,29":[-90,0,-90],"22,30":[-58,-126,-32],"23,24":[-58,54,-148],"23,25":[21,30,-69],"23,26":[58,54,148],"23,27":[-159,-30,69],"23,28":[21,-30,69],"23,29":[122,54,32],"23,30":[-122,-18,-32],"24,25":[-58,18,148],"24,26":[-58,-18,32],"24,27":[-58,-162,32],"24,28":[-122,54,-32],"24,29":[-58,-54,-32],"24,30":[90,0,90],"25,26":[-21,30,-111],"25,27":[-180,0,0],"25,28":[58,-18,148],"25,29":[-58,54,-148],"25,30":[21,-150,69],"26,27":[21,-150,69],"26,28":[0,90,-90],"26,29":[-21,-30,-69],"26,30":[-21,-150,-69],"27,28":[58,-162,-32],"27,29":[-58,126,32],"27,30":[21,-30,-111],"28,29":[122,-18,32],"28,30":[-122,18,32],"29,30":[122,-18,32]}}};
|
|
*/class EventDispatcher$1{addEventListener(e,t){void 0===this._listeners&&(this._listeners={});const i=this._listeners;void 0===i[e]&&(i[e]=[]),-1===i[e].indexOf(t)&&i[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;const i=this._listeners;return void 0!==i[e]&&-1!==i[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;const i=this._listeners[e];if(void 0!==i){const e=i.indexOf(t);-1!==e&&i.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;const t=this._listeners[e.type];if(void 0!==t){e.target=this;const i=t.slice(0);for(let t=0,n=i.length;t<n;t++)i[t].call(this,e);e.target=null}}}const o=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let l=1234567;const c=Math.PI/180,h=180/Math.PI;function generateUUID(){const e=4294967295*Math.random()|0,t=4294967295*Math.random()|0,i=4294967295*Math.random()|0,n=4294967295*Math.random()|0;return(o[255&e]+o[e>>8&255]+o[e>>16&255]+o[e>>24&255]+"-"+o[255&t]+o[t>>8&255]+"-"+o[t>>16&15|64]+o[t>>24&255]+"-"+o[63&i|128]+o[i>>8&255]+"-"+o[i>>16&255]+o[i>>24&255]+o[255&n]+o[n>>8&255]+o[n>>16&255]+o[n>>24&255]).toLowerCase()}function clamp(e,t,i){return Math.max(t,Math.min(i,e))}function euclideanModulo(e,t){return(e%t+t)%t}function lerp(e,t,i){return(1-i)*e+i*t}function isPowerOfTwo(e){return 0==(e&e-1)&&0!==e}function ceilPowerOfTwo(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))}function floorPowerOfTwo(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))}function denormalize(e,t){switch(t.constructor){case Float32Array:return e;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw new Error("Invalid component type.")}}function normalize(e,t){switch(t.constructor){case Float32Array:return e;case Uint16Array:return Math.round(65535*e);case Uint8Array:return Math.round(255*e);case Int16Array:return Math.round(32767*e);case Int8Array:return Math.round(127*e);default:throw new Error("Invalid component type.")}}var d=Object.freeze({__proto__:null,DEG2RAD:c,RAD2DEG:h,ceilPowerOfTwo,clamp,damp:function damp(e,t,i,n){return lerp(e,t,1-Math.exp(-i*n))},degToRad:function degToRad(e){return e*c},denormalize,euclideanModulo,floorPowerOfTwo,generateUUID,inverseLerp:function inverseLerp(e,t,i){return e!==t?(i-e)/(t-e):0},isPowerOfTwo,lerp,mapLinear:function mapLinear(e,t,i,n,r){return n+(e-t)*(r-n)/(i-t)},normalize,pingpong:function pingpong(e,t=1){return t-Math.abs(euclideanModulo(e,2*t)-t)},radToDeg:function radToDeg(e){return e*h},randFloat:function randFloat(e,t){return e+Math.random()*(t-e)},randFloatSpread:function randFloatSpread(e){return e*(.5-Math.random())},randInt:function randInt(e,t){return e+Math.floor(Math.random()*(t-e+1))},seededRandom:function seededRandom(e){void 0!==e&&(l=e);let t=l+=1831565813;return t=Math.imul(t^t>>>15,1|t),t^=t+Math.imul(t^t>>>7,61|t),((t^t>>>14)>>>0)/4294967296},setQuaternionFromProperEuler:function setQuaternionFromProperEuler(e,t,i,n,r){const s=Math.cos,a=Math.sin,o=s(i/2),l=a(i/2),c=s((t+n)/2),h=a((t+n)/2),d=s((t-n)/2),u=a((t-n)/2),p=s((n-t)/2),m=a((n-t)/2);switch(r){case"XYX":e.set(o*h,l*d,l*u,o*c);break;case"YZY":e.set(l*u,o*h,l*d,o*c);break;case"ZXZ":e.set(l*d,l*u,o*h,o*c);break;case"XZX":e.set(o*h,l*m,l*p,o*c);break;case"YXY":e.set(l*p,o*h,l*m,o*c);break;case"ZYZ":e.set(l*m,l*p,o*h,o*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}},smootherstep:function smootherstep(e,t,i){return e<=t?0:e>=i?1:(e=(e-t)/(i-t))*e*e*(e*(6*e-15)+10)},smoothstep:function smoothstep(e,t,i){return e<=t?0:e>=i?1:(e=(e-t)/(i-t))*e*(3-2*e)}});class Vector2{constructor(e=0,t=0){Vector2.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,i=this.y,n=e.elements;return this.x=n[0]*t+n[3]*i+n[6],this.y=n[1]*t+n[4]*i+n[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const i=Math.cos(t),n=Math.sin(t),r=this.x-e.x,s=this.y-e.y;return this.x=r*i-s*n+e.x,this.y=r*n+s*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Matrix3{constructor(){Matrix3.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(e,t,i,n,r,s,a,o,l){const c=this.elements;return c[0]=e,c[1]=n,c[2]=a,c[3]=t,c[4]=r,c[5]=o,c[6]=i,c[7]=s,c[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,n=t.elements,r=this.elements,s=i[0],a=i[3],o=i[6],l=i[1],c=i[4],h=i[7],d=i[2],u=i[5],p=i[8],m=n[0],f=n[3],g=n[6],v=n[1],x=n[4],y=n[7],b=n[2],_=n[5],S=n[8];return r[0]=s*m+a*v+o*b,r[3]=s*f+a*x+o*_,r[6]=s*g+a*y+o*S,r[1]=l*m+c*v+h*b,r[4]=l*f+c*x+h*_,r[7]=l*g+c*y+h*S,r[2]=d*m+u*v+p*b,r[5]=d*f+u*x+p*_,r[8]=d*g+u*y+p*S,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[1],n=e[2],r=e[3],s=e[4],a=e[5],o=e[6],l=e[7],c=e[8];return t*s*c-t*a*l-i*r*c+i*a*o+n*r*l-n*s*o}invert(){const e=this.elements,t=e[0],i=e[1],n=e[2],r=e[3],s=e[4],a=e[5],o=e[6],l=e[7],c=e[8],h=c*s-a*l,d=a*o-c*r,u=l*r-s*o,p=t*h+i*d+n*u;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);const m=1/p;return e[0]=h*m,e[1]=(n*l-c*i)*m,e[2]=(a*i-n*s)*m,e[3]=d*m,e[4]=(c*t-n*o)*m,e[5]=(n*r-a*t)*m,e[6]=u*m,e[7]=(i*o-l*t)*m,e[8]=(s*t-i*r)*m,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,n,r,s,a){const o=Math.cos(r),l=Math.sin(r);return this.set(i*o,i*l,-i*(o*s+l*a)+s+e,-n*l,n*o,-n*(-l*s+o*a)+a+t,0,0,1),this}scale(e,t){return this.premultiply(u.makeScale(e,t)),this}rotate(e){return this.premultiply(u.makeRotation(-e)),this}translate(e,t){return this.premultiply(u.makeTranslation(e,t)),this}makeTranslation(e,t){return this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,i=e.elements;for(let e=0;e<9;e++)if(t[e]!==i[e])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return(new this.constructor).fromArray(this.elements)}}const u=new Matrix3;function arrayNeedsUint32(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}const p={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function getTypedArray(e,t){return new p[e](t)}function createElementNS(e){return document.createElementNS("http://www.w3.org/1999/xhtml",e)}function SRGBToLinear(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function LinearToSRGB(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}const m={srgb:{"srgb-linear":SRGBToLinear},"srgb-linear":{srgb:LinearToSRGB}},f={legacyMode:!0,get workingColorSpace(){return"srgb-linear"},set workingColorSpace(e){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(e,t,i){if(this.legacyMode||t===i||!t||!i)return e;if(m[t]&&void 0!==m[t][i]){const n=m[t][i];return e.r=n(e.r),e.g=n(e.g),e.b=n(e.b),e}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(e,t){return this.convert(e,this.workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this.workingColorSpace)}},g={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},v={r:0,g:0,b:0},x={h:0,s:0,l:0},y={h:0,s:0,l:0};function hue2rgb(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+6*(t-e)*i:i<.5?t:i<2/3?e+6*(t-e)*(2/3-i):e}function toComponents(e,t){return t.r=e.r,t.g=e.g,t.b=e.b,t}class Color$1{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,void 0===t&&void 0===i?this.set(e):this.setRGB(e,t,i)}set(e){return e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t="srgb"){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,f.toWorkingColorSpace(this,t),this}setRGB(e,t,i,n=f.workingColorSpace){return this.r=e,this.g=t,this.b=i,f.toWorkingColorSpace(this,n),this}setHSL(e,t,i,n=f.workingColorSpace){if(e=euclideanModulo(e,1),t=clamp(t,0,1),i=clamp(i,0,1),0===t)this.r=this.g=this.b=i;else{const n=i<=.5?i*(1+t):i+t-i*t,r=2*i-n;this.r=hue2rgb(r,n,e+1/3),this.g=hue2rgb(r,n,e),this.b=hue2rgb(r,n,e-1/3)}return f.toWorkingColorSpace(this,n),this}setStyle(e,t="srgb"){function handleAlpha(t){void 0!==t&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(e)){let e;const n=i[1],r=i[2];switch(n){case"rgb":case"rgba":if(e=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(r))return this.r=Math.min(255,parseInt(e[1],10))/255,this.g=Math.min(255,parseInt(e[2],10))/255,this.b=Math.min(255,parseInt(e[3],10))/255,f.toWorkingColorSpace(this,t),handleAlpha(e[4]),this;if(e=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(r))return this.r=Math.min(100,parseInt(e[1],10))/100,this.g=Math.min(100,parseInt(e[2],10))/100,this.b=Math.min(100,parseInt(e[3],10))/100,f.toWorkingColorSpace(this,t),handleAlpha(e[4]),this;break;case"hsl":case"hsla":if(e=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(r)){const i=parseFloat(e[1])/360,n=parseFloat(e[2])/100,r=parseFloat(e[3])/100;return handleAlpha(e[4]),this.setHSL(i,n,r,t)}}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){const e=i[1],n=e.length;if(3===n)return this.r=parseInt(e.charAt(0)+e.charAt(0),16)/255,this.g=parseInt(e.charAt(1)+e.charAt(1),16)/255,this.b=parseInt(e.charAt(2)+e.charAt(2),16)/255,f.toWorkingColorSpace(this,t),this;if(6===n)return this.r=parseInt(e.charAt(0)+e.charAt(1),16)/255,this.g=parseInt(e.charAt(2)+e.charAt(3),16)/255,this.b=parseInt(e.charAt(4)+e.charAt(5),16)/255,f.toWorkingColorSpace(this,t),this}return e&&e.length>0?this.setColorName(e,t):this}setColorName(e,t="srgb"){const i=g[e.toLowerCase()];return void 0!==i?this.setHex(i,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=SRGBToLinear(e.r),this.g=SRGBToLinear(e.g),this.b=SRGBToLinear(e.b),this}copyLinearToSRGB(e){return this.r=LinearToSRGB(e.r),this.g=LinearToSRGB(e.g),this.b=LinearToSRGB(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e="srgb"){return f.fromWorkingColorSpace(toComponents(this,v),e),clamp(255*v.r,0,255)<<16^clamp(255*v.g,0,255)<<8^clamp(255*v.b,0,255)<<0}getHexString(e="srgb"){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=f.workingColorSpace){f.fromWorkingColorSpace(toComponents(this,v),t);const i=v.r,n=v.g,r=v.b,s=Math.max(i,n,r),a=Math.min(i,n,r);let o,l;const c=(a+s)/2;if(a===s)o=0,l=0;else{const e=s-a;switch(l=c<=.5?e/(s+a):e/(2-s-a),s){case i:o=(n-r)/e+(n<r?6:0);break;case n:o=(r-i)/e+2;break;case r:o=(i-n)/e+4}o/=6}return e.h=o,e.s=l,e.l=c,e}getRGB(e,t=f.workingColorSpace){return f.fromWorkingColorSpace(toComponents(this,v),t),e.r=v.r,e.g=v.g,e.b=v.b,e}getStyle(e="srgb"){return f.fromWorkingColorSpace(toComponents(this,v),e),"srgb"!==e?`color(${e} ${v.r} ${v.g} ${v.b})`:`rgb(${255*v.r|0},${255*v.g|0},${255*v.b|0})`}offsetHSL(e,t,i){return this.getHSL(x),x.h+=e,x.s+=t,x.l+=i,this.setHSL(x.h,x.s,x.l),this}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,i){return this.r=e.r+(t.r-e.r)*i,this.g=e.g+(t.g-e.g)*i,this.b=e.b+(t.b-e.b)*i,this}lerpHSL(e,t){this.getHSL(x),e.getHSL(y);const i=lerp(x.h,y.h,t),n=lerp(x.s,y.s,t),r=lerp(x.l,y.l,t);return this.setHSL(i,n,r),this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}let b;Color$1.NAMES=g;class ImageUtils{static getDataURL(e){if(/^data:/i.test(e.src))return e.src;if("undefined"==typeof HTMLCanvasElement)return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{void 0===b&&(b=createElementNS("canvas")),b.width=e.width,b.height=e.height;const i=b.getContext("2d");e instanceof ImageData?i.putImageData(e,0,0):i.drawImage(e,0,0,e.width,e.height),t=b}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){const t=createElementNS("canvas");t.width=e.width,t.height=e.height;const i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);const n=i.getImageData(0,0,e.width,e.height),r=n.data;for(let e=0;e<r.length;e++)r[e]=255*SRGBToLinear(r[e]/255);return i.putImageData(n,0,0),t}if(e.data){const t=e.data.slice(0);for(let e=0;e<t.length;e++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[e]=Math.floor(255*SRGBToLinear(t[e]/255)):t[e]=SRGBToLinear(t[e]);return{data:t,width:e.width,height:e.height}}return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),e}}class Source{constructor(e=null){this.isSource=!0,this.uuid=generateUUID(),this.data=e,this.version=0}set needsUpdate(e){!0===e&&this.version++}toJSON(e){const t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.images[this.uuid])return e.images[this.uuid];const i={uuid:this.uuid,url:""},n=this.data;if(null!==n){let e;if(Array.isArray(n)){e=[];for(let t=0,i=n.length;t<i;t++)n[t].isDataTexture?e.push(serializeImage(n[t].image)):e.push(serializeImage(n[t]))}else e=serializeImage(n);i.url=e}return t||(e.images[this.uuid]=i),i}}function serializeImage(e){return"undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap?ImageUtils.getDataURL(e):e.data?{data:Array.from(e.data),width:e.width,height:e.height,type:e.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let _=0;class Texture extends EventDispatcher$1{constructor(e=Texture.DEFAULT_IMAGE,t=Texture.DEFAULT_MAPPING,i=1001,n=1001,r=1006,s=1008,a=1023,o=1009,l=Texture.DEFAULT_ANISOTROPY,c=3e3){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:_++}),this.uuid=generateUUID(),this.name="",this.source=new Source(e),this.mipmaps=[],this.mapping=t,this.wrapS=i,this.wrapT=n,this.magFilter=r,this.minFilter=s,this.anisotropy=l,this.format=a,this.internalFormat=null,this.type=o,this.offset=new Vector2(0,0),this.repeat=new Vector2(1,1),this.center=new Vector2(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Matrix3,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=c,this.userData={},this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1,this.needsPMREMUpdate=!1}get image(){return this.source.data}set image(e){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return(new this.constructor).copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.encoding=e.encoding,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}toJSON(e){const t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.textures[this.uuid])return e.textures[this.uuid];const i={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(300!==this.mapping)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case 1e3:e.x=e.x-Math.floor(e.x);break;case 1001:e.x=e.x<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case 1e3:e.y=e.y-Math.floor(e.y);break;case 1001:e.y=e.y<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){!0===e&&(this.version++,this.source.needsUpdate=!0)}}Texture.DEFAULT_IMAGE=null,Texture.DEFAULT_MAPPING=300,Texture.DEFAULT_ANISOTROPY=1;class Vector4{constructor(e=0,t=0,i=0,n=1){Vector4.prototype.isVector4=!0,this.x=e,this.y=t,this.z=i,this.w=n}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,n){return this.x=e,this.y=t,this.z=i,this.w=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,i=this.y,n=this.z,r=this.w,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*n+s[12]*r,this.y=s[1]*t+s[5]*i+s[9]*n+s[13]*r,this.z=s[2]*t+s[6]*i+s[10]*n+s[14]*r,this.w=s[3]*t+s[7]*i+s[11]*n+s[15]*r,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,n,r;const s=.01,a=.1,o=e.elements,l=o[0],c=o[4],h=o[8],d=o[1],u=o[5],p=o[9],m=o[2],f=o[6],g=o[10];if(Math.abs(c-d)<s&&Math.abs(h-m)<s&&Math.abs(p-f)<s){if(Math.abs(c+d)<a&&Math.abs(h+m)<a&&Math.abs(p+f)<a&&Math.abs(l+u+g-3)<a)return this.set(1,0,0,0),this;t=Math.PI;const e=(l+1)/2,o=(u+1)/2,v=(g+1)/2,x=(c+d)/4,y=(h+m)/4,b=(p+f)/4;return e>o&&e>v?e<s?(i=0,n=.707106781,r=.707106781):(i=Math.sqrt(e),n=x/i,r=y/i):o>v?o<s?(i=.707106781,n=0,r=.707106781):(n=Math.sqrt(o),i=x/n,r=b/n):v<s?(i=.707106781,n=.707106781,r=0):(r=Math.sqrt(v),i=y/r,n=b/r),this.set(i,n,r,t),this}let v=Math.sqrt((f-p)*(f-p)+(h-m)*(h-m)+(d-c)*(d-c));return Math.abs(v)<.001&&(v=1),this.x=(f-p)/v,this.y=(h-m)/v,this.z=(d-c)/v,this.w=Math.acos((l+u+g-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class WebGLRenderTarget extends EventDispatcher$1{constructor(e=1,t=1,i={}){super(),this.isWebGLRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new Vector4(0,0,e,t),this.scissorTest=!1,this.viewport=new Vector4(0,0,e,t);const n={width:e,height:t,depth:1};this.texture=new Texture(n,i.mapping,i.wrapS,i.wrapT,i.magFilter,i.minFilter,i.format,i.type,i.anisotropy,i.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=void 0!==i.generateMipmaps&&i.generateMipmaps,this.texture.internalFormat=void 0!==i.internalFormat?i.internalFormat:null,this.texture.minFilter=void 0!==i.minFilter?i.minFilter:1006,this.depthBuffer=void 0===i.depthBuffer||i.depthBuffer,this.stencilBuffer=void 0!==i.stencilBuffer&&i.stencilBuffer,this.depthTexture=void 0!==i.depthTexture?i.depthTexture:null,this.samples=void 0!==i.samples?i.samples:0}setSize(e,t,i=1){this.width===e&&this.height===t&&this.depth===i||(this.width=e,this.height=t,this.depth=i,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=i,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return(new this.constructor).copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.texture.isRenderTargetTexture=!0;const t=Object.assign({},e.texture.image);return this.texture.source=new Source(t),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,null!==e.depthTexture&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class DataArrayTexture extends Texture{constructor(e=null,t=1,i=1,n=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:i,depth:n},this.magFilter=1003,this.minFilter=1003,this.wrapR=1001,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class Data3DTexture extends Texture{constructor(e=null,t=1,i=1,n=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:i,depth:n},this.magFilter=1003,this.minFilter=1003,this.wrapR=1001,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class Quaternion$1{constructor(e=0,t=0,i=0,n=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=i,this._w=n}static slerpFlat(e,t,i,n,r,s,a){let o=i[n+0],l=i[n+1],c=i[n+2],h=i[n+3];const d=r[s+0],u=r[s+1],p=r[s+2],m=r[s+3];if(0===a)return e[t+0]=o,e[t+1]=l,e[t+2]=c,void(e[t+3]=h);if(1===a)return e[t+0]=d,e[t+1]=u,e[t+2]=p,void(e[t+3]=m);if(h!==m||o!==d||l!==u||c!==p){let e=1-a;const t=o*d+l*u+c*p+h*m,i=t>=0?1:-1,n=1-t*t;if(n>Number.EPSILON){const r=Math.sqrt(n),s=Math.atan2(r,t*i);e=Math.sin(e*s)/r,a=Math.sin(a*s)/r}const r=a*i;if(o=o*e+d*r,l=l*e+u*r,c=c*e+p*r,h=h*e+m*r,e===1-a){const e=1/Math.sqrt(o*o+l*l+c*c+h*h);o*=e,l*=e,c*=e,h*=e}}e[t]=o,e[t+1]=l,e[t+2]=c,e[t+3]=h}static multiplyQuaternionsFlat(e,t,i,n,r,s){const a=i[n],o=i[n+1],l=i[n+2],c=i[n+3],h=r[s],d=r[s+1],u=r[s+2],p=r[s+3];return e[t]=a*p+c*h+o*u-l*d,e[t+1]=o*p+c*d+l*h-a*u,e[t+2]=l*p+c*u+a*d-o*h,e[t+3]=c*p-a*h-o*d-l*u,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,n){return this._x=e,this._y=t,this._z=i,this._w=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){const i=e._x,n=e._y,r=e._z,s=e._order,a=Math.cos,o=Math.sin,l=a(i/2),c=a(n/2),h=a(r/2),d=o(i/2),u=o(n/2),p=o(r/2);switch(s){case"XYZ":this._x=d*c*h+l*u*p,this._y=l*u*h-d*c*p,this._z=l*c*p+d*u*h,this._w=l*c*h-d*u*p;break;case"YXZ":this._x=d*c*h+l*u*p,this._y=l*u*h-d*c*p,this._z=l*c*p-d*u*h,this._w=l*c*h+d*u*p;break;case"ZXY":this._x=d*c*h-l*u*p,this._y=l*u*h+d*c*p,this._z=l*c*p+d*u*h,this._w=l*c*h-d*u*p;break;case"ZYX":this._x=d*c*h-l*u*p,this._y=l*u*h+d*c*p,this._z=l*c*p-d*u*h,this._w=l*c*h+d*u*p;break;case"YZX":this._x=d*c*h+l*u*p,this._y=l*u*h+d*c*p,this._z=l*c*p-d*u*h,this._w=l*c*h-d*u*p;break;case"XZY":this._x=d*c*h-l*u*p,this._y=l*u*h-d*c*p,this._z=l*c*p+d*u*h,this._w=l*c*h+d*u*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return!1!==t&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const i=t/2,n=Math.sin(i);return this._x=e.x*n,this._y=e.y*n,this._z=e.z*n,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,i=t[0],n=t[4],r=t[8],s=t[1],a=t[5],o=t[9],l=t[2],c=t[6],h=t[10],d=i+a+h;if(d>0){const e=.5/Math.sqrt(d+1);this._w=.25/e,this._x=(c-o)*e,this._y=(r-l)*e,this._z=(s-n)*e}else if(i>a&&i>h){const e=2*Math.sqrt(1+i-a-h);this._w=(c-o)/e,this._x=.25*e,this._y=(n+s)/e,this._z=(r+l)/e}else if(a>h){const e=2*Math.sqrt(1+a-i-h);this._w=(r-l)/e,this._x=(n+s)/e,this._y=.25*e,this._z=(o+c)/e}else{const e=2*Math.sqrt(1+h-i-a);this._w=(s-n)/e,this._x=(r+l)/e,this._y=(o+c)/e,this._z=.25*e}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return i<Number.EPSILON?(i=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(clamp(this.dot(e),-1,1)))}rotateTowards(e,t){const i=this.angleTo(e);if(0===i)return this;const n=Math.min(1,t/i);return this.slerp(e,n),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const i=e._x,n=e._y,r=e._z,s=e._w,a=t._x,o=t._y,l=t._z,c=t._w;return this._x=i*c+s*a+n*l-r*o,this._y=n*c+s*o+r*a-i*l,this._z=r*c+s*l+i*o-n*a,this._w=s*c-i*a-n*o-r*l,this._onChangeCallback(),this}slerp(e,t){if(0===t)return this;if(1===t)return this.copy(e);const i=this._x,n=this._y,r=this._z,s=this._w;let a=s*e._w+i*e._x+n*e._y+r*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=s,this._x=i,this._y=n,this._z=r,this;const o=1-a*a;if(o<=Number.EPSILON){const e=1-t;return this._w=e*s+t*this._w,this._x=e*i+t*this._x,this._y=e*n+t*this._y,this._z=e*r+t*this._z,this.normalize(),this._onChangeCallback(),this}const l=Math.sqrt(o),c=Math.atan2(l,a),h=Math.sin((1-t)*c)/l,d=Math.sin(t*c)/l;return this._w=s*h+this._w*d,this._x=i*h+this._x*d,this._y=n*h+this._y*d,this._z=r*h+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){const e=Math.random(),t=Math.sqrt(1-e),i=Math.sqrt(e),n=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(t*Math.cos(n),i*Math.sin(r),i*Math.cos(r),t*Math.sin(n))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class Vector3{constructor(e=0,t=0,i=0){Vector3.prototype.isVector3=!0,this.x=e,this.y=t,this.z=i}set(e,t,i){return void 0===i&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(M.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(M.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6]*n,this.y=r[1]*t+r[4]*i+r[7]*n,this.z=r[2]*t+r[5]*i+r[8]*n,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,i=this.y,n=this.z,r=e.elements,s=1/(r[3]*t+r[7]*i+r[11]*n+r[15]);return this.x=(r[0]*t+r[4]*i+r[8]*n+r[12])*s,this.y=(r[1]*t+r[5]*i+r[9]*n+r[13])*s,this.z=(r[2]*t+r[6]*i+r[10]*n+r[14])*s,this}applyQuaternion(e){const t=this.x,i=this.y,n=this.z,r=e.x,s=e.y,a=e.z,o=e.w,l=o*t+s*n-a*i,c=o*i+a*t-r*n,h=o*n+r*i-s*t,d=-r*t-s*i-a*n;return this.x=l*o+d*-r+c*-a-h*-s,this.y=c*o+d*-s+h*-r-l*-a,this.z=h*o+d*-a+l*-s-c*-r,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*n,this.y=r[1]*t+r[5]*i+r[9]*n,this.z=r[2]*t+r[6]*i+r[10]*n,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const i=e.x,n=e.y,r=e.z,s=t.x,a=t.y,o=t.z;return this.x=n*o-r*a,this.y=r*s-i*o,this.z=i*a-n*s,this}projectOnVector(e){const t=e.lengthSq();if(0===t)return this.set(0,0,0);const i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return S.copy(this).projectOnVector(e),this.sub(S)}reflect(e){return this.sub(S.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(0===t)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(clamp(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y,n=this.z-e.z;return t*t+i*i+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){const n=Math.sin(t)*e;return this.x=n*Math.sin(i),this.y=Math.cos(t)*e,this.z=n*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),n=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=n,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,4*t)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,3*t)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=2*(Math.random()-.5),t=Math.random()*Math.PI*2,i=Math.sqrt(1-e**2);return this.x=i*Math.cos(t),this.y=i*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const S=new Vector3,M=new Quaternion$1;class Box3{constructor(e=new Vector3(1/0,1/0,1/0),t=new Vector3(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){let t=1/0,i=1/0,n=1/0,r=-1/0,s=-1/0,a=-1/0;for(let o=0,l=e.length;o<l;o+=3){const l=e[o],c=e[o+1],h=e[o+2];l<t&&(t=l),c<i&&(i=c),h<n&&(n=h),l>r&&(r=l),c>s&&(s=c),h>a&&(a=h)}return this.min.set(t,i,n),this.max.set(r,s,a),this}setFromBufferAttribute(e){let t=1/0,i=1/0,n=1/0,r=-1/0,s=-1/0,a=-1/0;for(let o=0,l=e.count;o<l;o++){const l=e.getX(o),c=e.getY(o),h=e.getZ(o);l<t&&(t=l),c<i&&(i=c),h<n&&(n=h),l>r&&(r=l),c>s&&(s=c),h>a&&(a=h)}return this.min.set(t,i,n),this.max.set(r,s,a),this}setFromPoints(e){this.makeEmpty();for(let t=0,i=e.length;t<i;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){const i=T.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(i),this.max.copy(e).add(i),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return(new this.constructor).copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);const i=e.geometry;if(void 0!==i)if(t&&null!=i.attributes&&void 0!==i.attributes.position){const t=i.attributes.position;for(let i=0,n=t.count;i<n;i++)T.fromBufferAttribute(t,i).applyMatrix4(e.matrixWorld),this.expandByPoint(T)}else null===i.boundingBox&&i.computeBoundingBox(),E.copy(i.boundingBox),E.applyMatrix4(e.matrixWorld),this.union(E);const n=e.children;for(let e=0,i=n.length;e<i;e++)this.expandByObject(n[e],t);return this}containsPoint(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y||e.z<this.min.z||e.z>this.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y||e.max.z<this.min.z||e.min.z>this.max.z)}intersectsSphere(e){return this.clampPoint(e.center,T),T.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(R),O.subVectors(this.max,R),C.subVectors(e.a,R),A.subVectors(e.b,R),P.subVectors(e.c,R),D.subVectors(A,C),L.subVectors(P,A),I.subVectors(C,P);let t=[0,-D.z,D.y,0,-L.z,L.y,0,-I.z,I.y,D.z,0,-D.x,L.z,0,-L.x,I.z,0,-I.x,-D.y,D.x,0,-L.y,L.x,0,-I.y,I.x,0];return!!satForAxes(t,C,A,P,O)&&(t=[1,0,0,0,1,0,0,0,1],!!satForAxes(t,C,A,P,O)&&(N.crossVectors(D,L),t=[N.x,N.y,N.z],satForAxes(t,C,A,P,O)))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return T.copy(e).clamp(this.min,this.max).sub(e).length()}getBoundingSphere(e){return this.getCenter(e.center),e.radius=.5*this.getSize(T).length(),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()||(w[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),w[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),w[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),w[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),w[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),w[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),w[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),w[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(w)),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const w=[new Vector3,new Vector3,new Vector3,new Vector3,new Vector3,new Vector3,new Vector3,new Vector3],T=new Vector3,E=new Box3,C=new Vector3,A=new Vector3,P=new Vector3,D=new Vector3,L=new Vector3,I=new Vector3,R=new Vector3,O=new Vector3,N=new Vector3,z=new Vector3;function satForAxes(e,t,i,n,r){for(let s=0,a=e.length-3;s<=a;s+=3){z.fromArray(e,s);const a=r.x*Math.abs(z.x)+r.y*Math.abs(z.y)+r.z*Math.abs(z.z),o=t.dot(z),l=i.dot(z),c=n.dot(z);if(Math.max(-Math.max(o,l,c),Math.min(o,l,c))>a)return!1}return!0}const B=new Box3,U=new Vector3,V=new Vector3;class Sphere{constructor(e=new Vector3,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const i=this.center;void 0!==t?i.copy(t):B.setFromPoints(e).getCenter(i);let n=0;for(let t=0,r=e.length;t<r;t++)n=Math.max(n,i.distanceToSquared(e[t]));return this.radius=Math.sqrt(n),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){const t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,t){const i=this.center.distanceToSquared(e);return t.copy(e),i>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;U.subVectors(e,this.center);const t=U.lengthSq();if(t>this.radius*this.radius){const e=Math.sqrt(t),i=.5*(e-this.radius);this.center.addScaledVector(U,i/e),this.radius+=i}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(!0===this.center.equals(e.center)?this.radius=Math.max(this.radius,e.radius):(V.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(U.copy(e.center).add(V)),this.expandByPoint(U.copy(e.center).sub(V))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return(new this.constructor).copy(this)}}const k=new Vector3,G=new Vector3,H=new Vector3,W=new Vector3,j=new Vector3,X=new Vector3,q=new Vector3;class Ray{constructor(e=new Vector3,t=new Vector3(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.direction).multiplyScalar(e).add(this.origin)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,k)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(i).add(this.origin)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=k.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(k.copy(this.direction).multiplyScalar(t).add(this.origin),k.distanceToSquared(e))}distanceSqToSegment(e,t,i,n){G.copy(e).add(t).multiplyScalar(.5),H.copy(t).sub(e).normalize(),W.copy(this.origin).sub(G);const r=.5*e.distanceTo(t),s=-this.direction.dot(H),a=W.dot(this.direction),o=-W.dot(H),l=W.lengthSq(),c=Math.abs(1-s*s);let h,d,u,p;if(c>0)if(h=s*o-a,d=s*a-o,p=r*c,h>=0)if(d>=-p)if(d<=p){const e=1/c;h*=e,d*=e,u=h*(h+s*d+2*a)+d*(s*h+d+2*o)+l}else d=r,h=Math.max(0,-(s*d+a)),u=-h*h+d*(d+2*o)+l;else d=-r,h=Math.max(0,-(s*d+a)),u=-h*h+d*(d+2*o)+l;else d<=-p?(h=Math.max(0,-(-s*r+a)),d=h>0?-r:Math.min(Math.max(-r,-o),r),u=-h*h+d*(d+2*o)+l):d<=p?(h=0,d=Math.min(Math.max(-r,-o),r),u=d*(d+2*o)+l):(h=Math.max(0,-(s*r+a)),d=h>0?r:Math.min(Math.max(-r,-o),r),u=-h*h+d*(d+2*o)+l);else d=s>0?-r:r,h=Math.max(0,-(s*d+a)),u=-h*h+d*(d+2*o)+l;return i&&i.copy(this.direction).multiplyScalar(h).add(this.origin),n&&n.copy(H).multiplyScalar(d).add(G),u}intersectSphere(e,t){k.subVectors(e.center,this.origin);const i=k.dot(this.direction),n=k.dot(k)-i*i,r=e.radius*e.radius;if(n>r)return null;const s=Math.sqrt(r-n),a=i-s,o=i+s;return a<0&&o<0?null:a<0?this.at(o,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;const i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){const i=this.distanceToPlane(e);return null===i?null:this.at(i,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);if(0===t)return!0;return e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,n,r,s,a,o;const l=1/this.direction.x,c=1/this.direction.y,h=1/this.direction.z,d=this.origin;return l>=0?(i=(e.min.x-d.x)*l,n=(e.max.x-d.x)*l):(i=(e.max.x-d.x)*l,n=(e.min.x-d.x)*l),c>=0?(r=(e.min.y-d.y)*c,s=(e.max.y-d.y)*c):(r=(e.max.y-d.y)*c,s=(e.min.y-d.y)*c),i>s||r>n?null:((r>i||isNaN(i))&&(i=r),(s<n||isNaN(n))&&(n=s),h>=0?(a=(e.min.z-d.z)*h,o=(e.max.z-d.z)*h):(a=(e.max.z-d.z)*h,o=(e.min.z-d.z)*h),i>o||a>n?null:((a>i||i!=i)&&(i=a),(o<n||n!=n)&&(n=o),n<0?null:this.at(i>=0?i:n,t)))}intersectsBox(e){return null!==this.intersectBox(e,k)}intersectTriangle(e,t,i,n,r){j.subVectors(t,e),X.subVectors(i,e),q.crossVectors(j,X);let s,a=this.direction.dot(q);if(a>0){if(n)return null;s=1}else{if(!(a<0))return null;s=-1,a=-a}W.subVectors(this.origin,e);const o=s*this.direction.dot(X.crossVectors(W,X));if(o<0)return null;const l=s*this.direction.dot(j.cross(W));if(l<0)return null;if(o+l>a)return null;const c=-s*W.dot(q);return c<0?null:this.at(c/a,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}}class Matrix4{constructor(){Matrix4.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(e,t,i,n,r,s,a,o,l,c,h,d,u,p,m,f){const g=this.elements;return g[0]=e,g[4]=t,g[8]=i,g[12]=n,g[1]=r,g[5]=s,g[9]=a,g[13]=o,g[2]=l,g[6]=c,g[10]=h,g[14]=d,g[3]=u,g[7]=p,g[11]=m,g[15]=f,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return(new Matrix4).fromArray(this.elements)}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){const t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,i=e.elements,n=1/Y.setFromMatrixColumn(e,0).length(),r=1/Y.setFromMatrixColumn(e,1).length(),s=1/Y.setFromMatrixColumn(e,2).length();return t[0]=i[0]*n,t[1]=i[1]*n,t[2]=i[2]*n,t[3]=0,t[4]=i[4]*r,t[5]=i[5]*r,t[6]=i[6]*r,t[7]=0,t[8]=i[8]*s,t[9]=i[9]*s,t[10]=i[10]*s,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,i=e.x,n=e.y,r=e.z,s=Math.cos(i),a=Math.sin(i),o=Math.cos(n),l=Math.sin(n),c=Math.cos(r),h=Math.sin(r);if("XYZ"===e.order){const e=s*c,i=s*h,n=a*c,r=a*h;t[0]=o*c,t[4]=-o*h,t[8]=l,t[1]=i+n*l,t[5]=e-r*l,t[9]=-a*o,t[2]=r-e*l,t[6]=n+i*l,t[10]=s*o}else if("YXZ"===e.order){const e=o*c,i=o*h,n=l*c,r=l*h;t[0]=e+r*a,t[4]=n*a-i,t[8]=s*l,t[1]=s*h,t[5]=s*c,t[9]=-a,t[2]=i*a-n,t[6]=r+e*a,t[10]=s*o}else if("ZXY"===e.order){const e=o*c,i=o*h,n=l*c,r=l*h;t[0]=e-r*a,t[4]=-s*h,t[8]=n+i*a,t[1]=i+n*a,t[5]=s*c,t[9]=r-e*a,t[2]=-s*l,t[6]=a,t[10]=s*o}else if("ZYX"===e.order){const e=s*c,i=s*h,n=a*c,r=a*h;t[0]=o*c,t[4]=n*l-i,t[8]=e*l+r,t[1]=o*h,t[5]=r*l+e,t[9]=i*l-n,t[2]=-l,t[6]=a*o,t[10]=s*o}else if("YZX"===e.order){const e=s*o,i=s*l,n=a*o,r=a*l;t[0]=o*c,t[4]=r-e*h,t[8]=n*h+i,t[1]=h,t[5]=s*c,t[9]=-a*c,t[2]=-l*c,t[6]=i*h+n,t[10]=e-r*h}else if("XZY"===e.order){const e=s*o,i=s*l,n=a*o,r=a*l;t[0]=o*c,t[4]=-h,t[8]=l*c,t[1]=e*h+r,t[5]=s*c,t[9]=i*h-n,t[2]=n*h-i,t[6]=a*c,t[10]=r*h+e}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Q,e,K)}lookAt(e,t,i){const n=this.elements;return te.subVectors(e,t),0===te.lengthSq()&&(te.z=1),te.normalize(),J.crossVectors(i,te),0===J.lengthSq()&&(1===Math.abs(i.z)?te.x+=1e-4:te.z+=1e-4,te.normalize(),J.crossVectors(i,te)),J.normalize(),ee.crossVectors(te,J),n[0]=J.x,n[4]=ee.x,n[8]=te.x,n[1]=J.y,n[5]=ee.y,n[9]=te.y,n[2]=J.z,n[6]=ee.z,n[10]=te.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,n=t.elements,r=this.elements,s=i[0],a=i[4],o=i[8],l=i[12],c=i[1],h=i[5],d=i[9],u=i[13],p=i[2],m=i[6],f=i[10],g=i[14],v=i[3],x=i[7],y=i[11],b=i[15],_=n[0],S=n[4],M=n[8],w=n[12],T=n[1],E=n[5],C=n[9],A=n[13],P=n[2],D=n[6],L=n[10],I=n[14],R=n[3],O=n[7],N=n[11],z=n[15];return r[0]=s*_+a*T+o*P+l*R,r[4]=s*S+a*E+o*D+l*O,r[8]=s*M+a*C+o*L+l*N,r[12]=s*w+a*A+o*I+l*z,r[1]=c*_+h*T+d*P+u*R,r[5]=c*S+h*E+d*D+u*O,r[9]=c*M+h*C+d*L+u*N,r[13]=c*w+h*A+d*I+u*z,r[2]=p*_+m*T+f*P+g*R,r[6]=p*S+m*E+f*D+g*O,r[10]=p*M+m*C+f*L+g*N,r[14]=p*w+m*A+f*I+g*z,r[3]=v*_+x*T+y*P+b*R,r[7]=v*S+x*E+y*D+b*O,r[11]=v*M+x*C+y*L+b*N,r[15]=v*w+x*A+y*I+b*z,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[4],n=e[8],r=e[12],s=e[1],a=e[5],o=e[9],l=e[13],c=e[2],h=e[6],d=e[10],u=e[14];return e[3]*(+r*o*h-n*l*h-r*a*d+i*l*d+n*a*u-i*o*u)+e[7]*(+t*o*u-t*l*d+r*s*d-n*s*u+n*l*c-r*o*c)+e[11]*(+t*l*h-t*a*u-r*s*h+i*s*u+r*a*c-i*l*c)+e[15]*(-n*a*c-t*o*h+t*a*d+n*s*h-i*s*d+i*o*c)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,i){const n=this.elements;return e.isVector3?(n[12]=e.x,n[13]=e.y,n[14]=e.z):(n[12]=e,n[13]=t,n[14]=i),this}invert(){const e=this.elements,t=e[0],i=e[1],n=e[2],r=e[3],s=e[4],a=e[5],o=e[6],l=e[7],c=e[8],h=e[9],d=e[10],u=e[11],p=e[12],m=e[13],f=e[14],g=e[15],v=h*f*l-m*d*l+m*o*u-a*f*u-h*o*g+a*d*g,x=p*d*l-c*f*l-p*o*u+s*f*u+c*o*g-s*d*g,y=c*m*l-p*h*l+p*a*u-s*m*u-c*a*g+s*h*g,b=p*h*o-c*m*o-p*a*d+s*m*d+c*a*f-s*h*f,_=t*v+i*x+n*y+r*b;if(0===_)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const S=1/_;return e[0]=v*S,e[1]=(m*d*r-h*f*r-m*n*u+i*f*u+h*n*g-i*d*g)*S,e[2]=(a*f*r-m*o*r+m*n*l-i*f*l-a*n*g+i*o*g)*S,e[3]=(h*o*r-a*d*r-h*n*l+i*d*l+a*n*u-i*o*u)*S,e[4]=x*S,e[5]=(c*f*r-p*d*r+p*n*u-t*f*u-c*n*g+t*d*g)*S,e[6]=(p*o*r-s*f*r-p*n*l+t*f*l+s*n*g-t*o*g)*S,e[7]=(s*d*r-c*o*r+c*n*l-t*d*l-s*n*u+t*o*u)*S,e[8]=y*S,e[9]=(p*h*r-c*m*r-p*i*u+t*m*u+c*i*g-t*h*g)*S,e[10]=(s*m*r-p*a*r+p*i*l-t*m*l-s*i*g+t*a*g)*S,e[11]=(c*a*r-s*h*r-c*i*l+t*h*l+s*i*u-t*a*u)*S,e[12]=b*S,e[13]=(c*m*n-p*h*n+p*i*d-t*m*d-c*i*f+t*h*f)*S,e[14]=(p*a*n-s*m*n-p*i*o+t*m*o+s*i*f-t*a*f)*S,e[15]=(s*h*n-c*a*n+c*i*o-t*h*o-s*i*d+t*a*d)*S,this}scale(e){const t=this.elements,i=e.x,n=e.y,r=e.z;return t[0]*=i,t[4]*=n,t[8]*=r,t[1]*=i,t[5]*=n,t[9]*=r,t[2]*=i,t[6]*=n,t[10]*=r,t[3]*=i,t[7]*=n,t[11]*=r,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],n=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,n))}makeTranslation(e,t,i){return this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const i=Math.cos(t),n=Math.sin(t),r=1-i,s=e.x,a=e.y,o=e.z,l=r*s,c=r*a;return this.set(l*s+i,l*a-n*o,l*o+n*a,0,l*a+n*o,c*a+i,c*o-n*s,0,l*o-n*a,c*o+n*s,r*o*o+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,n,r,s){return this.set(1,i,r,0,e,1,s,0,t,n,1,0,0,0,0,1),this}compose(e,t,i){const n=this.elements,r=t._x,s=t._y,a=t._z,o=t._w,l=r+r,c=s+s,h=a+a,d=r*l,u=r*c,p=r*h,m=s*c,f=s*h,g=a*h,v=o*l,x=o*c,y=o*h,b=i.x,_=i.y,S=i.z;return n[0]=(1-(m+g))*b,n[1]=(u+y)*b,n[2]=(p-x)*b,n[3]=0,n[4]=(u-y)*_,n[5]=(1-(d+g))*_,n[6]=(f+v)*_,n[7]=0,n[8]=(p+x)*S,n[9]=(f-v)*S,n[10]=(1-(d+m))*S,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,this}decompose(e,t,i){const n=this.elements;let r=Y.set(n[0],n[1],n[2]).length();const s=Y.set(n[4],n[5],n[6]).length(),a=Y.set(n[8],n[9],n[10]).length();this.determinant()<0&&(r=-r),e.x=n[12],e.y=n[13],e.z=n[14],Z.copy(this);const o=1/r,l=1/s,c=1/a;return Z.elements[0]*=o,Z.elements[1]*=o,Z.elements[2]*=o,Z.elements[4]*=l,Z.elements[5]*=l,Z.elements[6]*=l,Z.elements[8]*=c,Z.elements[9]*=c,Z.elements[10]*=c,t.setFromRotationMatrix(Z),i.x=r,i.y=s,i.z=a,this}makePerspective(e,t,i,n,r,s){const a=this.elements,o=2*r/(t-e),l=2*r/(i-n),c=(t+e)/(t-e),h=(i+n)/(i-n),d=-(s+r)/(s-r),u=-2*s*r/(s-r);return a[0]=o,a[4]=0,a[8]=c,a[12]=0,a[1]=0,a[5]=l,a[9]=h,a[13]=0,a[2]=0,a[6]=0,a[10]=d,a[14]=u,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(e,t,i,n,r,s){const a=this.elements,o=1/(t-e),l=1/(i-n),c=1/(s-r),h=(t+e)*o,d=(i+n)*l,u=(s+r)*c;return a[0]=2*o,a[4]=0,a[8]=0,a[12]=-h,a[1]=0,a[5]=2*l,a[9]=0,a[13]=-d,a[2]=0,a[6]=0,a[10]=-2*c,a[14]=-u,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(e){const t=this.elements,i=e.elements;for(let e=0;e<16;e++)if(t[e]!==i[e])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e}}const Y=new Vector3,Z=new Matrix4,Q=new Vector3(0,0,0),K=new Vector3(1,1,1),J=new Vector3,ee=new Vector3,te=new Vector3,ie=new Matrix4,ne=new Quaternion$1;class Euler{constructor(e=0,t=0,i=0,n=Euler.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=i,this._order=n}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,i,n=this._order){return this._x=e,this._y=t,this._z=i,this._order=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){const n=e.elements,r=n[0],s=n[4],a=n[8],o=n[1],l=n[5],c=n[9],h=n[2],d=n[6],u=n[10];switch(t){case"XYZ":this._y=Math.asin(clamp(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-c,u),this._z=Math.atan2(-s,r)):(this._x=Math.atan2(d,l),this._z=0);break;case"YXZ":this._x=Math.asin(-clamp(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(a,u),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-h,r),this._z=0);break;case"ZXY":this._x=Math.asin(clamp(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-h,u),this._z=Math.atan2(-s,l)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-clamp(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(d,u),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-s,l));break;case"YZX":this._z=Math.asin(clamp(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-c,l),this._y=Math.atan2(-h,r)):(this._x=0,this._y=Math.atan2(a,u));break;case"XZY":this._z=Math.asin(-clamp(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(d,l),this._y=Math.atan2(a,r)):(this._x=Math.atan2(-c,u),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!0===i&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return ie.makeRotationFromQuaternion(e),this.setFromRotationMatrix(ie,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return ne.setFromEuler(this),this.setFromQuaternion(ne,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Euler.DEFAULT_ORDER="XYZ";class Layers{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(e){this.mask|=1<<e|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e|0}disable(e){this.mask&=~(1<<e|0)}disableAll(){this.mask=0}test(e){return 0!=(this.mask&e.mask)}isEnabled(e){return 0!=(this.mask&(1<<e|0))}}let re=0;const se=new Vector3,ae=new Quaternion$1,oe=new Matrix4,le=new Vector3,ce=new Vector3,he=new Vector3,de=new Quaternion$1,ue=new Vector3(1,0,0),pe=new Vector3(0,1,0),me=new Vector3(0,0,1),fe={type:"added"},ge={type:"removed"};class Object3D extends EventDispatcher$1{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:re++}),this.uuid=generateUUID(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=Object3D.DEFAULT_UP.clone();const e=new Vector3,t=new Euler,i=new Quaternion$1,n=new Vector3(1,1,1);t._onChange((function onRotationChange(){i.setFromEuler(t,!1)})),i._onChange((function onQuaternionChange(){t.setFromQuaternion(i,void 0,!1)})),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:i},scale:{configurable:!0,enumerable:!0,value:n},modelViewMatrix:{value:new Matrix4},normalMatrix:{value:new Matrix3}}),this.matrix=new Matrix4,this.matrixWorld=new Matrix4,this.matrixAutoUpdate=Object3D.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.matrixWorldAutoUpdate=Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.layers=new Layers,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return ae.setFromAxisAngle(e,t),this.quaternion.multiply(ae),this}rotateOnWorldAxis(e,t){return ae.setFromAxisAngle(e,t),this.quaternion.premultiply(ae),this}rotateX(e){return this.rotateOnAxis(ue,e)}rotateY(e){return this.rotateOnAxis(pe,e)}rotateZ(e){return this.rotateOnAxis(me,e)}translateOnAxis(e,t){return se.copy(e).applyQuaternion(this.quaternion),this.position.add(se.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(ue,e)}translateY(e){return this.translateOnAxis(pe,e)}translateZ(e){return this.translateOnAxis(me,e)}localToWorld(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(oe.copy(this.matrixWorld).invert())}lookAt(e,t,i){e.isVector3?le.copy(e):le.set(e,t,i);const n=this.parent;this.updateWorldMatrix(!0,!1),ce.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?oe.lookAt(ce,le,this.up):oe.lookAt(le,ce,this.up),this.quaternion.setFromRotationMatrix(oe),n&&(oe.extractRotation(n.matrixWorld),ae.setFromRotationMatrix(oe),this.quaternion.premultiply(ae.invert()))}add(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return e===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",e),this):(e&&e.isObject3D?(null!==e.parent&&e.parent.remove(e),e.parent=this,this.children.push(e),e.dispatchEvent(fe)):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",e),this)}remove(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.remove(arguments[e]);return this}const t=this.children.indexOf(e);return-1!==t&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(ge)),this}removeFromParent(){const e=this.parent;return null!==e&&e.remove(this),this}clear(){for(let e=0;e<this.children.length;e++){const t=this.children[e];t.parent=null,t.dispatchEvent(ge)}return this.children.length=0,this}attach(e){return this.updateWorldMatrix(!0,!1),oe.copy(this.matrixWorld).invert(),null!==e.parent&&(e.parent.updateWorldMatrix(!0,!1),oe.multiply(e.parent.matrixWorld)),e.applyMatrix4(oe),this.add(e),e.updateWorldMatrix(!1,!0),this}getObjectById(e){return this.getObjectByProperty("id",e)}getObjectByName(e){return this.getObjectByProperty("name",e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let i=0,n=this.children.length;i<n;i++){const n=this.children[i].getObjectByProperty(e,t);if(void 0!==n)return n}}getObjectsByProperty(e,t){let i=[];this[e]===t&&i.push(this);for(let n=0,r=this.children.length;n<r;n++){const r=this.children[n].getObjectsByProperty(e,t);r.length>0&&(i=i.concat(r))}return i}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ce,e,he),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ce,de,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);const t=this.children;for(let i=0,n=t.length;i<n;i++)t[i].traverse(e)}traverseVisible(e){if(!1===this.visible)return;e(this);const t=this.children;for(let i=0,n=t.length;i<n;i++)t[i].traverseVisible(e)}traverseAncestors(e){const t=this.parent;null!==t&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,e=!0);const t=this.children;for(let i=0,n=t.length;i<n;i++){const n=t[i];!0!==n.matrixWorldAutoUpdate&&!0!==e||n.updateMatrixWorld(e)}}updateWorldMatrix(e,t){const i=this.parent;if(!0===e&&null!==i&&!0===i.matrixWorldAutoUpdate&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),!0===t){const e=this.children;for(let t=0,i=e.length;t<i;t++){const i=e[t];!0===i.matrixWorldAutoUpdate&&i.updateWorldMatrix(!1,!0)}}}toJSON(e){const t=void 0===e||"string"==typeof e,i={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},i.metadata={version:4.5,type:"Object",generator:"Object3D.toJSON"});const n={};function serialize(t,i){return void 0===t[i.uuid]&&(t[i.uuid]=i.toJSON(e)),i.uuid}if(n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),!0===this.castShadow&&(n.castShadow=!0),!0===this.receiveShadow&&(n.receiveShadow=!0),!1===this.visible&&(n.visible=!1),!1===this.frustumCulled&&(n.frustumCulled=!1),0!==this.renderOrder&&(n.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(n.userData=this.userData),n.layers=this.layers.mask,n.matrix=this.matrix.toArray(),!1===this.matrixAutoUpdate&&(n.matrixAutoUpdate=!1),this.isInstancedMesh&&(n.type="InstancedMesh",n.count=this.count,n.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(n.instanceColor=this.instanceColor.toJSON())),this.isScene)this.background&&(this.background.isColor?n.background=this.background.toJSON():this.background.isTexture&&(n.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(n.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){n.geometry=serialize(e.geometries,this.geometry);const t=this.geometry.parameters;if(void 0!==t&&void 0!==t.shapes){const i=t.shapes;if(Array.isArray(i))for(let t=0,n=i.length;t<n;t++){const n=i[t];serialize(e.shapes,n)}else serialize(e.shapes,i)}}if(this.isSkinnedMesh&&(n.bindMode=this.bindMode,n.bindMatrix=this.bindMatrix.toArray(),void 0!==this.skeleton&&(serialize(e.skeletons,this.skeleton),n.skeleton=this.skeleton.uuid)),void 0!==this.material)if(Array.isArray(this.material)){const t=[];for(let i=0,n=this.material.length;i<n;i++)t.push(serialize(e.materials,this.material[i]));n.material=t}else n.material=serialize(e.materials,this.material);if(this.children.length>0){n.children=[];for(let t=0;t<this.children.length;t++)n.children.push(this.children[t].toJSON(e).object)}if(this.animations.length>0){n.animations=[];for(let t=0;t<this.animations.length;t++){const i=this.animations[t];n.animations.push(serialize(e.animations,i))}}if(t){const t=extractFromCache(e.geometries),n=extractFromCache(e.materials),r=extractFromCache(e.textures),s=extractFromCache(e.images),a=extractFromCache(e.shapes),o=extractFromCache(e.skeletons),l=extractFromCache(e.animations),c=extractFromCache(e.nodes);t.length>0&&(i.geometries=t),n.length>0&&(i.materials=n),r.length>0&&(i.textures=r),s.length>0&&(i.images=s),a.length>0&&(i.shapes=a),o.length>0&&(i.skeletons=o),l.length>0&&(i.animations=l),c.length>0&&(i.nodes=c)}return i.object=n,i;function extractFromCache(e){const t=[];for(const i in e){const n=e[i];delete n.metadata,t.push(n)}return t}}clone(e){return(new this.constructor).copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(let t=0;t<e.children.length;t++){const i=e.children[t];this.add(i.clone())}return this}}Object3D.DEFAULT_UP=new Vector3(0,1,0),Object3D.DEFAULT_MATRIX_AUTO_UPDATE=!0,Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const ve=new Vector3,xe=new Vector3,ye=new Vector3,be=new Vector3,_e=new Vector3,Se=new Vector3,Me=new Vector3,we=new Vector3,Te=new Vector3,Ee=new Vector3;class Triangle{constructor(e=new Vector3,t=new Vector3,i=new Vector3){this.a=e,this.b=t,this.c=i}static getNormal(e,t,i,n){n.subVectors(i,t),ve.subVectors(e,t),n.cross(ve);const r=n.lengthSq();return r>0?n.multiplyScalar(1/Math.sqrt(r)):n.set(0,0,0)}static getBarycoord(e,t,i,n,r){ve.subVectors(n,t),xe.subVectors(i,t),ye.subVectors(e,t);const s=ve.dot(ve),a=ve.dot(xe),o=ve.dot(ye),l=xe.dot(xe),c=xe.dot(ye),h=s*l-a*a;if(0===h)return r.set(-2,-1,-1);const d=1/h,u=(l*o-a*c)*d,p=(s*c-a*o)*d;return r.set(1-u-p,p,u)}static containsPoint(e,t,i,n){return this.getBarycoord(e,t,i,n,be),be.x>=0&&be.y>=0&&be.x+be.y<=1}static getUV(e,t,i,n,r,s,a,o){return this.getBarycoord(e,t,i,n,be),o.set(0,0),o.addScaledVector(r,be.x),o.addScaledVector(s,be.y),o.addScaledVector(a,be.z),o}static isFrontFacing(e,t,i,n){return ve.subVectors(i,t),xe.subVectors(e,t),ve.cross(xe).dot(n)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,n){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[n]),this}setFromAttributeAndIndices(e,t,i,n){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,n),this}clone(){return(new this.constructor).copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return ve.subVectors(this.c,this.b),xe.subVectors(this.a,this.b),.5*ve.cross(xe).length()}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Triangle.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Triangle.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,i,n,r){return Triangle.getUV(e,this.a,this.b,this.c,t,i,n,r)}containsPoint(e){return Triangle.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Triangle.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const i=this.a,n=this.b,r=this.c;let s,a;_e.subVectors(n,i),Se.subVectors(r,i),we.subVectors(e,i);const o=_e.dot(we),l=Se.dot(we);if(o<=0&&l<=0)return t.copy(i);Te.subVectors(e,n);const c=_e.dot(Te),h=Se.dot(Te);if(c>=0&&h<=c)return t.copy(n);const d=o*h-c*l;if(d<=0&&o>=0&&c<=0)return s=o/(o-c),t.copy(i).addScaledVector(_e,s);Ee.subVectors(e,r);const u=_e.dot(Ee),p=Se.dot(Ee);if(p>=0&&u<=p)return t.copy(r);const m=u*l-o*p;if(m<=0&&l>=0&&p<=0)return a=l/(l-p),t.copy(i).addScaledVector(Se,a);const f=c*p-u*h;if(f<=0&&h-c>=0&&u-p>=0)return Me.subVectors(r,n),a=(h-c)/(h-c+(u-p)),t.copy(n).addScaledVector(Me,a);const g=1/(f+m+d);return s=m*g,a=d*g,t.copy(i).addScaledVector(_e,s).addScaledVector(Se,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}let Ce=0;class Material extends EventDispatcher$1{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Ce++}),this.uuid=generateUUID(),this.name="",this.type="Material",this.blending=1,this.side=0,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=204,this.blendDst=205,this.blendEquation=100,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=3,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=7680,this.stencilZFail=7680,this.stencilZPass=7680,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(void 0!==e)for(const t in e){const i=e[t];if(void 0===i){console.warn("THREE.Material: '"+t+"' parameter is undefined.");continue}const n=this[t];void 0!==n?n&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[t]=i:console.warn("THREE."+this.type+": '"+t+"' is not a property of this material.")}}toJSON(e){const t=void 0===e||"string"==typeof e;t&&(e={textures:{},images:{}});const i={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};function extractFromCache(e){const t=[];for(const i in e){const n=e[i];delete n.metadata,t.push(n)}return t}if(i.uuid=this.uuid,i.type=this.type,""!==this.name&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),void 0!==this.roughness&&(i.roughness=this.roughness),void 0!==this.metalness&&(i.metalness=this.metalness),void 0!==this.sheen&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(i.shininess=this.shininess),void 0!==this.clearcoat&&(i.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.iridescence&&(i.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(i.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,void 0!==this.combine&&(i.combine=this.combine)),void 0!==this.envMapIntensity&&(i.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(i.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.transmission&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),void 0!==this.thickness&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(i.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(i.size=this.size),null!==this.shadowSide&&(i.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(i.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(i.blending=this.blending),0!==this.side&&(i.side=this.side),this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),!0===this.transparent&&(i.transparent=this.transparent),i.depthFunc=this.depthFunc,i.depthTest=this.depthTest,i.depthWrite=this.depthWrite,i.colorWrite=this.colorWrite,i.stencilWrite=this.stencilWrite,i.stencilWriteMask=this.stencilWriteMask,i.stencilFunc=this.stencilFunc,i.stencilRef=this.stencilRef,i.stencilFuncMask=this.stencilFuncMask,i.stencilFail=this.stencilFail,i.stencilZFail=this.stencilZFail,i.stencilZPass=this.stencilZPass,void 0!==this.rotation&&0!==this.rotation&&(i.rotation=this.rotation),!0===this.polygonOffset&&(i.polygonOffset=!0),0!==this.polygonOffsetFactor&&(i.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(i.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(i.linewidth=this.linewidth),void 0!==this.dashSize&&(i.dashSize=this.dashSize),void 0!==this.gapSize&&(i.gapSize=this.gapSize),void 0!==this.scale&&(i.scale=this.scale),!0===this.dithering&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),!0===this.alphaToCoverage&&(i.alphaToCoverage=this.alphaToCoverage),!0===this.premultipliedAlpha&&(i.premultipliedAlpha=this.premultipliedAlpha),!0===this.forceSinglePass&&(i.forceSinglePass=this.forceSinglePass),!0===this.wireframe&&(i.wireframe=this.wireframe),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(i.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(i.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(i.flatShading=this.flatShading),!1===this.visible&&(i.visible=!1),!1===this.toneMapped&&(i.toneMapped=!1),!1===this.fog&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData),t){const t=extractFromCache(e.textures),n=extractFromCache(e.images);t.length>0&&(i.textures=t),n.length>0&&(i.images=n)}return i}clone(){return(new this.constructor).copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let i=null;if(null!==t){const e=t.length;i=new Array(e);for(let n=0;n!==e;++n)i[n]=t[n].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){!0===e&&this.version++}}class MeshBasicMaterial extends Material{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Color$1(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const Ae=new Vector3,Pe=new Vector2;class BufferAttribute{constructor(e,t,i=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=i,this.usage=35044,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let n=0,r=this.itemSize;n<r;n++)this.array[e+n]=t.array[i+n];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(2===this.itemSize)for(let t=0,i=this.count;t<i;t++)Pe.fromBufferAttribute(this,t),Pe.applyMatrix3(e),this.setXY(t,Pe.x,Pe.y);else if(3===this.itemSize)for(let t=0,i=this.count;t<i;t++)Ae.fromBufferAttribute(this,t),Ae.applyMatrix3(e),this.setXYZ(t,Ae.x,Ae.y,Ae.z);return this}applyMatrix4(e){for(let t=0,i=this.count;t<i;t++)Ae.fromBufferAttribute(this,t),Ae.applyMatrix4(e),this.setXYZ(t,Ae.x,Ae.y,Ae.z);return this}applyNormalMatrix(e){for(let t=0,i=this.count;t<i;t++)Ae.fromBufferAttribute(this,t),Ae.applyNormalMatrix(e),this.setXYZ(t,Ae.x,Ae.y,Ae.z);return this}transformDirection(e){for(let t=0,i=this.count;t<i;t++)Ae.fromBufferAttribute(this,t),Ae.transformDirection(e),this.setXYZ(t,Ae.x,Ae.y,Ae.z);return this}set(e,t=0){return this.array.set(e,t),this}getX(e){let t=this.array[e*this.itemSize];return this.normalized&&(t=denormalize(t,this.array)),t}setX(e,t){return this.normalized&&(t=normalize(t,this.array)),this.array[e*this.itemSize]=t,this}getY(e){let t=this.array[e*this.itemSize+1];return this.normalized&&(t=denormalize(t,this.array)),t}setY(e,t){return this.normalized&&(t=normalize(t,this.array)),this.array[e*this.itemSize+1]=t,this}getZ(e){let t=this.array[e*this.itemSize+2];return this.normalized&&(t=denormalize(t,this.array)),t}setZ(e,t){return this.normalized&&(t=normalize(t,this.array)),this.array[e*this.itemSize+2]=t,this}getW(e){let t=this.array[e*this.itemSize+3];return this.normalized&&(t=denormalize(t,this.array)),t}setW(e,t){return this.normalized&&(t=normalize(t,this.array)),this.array[e*this.itemSize+3]=t,this}setXY(e,t,i){return e*=this.itemSize,this.normalized&&(t=normalize(t,this.array),i=normalize(i,this.array)),this.array[e+0]=t,this.array[e+1]=i,this}setXYZ(e,t,i,n){return e*=this.itemSize,this.normalized&&(t=normalize(t,this.array),i=normalize(i,this.array),n=normalize(n,this.array)),this.array[e+0]=t,this.array[e+1]=i,this.array[e+2]=n,this}setXYZW(e,t,i,n,r){return e*=this.itemSize,this.normalized&&(t=normalize(t,this.array),i=normalize(i,this.array),n=normalize(n,this.array),r=normalize(r,this.array)),this.array[e+0]=t,this.array[e+1]=i,this.array[e+2]=n,this.array[e+3]=r,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return""!==this.name&&(e.name=this.name),35044!==this.usage&&(e.usage=this.usage),0===this.updateRange.offset&&-1===this.updateRange.count||(e.updateRange=this.updateRange),e}copyColorsArray(){console.error("THREE.BufferAttribute: copyColorsArray() was removed in r144.")}copyVector2sArray(){console.error("THREE.BufferAttribute: copyVector2sArray() was removed in r144.")}copyVector3sArray(){console.error("THREE.BufferAttribute: copyVector3sArray() was removed in r144.")}copyVector4sArray(){console.error("THREE.BufferAttribute: copyVector4sArray() was removed in r144.")}}class Uint16BufferAttribute extends BufferAttribute{constructor(e,t,i){super(new Uint16Array(e),t,i)}}class Uint32BufferAttribute extends BufferAttribute{constructor(e,t,i){super(new Uint32Array(e),t,i)}}class Float32BufferAttribute extends BufferAttribute{constructor(e,t,i){super(new Float32Array(e),t,i)}}let De=0;const Le=new Matrix4,Ie=new Object3D,Re=new Vector3,Oe=new Box3,Ne=new Box3,Fe=new Vector3;class BufferGeometry extends EventDispatcher$1{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:De++}),this.uuid=generateUUID(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(arrayNeedsUint32(e)?Uint32BufferAttribute:Uint16BufferAttribute)(e,1):this.index=e,this}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return void 0!==this.attributes[e]}addGroup(e,t,i=0){this.groups.push({start:e,count:t,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){const t=this.attributes.position;void 0!==t&&(t.applyMatrix4(e),t.needsUpdate=!0);const i=this.attributes.normal;if(void 0!==i){const t=(new Matrix3).getNormalMatrix(e);i.applyNormalMatrix(t),i.needsUpdate=!0}const n=this.attributes.tangent;return void 0!==n&&(n.transformDirection(e),n.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}applyQuaternion(e){return Le.makeRotationFromQuaternion(e),this.applyMatrix4(Le),this}rotateX(e){return Le.makeRotationX(e),this.applyMatrix4(Le),this}rotateY(e){return Le.makeRotationY(e),this.applyMatrix4(Le),this}rotateZ(e){return Le.makeRotationZ(e),this.applyMatrix4(Le),this}translate(e,t,i){return Le.makeTranslation(e,t,i),this.applyMatrix4(Le),this}scale(e,t,i){return Le.makeScale(e,t,i),this.applyMatrix4(Le),this}lookAt(e){return Ie.lookAt(e),Ie.updateMatrix(),this.applyMatrix4(Ie.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Re).negate(),this.translate(Re.x,Re.y,Re.z),this}setFromPoints(e){const t=[];for(let i=0,n=e.length;i<n;i++){const n=e[i];t.push(n.x,n.y,n.z||0)}return this.setAttribute("position",new Float32BufferAttribute(t,3)),this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new Box3);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute)return console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false".',this),void this.boundingBox.set(new Vector3(-1/0,-1/0,-1/0),new Vector3(1/0,1/0,1/0));if(void 0!==e){if(this.boundingBox.setFromBufferAttribute(e),t)for(let e=0,i=t.length;e<i;e++){const i=t[e];Oe.setFromBufferAttribute(i),this.morphTargetsRelative?(Fe.addVectors(this.boundingBox.min,Oe.min),this.boundingBox.expandByPoint(Fe),Fe.addVectors(this.boundingBox.max,Oe.max),this.boundingBox.expandByPoint(Fe)):(this.boundingBox.expandByPoint(Oe.min),this.boundingBox.expandByPoint(Oe.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new Sphere);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute)return console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "false".',this),void this.boundingSphere.set(new Vector3,1/0);if(e){const i=this.boundingSphere.center;if(Oe.setFromBufferAttribute(e),t)for(let e=0,i=t.length;e<i;e++){const i=t[e];Ne.setFromBufferAttribute(i),this.morphTargetsRelative?(Fe.addVectors(Oe.min,Ne.min),Oe.expandByPoint(Fe),Fe.addVectors(Oe.max,Ne.max),Oe.expandByPoint(Fe)):(Oe.expandByPoint(Ne.min),Oe.expandByPoint(Ne.max))}Oe.getCenter(i);let n=0;for(let t=0,r=e.count;t<r;t++)Fe.fromBufferAttribute(e,t),n=Math.max(n,i.distanceToSquared(Fe));if(t)for(let r=0,s=t.length;r<s;r++){const s=t[r],a=this.morphTargetsRelative;for(let t=0,r=s.count;t<r;t++)Fe.fromBufferAttribute(s,t),a&&(Re.fromBufferAttribute(e,t),Fe.add(Re)),n=Math.max(n,i.distanceToSquared(Fe))}this.boundingSphere.radius=Math.sqrt(n),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const e=this.index,t=this.attributes;if(null===e||void 0===t.position||void 0===t.normal||void 0===t.uv)return void console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");const i=e.array,n=t.position.array,r=t.normal.array,s=t.uv.array,a=n.length/3;!1===this.hasAttribute("tangent")&&this.setAttribute("tangent",new BufferAttribute(new Float32Array(4*a),4));const o=this.getAttribute("tangent").array,l=[],c=[];for(let e=0;e<a;e++)l[e]=new Vector3,c[e]=new Vector3;const h=new Vector3,d=new Vector3,u=new Vector3,p=new Vector2,m=new Vector2,f=new Vector2,g=new Vector3,v=new Vector3;function handleTriangle(e,t,i){h.fromArray(n,3*e),d.fromArray(n,3*t),u.fromArray(n,3*i),p.fromArray(s,2*e),m.fromArray(s,2*t),f.fromArray(s,2*i),d.sub(h),u.sub(h),m.sub(p),f.sub(p);const r=1/(m.x*f.y-f.x*m.y);isFinite(r)&&(g.copy(d).multiplyScalar(f.y).addScaledVector(u,-m.y).multiplyScalar(r),v.copy(u).multiplyScalar(m.x).addScaledVector(d,-f.x).multiplyScalar(r),l[e].add(g),l[t].add(g),l[i].add(g),c[e].add(v),c[t].add(v),c[i].add(v))}let x=this.groups;0===x.length&&(x=[{start:0,count:i.length}]);for(let e=0,t=x.length;e<t;++e){const t=x[e],n=t.start;for(let e=n,r=n+t.count;e<r;e+=3)handleTriangle(i[e+0],i[e+1],i[e+2])}const y=new Vector3,b=new Vector3,_=new Vector3,S=new Vector3;function handleVertex(e){_.fromArray(r,3*e),S.copy(_);const t=l[e];y.copy(t),y.sub(_.multiplyScalar(_.dot(t))).normalize(),b.crossVectors(S,t);const i=b.dot(c[e])<0?-1:1;o[4*e]=y.x,o[4*e+1]=y.y,o[4*e+2]=y.z,o[4*e+3]=i}for(let e=0,t=x.length;e<t;++e){const t=x[e],n=t.start;for(let e=n,r=n+t.count;e<r;e+=3)handleVertex(i[e+0]),handleVertex(i[e+1]),handleVertex(i[e+2])}}computeVertexNormals(){const e=this.index,t=this.getAttribute("position");if(void 0!==t){let i=this.getAttribute("normal");if(void 0===i)i=new BufferAttribute(new Float32Array(3*t.count),3),this.setAttribute("normal",i);else for(let e=0,t=i.count;e<t;e++)i.setXYZ(e,0,0,0);const n=new Vector3,r=new Vector3,s=new Vector3,a=new Vector3,o=new Vector3,l=new Vector3,c=new Vector3,h=new Vector3;if(e)for(let d=0,u=e.count;d<u;d+=3){const u=e.getX(d+0),p=e.getX(d+1),m=e.getX(d+2);n.fromBufferAttribute(t,u),r.fromBufferAttribute(t,p),s.fromBufferAttribute(t,m),c.subVectors(s,r),h.subVectors(n,r),c.cross(h),a.fromBufferAttribute(i,u),o.fromBufferAttribute(i,p),l.fromBufferAttribute(i,m),a.add(c),o.add(c),l.add(c),i.setXYZ(u,a.x,a.y,a.z),i.setXYZ(p,o.x,o.y,o.z),i.setXYZ(m,l.x,l.y,l.z)}else for(let e=0,a=t.count;e<a;e+=3)n.fromBufferAttribute(t,e+0),r.fromBufferAttribute(t,e+1),s.fromBufferAttribute(t,e+2),c.subVectors(s,r),h.subVectors(n,r),c.cross(h),i.setXYZ(e+0,c.x,c.y,c.z),i.setXYZ(e+1,c.x,c.y,c.z),i.setXYZ(e+2,c.x,c.y,c.z);this.normalizeNormals(),i.needsUpdate=!0}}merge(){return console.error("THREE.BufferGeometry.merge() has been removed. Use THREE.BufferGeometryUtils.mergeBufferGeometries() instead."),this}normalizeNormals(){const e=this.attributes.normal;for(let t=0,i=e.count;t<i;t++)Fe.fromBufferAttribute(e,t),Fe.normalize(),e.setXYZ(t,Fe.x,Fe.y,Fe.z)}toNonIndexed(){function convertBufferAttribute(e,t){const i=e.array,n=e.itemSize,r=e.normalized,s=new i.constructor(t.length*n);let a=0,o=0;for(let r=0,l=t.length;r<l;r++){a=e.isInterleavedBufferAttribute?t[r]*e.data.stride+e.offset:t[r]*n;for(let e=0;e<n;e++)s[o++]=i[a++]}return new BufferAttribute(s,n,r)}if(null===this.index)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const e=new BufferGeometry,t=this.index.array,i=this.attributes;for(const n in i){const r=convertBufferAttribute(i[n],t);e.setAttribute(n,r)}const n=this.morphAttributes;for(const i in n){const r=[],s=n[i];for(let e=0,i=s.length;e<i;e++){const i=convertBufferAttribute(s[e],t);r.push(i)}e.morphAttributes[i]=r}e.morphTargetsRelative=this.morphTargetsRelative;const r=this.groups;for(let t=0,i=r.length;t<i;t++){const i=r[t];e.addGroup(i.start,i.count,i.materialIndex)}return e}toJSON(){const e={metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,""!==this.name&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),void 0!==this.parameters){const t=this.parameters;for(const i in t)void 0!==t[i]&&(e[i]=t[i]);return e}e.data={attributes:{}};const t=this.index;null!==t&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const i=this.attributes;for(const t in i){const n=i[t];e.data.attributes[t]=n.toJSON(e.data)}const n={};let r=!1;for(const t in this.morphAttributes){const i=this.morphAttributes[t],s=[];for(let t=0,n=i.length;t<n;t++){const n=i[t];s.push(n.toJSON(e.data))}s.length>0&&(n[t]=s,r=!0)}r&&(e.data.morphAttributes=n,e.data.morphTargetsRelative=this.morphTargetsRelative);const s=this.groups;s.length>0&&(e.data.groups=JSON.parse(JSON.stringify(s)));const a=this.boundingSphere;return null!==a&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return(new this.constructor).copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const i=e.index;null!==i&&this.setIndex(i.clone(t));const n=e.attributes;for(const e in n){const i=n[e];this.setAttribute(e,i.clone(t))}const r=e.morphAttributes;for(const e in r){const i=[],n=r[e];for(let e=0,r=n.length;e<r;e++)i.push(n[e].clone(t));this.morphAttributes[e]=i}this.morphTargetsRelative=e.morphTargetsRelative;const s=e.groups;for(let e=0,t=s.length;e<t;e++){const t=s[e];this.addGroup(t.start,t.count,t.materialIndex)}const a=e.boundingBox;null!==a&&(this.boundingBox=a.clone());const o=e.boundingSphere;return null!==o&&(this.boundingSphere=o.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,void 0!==e.parameters&&(this.parameters=Object.assign({},e.parameters)),this}dispose(){this.dispatchEvent({type:"dispose"})}}const ze=new Matrix4,Be=new Ray,Ue=new Sphere,Ve=new Vector3,ke=new Vector3,Ge=new Vector3,He=new Vector3,We=new Vector3,je=new Vector2,Xe=new Vector2,qe=new Vector2,Ye=new Vector3,Ze=new Vector3;class Mesh extends Object3D{constructor(e=new BufferGeometry,t=new MeshBasicMaterial){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),void 0!==e.morphTargetInfluences&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),void 0!==e.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=e.material,this.geometry=e.geometry,this}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;e<t;e++){const t=i[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}getVertexPosition(e,t){const i=this.geometry,n=i.attributes.position,r=i.morphAttributes.position,s=i.morphTargetsRelative;t.fromBufferAttribute(n,e);const a=this.morphTargetInfluences;if(r&&a){We.set(0,0,0);for(let i=0,n=r.length;i<n;i++){const n=a[i],o=r[i];0!==n&&(He.fromBufferAttribute(o,e),s?We.addScaledVector(He,n):We.addScaledVector(He.sub(t),n))}t.add(We)}return this.isSkinnedMesh&&this.boneTransform(e,t),t}raycast(e,t){const i=this.geometry,n=this.material,r=this.matrixWorld;if(void 0===n)return;if(null===i.boundingSphere&&i.computeBoundingSphere(),Ue.copy(i.boundingSphere),Ue.applyMatrix4(r),!1===e.ray.intersectsSphere(Ue))return;if(ze.copy(r).invert(),Be.copy(e.ray).applyMatrix4(ze),null!==i.boundingBox&&!1===Be.intersectsBox(i.boundingBox))return;let s;const a=i.index,o=i.attributes.position,l=i.attributes.uv,c=i.attributes.uv2,h=i.groups,d=i.drawRange;if(null!==a)if(Array.isArray(n))for(let i=0,r=h.length;i<r;i++){const r=h[i],o=n[r.materialIndex];for(let i=Math.max(r.start,d.start),n=Math.min(a.count,Math.min(r.start+r.count,d.start+d.count));i<n;i+=3){const n=a.getX(i),h=a.getX(i+1),d=a.getX(i+2);s=checkBufferGeometryIntersection(this,o,e,Be,l,c,n,h,d),s&&(s.faceIndex=Math.floor(i/3),s.face.materialIndex=r.materialIndex,t.push(s))}}else{for(let i=Math.max(0,d.start),r=Math.min(a.count,d.start+d.count);i<r;i+=3){const r=a.getX(i),o=a.getX(i+1),h=a.getX(i+2);s=checkBufferGeometryIntersection(this,n,e,Be,l,c,r,o,h),s&&(s.faceIndex=Math.floor(i/3),t.push(s))}}else if(void 0!==o)if(Array.isArray(n))for(let i=0,r=h.length;i<r;i++){const r=h[i],a=n[r.materialIndex];for(let i=Math.max(r.start,d.start),n=Math.min(o.count,Math.min(r.start+r.count,d.start+d.count));i<n;i+=3){s=checkBufferGeometryIntersection(this,a,e,Be,l,c,i,i+1,i+2),s&&(s.faceIndex=Math.floor(i/3),s.face.materialIndex=r.materialIndex,t.push(s))}}else{for(let i=Math.max(0,d.start),r=Math.min(o.count,d.start+d.count);i<r;i+=3){s=checkBufferGeometryIntersection(this,n,e,Be,l,c,i,i+1,i+2),s&&(s.faceIndex=Math.floor(i/3),t.push(s))}}}}function checkBufferGeometryIntersection(e,t,i,n,r,s,a,o,l){e.getVertexPosition(a,Ve),e.getVertexPosition(o,ke),e.getVertexPosition(l,Ge);const c=function checkIntersection(e,t,i,n,r,s,a,o){let l;if(l=1===t.side?n.intersectTriangle(a,s,r,!0,o):n.intersectTriangle(r,s,a,0===t.side,o),null===l)return null;Ze.copy(o),Ze.applyMatrix4(e.matrixWorld);const c=i.ray.origin.distanceTo(Ze);return c<i.near||c>i.far?null:{distance:c,point:Ze.clone(),object:e}}(e,t,i,n,Ve,ke,Ge,Ye);if(c){r&&(je.fromBufferAttribute(r,a),Xe.fromBufferAttribute(r,o),qe.fromBufferAttribute(r,l),c.uv=Triangle.getUV(Ye,Ve,ke,Ge,je,Xe,qe,new Vector2)),s&&(je.fromBufferAttribute(s,a),Xe.fromBufferAttribute(s,o),qe.fromBufferAttribute(s,l),c.uv2=Triangle.getUV(Ye,Ve,ke,Ge,je,Xe,qe,new Vector2));const e={a,b:o,c:l,normal:new Vector3,materialIndex:0};Triangle.getNormal(Ve,ke,Ge,e.normal),c.face=e}return c}class BoxGeometry extends BufferGeometry{constructor(e=1,t=1,i=1,n=1,r=1,s=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:n,heightSegments:r,depthSegments:s};const a=this;n=Math.floor(n),r=Math.floor(r),s=Math.floor(s);const o=[],l=[],c=[],h=[];let d=0,u=0;function buildPlane(e,t,i,n,r,s,p,m,f,g,v){const x=s/f,y=p/g,b=s/2,_=p/2,S=m/2,M=f+1,w=g+1;let T=0,E=0;const C=new Vector3;for(let s=0;s<w;s++){const a=s*y-_;for(let o=0;o<M;o++){const d=o*x-b;C[e]=d*n,C[t]=a*r,C[i]=S,l.push(C.x,C.y,C.z),C[e]=0,C[t]=0,C[i]=m>0?1:-1,c.push(C.x,C.y,C.z),h.push(o/f),h.push(1-s/g),T+=1}}for(let e=0;e<g;e++)for(let t=0;t<f;t++){const i=d+t+M*e,n=d+t+M*(e+1),r=d+(t+1)+M*(e+1),s=d+(t+1)+M*e;o.push(i,n,s),o.push(n,r,s),E+=6}a.addGroup(u,E,v),u+=E,d+=T}buildPlane("z","y","x",-1,-1,i,t,e,s,r,0),buildPlane("z","y","x",1,-1,i,t,-e,s,r,1),buildPlane("x","z","y",1,1,e,i,t,n,s,2),buildPlane("x","z","y",1,-1,e,i,-t,n,s,3),buildPlane("x","y","z",1,-1,e,t,i,n,r,4),buildPlane("x","y","z",-1,-1,e,t,-i,n,r,5),this.setIndex(o),this.setAttribute("position",new Float32BufferAttribute(l,3)),this.setAttribute("normal",new Float32BufferAttribute(c,3)),this.setAttribute("uv",new Float32BufferAttribute(h,2))}static fromJSON(e){return new BoxGeometry(e.width,e.height,e.depth,e.widthSegments,e.heightSegments,e.depthSegments)}}function cloneUniforms(e){const t={};for(const i in e){t[i]={};for(const n in e[i]){const r=e[i][n];r&&(r.isColor||r.isMatrix3||r.isMatrix4||r.isVector2||r.isVector3||r.isVector4||r.isTexture||r.isQuaternion)?t[i][n]=r.clone():Array.isArray(r)?t[i][n]=r.slice():t[i][n]=r}}return t}function mergeUniforms(e){const t={};for(let i=0;i<e.length;i++){const n=cloneUniforms(e[i]);for(const e in n)t[e]=n[e]}return t}function getUnlitUniformColorSpace(e){return null===e.getRenderTarget()&&3001===e.outputEncoding?"srgb":"srgb-linear"}const Qe={clone:cloneUniforms,merge:mergeUniforms};class ShaderMaterial extends Material{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader="void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",this.fragmentShader="void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}",this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,void 0!==e&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=cloneUniforms(e.uniforms),this.uniformsGroups=function cloneUniformsGroups(e){const t=[];for(let i=0;i<e.length;i++)t.push(e[i].clone());return t}(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){const t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uniforms={};for(const i in this.uniforms){const n=this.uniforms[i].value;n&&n.isTexture?t.uniforms[i]={type:"t",value:n.toJSON(e).uuid}:n&&n.isColor?t.uniforms[i]={type:"c",value:n.getHex()}:n&&n.isVector2?t.uniforms[i]={type:"v2",value:n.toArray()}:n&&n.isVector3?t.uniforms[i]={type:"v3",value:n.toArray()}:n&&n.isVector4?t.uniforms[i]={type:"v4",value:n.toArray()}:n&&n.isMatrix3?t.uniforms[i]={type:"m3",value:n.toArray()}:n&&n.isMatrix4?t.uniforms[i]={type:"m4",value:n.toArray()}:t.uniforms[i]={value:n}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader;const i={};for(const e in this.extensions)!0===this.extensions[e]&&(i[e]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}}class Camera extends Object3D{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Matrix4,this.projectionMatrix=new Matrix4,this.projectionMatrixInverse=new Matrix4}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return(new this.constructor).copy(this)}}class PerspectiveCamera extends Camera{constructor(e=50,t=1,i=.1,n=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=i,this.far=n,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=2*h*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(.5*c*this.fov);return.5*this.getFilmHeight()/e}getEffectiveFOV(){return 2*h*Math.atan(Math.tan(.5*c*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,i,n,r,s){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=n,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(.5*c*this.fov)/this.zoom,i=2*t,n=this.aspect*i,r=-.5*n;const s=this.view;if(null!==this.view&&this.view.enabled){const e=s.fullWidth,a=s.fullHeight;r+=s.offsetX*n/e,t-=s.offsetY*i/a,n*=s.width/e,i*=s.height/a}const a=this.filmOffset;0!==a&&(r+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+n,t,t-i,e,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}class CubeCamera extends Object3D{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i;const n=new PerspectiveCamera(-90,1,e,t);n.layers=this.layers,n.up.set(0,1,0),n.lookAt(1,0,0),this.add(n);const r=new PerspectiveCamera(-90,1,e,t);r.layers=this.layers,r.up.set(0,1,0),r.lookAt(-1,0,0),this.add(r);const s=new PerspectiveCamera(-90,1,e,t);s.layers=this.layers,s.up.set(0,0,-1),s.lookAt(0,1,0),this.add(s);const a=new PerspectiveCamera(-90,1,e,t);a.layers=this.layers,a.up.set(0,0,1),a.lookAt(0,-1,0),this.add(a);const o=new PerspectiveCamera(-90,1,e,t);o.layers=this.layers,o.up.set(0,1,0),o.lookAt(0,0,1),this.add(o);const l=new PerspectiveCamera(-90,1,e,t);l.layers=this.layers,l.up.set(0,1,0),l.lookAt(0,0,-1),this.add(l)}update(e,t){null===this.parent&&this.updateMatrixWorld();const i=this.renderTarget,[n,r,s,a,o,l]=this.children,c=e.getRenderTarget(),h=e.toneMapping,d=e.xr.enabled;e.toneMapping=0,e.xr.enabled=!1;const u=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,e.setRenderTarget(i,0),e.render(t,n),e.setRenderTarget(i,1),e.render(t,r),e.setRenderTarget(i,2),e.render(t,s),e.setRenderTarget(i,3),e.render(t,a),e.setRenderTarget(i,4),e.render(t,o),i.texture.generateMipmaps=u,e.setRenderTarget(i,5),e.render(t,l),e.setRenderTarget(c),e.toneMapping=h,e.xr.enabled=d,i.texture.needsPMREMUpdate=!0}}class CubeTexture extends Texture{constructor(e,t,i,n,r,s,a,o,l,c){super(e=void 0!==e?e:[],t=void 0!==t?t:301,i,n,r,s,a,o,l,c),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class WebGLCubeRenderTarget extends WebGLRenderTarget{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const i={width:e,height:e,depth:1},n=[i,i,i,i,i,i];this.texture=new CubeTexture(n,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==t.generateMipmaps&&t.generateMipmaps,this.texture.minFilter=void 0!==t.minFilter?t.minFilter:1006}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.encoding=t.encoding,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const i={uniforms:{tEquirect:{value:null}},vertexShader:"\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include <begin_vertex>\n\t\t\t\t\t#include <project_vertex>\n\n\t\t\t\t}\n\t\t\t",fragmentShader:"\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include <common>\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t"},n=new BoxGeometry(5,5,5),r=new ShaderMaterial({name:"CubemapFromEquirect",uniforms:cloneUniforms(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:1,blending:0});r.uniforms.tEquirect.value=t;const s=new Mesh(n,r),a=t.minFilter;1008===t.minFilter&&(t.minFilter=1006);return new CubeCamera(1,10,this).update(e,s),t.minFilter=a,s.geometry.dispose(),s.material.dispose(),this}clear(e,t,i,n){const r=e.getRenderTarget();for(let r=0;r<6;r++)e.setRenderTarget(this,r),e.clear(t,i,n);e.setRenderTarget(r)}}const Ke=new Vector3,Je=new Vector3,$e=new Matrix3;class Plane{constructor(e=new Vector3(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,i,n){return this.normal.set(e,t,i),this.constant=n,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,i){const n=Ke.subVectors(i,t).cross(Je.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(n,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)}intersectLine(e,t){const i=e.delta(Ke),n=this.normal.dot(i);if(0===n)return 0===this.distanceToPoint(e.start)?t.copy(e.start):null;const r=-(e.start.dot(this.normal)+this.constant)/n;return r<0||r>1?null:t.copy(i).multiplyScalar(r).add(e.start)}intersectsLine(e){const t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const i=t||$e.getNormalMatrix(e),n=this.coplanarPoint(Ke).applyMatrix4(e),r=this.normal.applyMatrix3(i).normalize();return this.constant=-n.dot(r),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return(new this.constructor).copy(this)}}const et=new Sphere,tt=new Vector3;class Frustum{constructor(e=new Plane,t=new Plane,i=new Plane,n=new Plane,r=new Plane,s=new Plane){this.planes=[e,t,i,n,r,s]}set(e,t,i,n,r,s){const a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(i),a[3].copy(n),a[4].copy(r),a[5].copy(s),this}copy(e){const t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e){const t=this.planes,i=e.elements,n=i[0],r=i[1],s=i[2],a=i[3],o=i[4],l=i[5],c=i[6],h=i[7],d=i[8],u=i[9],p=i[10],m=i[11],f=i[12],g=i[13],v=i[14],x=i[15];return t[0].setComponents(a-n,h-o,m-d,x-f).normalize(),t[1].setComponents(a+n,h+o,m+d,x+f).normalize(),t[2].setComponents(a+r,h+l,m+u,x+g).normalize(),t[3].setComponents(a-r,h-l,m-u,x-g).normalize(),t[4].setComponents(a-s,h-c,m-p,x-v).normalize(),t[5].setComponents(a+s,h+c,m+p,x+v).normalize(),this}intersectsObject(e){const t=e.geometry;return null===t.boundingSphere&&t.computeBoundingSphere(),et.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(et)}intersectsSprite(e){return et.center.set(0,0,0),et.radius=.7071067811865476,et.applyMatrix4(e.matrixWorld),this.intersectsSphere(et)}intersectsSphere(e){const t=this.planes,i=e.center,n=-e.radius;for(let e=0;e<6;e++){if(t[e].distanceToPoint(i)<n)return!1}return!0}intersectsBox(e){const t=this.planes;for(let i=0;i<6;i++){const n=t[i];if(tt.x=n.normal.x>0?e.max.x:e.min.x,tt.y=n.normal.y>0?e.max.y:e.min.y,tt.z=n.normal.z>0?e.max.z:e.min.z,n.distanceToPoint(tt)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return(new this.constructor).copy(this)}}function WebGLAnimation(){let e=null,t=!1,i=null,n=null;function onAnimationFrame(t,r){i(t,r),n=e.requestAnimationFrame(onAnimationFrame)}return{start:function(){!0!==t&&null!==i&&(n=e.requestAnimationFrame(onAnimationFrame),t=!0)},stop:function(){e.cancelAnimationFrame(n),t=!1},setAnimationLoop:function(e){i=e},setContext:function(t){e=t}}}function WebGLAttributes(e,t){const i=t.isWebGL2,n=new WeakMap;return{get:function get(e){return e.isInterleavedBufferAttribute&&(e=e.data),n.get(e)},remove:function remove(t){t.isInterleavedBufferAttribute&&(t=t.data);const i=n.get(t);i&&(e.deleteBuffer(i.buffer),n.delete(t))},update:function update(t,r){if(t.isGLBufferAttribute){const e=n.get(t);return void((!e||e.version<t.version)&&n.set(t,{buffer:t.buffer,type:t.type,bytesPerElement:t.elementSize,version:t.version}))}t.isInterleavedBufferAttribute&&(t=t.data);const s=n.get(t);void 0===s?n.set(t,function createBuffer(t,n){const r=t.array,s=t.usage,a=e.createBuffer();let o;if(e.bindBuffer(n,a),e.bufferData(n,r,s),t.onUploadCallback(),r instanceof Float32Array)o=5126;else if(r instanceof Uint16Array)if(t.isFloat16BufferAttribute){if(!i)throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");o=5131}else o=5123;else if(r instanceof Int16Array)o=5122;else if(r instanceof Uint32Array)o=5125;else if(r instanceof Int32Array)o=5124;else if(r instanceof Int8Array)o=5120;else if(r instanceof Uint8Array)o=5121;else{if(!(r instanceof Uint8ClampedArray))throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+r);o=5121}return{buffer:a,type:o,bytesPerElement:r.BYTES_PER_ELEMENT,version:t.version}}(t,r)):s.version<t.version&&(!function updateBuffer(t,n,r){const s=n.array,a=n.updateRange;e.bindBuffer(r,t),-1===a.count?e.bufferSubData(r,0,s):(i?e.bufferSubData(r,a.offset*s.BYTES_PER_ELEMENT,s,a.offset,a.count):e.bufferSubData(r,a.offset*s.BYTES_PER_ELEMENT,s.subarray(a.offset,a.offset+a.count)),a.count=-1),n.onUploadCallback()}(s.buffer,t,r),s.version=t.version)}}}class PlaneGeometry extends BufferGeometry{constructor(e=1,t=1,i=1,n=1){super(),this.type="PlaneGeometry",this.parameters={width:e,height:t,widthSegments:i,heightSegments:n};const r=e/2,s=t/2,a=Math.floor(i),o=Math.floor(n),l=a+1,c=o+1,h=e/a,d=t/o,u=[],p=[],m=[],f=[];for(let e=0;e<c;e++){const t=e*d-s;for(let i=0;i<l;i++){const n=i*h-r;p.push(n,-t,0),m.push(0,0,1),f.push(i/a),f.push(1-e/o)}}for(let e=0;e<o;e++)for(let t=0;t<a;t++){const i=t+l*e,n=t+l*(e+1),r=t+1+l*(e+1),s=t+1+l*e;u.push(i,n,s),u.push(n,r,s)}this.setIndex(u),this.setAttribute("position",new Float32BufferAttribute(p,3)),this.setAttribute("normal",new Float32BufferAttribute(m,3)),this.setAttribute("uv",new Float32BufferAttribute(f,2))}static fromJSON(e){return new PlaneGeometry(e.width,e.height,e.widthSegments,e.heightSegments)}}const it={alphamap_fragment:"#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif",alphamap_pars_fragment:"#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",alphatest_fragment:"#ifdef USE_ALPHATEST\n\tif ( diffuseColor.a < alphaTest ) discard;\n#endif",alphatest_pars_fragment:"#ifdef USE_ALPHATEST\n\tuniform float alphaTest;\n#endif",aomap_fragment:"#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\n\t#endif\n#endif",aomap_pars_fragment:"#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif",begin_vertex:"vec3 transformed = vec3( position );",beginnormal_vertex:"vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif",bsdfs:"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( f0, f90, dotVH );\n\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( V * D );\n}\n#ifdef USE_IRIDESCENCE\n\tvec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float roughness ) {\n\t\tfloat alpha = pow2( roughness );\n\t\tvec3 halfDir = normalize( lightDir + viewDir );\n\t\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\t\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\t\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\t\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\t\tvec3 F = mix( F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence );\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t\treturn F * ( V * D );\n\t}\n#endif\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif",iridescence_fragment:"#ifdef USE_IRIDESCENCE\n\tconst mat3 XYZ_TO_REC709 = mat3(\n\t\t 3.2404542, -0.9692660, 0.0556434,\n\t\t-1.5371385, 1.8760108, -0.2040259,\n\t\t-0.4985314, 0.0415560, 1.0572252\n\t);\n\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\n\t\tvec3 sqrtF0 = sqrt( fresnel0 );\n\t\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\n\t}\n\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\n\t}\n\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\n\t}\n\tvec3 evalSensitivity( float OPD, vec3 shift ) {\n\t\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\n\t\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\n\t\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\n\t\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\n\t\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\n\t\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\n\t\txyz /= 1.0685e-7;\n\t\tvec3 rgb = XYZ_TO_REC709 * xyz;\n\t\treturn rgb;\n\t}\n\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\n\t\tvec3 I;\n\t\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\n\t\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\n\t\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\n\t\tif ( cosTheta2Sq < 0.0 ) {\n\t\t\t return vec3( 1.0 );\n\t\t}\n\t\tfloat cosTheta2 = sqrt( cosTheta2Sq );\n\t\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\n\t\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\n\t\tfloat R21 = R12;\n\t\tfloat T121 = 1.0 - R12;\n\t\tfloat phi12 = 0.0;\n\t\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\n\t\tfloat phi21 = PI - phi12;\n\t\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\t\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\n\t\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\n\t\tvec3 phi23 = vec3( 0.0 );\n\t\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\n\t\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\n\t\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\n\t\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\n\t\tvec3 phi = vec3( phi21 ) + phi23;\n\t\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\n\t\tvec3 r123 = sqrt( R123 );\n\t\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\n\t\tvec3 C0 = R12 + Rs;\n\t\tI = C0;\n\t\tvec3 Cm = Rs - T121;\n\t\tfor ( int m = 1; m <= 2; ++ m ) {\n\t\t\tCm *= r123;\n\t\t\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\n\t\t\tI += Cm * Sm;\n\t\t}\n\t\treturn max( I, vec3( 0.0 ) );\n\t}\n#endif",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n\t\tvec3 vSigmaX = dFdx( surf_pos.xyz );\n\t\tvec3 vSigmaY = dFdy( surf_pos.xyz );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat luminance( const in vec3 rgb ) {\n\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\n\treturn dot( weights, rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\n\t\t#ifdef texture2DGradEXT\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n\t\t#else\n\t\t\treturn texture2D( envMap, uv ).rgb;\n\t\t#endif\n\t}\n\t#define cubeUV_r0 1.0\n\t#define cubeUV_v0 0.339\n\t#define cubeUV_m0 - 2.0\n\t#define cubeUV_r1 0.8\n\t#define cubeUV_v1 0.276\n\t#define cubeUV_m1 - 1.0\n\t#define cubeUV_r4 0.4\n\t#define cubeUV_v4 0.046\n\t#define cubeUV_m4 2.0\n\t#define cubeUV_r5 0.305\n\t#define cubeUV_v5 0.016\n\t#define cubeUV_m5 3.0\n\t#define cubeUV_r6 0.21\n\t#define cubeUV_v6 0.0038\n\t#define cubeUV_m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= cubeUV_r1 ) {\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n\t\t} else if ( roughness >= cubeUV_r4 ) {\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n\t\t} else if ( roughness >= cubeUV_r5 ) {\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n\t\t} else if ( roughness >= cubeUV_r6 ) {\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",encodings_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment:"vec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP )\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\n\t#else\n\t\tvec2 fw = fwidth( coord ) * 0.5;\n\t\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_fragment:"LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;",lights_lambert_pars_fragment:"varying vec3 vViewPosition;\nstruct LambertMaterial {\n\tvec3 diffuseColor;\n\tfloat specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Lambert\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Lambert",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#else\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\tmaterial.ior = ior;\n\t#ifdef SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULARINTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\n\t\t#endif\n\t\t#ifdef USE_SPECULARCOLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_IRIDESCENCE\n\tmaterial.iridescence = iridescence;\n\tmaterial.iridescenceIOR = iridescenceIOR;\n\t#ifdef USE_IRIDESCENCEMAP\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;\n\t#else\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\n\t#endif\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\n\t#endif\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\tfloat iridescence;\n\t\tfloat iridescenceIOR;\n\t\tfloat iridescenceThickness;\n\t\tvec3 iridescenceFresnel;\n\t\tvec3 iridescenceF0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n\t#ifdef IOR\n\t\tfloat ior;\n\t#endif\n\t#ifdef USE_TRANSMISSION\n\t\tfloat transmission;\n\t\tfloat transmissionAlpha;\n\t\tfloat thickness;\n\t\tfloat attenuationDistance;\n\t\tvec3 attenuationColor;\n\t#endif\n};\nvec3 clearcoatSpecular = vec3( 0.0 );\nvec3 sheenSpecular = vec3( 0.0 );\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\t#ifdef USE_IRIDESCENCE\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n\t#else\n\t\tvec3 Fr = specularColor;\n\t#endif\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );\n\t#else\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t#ifdef USE_IRIDESCENCE\n\t\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\t#endif\n\tvec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef USE_CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n\tfloat dotNVi = saturate( dot( normal, geometry.viewDir ) );\n\tif ( material.iridescenceThickness == 0.0 ) {\n\t\tmaterial.iridescence = 0.0;\n\t} else {\n\t\tmaterial.iridescence = saturate( material.iridescence );\n\t}\n\tif ( material.iridescence > 0.0 ) {\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n\t}\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\tvec4 spotColor;\n\tvec3 spotLightCoord;\n\tbool inSpotLightMap;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n\t\t#else\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#endif\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n\t\t#endif\n\t\t#undef SPOT_LIGHT_MAP_INDEX\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometry.normal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 sampledDiffuseColor = texture2D( map, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\n\t#endif\n\tdiffuseColor *= sampledDiffuseColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tdiffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphcolor_vertex:"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\n\tvColor *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t#if defined( USE_COLOR_ALPHA )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n\t\t#elif defined( USE_COLOR )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n\t\t#endif\n\t}\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n\t#endif\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\t\tuniform sampler2DArray morphTargetsTexture;\n\t\tuniform ivec2 morphTargetsTextureSize;\n\t\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n\t\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n\t\t\tint y = texelIndex / morphTargetsTextureSize.x;\n\t\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\n\t\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\n\t\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\n\t\t}\n\t#else\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\tuniform float morphTargetInfluences[ 8 ];\n\t\t#else\n\t\t\tuniform float morphTargetInfluences[ 4 ];\n\t\t#endif\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t\t#endif\n\t#endif\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * faceDirection;\n\t\t\tbitangent = bitangent * faceDirection;\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;",normal_fragment_maps:"#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_pars_vertex:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_vertex:"#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\n\t\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\n\t#endif\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif",iridescence_pars_fragment:"#ifdef USE_IRIDESCENCEMAP\n\tuniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform sampler2D iridescenceThicknessMap;\n#endif",output_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha + 0.1;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec2 packDepthToRG( in highp float v ) {\n\treturn packDepthToRGBA( v ).yx;\n}\nfloat unpackRGToDepth( const in highp vec2 v ) {\n\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#if NUM_SPOT_LIGHT_COORDS > 0\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n\t\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",shadowmap_pars_vertex:"#if NUM_SPOT_LIGHT_COORDS > 0\n uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\tvec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition;\n\t\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n\t\t#endif\n\t\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\tuniform highp sampler2D boneTexture;\n\tuniform int boneTextureSize;\n\tmat4 getBoneMatrix( const in float i ) {\n\t\tfloat j = i * 4.0;\n\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\ty = dy * ( y + 0.5 );\n\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\treturn bone;\n\t}\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n\tmaterial.transmission = transmission;\n\tmaterial.transmissionAlpha = 1.0;\n\tmaterial.thickness = thickness;\n\tmaterial.attenuationDistance = attenuationDistance;\n\tmaterial.attenuationColor = attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tmaterial.transmission *= texture2D( transmissionMap, vUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tmaterial.thickness *= texture2D( thicknessMap, vUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmission = getIBLVolumeRefraction(\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\n\t\tmaterial.attenuationColor, material.attenuationDistance );\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission );\n\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\t#ifdef texture2DLodEXT\n\t\t\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#else\n\t\t\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#endif\n\t}\n\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( isinf( attenuationDistance ) ) {\n\t\t\treturn radiance;\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance * radiance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\n\t}\n#endif",uv_pars_fragment:"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif",uv_vertex:"#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",background_frag:"uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",backgroundCube_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}",backgroundCube_frag:"#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nvarying vec3 vWorldDirection;\n#include <cube_uv_reflection_fragment>\nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",cube_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\n\tgl_FragColor.a *= opacity;\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",depth_vert:"#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <logdepthbuf_fragment>\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main () {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <color_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <output_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",meshbasic_vert:"#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinbase_vertex>\n\t\t#include <skinnormal_vertex>\n\t\t#include <defaultnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <fog_vertex>\n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include <aomap_fragment>\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include <envmap_fragment>\n\t#include <output_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vViewPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",meshlambert_frag:"#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_lambert_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_lambert_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\t#include <output_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n\tvViewPosition = - mvPosition.xyz;\n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <fog_pars_fragment>\n#include <normal_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t#else\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include <output_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include <packing>\n#include <uv_pars_fragment>\n#include <normal_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_phong_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\t#include <output_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULARINTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n\t#ifdef USE_SPECULARCOLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <bsdfs>\n#include <iridescence_fragment>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_physical_pars_fragment>\n#include <transmission_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_pars_fragment>\n#include <iridescence_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <roughnessmap_fragment>\n\t#include <metalnessmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <clearcoat_normal_fragment_begin>\n\t#include <clearcoat_normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include <transmission_fragment>\n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\n\t#endif\n\t#include <output_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <gradientmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_toon_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_toon_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <output_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",points_vert:"uniform float size;\nuniform float scale;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <fog_vertex>\n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <color_pars_fragment>\n#include <map_particle_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_particle_fragment>\n\t#include <color_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <output_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",shadow_vert:"#include <common>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\nvoid main() {\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include <common>\n#include <uv_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <output_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}"},nt={common:{diffuse:{value:new Color$1(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new Matrix3},uv2Transform:{value:new Matrix3},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new Vector2(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Color$1(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Color$1(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new Matrix3}},sprite:{diffuse:{value:new Color$1(16777215)},opacity:{value:1},center:{value:new Vector2(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new Matrix3}}},rt={basic:{uniforms:mergeUniforms([nt.common,nt.specularmap,nt.envmap,nt.aomap,nt.lightmap,nt.fog]),vertexShader:it.meshbasic_vert,fragmentShader:it.meshbasic_frag},lambert:{uniforms:mergeUniforms([nt.common,nt.specularmap,nt.envmap,nt.aomap,nt.lightmap,nt.emissivemap,nt.bumpmap,nt.normalmap,nt.displacementmap,nt.fog,nt.lights,{emissive:{value:new Color$1(0)}}]),vertexShader:it.meshlambert_vert,fragmentShader:it.meshlambert_frag},phong:{uniforms:mergeUniforms([nt.common,nt.specularmap,nt.envmap,nt.aomap,nt.lightmap,nt.emissivemap,nt.bumpmap,nt.normalmap,nt.displacementmap,nt.fog,nt.lights,{emissive:{value:new Color$1(0)},specular:{value:new Color$1(1118481)},shininess:{value:30}}]),vertexShader:it.meshphong_vert,fragmentShader:it.meshphong_frag},standard:{uniforms:mergeUniforms([nt.common,nt.envmap,nt.aomap,nt.lightmap,nt.emissivemap,nt.bumpmap,nt.normalmap,nt.displacementmap,nt.roughnessmap,nt.metalnessmap,nt.fog,nt.lights,{emissive:{value:new Color$1(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:it.meshphysical_vert,fragmentShader:it.meshphysical_frag},toon:{uniforms:mergeUniforms([nt.common,nt.aomap,nt.lightmap,nt.emissivemap,nt.bumpmap,nt.normalmap,nt.displacementmap,nt.gradientmap,nt.fog,nt.lights,{emissive:{value:new Color$1(0)}}]),vertexShader:it.meshtoon_vert,fragmentShader:it.meshtoon_frag},matcap:{uniforms:mergeUniforms([nt.common,nt.bumpmap,nt.normalmap,nt.displacementmap,nt.fog,{matcap:{value:null}}]),vertexShader:it.meshmatcap_vert,fragmentShader:it.meshmatcap_frag},points:{uniforms:mergeUniforms([nt.points,nt.fog]),vertexShader:it.points_vert,fragmentShader:it.points_frag},dashed:{uniforms:mergeUniforms([nt.common,nt.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:it.linedashed_vert,fragmentShader:it.linedashed_frag},depth:{uniforms:mergeUniforms([nt.common,nt.displacementmap]),vertexShader:it.depth_vert,fragmentShader:it.depth_frag},normal:{uniforms:mergeUniforms([nt.common,nt.bumpmap,nt.normalmap,nt.displacementmap,{opacity:{value:1}}]),vertexShader:it.meshnormal_vert,fragmentShader:it.meshnormal_frag},sprite:{uniforms:mergeUniforms([nt.sprite,nt.fog]),vertexShader:it.sprite_vert,fragmentShader:it.sprite_frag},background:{uniforms:{uvTransform:{value:new Matrix3},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:it.background_vert,fragmentShader:it.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:it.backgroundCube_vert,fragmentShader:it.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:it.cube_vert,fragmentShader:it.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:it.equirect_vert,fragmentShader:it.equirect_frag},distanceRGBA:{uniforms:mergeUniforms([nt.common,nt.displacementmap,{referencePosition:{value:new Vector3},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:it.distanceRGBA_vert,fragmentShader:it.distanceRGBA_frag},shadow:{uniforms:mergeUniforms([nt.lights,nt.fog,{color:{value:new Color$1(0)},opacity:{value:1}}]),vertexShader:it.shadow_vert,fragmentShader:it.shadow_frag}};rt.physical={uniforms:mergeUniforms([rt.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new Vector2(1,1)},clearcoatNormalMap:{value:null},iridescence:{value:0},iridescenceMap:{value:null},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},sheen:{value:0},sheenColor:{value:new Color$1(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new Vector2},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new Color$1(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new Color$1(1,1,1)},specularColorMap:{value:null}}]),vertexShader:it.meshphysical_vert,fragmentShader:it.meshphysical_frag};const st={r:0,b:0,g:0};function WebGLBackground(e,t,i,n,r,s,a){const o=new Color$1(0);let l,c,h=!0===s?0:1,d=null,u=0,p=null;function setClear(t,i){t.getRGB(st,getUnlitUniformColorSpace(e)),n.buffers.color.setClear(st.r,st.g,st.b,i,a)}return{getClearColor:function(){return o},setClearColor:function(e,t=1){o.set(e),h=t,setClear(o,h)},getClearAlpha:function(){return h},setClearAlpha:function(e){h=e,setClear(o,h)},render:function render(n,s){let a=!1,m=!0===s.isScene?s.background:null;if(m&&m.isTexture){m=(s.backgroundBlurriness>0?i:t).get(m)}const f=e.xr,g=f.getSession&&f.getSession();g&&"additive"===g.environmentBlendMode&&(m=null),null===m?setClear(o,h):m&&m.isColor&&(setClear(m,1),a=!0),(e.autoClear||a)&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),m&&(m.isCubeTexture||306===m.mapping)?(void 0===c&&(c=new Mesh(new BoxGeometry(1,1,1),new ShaderMaterial({name:"BackgroundCubeMaterial",uniforms:cloneUniforms(rt.backgroundCube.uniforms),vertexShader:rt.backgroundCube.vertexShader,fragmentShader:rt.backgroundCube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),c.geometry.deleteAttribute("uv"),c.onBeforeRender=function(e,t,i){this.matrixWorld.copyPosition(i.matrixWorld)},Object.defineProperty(c.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(c)),c.material.uniforms.envMap.value=m,c.material.uniforms.flipEnvMap.value=m.isCubeTexture&&!1===m.isRenderTargetTexture?-1:1,c.material.uniforms.backgroundBlurriness.value=s.backgroundBlurriness,c.material.uniforms.backgroundIntensity.value=s.backgroundIntensity,c.material.toneMapped=3001!==m.encoding,d===m&&u===m.version&&p===e.toneMapping||(c.material.needsUpdate=!0,d=m,u=m.version,p=e.toneMapping),c.layers.enableAll(),n.unshift(c,c.geometry,c.material,0,0,null)):m&&m.isTexture&&(void 0===l&&(l=new Mesh(new PlaneGeometry(2,2),new ShaderMaterial({name:"BackgroundMaterial",uniforms:cloneUniforms(rt.background.uniforms),vertexShader:rt.background.vertexShader,fragmentShader:rt.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(l)),l.material.uniforms.t2D.value=m,l.material.uniforms.backgroundIntensity.value=s.backgroundIntensity,l.material.toneMapped=3001!==m.encoding,!0===m.matrixAutoUpdate&&m.updateMatrix(),l.material.uniforms.uvTransform.value.copy(m.matrix),d===m&&u===m.version&&p===e.toneMapping||(l.material.needsUpdate=!0,d=m,u=m.version,p=e.toneMapping),l.layers.enableAll(),n.unshift(l,l.geometry,l.material,0,0,null))}}}function WebGLBindingStates(e,t,i,n){const r=e.getParameter(34921),s=n.isWebGL2?null:t.get("OES_vertex_array_object"),a=n.isWebGL2||null!==s,o={},l=createBindingState(null);let c=l,h=!1;function bindVertexArrayObject(t){return n.isWebGL2?e.bindVertexArray(t):s.bindVertexArrayOES(t)}function deleteVertexArrayObject(t){return n.isWebGL2?e.deleteVertexArray(t):s.deleteVertexArrayOES(t)}function createBindingState(e){const t=[],i=[],n=[];for(let e=0;e<r;e++)t[e]=0,i[e]=0,n[e]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:t,enabledAttributes:i,attributeDivisors:n,object:e,attributes:{},index:null}}function initAttributes(){const e=c.newAttributes;for(let t=0,i=e.length;t<i;t++)e[t]=0}function enableAttribute(e){enableAttributeAndDivisor(e,0)}function enableAttributeAndDivisor(i,r){const s=c.newAttributes,a=c.enabledAttributes,o=c.attributeDivisors;if(s[i]=1,0===a[i]&&(e.enableVertexAttribArray(i),a[i]=1),o[i]!==r){(n.isWebGL2?e:t.get("ANGLE_instanced_arrays"))[n.isWebGL2?"vertexAttribDivisor":"vertexAttribDivisorANGLE"](i,r),o[i]=r}}function disableUnusedAttributes(){const t=c.newAttributes,i=c.enabledAttributes;for(let n=0,r=i.length;n<r;n++)i[n]!==t[n]&&(e.disableVertexAttribArray(n),i[n]=0)}function vertexAttribPointer(t,i,r,s,a,o){!0!==n.isWebGL2||5124!==r&&5125!==r?e.vertexAttribPointer(t,i,r,s,a,o):e.vertexAttribIPointer(t,i,r,a,o)}function reset(){resetDefaultState(),h=!0,c!==l&&(c=l,bindVertexArrayObject(c.object))}function resetDefaultState(){l.geometry=null,l.program=null,l.wireframe=!1}return{setup:function setup(r,l,d,u,p){let m=!1;if(a){const t=function getBindingState(t,i,r){const a=!0===r.wireframe;let l=o[t.id];void 0===l&&(l={},o[t.id]=l);let c=l[i.id];void 0===c&&(c={},l[i.id]=c);let h=c[a];void 0===h&&(h=createBindingState(function createVertexArrayObject(){return n.isWebGL2?e.createVertexArray():s.createVertexArrayOES()}()),c[a]=h);return h}(u,d,l);c!==t&&(c=t,bindVertexArrayObject(c.object)),m=function needsUpdate(e,t,i,n){const r=c.attributes,s=t.attributes;let a=0;const o=i.getAttributes();for(const t in o){if(o[t].location>=0){const i=r[t];let n=s[t];if(void 0===n&&("instanceMatrix"===t&&e.instanceMatrix&&(n=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(n=e.instanceColor)),void 0===i)return!0;if(i.attribute!==n)return!0;if(n&&i.data!==n.data)return!0;a++}}return c.attributesNum!==a||c.index!==n}(r,u,d,p),m&&function saveCache(e,t,i,n){const r={},s=t.attributes;let a=0;const o=i.getAttributes();for(const t in o){if(o[t].location>=0){let i=s[t];void 0===i&&("instanceMatrix"===t&&e.instanceMatrix&&(i=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(i=e.instanceColor));const n={};n.attribute=i,i&&i.data&&(n.data=i.data),r[t]=n,a++}}c.attributes=r,c.attributesNum=a,c.index=n}(r,u,d,p)}else{const e=!0===l.wireframe;c.geometry===u.id&&c.program===d.id&&c.wireframe===e||(c.geometry=u.id,c.program=d.id,c.wireframe=e,m=!0)}null!==p&&i.update(p,34963),(m||h)&&(h=!1,function setupVertexAttributes(r,s,a,o){if(!1===n.isWebGL2&&(r.isInstancedMesh||o.isInstancedBufferGeometry)&&null===t.get("ANGLE_instanced_arrays"))return;initAttributes();const l=o.attributes,c=a.getAttributes(),h=s.defaultAttributeValues;for(const t in c){const n=c[t];if(n.location>=0){let s=l[t];if(void 0===s&&("instanceMatrix"===t&&r.instanceMatrix&&(s=r.instanceMatrix),"instanceColor"===t&&r.instanceColor&&(s=r.instanceColor)),void 0!==s){const t=s.normalized,a=s.itemSize,l=i.get(s);if(void 0===l)continue;const c=l.buffer,h=l.type,d=l.bytesPerElement;if(s.isInterleavedBufferAttribute){const i=s.data,l=i.stride,u=s.offset;if(i.isInstancedInterleavedBuffer){for(let e=0;e<n.locationSize;e++)enableAttributeAndDivisor(n.location+e,i.meshPerAttribute);!0!==r.isInstancedMesh&&void 0===o._maxInstanceCount&&(o._maxInstanceCount=i.meshPerAttribute*i.count)}else for(let e=0;e<n.locationSize;e++)enableAttribute(n.location+e);e.bindBuffer(34962,c);for(let e=0;e<n.locationSize;e++)vertexAttribPointer(n.location+e,a/n.locationSize,h,t,l*d,(u+a/n.locationSize*e)*d)}else{if(s.isInstancedBufferAttribute){for(let e=0;e<n.locationSize;e++)enableAttributeAndDivisor(n.location+e,s.meshPerAttribute);!0!==r.isInstancedMesh&&void 0===o._maxInstanceCount&&(o._maxInstanceCount=s.meshPerAttribute*s.count)}else for(let e=0;e<n.locationSize;e++)enableAttribute(n.location+e);e.bindBuffer(34962,c);for(let e=0;e<n.locationSize;e++)vertexAttribPointer(n.location+e,a/n.locationSize,h,t,a*d,a/n.locationSize*e*d)}}else if(void 0!==h){const i=h[t];if(void 0!==i)switch(i.length){case 2:e.vertexAttrib2fv(n.location,i);break;case 3:e.vertexAttrib3fv(n.location,i);break;case 4:e.vertexAttrib4fv(n.location,i);break;default:e.vertexAttrib1fv(n.location,i)}}}}disableUnusedAttributes()}(r,l,d,u),null!==p&&e.bindBuffer(34963,i.get(p).buffer))},reset,resetDefaultState,dispose:function dispose(){reset();for(const e in o){const t=o[e];for(const e in t){const i=t[e];for(const e in i)deleteVertexArrayObject(i[e].object),delete i[e];delete t[e]}delete o[e]}},releaseStatesOfGeometry:function releaseStatesOfGeometry(e){if(void 0===o[e.id])return;const t=o[e.id];for(const e in t){const i=t[e];for(const e in i)deleteVertexArrayObject(i[e].object),delete i[e];delete t[e]}delete o[e.id]},releaseStatesOfProgram:function releaseStatesOfProgram(e){for(const t in o){const i=o[t];if(void 0===i[e.id])continue;const n=i[e.id];for(const e in n)deleteVertexArrayObject(n[e].object),delete n[e];delete i[e.id]}},initAttributes,enableAttribute,disableUnusedAttributes}}function WebGLBufferRenderer(e,t,i,n){const r=n.isWebGL2;let s;this.setMode=function setMode(e){s=e},this.render=function render(t,n){e.drawArrays(s,t,n),i.update(n,s,1)},this.renderInstances=function renderInstances(n,a,o){if(0===o)return;let l,c;if(r)l=e,c="drawArraysInstanced";else if(l=t.get("ANGLE_instanced_arrays"),c="drawArraysInstancedANGLE",null===l)return void console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");l[c](s,n,a,o),i.update(a,s,o)}}function WebGLCapabilities(e,t,i){let n;function getMaxPrecision(t){if("highp"===t){if(e.getShaderPrecisionFormat(35633,36338).precision>0&&e.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";t="mediump"}return"mediump"===t&&e.getShaderPrecisionFormat(35633,36337).precision>0&&e.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}const r="undefined"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext;let s=void 0!==i.precision?i.precision:"highp";const a=getMaxPrecision(s);a!==s&&(console.warn("THREE.WebGLRenderer:",s,"not supported, using",a,"instead."),s=a);const o=r||t.has("WEBGL_draw_buffers"),l=!0===i.logarithmicDepthBuffer,c=e.getParameter(34930),h=e.getParameter(35660),d=e.getParameter(3379),u=e.getParameter(34076),p=e.getParameter(34921),m=e.getParameter(36347),f=e.getParameter(36348),g=e.getParameter(36349),v=h>0,x=r||t.has("OES_texture_float");return{isWebGL2:r,drawBuffers:o,getMaxAnisotropy:function getMaxAnisotropy(){if(void 0!==n)return n;if(!0===t.has("EXT_texture_filter_anisotropic")){const i=t.get("EXT_texture_filter_anisotropic");n=e.getParameter(i.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else n=0;return n},getMaxPrecision,precision:s,logarithmicDepthBuffer:l,maxTextures:c,maxVertexTextures:h,maxTextureSize:d,maxCubemapSize:u,maxAttributes:p,maxVertexUniforms:m,maxVaryings:f,maxFragmentUniforms:g,vertexTextures:v,floatFragmentTextures:x,floatVertexTextures:v&&x,maxSamples:r?e.getParameter(36183):0}}function WebGLClipping(e){const t=this;let i=null,n=0,r=!1,s=!1;const a=new Plane,o=new Matrix3,l={value:null,needsUpdate:!1};function projectPlanes(e,i,n,r){const s=null!==e?e.length:0;let c=null;if(0!==s){if(c=l.value,!0!==r||null===c){const t=n+4*s,r=i.matrixWorldInverse;o.getNormalMatrix(r),(null===c||c.length<t)&&(c=new Float32Array(t));for(let t=0,i=n;t!==s;++t,i+=4)a.copy(e[t]).applyMatrix4(r,o),a.normal.toArray(c,i),c[i+3]=a.constant}l.value=c,l.needsUpdate=!0}return t.numPlanes=s,t.numIntersection=0,c}this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(e,t){const i=0!==e.length||t||0!==n||r;return r=t,n=e.length,i},this.beginShadows=function(){s=!0,projectPlanes(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(e,t){i=projectPlanes(e,t,0)},this.setState=function(a,o,c){const h=a.clippingPlanes,d=a.clipIntersection,u=a.clipShadows,p=e.get(a);if(!r||null===h||0===h.length||s&&!u)s?projectPlanes(null):function resetGlobalState(){l.value!==i&&(l.value=i,l.needsUpdate=n>0);t.numPlanes=n,t.numIntersection=0}();else{const e=s?0:n,t=4*e;let r=p.clippingState||null;l.value=r,r=projectPlanes(h,o,t,c);for(let e=0;e!==t;++e)r[e]=i[e];p.clippingState=r,this.numIntersection=d?this.numPlanes:0,this.numPlanes+=e}}}function WebGLCubeMaps(e){let t=new WeakMap;function mapTextureMapping(e,t){return 303===t?e.mapping=301:304===t&&(e.mapping=302),e}function onTextureDispose(e){const i=e.target;i.removeEventListener("dispose",onTextureDispose);const n=t.get(i);void 0!==n&&(t.delete(i),n.dispose())}return{get:function get(i){if(i&&i.isTexture&&!1===i.isRenderTargetTexture){const n=i.mapping;if(303===n||304===n){if(t.has(i)){return mapTextureMapping(t.get(i).texture,i.mapping)}{const n=i.image;if(n&&n.height>0){const r=new WebGLCubeRenderTarget(n.height/2);return r.fromEquirectangularTexture(e,i),t.set(i,r),i.addEventListener("dispose",onTextureDispose),mapTextureMapping(r.texture,i.mapping)}return null}}}return i},dispose:function dispose(){t=new WeakMap}}}class OrthographicCamera extends Camera{constructor(e=-1,t=1,i=1,n=-1,r=.1,s=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=n,this.near=r,this.far=s,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=null===e.view?null:Object.assign({},e.view),this}setViewOffset(e,t,i,n,r,s){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=n,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,n=(this.top+this.bottom)/2;let r=i-e,s=i+e,a=n+t,o=n-t;if(null!==this.view&&this.view.enabled){const e=(this.right-this.left)/this.view.fullWidth/this.zoom,t=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=e*this.view.offsetX,s=r+e*this.view.width,a-=t*this.view.offsetY,o=a-t*this.view.height}this.projectionMatrix.makeOrthographic(r,s,a,o,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,null!==this.view&&(t.object.view=Object.assign({},this.view)),t}}const at=[.125,.215,.35,.446,.526,.582],ot=new OrthographicCamera,lt=new Color$1;let ct=null;const ht=(1+Math.sqrt(5))/2,dt=1/ht,ut=[new Vector3(1,1,1),new Vector3(-1,1,1),new Vector3(1,1,-1),new Vector3(-1,1,-1),new Vector3(0,ht,dt),new Vector3(0,ht,-dt),new Vector3(dt,0,ht),new Vector3(-dt,0,ht),new Vector3(ht,dt,0),new Vector3(-ht,dt,0)];class PMREMGenerator{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,i=.1,n=100){ct=this._renderer.getRenderTarget(),this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(e,i,n,r),t>0&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=_getCubemapMaterial(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=_getEquirectMaterial(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let e=0;e<this._lodPlanes.length;e++)this._lodPlanes[e].dispose()}_cleanup(e){this._renderer.setRenderTarget(ct),e.scissorTest=!1,_setViewport(e,0,0,e.width,e.height)}_fromTexture(e,t){301===e.mapping||302===e.mapping?this._setSize(0===e.image.length?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4),ct=this._renderer.getRenderTarget();const i=t||this._allocateTargets();return this._textureToCubeUV(e,i),this._applyPMREM(i),this._cleanup(i),i}_allocateTargets(){const e=3*Math.max(this._cubeSize,112),t=4*this._cubeSize,i={magFilter:1006,minFilter:1006,generateMipmaps:!1,type:1016,format:1023,encoding:3e3,depthBuffer:!1},n=_createRenderTarget(e,t,i);if(null===this._pingPongRenderTarget||this._pingPongRenderTarget.width!==e||this._pingPongRenderTarget.height!==t){null!==this._pingPongRenderTarget&&this._dispose(),this._pingPongRenderTarget=_createRenderTarget(e,t,i);const{_lodMax:n}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=function _createPlanes(e){const t=[],i=[],n=[];let r=e;const s=e-4+1+at.length;for(let a=0;a<s;a++){const s=Math.pow(2,r);i.push(s);let o=1/s;a>e-4?o=at[a-e+4-1]:0===a&&(o=0),n.push(o);const l=1/(s-2),c=-l,h=1+l,d=[c,c,h,c,h,h,c,c,h,h,c,h],u=6,p=6,m=3,f=2,g=1,v=new Float32Array(m*p*u),x=new Float32Array(f*p*u),y=new Float32Array(g*p*u);for(let e=0;e<u;e++){const t=e%3*2/3-1,i=e>2?0:-1,n=[t,i,0,t+2/3,i,0,t+2/3,i+1,0,t,i,0,t+2/3,i+1,0,t,i+1,0];v.set(n,m*p*e),x.set(d,f*p*e);const r=[e,e,e,e,e,e];y.set(r,g*p*e)}const b=new BufferGeometry;b.setAttribute("position",new BufferAttribute(v,m)),b.setAttribute("uv",new BufferAttribute(x,f)),b.setAttribute("faceIndex",new BufferAttribute(y,g)),t.push(b),r>4&&r--}return{lodPlanes:t,sizeLods:i,sigmas:n}}(n)),this._blurMaterial=function _getBlurShader(e,t,i){const n=new Float32Array(20),r=new Vector3(0,1,0);return new ShaderMaterial({name:"SphericalGaussianBlur",defines:{n:20,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/i,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:_getCommonVertexShader(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include <cube_uv_reflection_fragment>\n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}(n,e,t)}return n}_compileMaterial(e){const t=new Mesh(this._lodPlanes[0],e);this._renderer.compile(t,ot)}_sceneToCubeUV(e,t,i,n){const r=new PerspectiveCamera(90,1,t,i),s=[1,-1,1,1,1,1],a=[1,1,1,-1,-1,-1],o=this._renderer,l=o.autoClear,c=o.toneMapping;o.getClearColor(lt),o.toneMapping=0,o.autoClear=!1;const h=new MeshBasicMaterial({name:"PMREM.Background",side:1,depthWrite:!1,depthTest:!1}),d=new Mesh(new BoxGeometry,h);let u=!1;const p=e.background;p?p.isColor&&(h.color.copy(p),e.background=null,u=!0):(h.color.copy(lt),u=!0);for(let t=0;t<6;t++){const i=t%3;0===i?(r.up.set(0,s[t],0),r.lookAt(a[t],0,0)):1===i?(r.up.set(0,0,s[t]),r.lookAt(0,a[t],0)):(r.up.set(0,s[t],0),r.lookAt(0,0,a[t]));const l=this._cubeSize;_setViewport(n,i*l,t>2?l:0,l,l),o.setRenderTarget(n),u&&o.render(d,r),o.render(e,r)}d.geometry.dispose(),d.material.dispose(),o.toneMapping=c,o.autoClear=l,e.background=p}_textureToCubeUV(e,t){const i=this._renderer,n=301===e.mapping||302===e.mapping;n?(null===this._cubemapMaterial&&(this._cubemapMaterial=_getCubemapMaterial()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===e.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=_getEquirectMaterial());const r=n?this._cubemapMaterial:this._equirectMaterial,s=new Mesh(this._lodPlanes[0],r);r.uniforms.envMap.value=e;const a=this._cubeSize;_setViewport(t,0,0,3*a,2*a),i.setRenderTarget(t),i.render(s,ot)}_applyPMREM(e){const t=this._renderer,i=t.autoClear;t.autoClear=!1;for(let t=1;t<this._lodPlanes.length;t++){const i=Math.sqrt(this._sigmas[t]*this._sigmas[t]-this._sigmas[t-1]*this._sigmas[t-1]),n=ut[(t-1)%ut.length];this._blur(e,t-1,t,i,n)}t.autoClear=i}_blur(e,t,i,n,r){const s=this._pingPongRenderTarget;this._halfBlur(e,s,t,i,n,"latitudinal",r),this._halfBlur(s,e,i,i,n,"longitudinal",r)}_halfBlur(e,t,i,n,r,s,a){const o=this._renderer,l=this._blurMaterial;"latitudinal"!==s&&"longitudinal"!==s&&console.error("blur direction must be either latitudinal or longitudinal!");const c=new Mesh(this._lodPlanes[n],l),h=l.uniforms,d=this._sizeLods[i]-1,u=isFinite(r)?Math.PI/(2*d):2*Math.PI/39,p=r/u,m=isFinite(r)?1+Math.floor(3*p):20;m>20&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${m} samples when the maximum is set to 20`);const f=[];let g=0;for(let e=0;e<20;++e){const t=e/p,i=Math.exp(-t*t/2);f.push(i),0===e?g+=i:e<m&&(g+=2*i)}for(let e=0;e<f.length;e++)f[e]=f[e]/g;h.envMap.value=e.texture,h.samples.value=m,h.weights.value=f,h.latitudinal.value="latitudinal"===s,a&&(h.poleAxis.value=a);const{_lodMax:v}=this;h.dTheta.value=u,h.mipInt.value=v-i;const x=this._sizeLods[n];_setViewport(t,3*x*(n>v-4?n-v+4:0),4*(this._cubeSize-x),3*x,2*x),o.setRenderTarget(t),o.render(c,ot)}}function _createRenderTarget(e,t,i){const n=new WebGLRenderTarget(e,t,i);return n.texture.mapping=306,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function _setViewport(e,t,i,n,r){e.viewport.set(t,i,n,r),e.scissor.set(t,i,n,r)}function _getEquirectMaterial(){return new ShaderMaterial({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:_getCommonVertexShader(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function _getCubemapMaterial(){return new ShaderMaterial({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:_getCommonVertexShader(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function _getCommonVertexShader(){return"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t"}function WebGLCubeUVMaps(e){let t=new WeakMap,i=null;function onTextureDispose(e){const i=e.target;i.removeEventListener("dispose",onTextureDispose);const n=t.get(i);void 0!==n&&(t.delete(i),n.dispose())}return{get:function get(n){if(n&&n.isTexture){const r=n.mapping,s=303===r||304===r,a=301===r||302===r;if(s||a){if(n.isRenderTargetTexture&&!0===n.needsPMREMUpdate){n.needsPMREMUpdate=!1;let r=t.get(n);return null===i&&(i=new PMREMGenerator(e)),r=s?i.fromEquirectangular(n,r):i.fromCubemap(n,r),t.set(n,r),r.texture}if(t.has(n))return t.get(n).texture;{const r=n.image;if(s&&r&&r.height>0||a&&r&&function isCubeTextureComplete(e){let t=0;const i=6;for(let n=0;n<i;n++)void 0!==e[n]&&t++;return t===i}(r)){null===i&&(i=new PMREMGenerator(e));const r=s?i.fromEquirectangular(n):i.fromCubemap(n);return t.set(n,r),n.addEventListener("dispose",onTextureDispose),r.texture}return null}}}return n},dispose:function dispose(){t=new WeakMap,null!==i&&(i.dispose(),i=null)}}}function WebGLExtensions(e){const t={};function getExtension(i){if(void 0!==t[i])return t[i];let n;switch(i){case"WEBGL_depth_texture":n=e.getExtension("WEBGL_depth_texture")||e.getExtension("MOZ_WEBGL_depth_texture")||e.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":n=e.getExtension("EXT_texture_filter_anisotropic")||e.getExtension("MOZ_EXT_texture_filter_anisotropic")||e.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":n=e.getExtension("WEBGL_compressed_texture_s3tc")||e.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":n=e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:n=e.getExtension(i)}return t[i]=n,n}return{has:function(e){return null!==getExtension(e)},init:function(e){e.isWebGL2?getExtension("EXT_color_buffer_float"):(getExtension("WEBGL_depth_texture"),getExtension("OES_texture_float"),getExtension("OES_texture_half_float"),getExtension("OES_texture_half_float_linear"),getExtension("OES_standard_derivatives"),getExtension("OES_element_index_uint"),getExtension("OES_vertex_array_object"),getExtension("ANGLE_instanced_arrays")),getExtension("OES_texture_float_linear"),getExtension("EXT_color_buffer_half_float"),getExtension("WEBGL_multisampled_render_to_texture")},get:function(e){const t=getExtension(e);return null===t&&console.warn("THREE.WebGLRenderer: "+e+" extension not supported."),t}}}function WebGLGeometries(e,t,i,n){const r={},s=new WeakMap;function onGeometryDispose(e){const a=e.target;null!==a.index&&t.remove(a.index);for(const e in a.attributes)t.remove(a.attributes[e]);a.removeEventListener("dispose",onGeometryDispose),delete r[a.id];const o=s.get(a);o&&(t.remove(o),s.delete(a)),n.releaseStatesOfGeometry(a),!0===a.isInstancedBufferGeometry&&delete a._maxInstanceCount,i.memory.geometries--}function updateWireframeAttribute(e){const i=[],n=e.index,r=e.attributes.position;let a=0;if(null!==n){const e=n.array;a=n.version;for(let t=0,n=e.length;t<n;t+=3){const n=e[t+0],r=e[t+1],s=e[t+2];i.push(n,r,r,s,s,n)}}else{const e=r.array;a=r.version;for(let t=0,n=e.length/3-1;t<n;t+=3){const e=t+0,n=t+1,r=t+2;i.push(e,n,n,r,r,e)}}const o=new(arrayNeedsUint32(i)?Uint32BufferAttribute:Uint16BufferAttribute)(i,1);o.version=a;const l=s.get(e);l&&t.remove(l),s.set(e,o)}return{get:function get(e,t){return!0===r[t.id]||(t.addEventListener("dispose",onGeometryDispose),r[t.id]=!0,i.memory.geometries++),t},update:function update(e){const i=e.attributes;for(const e in i)t.update(i[e],34962);const n=e.morphAttributes;for(const e in n){const i=n[e];for(let e=0,n=i.length;e<n;e++)t.update(i[e],34962)}},getWireframeAttribute:function getWireframeAttribute(e){const t=s.get(e);if(t){const i=e.index;null!==i&&t.version<i.version&&updateWireframeAttribute(e)}else updateWireframeAttribute(e);return s.get(e)}}}function WebGLIndexedBufferRenderer(e,t,i,n){const r=n.isWebGL2;let s,a,o;this.setMode=function setMode(e){s=e},this.setIndex=function setIndex(e){a=e.type,o=e.bytesPerElement},this.render=function render(t,n){e.drawElements(s,n,a,t*o),i.update(n,s,1)},this.renderInstances=function renderInstances(n,l,c){if(0===c)return;let h,d;if(r)h=e,d="drawElementsInstanced";else if(h=t.get("ANGLE_instanced_arrays"),d="drawElementsInstancedANGLE",null===h)return void console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");h[d](s,l,a,n*o,c),i.update(l,s,c)}}function WebGLInfo(e){const t={frame:0,calls:0,triangles:0,points:0,lines:0};return{memory:{geometries:0,textures:0},render:t,programs:null,autoReset:!0,reset:function reset(){t.frame++,t.calls=0,t.triangles=0,t.points=0,t.lines=0},update:function update(e,i,n){switch(t.calls++,i){case 4:t.triangles+=n*(e/3);break;case 1:t.lines+=n*(e/2);break;case 3:t.lines+=n*(e-1);break;case 2:t.lines+=n*e;break;case 0:t.points+=n*e;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",i)}}}}function numericalSort(e,t){return e[0]-t[0]}function absNumericalSort(e,t){return Math.abs(t[1])-Math.abs(e[1])}function WebGLMorphtargets(e,t,i){const n={},r=new Float32Array(8),s=new WeakMap,a=new Vector4,o=[];for(let e=0;e<8;e++)o[e]=[e,0];return{update:function update(l,c,h,d){const u=l.morphTargetInfluences;if(!0===t.isWebGL2){const n=c.morphAttributes.position||c.morphAttributes.normal||c.morphAttributes.color,r=void 0!==n?n.length:0;let o=s.get(c);if(void 0===o||o.count!==r){void 0!==o&&o.texture.dispose();const e=void 0!==c.morphAttributes.position,i=void 0!==c.morphAttributes.normal,n=void 0!==c.morphAttributes.color,l=c.morphAttributes.position||[],h=c.morphAttributes.normal||[],d=c.morphAttributes.color||[];let u=0;!0===e&&(u=1),!0===i&&(u=2),!0===n&&(u=3);let p=c.attributes.position.count*u,m=1;p>t.maxTextureSize&&(m=Math.ceil(p/t.maxTextureSize),p=t.maxTextureSize);const f=new Float32Array(p*m*4*r),g=new DataArrayTexture(f,p,m,r);g.type=1015,g.needsUpdate=!0;const v=4*u;for(let t=0;t<r;t++){const r=l[t],s=h[t],o=d[t],c=p*m*4*t;for(let t=0;t<r.count;t++){const l=t*v;!0===e&&(a.fromBufferAttribute(r,t),f[c+l+0]=a.x,f[c+l+1]=a.y,f[c+l+2]=a.z,f[c+l+3]=0),!0===i&&(a.fromBufferAttribute(s,t),f[c+l+4]=a.x,f[c+l+5]=a.y,f[c+l+6]=a.z,f[c+l+7]=0),!0===n&&(a.fromBufferAttribute(o,t),f[c+l+8]=a.x,f[c+l+9]=a.y,f[c+l+10]=a.z,f[c+l+11]=4===o.itemSize?a.w:1)}}o={count:r,texture:g,size:new Vector2(p,m)},s.set(c,o),c.addEventListener("dispose",(function disposeTexture(){g.dispose(),s.delete(c),c.removeEventListener("dispose",disposeTexture)}))}let l=0;for(let e=0;e<u.length;e++)l+=u[e];const h=c.morphTargetsRelative?1:1-l;d.getUniforms().setValue(e,"morphTargetBaseInfluence",h),d.getUniforms().setValue(e,"morphTargetInfluences",u),d.getUniforms().setValue(e,"morphTargetsTexture",o.texture,i),d.getUniforms().setValue(e,"morphTargetsTextureSize",o.size)}else{const t=void 0===u?0:u.length;let i=n[c.id];if(void 0===i||i.length!==t){i=[];for(let e=0;e<t;e++)i[e]=[e,0];n[c.id]=i}for(let e=0;e<t;e++){const t=i[e];t[0]=e,t[1]=u[e]}i.sort(absNumericalSort);for(let e=0;e<8;e++)e<t&&i[e][1]?(o[e][0]=i[e][0],o[e][1]=i[e][1]):(o[e][0]=Number.MAX_SAFE_INTEGER,o[e][1]=0);o.sort(numericalSort);const s=c.morphAttributes.position,a=c.morphAttributes.normal;let l=0;for(let e=0;e<8;e++){const t=o[e],i=t[0],n=t[1];i!==Number.MAX_SAFE_INTEGER&&n?(s&&c.getAttribute("morphTarget"+e)!==s[i]&&c.setAttribute("morphTarget"+e,s[i]),a&&c.getAttribute("morphNormal"+e)!==a[i]&&c.setAttribute("morphNormal"+e,a[i]),r[e]=n,l+=n):(s&&!0===c.hasAttribute("morphTarget"+e)&&c.deleteAttribute("morphTarget"+e),a&&!0===c.hasAttribute("morphNormal"+e)&&c.deleteAttribute("morphNormal"+e),r[e]=0)}const h=c.morphTargetsRelative?1:1-l;d.getUniforms().setValue(e,"morphTargetBaseInfluence",h),d.getUniforms().setValue(e,"morphTargetInfluences",r)}}}}function WebGLObjects(e,t,i,n){let r=new WeakMap;function onInstancedMeshDispose(e){const t=e.target;t.removeEventListener("dispose",onInstancedMeshDispose),i.remove(t.instanceMatrix),null!==t.instanceColor&&i.remove(t.instanceColor)}return{update:function update(e){const s=n.render.frame,a=e.geometry,o=t.get(e,a);return r.get(o)!==s&&(t.update(o),r.set(o,s)),e.isInstancedMesh&&(!1===e.hasEventListener("dispose",onInstancedMeshDispose)&&e.addEventListener("dispose",onInstancedMeshDispose),i.update(e.instanceMatrix,34962),null!==e.instanceColor&&i.update(e.instanceColor,34962)),o},dispose:function dispose(){r=new WeakMap}}}const pt=new Texture,mt=new DataArrayTexture,ft=new Data3DTexture,gt=new CubeTexture,vt=[],xt=[],yt=new Float32Array(16),bt=new Float32Array(9),_t=new Float32Array(4);function flatten(e,t,i){const n=e[0];if(n<=0||n>0)return e;const r=t*i;let s=vt[r];if(void 0===s&&(s=new Float32Array(r),vt[r]=s),0!==t){n.toArray(s,0);for(let n=1,r=0;n!==t;++n)r+=i,e[n].toArray(s,r)}return s}function arraysEqual(e,t){if(e.length!==t.length)return!1;for(let i=0,n=e.length;i<n;i++)if(e[i]!==t[i])return!1;return!0}function copyArray(e,t){for(let i=0,n=t.length;i<n;i++)e[i]=t[i]}function allocTexUnits(e,t){let i=xt[t];void 0===i&&(i=new Int32Array(t),xt[t]=i);for(let n=0;n!==t;++n)i[n]=e.allocateTextureUnit();return i}function setValueV1f(e,t){const i=this.cache;i[0]!==t&&(e.uniform1f(this.addr,t),i[0]=t)}function setValueV2f(e,t){const i=this.cache;if(void 0!==t.x)i[0]===t.x&&i[1]===t.y||(e.uniform2f(this.addr,t.x,t.y),i[0]=t.x,i[1]=t.y);else{if(arraysEqual(i,t))return;e.uniform2fv(this.addr,t),copyArray(i,t)}}function setValueV3f(e,t){const i=this.cache;if(void 0!==t.x)i[0]===t.x&&i[1]===t.y&&i[2]===t.z||(e.uniform3f(this.addr,t.x,t.y,t.z),i[0]=t.x,i[1]=t.y,i[2]=t.z);else if(void 0!==t.r)i[0]===t.r&&i[1]===t.g&&i[2]===t.b||(e.uniform3f(this.addr,t.r,t.g,t.b),i[0]=t.r,i[1]=t.g,i[2]=t.b);else{if(arraysEqual(i,t))return;e.uniform3fv(this.addr,t),copyArray(i,t)}}function setValueV4f(e,t){const i=this.cache;if(void 0!==t.x)i[0]===t.x&&i[1]===t.y&&i[2]===t.z&&i[3]===t.w||(e.uniform4f(this.addr,t.x,t.y,t.z,t.w),i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=t.w);else{if(arraysEqual(i,t))return;e.uniform4fv(this.addr,t),copyArray(i,t)}}function setValueM2(e,t){const i=this.cache,n=t.elements;if(void 0===n){if(arraysEqual(i,t))return;e.uniformMatrix2fv(this.addr,!1,t),copyArray(i,t)}else{if(arraysEqual(i,n))return;_t.set(n),e.uniformMatrix2fv(this.addr,!1,_t),copyArray(i,n)}}function setValueM3(e,t){const i=this.cache,n=t.elements;if(void 0===n){if(arraysEqual(i,t))return;e.uniformMatrix3fv(this.addr,!1,t),copyArray(i,t)}else{if(arraysEqual(i,n))return;bt.set(n),e.uniformMatrix3fv(this.addr,!1,bt),copyArray(i,n)}}function setValueM4(e,t){const i=this.cache,n=t.elements;if(void 0===n){if(arraysEqual(i,t))return;e.uniformMatrix4fv(this.addr,!1,t),copyArray(i,t)}else{if(arraysEqual(i,n))return;yt.set(n),e.uniformMatrix4fv(this.addr,!1,yt),copyArray(i,n)}}function setValueV1i(e,t){const i=this.cache;i[0]!==t&&(e.uniform1i(this.addr,t),i[0]=t)}function setValueV2i(e,t){const i=this.cache;if(void 0!==t.x)i[0]===t.x&&i[1]===t.y||(e.uniform2i(this.addr,t.x,t.y),i[0]=t.x,i[1]=t.y);else{if(arraysEqual(i,t))return;e.uniform2iv(this.addr,t),copyArray(i,t)}}function setValueV3i(e,t){const i=this.cache;if(void 0!==t.x)i[0]===t.x&&i[1]===t.y&&i[2]===t.z||(e.uniform3i(this.addr,t.x,t.y,t.z),i[0]=t.x,i[1]=t.y,i[2]=t.z);else{if(arraysEqual(i,t))return;e.uniform3iv(this.addr,t),copyArray(i,t)}}function setValueV4i(e,t){const i=this.cache;if(void 0!==t.x)i[0]===t.x&&i[1]===t.y&&i[2]===t.z&&i[3]===t.w||(e.uniform4i(this.addr,t.x,t.y,t.z,t.w),i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=t.w);else{if(arraysEqual(i,t))return;e.uniform4iv(this.addr,t),copyArray(i,t)}}function setValueV1ui(e,t){const i=this.cache;i[0]!==t&&(e.uniform1ui(this.addr,t),i[0]=t)}function setValueV2ui(e,t){const i=this.cache;if(void 0!==t.x)i[0]===t.x&&i[1]===t.y||(e.uniform2ui(this.addr,t.x,t.y),i[0]=t.x,i[1]=t.y);else{if(arraysEqual(i,t))return;e.uniform2uiv(this.addr,t),copyArray(i,t)}}function setValueV3ui(e,t){const i=this.cache;if(void 0!==t.x)i[0]===t.x&&i[1]===t.y&&i[2]===t.z||(e.uniform3ui(this.addr,t.x,t.y,t.z),i[0]=t.x,i[1]=t.y,i[2]=t.z);else{if(arraysEqual(i,t))return;e.uniform3uiv(this.addr,t),copyArray(i,t)}}function setValueV4ui(e,t){const i=this.cache;if(void 0!==t.x)i[0]===t.x&&i[1]===t.y&&i[2]===t.z&&i[3]===t.w||(e.uniform4ui(this.addr,t.x,t.y,t.z,t.w),i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=t.w);else{if(arraysEqual(i,t))return;e.uniform4uiv(this.addr,t),copyArray(i,t)}}function setValueT1(e,t,i){const n=this.cache,r=i.allocateTextureUnit();n[0]!==r&&(e.uniform1i(this.addr,r),n[0]=r),i.setTexture2D(t||pt,r)}function setValueT3D1(e,t,i){const n=this.cache,r=i.allocateTextureUnit();n[0]!==r&&(e.uniform1i(this.addr,r),n[0]=r),i.setTexture3D(t||ft,r)}function setValueT6(e,t,i){const n=this.cache,r=i.allocateTextureUnit();n[0]!==r&&(e.uniform1i(this.addr,r),n[0]=r),i.setTextureCube(t||gt,r)}function setValueT2DArray1(e,t,i){const n=this.cache,r=i.allocateTextureUnit();n[0]!==r&&(e.uniform1i(this.addr,r),n[0]=r),i.setTexture2DArray(t||mt,r)}function setValueV1fArray(e,t){e.uniform1fv(this.addr,t)}function setValueV2fArray(e,t){const i=flatten(t,this.size,2);e.uniform2fv(this.addr,i)}function setValueV3fArray(e,t){const i=flatten(t,this.size,3);e.uniform3fv(this.addr,i)}function setValueV4fArray(e,t){const i=flatten(t,this.size,4);e.uniform4fv(this.addr,i)}function setValueM2Array(e,t){const i=flatten(t,this.size,4);e.uniformMatrix2fv(this.addr,!1,i)}function setValueM3Array(e,t){const i=flatten(t,this.size,9);e.uniformMatrix3fv(this.addr,!1,i)}function setValueM4Array(e,t){const i=flatten(t,this.size,16);e.uniformMatrix4fv(this.addr,!1,i)}function setValueV1iArray(e,t){e.uniform1iv(this.addr,t)}function setValueV2iArray(e,t){e.uniform2iv(this.addr,t)}function setValueV3iArray(e,t){e.uniform3iv(this.addr,t)}function setValueV4iArray(e,t){e.uniform4iv(this.addr,t)}function setValueV1uiArray(e,t){e.uniform1uiv(this.addr,t)}function setValueV2uiArray(e,t){e.uniform2uiv(this.addr,t)}function setValueV3uiArray(e,t){e.uniform3uiv(this.addr,t)}function setValueV4uiArray(e,t){e.uniform4uiv(this.addr,t)}function setValueT1Array(e,t,i){const n=this.cache,r=t.length,s=allocTexUnits(i,r);arraysEqual(n,s)||(e.uniform1iv(this.addr,s),copyArray(n,s));for(let e=0;e!==r;++e)i.setTexture2D(t[e]||pt,s[e])}function setValueT3DArray(e,t,i){const n=this.cache,r=t.length,s=allocTexUnits(i,r);arraysEqual(n,s)||(e.uniform1iv(this.addr,s),copyArray(n,s));for(let e=0;e!==r;++e)i.setTexture3D(t[e]||ft,s[e])}function setValueT6Array(e,t,i){const n=this.cache,r=t.length,s=allocTexUnits(i,r);arraysEqual(n,s)||(e.uniform1iv(this.addr,s),copyArray(n,s));for(let e=0;e!==r;++e)i.setTextureCube(t[e]||gt,s[e])}function setValueT2DArrayArray(e,t,i){const n=this.cache,r=t.length,s=allocTexUnits(i,r);arraysEqual(n,s)||(e.uniform1iv(this.addr,s),copyArray(n,s));for(let e=0;e!==r;++e)i.setTexture2DArray(t[e]||mt,s[e])}class SingleUniform{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.setValue=function getSingularSetter(e){switch(e){case 5126:return setValueV1f;case 35664:return setValueV2f;case 35665:return setValueV3f;case 35666:return setValueV4f;case 35674:return setValueM2;case 35675:return setValueM3;case 35676:return setValueM4;case 5124:case 35670:return setValueV1i;case 35667:case 35671:return setValueV2i;case 35668:case 35672:return setValueV3i;case 35669:case 35673:return setValueV4i;case 5125:return setValueV1ui;case 36294:return setValueV2ui;case 36295:return setValueV3ui;case 36296:return setValueV4ui;case 35678:case 36198:case 36298:case 36306:case 35682:return setValueT1;case 35679:case 36299:case 36307:return setValueT3D1;case 35680:case 36300:case 36308:case 36293:return setValueT6;case 36289:case 36303:case 36311:case 36292:return setValueT2DArray1}}(t.type)}}class PureArrayUniform{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.size=t.size,this.setValue=function getPureArraySetter(e){switch(e){case 5126:return setValueV1fArray;case 35664:return setValueV2fArray;case 35665:return setValueV3fArray;case 35666:return setValueV4fArray;case 35674:return setValueM2Array;case 35675:return setValueM3Array;case 35676:return setValueM4Array;case 5124:case 35670:return setValueV1iArray;case 35667:case 35671:return setValueV2iArray;case 35668:case 35672:return setValueV3iArray;case 35669:case 35673:return setValueV4iArray;case 5125:return setValueV1uiArray;case 36294:return setValueV2uiArray;case 36295:return setValueV3uiArray;case 36296:return setValueV4uiArray;case 35678:case 36198:case 36298:case 36306:case 35682:return setValueT1Array;case 35679:case 36299:case 36307:return setValueT3DArray;case 35680:case 36300:case 36308:case 36293:return setValueT6Array;case 36289:case 36303:case 36311:case 36292:return setValueT2DArrayArray}}(t.type)}}class StructuredUniform{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,i){const n=this.seq;for(let r=0,s=n.length;r!==s;++r){const s=n[r];s.setValue(e,t[s.id],i)}}}const St=/(\w+)(\])?(\[|\.)?/g;function addUniform(e,t){e.seq.push(t),e.map[t.id]=t}function parseUniform(e,t,i){const n=e.name,r=n.length;for(St.lastIndex=0;;){const s=St.exec(n),a=St.lastIndex;let o=s[1];const l="]"===s[2],c=s[3];if(l&&(o|=0),void 0===c||"["===c&&a+2===r){addUniform(i,void 0===c?new SingleUniform(o,e,t):new PureArrayUniform(o,e,t));break}{let e=i.map[o];void 0===e&&(e=new StructuredUniform(o),addUniform(i,e)),i=e}}}class WebGLUniforms{constructor(e,t){this.seq=[],this.map={};const i=e.getProgramParameter(t,35718);for(let n=0;n<i;++n){const i=e.getActiveUniform(t,n);parseUniform(i,e.getUniformLocation(t,i.name),this)}}setValue(e,t,i,n){const r=this.map[t];void 0!==r&&r.setValue(e,i,n)}setOptional(e,t,i){const n=t[i];void 0!==n&&this.setValue(e,i,n)}static upload(e,t,i,n){for(let r=0,s=t.length;r!==s;++r){const s=t[r],a=i[s.id];!1!==a.needsUpdate&&s.setValue(e,a.value,n)}}static seqWithValue(e,t){const i=[];for(let n=0,r=e.length;n!==r;++n){const r=e[n];r.id in t&&i.push(r)}return i}}function WebGLShader(e,t,i){const n=e.createShader(t);return e.shaderSource(n,i),e.compileShader(n),n}let Mt=0;function getShaderErrors(e,t,i){const n=e.getShaderParameter(t,35713),r=e.getShaderInfoLog(t).trim();if(n&&""===r)return"";const s=/ERROR: 0:(\d+)/.exec(r);if(s){const n=parseInt(s[1]);return i.toUpperCase()+"\n\n"+r+"\n\n"+function handleSource(e,t){const i=e.split("\n"),n=[],r=Math.max(t-6,0),s=Math.min(t+6,i.length);for(let e=r;e<s;e++){const r=e+1;n.push(`${r===t?">":" "} ${r}: ${i[e]}`)}return n.join("\n")}(e.getShaderSource(t),n)}return r}function getTexelEncodingFunction(e,t){const i=function getEncodingComponents(e){switch(e){case 3e3:return["Linear","( value )"];case 3001:return["sRGB","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported encoding:",e),["Linear","( value )"]}}(t);return"vec4 "+e+"( vec4 value ) { return LinearTo"+i[0]+i[1]+"; }"}function getToneMappingFunction(e,t){let i;switch(t){case 1:i="Linear";break;case 2:i="Reinhard";break;case 3:i="OptimizedCineon";break;case 4:i="ACESFilmic";break;case 5:i="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),i="Linear"}return"vec3 "+e+"( vec3 color ) { return "+i+"ToneMapping( color ); }"}function filterEmptyLine(e){return""!==e}function replaceLightNums(e,t){const i=t.numSpotLightShadows+t.numSpotLightMaps-t.numSpotLightShadowsWithMaps;return e.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,t.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,i).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,t.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function replaceClippingPlaneNums(e,t){return e.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}const wt=/^[ \t]*#include +<([\w\d./]+)>/gm;function resolveIncludes(e){return e.replace(wt,includeReplacer)}function includeReplacer(e,t){const i=it[t];if(void 0===i)throw new Error("Can not resolve #include <"+t+">");return resolveIncludes(i)}const Tt=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function unrollLoops(e){return e.replace(Tt,loopReplacer)}function loopReplacer(e,t,i,n){let r="";for(let e=parseInt(t);e<parseInt(i);e++)r+=n.replace(/\[\s*i\s*\]/g,"[ "+e+" ]").replace(/UNROLLED_LOOP_INDEX/g,e);return r}function generatePrecision(e){let t="precision "+e.precision+" float;\nprecision "+e.precision+" int;";return"highp"===e.precision?t+="\n#define HIGH_PRECISION":"mediump"===e.precision?t+="\n#define MEDIUM_PRECISION":"lowp"===e.precision&&(t+="\n#define LOW_PRECISION"),t}function WebGLProgram(e,t,i,n){const r=e.getContext(),s=i.defines;let a=i.vertexShader,o=i.fragmentShader;const l=function generateShadowMapTypeDefine(e){let t="SHADOWMAP_TYPE_BASIC";return 1===e.shadowMapType?t="SHADOWMAP_TYPE_PCF":2===e.shadowMapType?t="SHADOWMAP_TYPE_PCF_SOFT":3===e.shadowMapType&&(t="SHADOWMAP_TYPE_VSM"),t}(i),c=function generateEnvMapTypeDefine(e){let t="ENVMAP_TYPE_CUBE";if(e.envMap)switch(e.envMapMode){case 301:case 302:t="ENVMAP_TYPE_CUBE";break;case 306:t="ENVMAP_TYPE_CUBE_UV"}return t}(i),h=function generateEnvMapModeDefine(e){let t="ENVMAP_MODE_REFLECTION";e.envMap&&302===e.envMapMode&&(t="ENVMAP_MODE_REFRACTION");return t}(i),d=function generateEnvMapBlendingDefine(e){let t="ENVMAP_BLENDING_NONE";if(e.envMap)switch(e.combine){case 0:t="ENVMAP_BLENDING_MULTIPLY";break;case 1:t="ENVMAP_BLENDING_MIX";break;case 2:t="ENVMAP_BLENDING_ADD"}return t}(i),u=function generateCubeUVSize(e){const t=e.envMapCubeUVHeight;if(null===t)return null;const i=Math.log2(t)-2,n=1/t;return{texelWidth:1/(3*Math.max(Math.pow(2,i),112)),texelHeight:n,maxMip:i}}(i),p=i.isWebGL2?"":function generateExtensions(e){return[e.extensionDerivatives||e.envMapCubeUVHeight||e.bumpMap||e.tangentSpaceNormalMap||e.clearcoatNormalMap||e.flatShading||"physical"===e.shaderID?"#extension GL_OES_standard_derivatives : enable":"",(e.extensionFragDepth||e.logarithmicDepthBuffer)&&e.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",e.extensionDrawBuffers&&e.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(e.extensionShaderTextureLOD||e.envMap||e.transmission)&&e.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(filterEmptyLine).join("\n")}(i),m=function generateDefines(e){const t=[];for(const i in e){const n=e[i];!1!==n&&t.push("#define "+i+" "+n)}return t.join("\n")}(s),f=r.createProgram();let g,v,x=i.glslVersion?"#version "+i.glslVersion+"\n":"";i.isRawShaderMaterial?(g=[m].filter(filterEmptyLine).join("\n"),g.length>0&&(g+="\n"),v=[p,m].filter(filterEmptyLine).join("\n"),v.length>0&&(v+="\n")):(g=[generatePrecision(i),"#define SHADER_NAME "+i.shaderName,m,i.instancing?"#define USE_INSTANCING":"",i.instancingColor?"#define USE_INSTANCING_COLOR":"",i.supportsVertexTextures?"#define VERTEX_TEXTURES":"",i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp2?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+h:"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.normalMap&&i.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",i.normalMap&&i.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",i.clearcoatMap?"#define USE_CLEARCOATMAP":"",i.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",i.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",i.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",i.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",i.displacementMap&&i.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",i.specularColorMap?"#define USE_SPECULARCOLORMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.transmission?"#define USE_TRANSMISSION":"",i.transmissionMap?"#define USE_TRANSMISSIONMAP":"",i.thicknessMap?"#define USE_THICKNESSMAP":"",i.sheenColorMap?"#define USE_SHEENCOLORMAP":"",i.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",i.vertexTangents?"#define USE_TANGENT":"",i.vertexColors?"#define USE_COLOR":"",i.vertexAlphas?"#define USE_COLOR_ALPHA":"",i.vertexUvs?"#define USE_UV":"",i.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",i.flatShading?"#define FLAT_SHADED":"",i.skinning?"#define USE_SKINNING":"",i.morphTargets?"#define USE_MORPHTARGETS":"",i.morphNormals&&!1===i.flatShading?"#define USE_MORPHNORMALS":"",i.morphColors&&i.isWebGL2?"#define USE_MORPHCOLORS":"",i.morphTargetsCount>0&&i.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",i.morphTargetsCount>0&&i.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+i.morphTextureStride:"",i.morphTargetsCount>0&&i.isWebGL2?"#define MORPHTARGETS_COUNT "+i.morphTargetsCount:"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+l:"",i.sizeAttenuation?"#define USE_SIZEATTENUATION":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&i.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(filterEmptyLine).join("\n"),v=[p,generatePrecision(i),"#define SHADER_NAME "+i.shaderName,m,i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp2?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.matcap?"#define USE_MATCAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+c:"",i.envMap?"#define "+h:"",i.envMap?"#define "+d:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.maxMip+".0":"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.normalMap&&i.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",i.normalMap&&i.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",i.clearcoat?"#define USE_CLEARCOAT":"",i.clearcoatMap?"#define USE_CLEARCOATMAP":"",i.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",i.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",i.iridescence?"#define USE_IRIDESCENCE":"",i.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",i.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",i.specularColorMap?"#define USE_SPECULARCOLORMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.alphaTest?"#define USE_ALPHATEST":"",i.sheen?"#define USE_SHEEN":"",i.sheenColorMap?"#define USE_SHEENCOLORMAP":"",i.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",i.transmission?"#define USE_TRANSMISSION":"",i.transmissionMap?"#define USE_TRANSMISSIONMAP":"",i.thicknessMap?"#define USE_THICKNESSMAP":"",i.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",i.vertexTangents?"#define USE_TANGENT":"",i.vertexColors||i.instancingColor?"#define USE_COLOR":"",i.vertexAlphas?"#define USE_COLOR_ALPHA":"",i.vertexUvs?"#define USE_UV":"",i.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",i.gradientMap?"#define USE_GRADIENTMAP":"",i.flatShading?"#define FLAT_SHADED":"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+l:"",i.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",i.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&i.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",0!==i.toneMapping?"#define TONE_MAPPING":"",0!==i.toneMapping?it.tonemapping_pars_fragment:"",0!==i.toneMapping?getToneMappingFunction("toneMapping",i.toneMapping):"",i.dithering?"#define DITHERING":"",i.opaque?"#define OPAQUE":"",it.encodings_pars_fragment,getTexelEncodingFunction("linearToOutputTexel",i.outputEncoding),i.useDepthPacking?"#define DEPTH_PACKING "+i.depthPacking:"","\n"].filter(filterEmptyLine).join("\n")),a=resolveIncludes(a),a=replaceLightNums(a,i),a=replaceClippingPlaneNums(a,i),o=resolveIncludes(o),o=replaceLightNums(o,i),o=replaceClippingPlaneNums(o,i),a=unrollLoops(a),o=unrollLoops(o),i.isWebGL2&&!0!==i.isRawShaderMaterial&&(x="#version 300 es\n",g=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+g,v=["#define varying in","300 es"===i.glslVersion?"":"layout(location = 0) out highp vec4 pc_fragColor;","300 es"===i.glslVersion?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+v);const y=x+v+o,b=WebGLShader(r,35633,x+g+a),_=WebGLShader(r,35632,y);if(r.attachShader(f,b),r.attachShader(f,_),void 0!==i.index0AttributeName?r.bindAttribLocation(f,0,i.index0AttributeName):!0===i.morphTargets&&r.bindAttribLocation(f,0,"position"),r.linkProgram(f),e.debug.checkShaderErrors){const e=r.getProgramInfoLog(f).trim(),t=r.getShaderInfoLog(b).trim(),i=r.getShaderInfoLog(_).trim();let n=!0,s=!0;if(!1===r.getProgramParameter(f,35714)){n=!1;const t=getShaderErrors(r,b,"vertex"),i=getShaderErrors(r,_,"fragment");console.error("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(f,35715)+"\n\nProgram Info Log: "+e+"\n"+t+"\n"+i)}else""!==e?console.warn("THREE.WebGLProgram: Program Info Log:",e):""!==t&&""!==i||(s=!1);s&&(this.diagnostics={runnable:n,programLog:e,vertexShader:{log:t,prefix:g},fragmentShader:{log:i,prefix:v}})}let S,M;return r.deleteShader(b),r.deleteShader(_),this.getUniforms=function(){return void 0===S&&(S=new WebGLUniforms(r,f)),S},this.getAttributes=function(){return void 0===M&&(M=function fetchAttributeLocations(e,t){const i={},n=e.getProgramParameter(t,35721);for(let r=0;r<n;r++){const n=e.getActiveAttrib(t,r),s=n.name;let a=1;35674===n.type&&(a=2),35675===n.type&&(a=3),35676===n.type&&(a=4),i[s]={type:n.type,location:e.getAttribLocation(t,s),locationSize:a}}return i}(r,f)),M},this.destroy=function(){n.releaseStatesOfProgram(this),r.deleteProgram(f),this.program=void 0},this.name=i.shaderName,this.id=Mt++,this.cacheKey=t,this.usedTimes=1,this.program=f,this.vertexShader=b,this.fragmentShader=_,this}let Et=0;class WebGLShaderCache{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,i=e.fragmentShader,n=this._getShaderStage(t),r=this._getShaderStage(i),s=this._getShaderCacheForMaterial(e);return!1===s.has(n)&&(s.add(n),n.usedTimes++),!1===s.has(r)&&(s.add(r),r.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const e of t)e.usedTimes--,0===e.usedTimes&&this.shaderCache.delete(e.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let i=t.get(e);return void 0===i&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){const t=this.shaderCache;let i=t.get(e);return void 0===i&&(i=new WebGLShaderStage(e),t.set(e,i)),i}}class WebGLShaderStage{constructor(e){this.id=Et++,this.code=e,this.usedTimes=0}}function WebGLPrograms(e,t,i,n,r,s,a){const o=new Layers,l=new WebGLShaderCache,c=[],h=r.isWebGL2,d=r.logarithmicDepthBuffer,u=r.vertexTextures;let p=r.precision;const m={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};return{getParameters:function getParameters(s,o,c,f,g){const v=f.fog,x=g.geometry,y=s.isMeshStandardMaterial?f.environment:null,b=(s.isMeshStandardMaterial?i:t).get(s.envMap||y),_=b&&306===b.mapping?b.image.height:null,S=m[s.type];null!==s.precision&&(p=r.getMaxPrecision(s.precision),p!==s.precision&&console.warn("THREE.WebGLProgram.getParameters:",s.precision,"not supported, using",p,"instead."));const M=x.morphAttributes.position||x.morphAttributes.normal||x.morphAttributes.color,w=void 0!==M?M.length:0;let T,E,C,A,P=0;if(void 0!==x.morphAttributes.position&&(P=1),void 0!==x.morphAttributes.normal&&(P=2),void 0!==x.morphAttributes.color&&(P=3),S){const e=rt[S];T=e.vertexShader,E=e.fragmentShader}else T=s.vertexShader,E=s.fragmentShader,l.update(s),C=l.getVertexShaderID(s),A=l.getFragmentShaderID(s);const D=e.getRenderTarget(),L=s.alphaTest>0,I=s.clearcoat>0,R=s.iridescence>0;return{isWebGL2:h,shaderID:S,shaderName:s.type,vertexShader:T,fragmentShader:E,defines:s.defines,customVertexShaderID:C,customFragmentShaderID:A,isRawShaderMaterial:!0===s.isRawShaderMaterial,glslVersion:s.glslVersion,precision:p,instancing:!0===g.isInstancedMesh,instancingColor:!0===g.isInstancedMesh&&null!==g.instanceColor,supportsVertexTextures:u,outputEncoding:null===D?e.outputEncoding:!0===D.isXRRenderTarget?D.texture.encoding:3e3,map:!!s.map,matcap:!!s.matcap,envMap:!!b,envMapMode:b&&b.mapping,envMapCubeUVHeight:_,lightMap:!!s.lightMap,aoMap:!!s.aoMap,emissiveMap:!!s.emissiveMap,bumpMap:!!s.bumpMap,normalMap:!!s.normalMap,objectSpaceNormalMap:1===s.normalMapType,tangentSpaceNormalMap:0===s.normalMapType,decodeVideoTexture:!!s.map&&!0===s.map.isVideoTexture&&3001===s.map.encoding,clearcoat:I,clearcoatMap:I&&!!s.clearcoatMap,clearcoatRoughnessMap:I&&!!s.clearcoatRoughnessMap,clearcoatNormalMap:I&&!!s.clearcoatNormalMap,iridescence:R,iridescenceMap:R&&!!s.iridescenceMap,iridescenceThicknessMap:R&&!!s.iridescenceThicknessMap,displacementMap:!!s.displacementMap,roughnessMap:!!s.roughnessMap,metalnessMap:!!s.metalnessMap,specularMap:!!s.specularMap,specularIntensityMap:!!s.specularIntensityMap,specularColorMap:!!s.specularColorMap,opaque:!1===s.transparent&&1===s.blending,alphaMap:!!s.alphaMap,alphaTest:L,gradientMap:!!s.gradientMap,sheen:s.sheen>0,sheenColorMap:!!s.sheenColorMap,sheenRoughnessMap:!!s.sheenRoughnessMap,transmission:s.transmission>0,transmissionMap:!!s.transmissionMap,thicknessMap:!!s.thicknessMap,combine:s.combine,vertexTangents:!!s.normalMap&&!!x.attributes.tangent,vertexColors:s.vertexColors,vertexAlphas:!0===s.vertexColors&&!!x.attributes.color&&4===x.attributes.color.itemSize,vertexUvs:!!(s.map||s.bumpMap||s.normalMap||s.specularMap||s.alphaMap||s.emissiveMap||s.roughnessMap||s.metalnessMap||s.clearcoatMap||s.clearcoatRoughnessMap||s.clearcoatNormalMap||s.iridescenceMap||s.iridescenceThicknessMap||s.displacementMap||s.transmissionMap||s.thicknessMap||s.specularIntensityMap||s.specularColorMap||s.sheenColorMap||s.sheenRoughnessMap),uvsVertexOnly:!(s.map||s.bumpMap||s.normalMap||s.specularMap||s.alphaMap||s.emissiveMap||s.roughnessMap||s.metalnessMap||s.clearcoatNormalMap||s.iridescenceMap||s.iridescenceThicknessMap||s.transmission>0||s.transmissionMap||s.thicknessMap||s.specularIntensityMap||s.specularColorMap||s.sheen>0||s.sheenColorMap||s.sheenRoughnessMap||!s.displacementMap),fog:!!v,useFog:!0===s.fog,fogExp2:v&&v.isFogExp2,flatShading:!!s.flatShading,sizeAttenuation:s.sizeAttenuation,logarithmicDepthBuffer:d,skinning:!0===g.isSkinnedMesh,morphTargets:void 0!==x.morphAttributes.position,morphNormals:void 0!==x.morphAttributes.normal,morphColors:void 0!==x.morphAttributes.color,morphTargetsCount:w,morphTextureStride:P,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numSpotLightMaps:o.spotLightMap.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numSpotLightShadowsWithMaps:o.numSpotLightShadowsWithMaps,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:s.dithering,shadowMapEnabled:e.shadowMap.enabled&&c.length>0,shadowMapType:e.shadowMap.type,toneMapping:s.toneMapped?e.toneMapping:0,physicallyCorrectLights:e.physicallyCorrectLights,premultipliedAlpha:s.premultipliedAlpha,doubleSided:2===s.side,flipSided:1===s.side,useDepthPacking:!!s.depthPacking,depthPacking:s.depthPacking||0,index0AttributeName:s.index0AttributeName,extensionDerivatives:s.extensions&&s.extensions.derivatives,extensionFragDepth:s.extensions&&s.extensions.fragDepth,extensionDrawBuffers:s.extensions&&s.extensions.drawBuffers,extensionShaderTextureLOD:s.extensions&&s.extensions.shaderTextureLOD,rendererExtensionFragDepth:h||n.has("EXT_frag_depth"),rendererExtensionDrawBuffers:h||n.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:h||n.has("EXT_shader_texture_lod"),customProgramCacheKey:s.customProgramCacheKey()}},getProgramCacheKey:function getProgramCacheKey(t){const i=[];if(t.shaderID?i.push(t.shaderID):(i.push(t.customVertexShaderID),i.push(t.customFragmentShaderID)),void 0!==t.defines)for(const e in t.defines)i.push(e),i.push(t.defines[e]);return!1===t.isRawShaderMaterial&&(!function getProgramCacheKeyParameters(e,t){e.push(t.precision),e.push(t.outputEncoding),e.push(t.envMapMode),e.push(t.envMapCubeUVHeight),e.push(t.combine),e.push(t.vertexUvs),e.push(t.fogExp2),e.push(t.sizeAttenuation),e.push(t.morphTargetsCount),e.push(t.morphAttributeCount),e.push(t.numDirLights),e.push(t.numPointLights),e.push(t.numSpotLights),e.push(t.numSpotLightMaps),e.push(t.numHemiLights),e.push(t.numRectAreaLights),e.push(t.numDirLightShadows),e.push(t.numPointLightShadows),e.push(t.numSpotLightShadows),e.push(t.numSpotLightShadowsWithMaps),e.push(t.shadowMapType),e.push(t.toneMapping),e.push(t.numClippingPlanes),e.push(t.numClipIntersection),e.push(t.depthPacking)}(i,t),function getProgramCacheKeyBooleans(e,t){o.disableAll(),t.isWebGL2&&o.enable(0);t.supportsVertexTextures&&o.enable(1);t.instancing&&o.enable(2);t.instancingColor&&o.enable(3);t.map&&o.enable(4);t.matcap&&o.enable(5);t.envMap&&o.enable(6);t.lightMap&&o.enable(7);t.aoMap&&o.enable(8);t.emissiveMap&&o.enable(9);t.bumpMap&&o.enable(10);t.normalMap&&o.enable(11);t.objectSpaceNormalMap&&o.enable(12);t.tangentSpaceNormalMap&&o.enable(13);t.clearcoat&&o.enable(14);t.clearcoatMap&&o.enable(15);t.clearcoatRoughnessMap&&o.enable(16);t.clearcoatNormalMap&&o.enable(17);t.iridescence&&o.enable(18);t.iridescenceMap&&o.enable(19);t.iridescenceThicknessMap&&o.enable(20);t.displacementMap&&o.enable(21);t.specularMap&&o.enable(22);t.roughnessMap&&o.enable(23);t.metalnessMap&&o.enable(24);t.gradientMap&&o.enable(25);t.alphaMap&&o.enable(26);t.alphaTest&&o.enable(27);t.vertexColors&&o.enable(28);t.vertexAlphas&&o.enable(29);t.vertexUvs&&o.enable(30);t.vertexTangents&&o.enable(31);t.uvsVertexOnly&&o.enable(32);e.push(o.mask),o.disableAll(),t.fog&&o.enable(0);t.useFog&&o.enable(1);t.flatShading&&o.enable(2);t.logarithmicDepthBuffer&&o.enable(3);t.skinning&&o.enable(4);t.morphTargets&&o.enable(5);t.morphNormals&&o.enable(6);t.morphColors&&o.enable(7);t.premultipliedAlpha&&o.enable(8);t.shadowMapEnabled&&o.enable(9);t.physicallyCorrectLights&&o.enable(10);t.doubleSided&&o.enable(11);t.flipSided&&o.enable(12);t.useDepthPacking&&o.enable(13);t.dithering&&o.enable(14);t.specularIntensityMap&&o.enable(15);t.specularColorMap&&o.enable(16);t.transmission&&o.enable(17);t.transmissionMap&&o.enable(18);t.thicknessMap&&o.enable(19);t.sheen&&o.enable(20);t.sheenColorMap&&o.enable(21);t.sheenRoughnessMap&&o.enable(22);t.decodeVideoTexture&&o.enable(23);t.opaque&&o.enable(24);e.push(o.mask)}(i,t),i.push(e.outputEncoding)),i.push(t.customProgramCacheKey),i.join()},getUniforms:function getUniforms(e){const t=m[e.type];let i;if(t){const e=rt[t];i=Qe.clone(e.uniforms)}else i=e.uniforms;return i},acquireProgram:function acquireProgram(t,i){let n;for(let e=0,t=c.length;e<t;e++){const t=c[e];if(t.cacheKey===i){n=t,++n.usedTimes;break}}return void 0===n&&(n=new WebGLProgram(e,i,t,s),c.push(n)),n},releaseProgram:function releaseProgram(e){if(0==--e.usedTimes){const t=c.indexOf(e);c[t]=c[c.length-1],c.pop(),e.destroy()}},releaseShaderCache:function releaseShaderCache(e){l.remove(e)},programs:c,dispose:function dispose(){l.dispose()}}}function WebGLProperties(){let e=new WeakMap;return{get:function get(t){let i=e.get(t);return void 0===i&&(i={},e.set(t,i)),i},remove:function remove(t){e.delete(t)},update:function update(t,i,n){e.get(t)[i]=n},dispose:function dispose(){e=new WeakMap}}}function painterSortStable(e,t){return e.groupOrder!==t.groupOrder?e.groupOrder-t.groupOrder:e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.material.id!==t.material.id?e.material.id-t.material.id:e.z!==t.z?e.z-t.z:e.id-t.id}function reversePainterSortStable(e,t){return e.groupOrder!==t.groupOrder?e.groupOrder-t.groupOrder:e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.z!==t.z?t.z-e.z:e.id-t.id}function WebGLRenderList(){const e=[];let t=0;const i=[],n=[],r=[];function getNextRenderItem(i,n,r,s,a,o){let l=e[t];return void 0===l?(l={id:i.id,object:i,geometry:n,material:r,groupOrder:s,renderOrder:i.renderOrder,z:a,group:o},e[t]=l):(l.id=i.id,l.object=i,l.geometry=n,l.material=r,l.groupOrder=s,l.renderOrder=i.renderOrder,l.z=a,l.group=o),t++,l}return{opaque:i,transmissive:n,transparent:r,init:function init(){t=0,i.length=0,n.length=0,r.length=0},push:function push(e,t,s,a,o,l){const c=getNextRenderItem(e,t,s,a,o,l);s.transmission>0?n.push(c):!0===s.transparent?r.push(c):i.push(c)},unshift:function unshift(e,t,s,a,o,l){const c=getNextRenderItem(e,t,s,a,o,l);s.transmission>0?n.unshift(c):!0===s.transparent?r.unshift(c):i.unshift(c)},finish:function finish(){for(let i=t,n=e.length;i<n;i++){const t=e[i];if(null===t.id)break;t.id=null,t.object=null,t.geometry=null,t.material=null,t.group=null}},sort:function sort(e,t){i.length>1&&i.sort(e||painterSortStable),n.length>1&&n.sort(t||reversePainterSortStable),r.length>1&&r.sort(t||reversePainterSortStable)}}}function WebGLRenderLists(){let e=new WeakMap;return{get:function get(t,i){const n=e.get(t);let r;return void 0===n?(r=new WebGLRenderList,e.set(t,[r])):i>=n.length?(r=new WebGLRenderList,n.push(r)):r=n[i],r},dispose:function dispose(){e=new WeakMap}}}function UniformsCache(){const e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let i;switch(t.type){case"DirectionalLight":i={direction:new Vector3,color:new Color$1};break;case"SpotLight":i={position:new Vector3,direction:new Vector3,color:new Color$1,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":i={position:new Vector3,color:new Color$1,distance:0,decay:0};break;case"HemisphereLight":i={direction:new Vector3,skyColor:new Color$1,groundColor:new Color$1};break;case"RectAreaLight":i={color:new Color$1,position:new Vector3,halfWidth:new Vector3,halfHeight:new Vector3}}return e[t.id]=i,i}}}let Ct=0;function shadowCastingAndTexturingLightsFirst(e,t){return(t.castShadow?2:0)-(e.castShadow?2:0)+(t.map?1:0)-(e.map?1:0)}function WebGLLights(e,t){const i=new UniformsCache,n=function ShadowUniformsCache(){const e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let i;switch(t.type){case"DirectionalLight":case"SpotLight":i={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Vector2};break;case"PointLight":i={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Vector2,shadowCameraNear:1,shadowCameraFar:1e3}}return e[t.id]=i,i}}}(),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0};for(let e=0;e<9;e++)r.probe.push(new Vector3);const s=new Vector3,a=new Matrix4,o=new Matrix4;return{setup:function setup(s,a){let o=0,l=0,c=0;for(let e=0;e<9;e++)r.probe[e].set(0,0,0);let h=0,d=0,u=0,p=0,m=0,f=0,g=0,v=0,x=0,y=0;s.sort(shadowCastingAndTexturingLightsFirst);const b=!0!==a?Math.PI:1;for(let e=0,t=s.length;e<t;e++){const t=s[e],a=t.color,_=t.intensity,S=t.distance,M=t.shadow&&t.shadow.map?t.shadow.map.texture:null;if(t.isAmbientLight)o+=a.r*_*b,l+=a.g*_*b,c+=a.b*_*b;else if(t.isLightProbe)for(let e=0;e<9;e++)r.probe[e].addScaledVector(t.sh.coefficients[e],_);else if(t.isDirectionalLight){const e=i.get(t);if(e.color.copy(t.color).multiplyScalar(t.intensity*b),t.castShadow){const e=t.shadow,i=n.get(t);i.shadowBias=e.bias,i.shadowNormalBias=e.normalBias,i.shadowRadius=e.radius,i.shadowMapSize=e.mapSize,r.directionalShadow[h]=i,r.directionalShadowMap[h]=M,r.directionalShadowMatrix[h]=t.shadow.matrix,f++}r.directional[h]=e,h++}else if(t.isSpotLight){const e=i.get(t);e.position.setFromMatrixPosition(t.matrixWorld),e.color.copy(a).multiplyScalar(_*b),e.distance=S,e.coneCos=Math.cos(t.angle),e.penumbraCos=Math.cos(t.angle*(1-t.penumbra)),e.decay=t.decay,r.spot[u]=e;const s=t.shadow;if(t.map&&(r.spotLightMap[x]=t.map,x++,s.updateMatrices(t),t.castShadow&&y++),r.spotLightMatrix[u]=s.matrix,t.castShadow){const e=n.get(t);e.shadowBias=s.bias,e.shadowNormalBias=s.normalBias,e.shadowRadius=s.radius,e.shadowMapSize=s.mapSize,r.spotShadow[u]=e,r.spotShadowMap[u]=M,v++}u++}else if(t.isRectAreaLight){const e=i.get(t);e.color.copy(a).multiplyScalar(_),e.halfWidth.set(.5*t.width,0,0),e.halfHeight.set(0,.5*t.height,0),r.rectArea[p]=e,p++}else if(t.isPointLight){const e=i.get(t);if(e.color.copy(t.color).multiplyScalar(t.intensity*b),e.distance=t.distance,e.decay=t.decay,t.castShadow){const e=t.shadow,i=n.get(t);i.shadowBias=e.bias,i.shadowNormalBias=e.normalBias,i.shadowRadius=e.radius,i.shadowMapSize=e.mapSize,i.shadowCameraNear=e.camera.near,i.shadowCameraFar=e.camera.far,r.pointShadow[d]=i,r.pointShadowMap[d]=M,r.pointShadowMatrix[d]=t.shadow.matrix,g++}r.point[d]=e,d++}else if(t.isHemisphereLight){const e=i.get(t);e.skyColor.copy(t.color).multiplyScalar(_*b),e.groundColor.copy(t.groundColor).multiplyScalar(_*b),r.hemi[m]=e,m++}}p>0&&(t.isWebGL2||!0===e.has("OES_texture_float_linear")?(r.rectAreaLTC1=nt.LTC_FLOAT_1,r.rectAreaLTC2=nt.LTC_FLOAT_2):!0===e.has("OES_texture_half_float_linear")?(r.rectAreaLTC1=nt.LTC_HALF_1,r.rectAreaLTC2=nt.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),r.ambient[0]=o,r.ambient[1]=l,r.ambient[2]=c;const _=r.hash;_.directionalLength===h&&_.pointLength===d&&_.spotLength===u&&_.rectAreaLength===p&&_.hemiLength===m&&_.numDirectionalShadows===f&&_.numPointShadows===g&&_.numSpotShadows===v&&_.numSpotMaps===x||(r.directional.length=h,r.spot.length=u,r.rectArea.length=p,r.point.length=d,r.hemi.length=m,r.directionalShadow.length=f,r.directionalShadowMap.length=f,r.pointShadow.length=g,r.pointShadowMap.length=g,r.spotShadow.length=v,r.spotShadowMap.length=v,r.directionalShadowMatrix.length=f,r.pointShadowMatrix.length=g,r.spotLightMatrix.length=v+x-y,r.spotLightMap.length=x,r.numSpotLightShadowsWithMaps=y,_.directionalLength=h,_.pointLength=d,_.spotLength=u,_.rectAreaLength=p,_.hemiLength=m,_.numDirectionalShadows=f,_.numPointShadows=g,_.numSpotShadows=v,_.numSpotMaps=x,r.version=Ct++)},setupView:function setupView(e,t){let i=0,n=0,l=0,c=0,h=0;const d=t.matrixWorldInverse;for(let t=0,u=e.length;t<u;t++){const u=e[t];if(u.isDirectionalLight){const e=r.directional[i];e.direction.setFromMatrixPosition(u.matrixWorld),s.setFromMatrixPosition(u.target.matrixWorld),e.direction.sub(s),e.direction.transformDirection(d),i++}else if(u.isSpotLight){const e=r.spot[l];e.position.setFromMatrixPosition(u.matrixWorld),e.position.applyMatrix4(d),e.direction.setFromMatrixPosition(u.matrixWorld),s.setFromMatrixPosition(u.target.matrixWorld),e.direction.sub(s),e.direction.transformDirection(d),l++}else if(u.isRectAreaLight){const e=r.rectArea[c];e.position.setFromMatrixPosition(u.matrixWorld),e.position.applyMatrix4(d),o.identity(),a.copy(u.matrixWorld),a.premultiply(d),o.extractRotation(a),e.halfWidth.set(.5*u.width,0,0),e.halfHeight.set(0,.5*u.height,0),e.halfWidth.applyMatrix4(o),e.halfHeight.applyMatrix4(o),c++}else if(u.isPointLight){const e=r.point[n];e.position.setFromMatrixPosition(u.matrixWorld),e.position.applyMatrix4(d),n++}else if(u.isHemisphereLight){const e=r.hemi[h];e.direction.setFromMatrixPosition(u.matrixWorld),e.direction.transformDirection(d),h++}}},state:r}}function WebGLRenderState(e,t){const i=new WebGLLights(e,t),n=[],r=[];return{init:function init(){n.length=0,r.length=0},state:{lightsArray:n,shadowsArray:r,lights:i},setupLights:function setupLights(e){i.setup(n,e)},setupLightsView:function setupLightsView(e){i.setupView(n,e)},pushLight:function pushLight(e){n.push(e)},pushShadow:function pushShadow(e){r.push(e)}}}function WebGLRenderStates(e,t){let i=new WeakMap;return{get:function get(n,r=0){const s=i.get(n);let a;return void 0===s?(a=new WebGLRenderState(e,t),i.set(n,[a])):r>=s.length?(a=new WebGLRenderState(e,t),s.push(a)):a=s[r],a},dispose:function dispose(){i=new WeakMap}}}class MeshDepthMaterial extends Material{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=3200,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class MeshDistanceMaterial extends Material{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.referencePosition=new Vector3,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}function WebGLShadowMap(e,t,i){let n=new Frustum;const r=new Vector2,s=new Vector2,a=new Vector4,o=new MeshDepthMaterial({depthPacking:3201}),l=new MeshDistanceMaterial,c={},h=i.maxTextureSize,d={0:1,1:0,2:2},u=new ShaderMaterial({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Vector2},radius:{value:4}},vertexShader:"void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include <packing>\nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),p=u.clone();p.defines.HORIZONTAL_PASS=1;const m=new BufferGeometry;m.setAttribute("position",new BufferAttribute(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const f=new Mesh(m,u),g=this;function VSMPass(i,n){const s=t.update(f);u.defines.VSM_SAMPLES!==i.blurSamples&&(u.defines.VSM_SAMPLES=i.blurSamples,p.defines.VSM_SAMPLES=i.blurSamples,u.needsUpdate=!0,p.needsUpdate=!0),null===i.mapPass&&(i.mapPass=new WebGLRenderTarget(r.x,r.y)),u.uniforms.shadow_pass.value=i.map.texture,u.uniforms.resolution.value=i.mapSize,u.uniforms.radius.value=i.radius,e.setRenderTarget(i.mapPass),e.clear(),e.renderBufferDirect(n,null,s,u,f,null),p.uniforms.shadow_pass.value=i.mapPass.texture,p.uniforms.resolution.value=i.mapSize,p.uniforms.radius.value=i.radius,e.setRenderTarget(i.map),e.clear(),e.renderBufferDirect(n,null,s,p,f,null)}function getDepthMaterial(t,i,n,r,s,a){let h=null;const u=!0===n.isPointLight?t.customDistanceMaterial:t.customDepthMaterial;if(void 0!==u)h=u;else if(h=!0===n.isPointLight?l:o,e.localClippingEnabled&&!0===i.clipShadows&&Array.isArray(i.clippingPlanes)&&0!==i.clippingPlanes.length||i.displacementMap&&0!==i.displacementScale||i.alphaMap&&i.alphaTest>0||i.map&&i.alphaTest>0){const e=h.uuid,t=i.uuid;let n=c[e];void 0===n&&(n={},c[e]=n);let r=n[t];void 0===r&&(r=h.clone(),n[t]=r),h=r}return h.visible=i.visible,h.wireframe=i.wireframe,h.side=3===a?null!==i.shadowSide?i.shadowSide:i.side:null!==i.shadowSide?i.shadowSide:d[i.side],h.alphaMap=i.alphaMap,h.alphaTest=i.alphaTest,h.map=i.map,h.clipShadows=i.clipShadows,h.clippingPlanes=i.clippingPlanes,h.clipIntersection=i.clipIntersection,h.displacementMap=i.displacementMap,h.displacementScale=i.displacementScale,h.displacementBias=i.displacementBias,h.wireframeLinewidth=i.wireframeLinewidth,h.linewidth=i.linewidth,!0===n.isPointLight&&!0===h.isMeshDistanceMaterial&&(h.referencePosition.setFromMatrixPosition(n.matrixWorld),h.nearDistance=r,h.farDistance=s),h}function renderObject(i,r,s,a,o){if(!1===i.visible)return;if(i.layers.test(r.layers)&&(i.isMesh||i.isLine||i.isPoints)&&(i.castShadow||i.receiveShadow&&3===o)&&(!i.frustumCulled||n.intersectsObject(i))){i.modelViewMatrix.multiplyMatrices(s.matrixWorldInverse,i.matrixWorld);const n=t.update(i),r=i.material;if(Array.isArray(r)){const t=n.groups;for(let l=0,c=t.length;l<c;l++){const c=t[l],h=r[c.materialIndex];if(h&&h.visible){const t=getDepthMaterial(i,h,a,s.near,s.far,o);e.renderBufferDirect(s,null,n,t,i,c)}}}else if(r.visible){const t=getDepthMaterial(i,r,a,s.near,s.far,o);e.renderBufferDirect(s,null,n,t,i,null)}}const l=i.children;for(let e=0,t=l.length;e<t;e++)renderObject(l[e],r,s,a,o)}this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=1,this.render=function(t,i,o){if(!1===g.enabled)return;if(!1===g.autoUpdate&&!1===g.needsUpdate)return;if(0===t.length)return;const l=e.getRenderTarget(),c=e.getActiveCubeFace(),d=e.getActiveMipmapLevel(),u=e.state;u.setBlending(0),u.buffers.color.setClear(1,1,1,1),u.buffers.depth.setTest(!0),u.setScissorTest(!1);for(let l=0,c=t.length;l<c;l++){const c=t[l],d=c.shadow;if(void 0===d){console.warn("THREE.WebGLShadowMap:",c,"has no shadow.");continue}if(!1===d.autoUpdate&&!1===d.needsUpdate)continue;r.copy(d.mapSize);const p=d.getFrameExtents();if(r.multiply(p),s.copy(d.mapSize),(r.x>h||r.y>h)&&(r.x>h&&(s.x=Math.floor(h/p.x),r.x=s.x*p.x,d.mapSize.x=s.x),r.y>h&&(s.y=Math.floor(h/p.y),r.y=s.y*p.y,d.mapSize.y=s.y)),null===d.map){const e=3!==this.type?{minFilter:1003,magFilter:1003}:{};d.map=new WebGLRenderTarget(r.x,r.y,e),d.map.texture.name=c.name+".shadowMap",d.camera.updateProjectionMatrix()}e.setRenderTarget(d.map),e.clear();const m=d.getViewportCount();for(let e=0;e<m;e++){const t=d.getViewport(e);a.set(s.x*t.x,s.y*t.y,s.x*t.z,s.y*t.w),u.viewport(a),d.updateMatrices(c,e),n=d.getFrustum(),renderObject(i,o,d.camera,c,this.type)}!0!==d.isPointLightShadow&&3===this.type&&VSMPass(d,o),d.needsUpdate=!1}g.needsUpdate=!1,e.setRenderTarget(l,c,d)}}function WebGLState(e,t,i){const n=i.isWebGL2;const r=new function ColorBuffer(){let t=!1;const i=new Vector4;let n=null;const r=new Vector4(0,0,0,0);return{setMask:function(i){n===i||t||(e.colorMask(i,i,i,i),n=i)},setLocked:function(e){t=e},setClear:function(t,n,s,a,o){!0===o&&(t*=a,n*=a,s*=a),i.set(t,n,s,a),!1===r.equals(i)&&(e.clearColor(t,n,s,a),r.copy(i))},reset:function(){t=!1,n=null,r.set(-1,0,0,0)}}},s=new function DepthBuffer(){let t=!1,i=null,n=null,r=null;return{setTest:function(e){e?enable(2929):disable(2929)},setMask:function(n){i===n||t||(e.depthMask(n),i=n)},setFunc:function(t){if(n!==t){switch(t){case 0:e.depthFunc(512);break;case 1:e.depthFunc(519);break;case 2:e.depthFunc(513);break;case 3:default:e.depthFunc(515);break;case 4:e.depthFunc(514);break;case 5:e.depthFunc(518);break;case 6:e.depthFunc(516);break;case 7:e.depthFunc(517)}n=t}},setLocked:function(e){t=e},setClear:function(t){r!==t&&(e.clearDepth(t),r=t)},reset:function(){t=!1,i=null,n=null,r=null}}},a=new function StencilBuffer(){let t=!1,i=null,n=null,r=null,s=null,a=null,o=null,l=null,c=null;return{setTest:function(e){t||(e?enable(2960):disable(2960))},setMask:function(n){i===n||t||(e.stencilMask(n),i=n)},setFunc:function(t,i,a){n===t&&r===i&&s===a||(e.stencilFunc(t,i,a),n=t,r=i,s=a)},setOp:function(t,i,n){a===t&&o===i&&l===n||(e.stencilOp(t,i,n),a=t,o=i,l=n)},setLocked:function(e){t=e},setClear:function(t){c!==t&&(e.clearStencil(t),c=t)},reset:function(){t=!1,i=null,n=null,r=null,s=null,a=null,o=null,l=null,c=null}}},o=new WeakMap,l=new WeakMap;let c={},h={},d=new WeakMap,u=[],p=null,m=!1,f=null,g=null,v=null,x=null,y=null,b=null,_=null,S=!1,M=null,w=null,T=null,E=null,C=null;const A=e.getParameter(35661);let P=!1,D=0;const L=e.getParameter(7938);-1!==L.indexOf("WebGL")?(D=parseFloat(/^WebGL (\d)/.exec(L)[1]),P=D>=1):-1!==L.indexOf("OpenGL ES")&&(D=parseFloat(/^OpenGL ES (\d)/.exec(L)[1]),P=D>=2);let I=null,R={};const O=e.getParameter(3088),N=e.getParameter(2978),z=(new Vector4).fromArray(O),B=(new Vector4).fromArray(N);function createTexture(t,i,n){const r=new Uint8Array(4),s=e.createTexture();e.bindTexture(t,s),e.texParameteri(t,10241,9728),e.texParameteri(t,10240,9728);for(let t=0;t<n;t++)e.texImage2D(i+t,0,6408,1,1,0,6408,5121,r);return s}const U={};function enable(t){!0!==c[t]&&(e.enable(t),c[t]=!0)}function disable(t){!1!==c[t]&&(e.disable(t),c[t]=!1)}U[3553]=createTexture(3553,3553,1),U[34067]=createTexture(34067,34069,6),r.setClear(0,0,0,1),s.setClear(1),a.setClear(0),enable(2929),s.setFunc(3),setFlipSided(!1),setCullFace(1),enable(2884),setBlending(0);const V={100:32774,101:32778,102:32779};if(n)V[103]=32775,V[104]=32776;else{const e=t.get("EXT_blend_minmax");null!==e&&(V[103]=e.MIN_EXT,V[104]=e.MAX_EXT)}const k={200:0,201:1,202:768,204:770,210:776,208:774,206:772,203:769,205:771,209:775,207:773};function setBlending(t,i,n,r,s,a,o,l){if(0!==t){if(!1===m&&(enable(3042),m=!0),5===t)s=s||i,a=a||n,o=o||r,i===g&&s===y||(e.blendEquationSeparate(V[i],V[s]),g=i,y=s),n===v&&r===x&&a===b&&o===_||(e.blendFuncSeparate(k[n],k[r],k[a],k[o]),v=n,x=r,b=a,_=o),f=t,S=!1;else if(t!==f||l!==S){if(100===g&&100===y||(e.blendEquation(32774),g=100,y=100),l)switch(t){case 1:e.blendFuncSeparate(1,771,1,771);break;case 2:e.blendFunc(1,1);break;case 3:e.blendFuncSeparate(0,769,0,1);break;case 4:e.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",t)}else switch(t){case 1:e.blendFuncSeparate(770,771,1,771);break;case 2:e.blendFunc(770,1);break;case 3:e.blendFuncSeparate(0,769,0,1);break;case 4:e.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",t)}v=null,x=null,b=null,_=null,f=t,S=l}}else!0===m&&(disable(3042),m=!1)}function setFlipSided(t){M!==t&&(t?e.frontFace(2304):e.frontFace(2305),M=t)}function setCullFace(t){0!==t?(enable(2884),t!==w&&(1===t?e.cullFace(1029):2===t?e.cullFace(1028):e.cullFace(1032))):disable(2884),w=t}function setPolygonOffset(t,i,n){t?(enable(32823),E===i&&C===n||(e.polygonOffset(i,n),E=i,C=n)):disable(32823)}return{buffers:{color:r,depth:s,stencil:a},enable,disable,bindFramebuffer:function bindFramebuffer(t,i){return h[t]!==i&&(e.bindFramebuffer(t,i),h[t]=i,n&&(36009===t&&(h[36160]=i),36160===t&&(h[36009]=i)),!0)},drawBuffers:function drawBuffers(n,r){let s=u,a=!1;if(n)if(s=d.get(r),void 0===s&&(s=[],d.set(r,s)),n.isWebGLMultipleRenderTargets){const e=n.texture;if(s.length!==e.length||36064!==s[0]){for(let t=0,i=e.length;t<i;t++)s[t]=36064+t;s.length=e.length,a=!0}}else 36064!==s[0]&&(s[0]=36064,a=!0);else 1029!==s[0]&&(s[0]=1029,a=!0);a&&(i.isWebGL2?e.drawBuffers(s):t.get("WEBGL_draw_buffers").drawBuffersWEBGL(s))},useProgram:function useProgram(t){return p!==t&&(e.useProgram(t),p=t,!0)},setBlending,setMaterial:function setMaterial(e,t){2===e.side?disable(2884):enable(2884);let i=1===e.side;t&&(i=!i),setFlipSided(i),1===e.blending&&!1===e.transparent?setBlending(0):setBlending(e.blending,e.blendEquation,e.blendSrc,e.blendDst,e.blendEquationAlpha,e.blendSrcAlpha,e.blendDstAlpha,e.premultipliedAlpha),s.setFunc(e.depthFunc),s.setTest(e.depthTest),s.setMask(e.depthWrite),r.setMask(e.colorWrite);const n=e.stencilWrite;a.setTest(n),n&&(a.setMask(e.stencilWriteMask),a.setFunc(e.stencilFunc,e.stencilRef,e.stencilFuncMask),a.setOp(e.stencilFail,e.stencilZFail,e.stencilZPass)),setPolygonOffset(e.polygonOffset,e.polygonOffsetFactor,e.polygonOffsetUnits),!0===e.alphaToCoverage?enable(32926):disable(32926)},setFlipSided,setCullFace,setLineWidth:function setLineWidth(t){t!==T&&(P&&e.lineWidth(t),T=t)},setPolygonOffset,setScissorTest:function setScissorTest(e){e?enable(3089):disable(3089)},activeTexture:function activeTexture(t){void 0===t&&(t=33984+A-1),I!==t&&(e.activeTexture(t),I=t)},bindTexture:function bindTexture(t,i,n){void 0===n&&(n=null===I?33984+A-1:I);let r=R[n];void 0===r&&(r={type:void 0,texture:void 0},R[n]=r),r.type===t&&r.texture===i||(I!==n&&(e.activeTexture(n),I=n),e.bindTexture(t,i||U[t]),r.type=t,r.texture=i)},unbindTexture:function unbindTexture(){const t=R[I];void 0!==t&&void 0!==t.type&&(e.bindTexture(t.type,null),t.type=void 0,t.texture=void 0)},compressedTexImage2D:function compressedTexImage2D(){try{e.compressedTexImage2D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},compressedTexImage3D:function compressedTexImage3D(){try{e.compressedTexImage3D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texImage2D:function texImage2D(){try{e.texImage2D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texImage3D:function texImage3D(){try{e.texImage3D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},updateUBOMapping:function updateUBOMapping(t,i){let n=l.get(i);void 0===n&&(n=new WeakMap,l.set(i,n));let r=n.get(t);void 0===r&&(r=e.getUniformBlockIndex(i,t.name),n.set(t,r))},uniformBlockBinding:function uniformBlockBinding(t,i){const n=l.get(i).get(t);o.get(i)!==n&&(e.uniformBlockBinding(i,n,t.__bindingPointIndex),o.set(i,n))},texStorage2D:function texStorage2D(){try{e.texStorage2D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texStorage3D:function texStorage3D(){try{e.texStorage3D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texSubImage2D:function texSubImage2D(){try{e.texSubImage2D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texSubImage3D:function texSubImage3D(){try{e.texSubImage3D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},compressedTexSubImage2D:function compressedTexSubImage2D(){try{e.compressedTexSubImage2D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},compressedTexSubImage3D:function compressedTexSubImage3D(){try{e.compressedTexSubImage3D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},scissor:function scissor(t){!1===z.equals(t)&&(e.scissor(t.x,t.y,t.z,t.w),z.copy(t))},viewport:function viewport(t){!1===B.equals(t)&&(e.viewport(t.x,t.y,t.z,t.w),B.copy(t))},reset:function reset(){e.disable(3042),e.disable(2884),e.disable(2929),e.disable(32823),e.disable(3089),e.disable(2960),e.disable(32926),e.blendEquation(32774),e.blendFunc(1,0),e.blendFuncSeparate(1,0,1,0),e.colorMask(!0,!0,!0,!0),e.clearColor(0,0,0,0),e.depthMask(!0),e.depthFunc(513),e.clearDepth(1),e.stencilMask(4294967295),e.stencilFunc(519,0,4294967295),e.stencilOp(7680,7680,7680),e.clearStencil(0),e.cullFace(1029),e.frontFace(2305),e.polygonOffset(0,0),e.activeTexture(33984),e.bindFramebuffer(36160,null),!0===n&&(e.bindFramebuffer(36009,null),e.bindFramebuffer(36008,null)),e.useProgram(null),e.lineWidth(1),e.scissor(0,0,e.canvas.width,e.canvas.height),e.viewport(0,0,e.canvas.width,e.canvas.height),c={},I=null,R={},h={},d=new WeakMap,u=[],p=null,m=!1,f=null,g=null,v=null,x=null,y=null,b=null,_=null,S=!1,M=null,w=null,T=null,E=null,C=null,z.set(0,0,e.canvas.width,e.canvas.height),B.set(0,0,e.canvas.width,e.canvas.height),r.reset(),s.reset(),a.reset()}}}function WebGLTextures(e,t,i,n,r,s,a){const o=r.isWebGL2,l=r.maxTextures,c=r.maxCubemapSize,h=r.maxTextureSize,d=r.maxSamples,u=t.has("WEBGL_multisampled_render_to_texture")?t.get("WEBGL_multisampled_render_to_texture"):null,p="undefined"!=typeof navigator&&/OculusBrowser/g.test(navigator.userAgent),m=new WeakMap;let f;const g=new WeakMap;let v=!1;try{v="undefined"!=typeof OffscreenCanvas&&null!==new OffscreenCanvas(1,1).getContext("2d")}catch(e){}function createCanvas(e,t){return v?new OffscreenCanvas(e,t):createElementNS("canvas")}function resizeImage(e,t,i,n){let r=1;if((e.width>n||e.height>n)&&(r=n/Math.max(e.width,e.height)),r<1||!0===t){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){const n=t?floorPowerOfTwo:Math.floor,s=n(r*e.width),a=n(r*e.height);void 0===f&&(f=createCanvas(s,a));const o=i?createCanvas(s,a):f;o.width=s,o.height=a;return o.getContext("2d").drawImage(e,0,0,s,a),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+e.width+"x"+e.height+") to ("+s+"x"+a+")."),o}return"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e}return e}function isPowerOfTwo$1(e){return isPowerOfTwo(e.width)&&isPowerOfTwo(e.height)}function textureNeedsGenerateMipmaps(e,t){return e.generateMipmaps&&t&&1003!==e.minFilter&&1006!==e.minFilter}function generateMipmap(t){e.generateMipmap(t)}function getInternalFormat(i,n,r,s,a=!1){if(!1===o)return n;if(null!==i){if(void 0!==e[i])return e[i];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+i+"'")}let l=n;return 6403===n&&(5126===r&&(l=33326),5131===r&&(l=33325),5121===r&&(l=33321)),33319===n&&(5126===r&&(l=33328),5131===r&&(l=33327),5121===r&&(l=33323)),6408===n&&(5126===r&&(l=34836),5131===r&&(l=34842),5121===r&&(l=3001===s&&!1===a?35907:32856),32819===r&&(l=32854),32820===r&&(l=32855)),33325!==l&&33326!==l&&33327!==l&&33328!==l&&34842!==l&&34836!==l||t.get("EXT_color_buffer_float"),l}function getMipLevels(e,t,i){return!0===textureNeedsGenerateMipmaps(e,i)||e.isFramebufferTexture&&1003!==e.minFilter&&1006!==e.minFilter?Math.log2(Math.max(t.width,t.height))+1:void 0!==e.mipmaps&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?t.mipmaps.length:1}function filterFallback(e){return 1003===e||1004===e||1005===e?9728:9729}function onTextureDispose(e){const t=e.target;t.removeEventListener("dispose",onTextureDispose),function deallocateTexture(e){const t=n.get(e);if(void 0===t.__webglInit)return;const i=e.source,r=g.get(i);if(r){const n=r[t.__cacheKey];n.usedTimes--,0===n.usedTimes&&deleteTexture(e),0===Object.keys(r).length&&g.delete(i)}n.remove(e)}(t),t.isVideoTexture&&m.delete(t)}function onRenderTargetDispose(t){const i=t.target;i.removeEventListener("dispose",onRenderTargetDispose),function deallocateRenderTarget(t){const i=t.texture,r=n.get(t),s=n.get(i);void 0!==s.__webglTexture&&(e.deleteTexture(s.__webglTexture),a.memory.textures--);t.depthTexture&&t.depthTexture.dispose();if(t.isWebGLCubeRenderTarget)for(let t=0;t<6;t++)e.deleteFramebuffer(r.__webglFramebuffer[t]),r.__webglDepthbuffer&&e.deleteRenderbuffer(r.__webglDepthbuffer[t]);else{if(e.deleteFramebuffer(r.__webglFramebuffer),r.__webglDepthbuffer&&e.deleteRenderbuffer(r.__webglDepthbuffer),r.__webglMultisampledFramebuffer&&e.deleteFramebuffer(r.__webglMultisampledFramebuffer),r.__webglColorRenderbuffer)for(let t=0;t<r.__webglColorRenderbuffer.length;t++)r.__webglColorRenderbuffer[t]&&e.deleteRenderbuffer(r.__webglColorRenderbuffer[t]);r.__webglDepthRenderbuffer&&e.deleteRenderbuffer(r.__webglDepthRenderbuffer)}if(t.isWebGLMultipleRenderTargets)for(let t=0,r=i.length;t<r;t++){const r=n.get(i[t]);r.__webglTexture&&(e.deleteTexture(r.__webglTexture),a.memory.textures--),n.remove(i[t])}n.remove(i),n.remove(t)}(i)}function deleteTexture(t){const i=n.get(t);e.deleteTexture(i.__webglTexture);const r=t.source;delete g.get(r)[i.__cacheKey],a.memory.textures--}let x=0;function setTexture2D(e,t){const r=n.get(e);if(e.isVideoTexture&&function updateVideoTexture(e){const t=a.render.frame;m.get(e)!==t&&(m.set(e,t),e.update())}(e),!1===e.isRenderTargetTexture&&e.version>0&&r.__version!==e.version){const i=e.image;if(null===i)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==i.complete)return void uploadTexture(r,e,t);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}i.bindTexture(3553,r.__webglTexture,33984+t)}const y={1e3:10497,1001:33071,1002:33648},b={1003:9728,1004:9984,1005:9986,1006:9729,1007:9985,1008:9987};function setTextureParameters(i,s,a){if(a?(e.texParameteri(i,10242,y[s.wrapS]),e.texParameteri(i,10243,y[s.wrapT]),32879!==i&&35866!==i||e.texParameteri(i,32882,y[s.wrapR]),e.texParameteri(i,10240,b[s.magFilter]),e.texParameteri(i,10241,b[s.minFilter])):(e.texParameteri(i,10242,33071),e.texParameteri(i,10243,33071),32879!==i&&35866!==i||e.texParameteri(i,32882,33071),1001===s.wrapS&&1001===s.wrapT||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),e.texParameteri(i,10240,filterFallback(s.magFilter)),e.texParameteri(i,10241,filterFallback(s.minFilter)),1003!==s.minFilter&&1006!==s.minFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),!0===t.has("EXT_texture_filter_anisotropic")){const a=t.get("EXT_texture_filter_anisotropic");if(1003===s.magFilter)return;if(1005!==s.minFilter&&1008!==s.minFilter)return;if(1015===s.type&&!1===t.has("OES_texture_float_linear"))return;if(!1===o&&1016===s.type&&!1===t.has("OES_texture_half_float_linear"))return;(s.anisotropy>1||n.get(s).__currentAnisotropy)&&(e.texParameterf(i,a.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(s.anisotropy,r.getMaxAnisotropy())),n.get(s).__currentAnisotropy=s.anisotropy)}}function initTexture(t,i){let n=!1;void 0===t.__webglInit&&(t.__webglInit=!0,i.addEventListener("dispose",onTextureDispose));const r=i.source;let s=g.get(r);void 0===s&&(s={},g.set(r,s));const o=function getTextureCacheKey(e){const t=[];return t.push(e.wrapS),t.push(e.wrapT),t.push(e.wrapR||0),t.push(e.magFilter),t.push(e.minFilter),t.push(e.anisotropy),t.push(e.internalFormat),t.push(e.format),t.push(e.type),t.push(e.generateMipmaps),t.push(e.premultiplyAlpha),t.push(e.flipY),t.push(e.unpackAlignment),t.push(e.encoding),t.join()}(i);if(o!==t.__cacheKey){void 0===s[o]&&(s[o]={texture:e.createTexture(),usedTimes:0},a.memory.textures++,n=!0),s[o].usedTimes++;const r=s[t.__cacheKey];void 0!==r&&(s[t.__cacheKey].usedTimes--,0===r.usedTimes&&deleteTexture(i)),t.__cacheKey=o,t.__webglTexture=s[o].texture}return n}function uploadTexture(t,r,a){let l=3553;(r.isDataArrayTexture||r.isCompressedArrayTexture)&&(l=35866),r.isData3DTexture&&(l=32879);const c=initTexture(t,r),d=r.source;i.bindTexture(l,t.__webglTexture,33984+a);const u=n.get(d);if(d.version!==u.__version||!0===c){i.activeTexture(33984+a),e.pixelStorei(37440,r.flipY),e.pixelStorei(37441,r.premultiplyAlpha),e.pixelStorei(3317,r.unpackAlignment),e.pixelStorei(37443,0);const t=function textureNeedsPowerOfTwo(e){return!o&&(1001!==e.wrapS||1001!==e.wrapT||1003!==e.minFilter&&1006!==e.minFilter)}(r)&&!1===isPowerOfTwo$1(r.image);let n=resizeImage(r.image,t,!1,h);n=verifyColorSpace(r,n);const p=isPowerOfTwo$1(n)||o,m=s.convert(r.format,r.encoding);let f,g=s.convert(r.type),v=getInternalFormat(r.internalFormat,m,g,r.encoding,r.isVideoTexture);setTextureParameters(l,r,p);const x=r.mipmaps,y=o&&!0!==r.isVideoTexture,b=void 0===u.__version||!0===c,_=getMipLevels(r,n,p);if(r.isDepthTexture)v=6402,o?v=1015===r.type?36012:1014===r.type?33190:1020===r.type?35056:33189:1015===r.type&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),1026===r.format&&6402===v&&1012!==r.type&&1014!==r.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),r.type=1014,g=s.convert(r.type)),1027===r.format&&6402===v&&(v=34041,1020!==r.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),r.type=1020,g=s.convert(r.type))),b&&(y?i.texStorage2D(3553,1,v,n.width,n.height):i.texImage2D(3553,0,v,n.width,n.height,0,m,g,null));else if(r.isDataTexture)if(x.length>0&&p){y&&b&&i.texStorage2D(3553,_,v,x[0].width,x[0].height);for(let e=0,t=x.length;e<t;e++)f=x[e],y?i.texSubImage2D(3553,e,0,0,f.width,f.height,m,g,f.data):i.texImage2D(3553,e,v,f.width,f.height,0,m,g,f.data);r.generateMipmaps=!1}else y?(b&&i.texStorage2D(3553,_,v,n.width,n.height),i.texSubImage2D(3553,0,0,0,n.width,n.height,m,g,n.data)):i.texImage2D(3553,0,v,n.width,n.height,0,m,g,n.data);else if(r.isCompressedTexture)if(r.isCompressedArrayTexture){y&&b&&i.texStorage3D(35866,_,v,x[0].width,x[0].height,n.depth);for(let e=0,t=x.length;e<t;e++)f=x[e],1023!==r.format?null!==m?y?i.compressedTexSubImage3D(35866,e,0,0,0,f.width,f.height,n.depth,m,f.data,0,0):i.compressedTexImage3D(35866,e,v,f.width,f.height,n.depth,0,f.data,0,0):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):y?i.texSubImage3D(35866,e,0,0,0,f.width,f.height,n.depth,m,g,f.data):i.texImage3D(35866,e,v,f.width,f.height,n.depth,0,m,g,f.data)}else{y&&b&&i.texStorage2D(3553,_,v,x[0].width,x[0].height);for(let e=0,t=x.length;e<t;e++)f=x[e],1023!==r.format?null!==m?y?i.compressedTexSubImage2D(3553,e,0,0,f.width,f.height,m,f.data):i.compressedTexImage2D(3553,e,v,f.width,f.height,0,f.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):y?i.texSubImage2D(3553,e,0,0,f.width,f.height,m,g,f.data):i.texImage2D(3553,e,v,f.width,f.height,0,m,g,f.data)}else if(r.isDataArrayTexture)y?(b&&i.texStorage3D(35866,_,v,n.width,n.height,n.depth),i.texSubImage3D(35866,0,0,0,0,n.width,n.height,n.depth,m,g,n.data)):i.texImage3D(35866,0,v,n.width,n.height,n.depth,0,m,g,n.data);else if(r.isData3DTexture)y?(b&&i.texStorage3D(32879,_,v,n.width,n.height,n.depth),i.texSubImage3D(32879,0,0,0,0,n.width,n.height,n.depth,m,g,n.data)):i.texImage3D(32879,0,v,n.width,n.height,n.depth,0,m,g,n.data);else if(r.isFramebufferTexture){if(b)if(y)i.texStorage2D(3553,_,v,n.width,n.height);else{let e=n.width,t=n.height;for(let n=0;n<_;n++)i.texImage2D(3553,n,v,e,t,0,m,g,null),e>>=1,t>>=1}}else if(x.length>0&&p){y&&b&&i.texStorage2D(3553,_,v,x[0].width,x[0].height);for(let e=0,t=x.length;e<t;e++)f=x[e],y?i.texSubImage2D(3553,e,0,0,m,g,f):i.texImage2D(3553,e,v,m,g,f);r.generateMipmaps=!1}else y?(b&&i.texStorage2D(3553,_,v,n.width,n.height),i.texSubImage2D(3553,0,0,0,m,g,n)):i.texImage2D(3553,0,v,m,g,n);textureNeedsGenerateMipmaps(r,p)&&generateMipmap(l),u.__version=d.version,r.onUpdate&&r.onUpdate(r)}t.__version=r.version}function setupFrameBufferTexture(t,r,a,o,l){const c=s.convert(a.format,a.encoding),h=s.convert(a.type),d=getInternalFormat(a.internalFormat,c,h,a.encoding);n.get(r).__hasExternalTextures||(32879===l||35866===l?i.texImage3D(l,0,d,r.width,r.height,r.depth,0,c,h,null):i.texImage2D(l,0,d,r.width,r.height,0,c,h,null)),i.bindFramebuffer(36160,t),useMultisampledRTT(r)?u.framebufferTexture2DMultisampleEXT(36160,o,l,n.get(a).__webglTexture,0,getRenderTargetSamples(r)):(3553===l||l>=34069&&l<=34074)&&e.framebufferTexture2D(36160,o,l,n.get(a).__webglTexture,0),i.bindFramebuffer(36160,null)}function setupRenderBufferStorage(t,i,n){if(e.bindRenderbuffer(36161,t),i.depthBuffer&&!i.stencilBuffer){let r=33189;if(n||useMultisampledRTT(i)){const t=i.depthTexture;t&&t.isDepthTexture&&(1015===t.type?r=36012:1014===t.type&&(r=33190));const n=getRenderTargetSamples(i);useMultisampledRTT(i)?u.renderbufferStorageMultisampleEXT(36161,n,r,i.width,i.height):e.renderbufferStorageMultisample(36161,n,r,i.width,i.height)}else e.renderbufferStorage(36161,r,i.width,i.height);e.framebufferRenderbuffer(36160,36096,36161,t)}else if(i.depthBuffer&&i.stencilBuffer){const r=getRenderTargetSamples(i);n&&!1===useMultisampledRTT(i)?e.renderbufferStorageMultisample(36161,r,35056,i.width,i.height):useMultisampledRTT(i)?u.renderbufferStorageMultisampleEXT(36161,r,35056,i.width,i.height):e.renderbufferStorage(36161,34041,i.width,i.height),e.framebufferRenderbuffer(36160,33306,36161,t)}else{const t=!0===i.isWebGLMultipleRenderTargets?i.texture:[i.texture];for(let r=0;r<t.length;r++){const a=t[r],o=s.convert(a.format,a.encoding),l=s.convert(a.type),c=getInternalFormat(a.internalFormat,o,l,a.encoding),h=getRenderTargetSamples(i);n&&!1===useMultisampledRTT(i)?e.renderbufferStorageMultisample(36161,h,c,i.width,i.height):useMultisampledRTT(i)?u.renderbufferStorageMultisampleEXT(36161,h,c,i.width,i.height):e.renderbufferStorage(36161,c,i.width,i.height)}}e.bindRenderbuffer(36161,null)}function setupDepthRenderbuffer(t){const r=n.get(t),s=!0===t.isWebGLCubeRenderTarget;if(t.depthTexture&&!r.__autoAllocateDepthBuffer){if(s)throw new Error("target.depthTexture not supported in Cube render targets");!function setupDepthTexture(t,r){if(r&&r.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(i.bindFramebuffer(36160,t),!r.depthTexture||!r.depthTexture.isDepthTexture)throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");n.get(r.depthTexture).__webglTexture&&r.depthTexture.image.width===r.width&&r.depthTexture.image.height===r.height||(r.depthTexture.image.width=r.width,r.depthTexture.image.height=r.height,r.depthTexture.needsUpdate=!0),setTexture2D(r.depthTexture,0);const s=n.get(r.depthTexture).__webglTexture,a=getRenderTargetSamples(r);if(1026===r.depthTexture.format)useMultisampledRTT(r)?u.framebufferTexture2DMultisampleEXT(36160,36096,3553,s,0,a):e.framebufferTexture2D(36160,36096,3553,s,0);else{if(1027!==r.depthTexture.format)throw new Error("Unknown depthTexture format");useMultisampledRTT(r)?u.framebufferTexture2DMultisampleEXT(36160,33306,3553,s,0,a):e.framebufferTexture2D(36160,33306,3553,s,0)}}(r.__webglFramebuffer,t)}else if(s){r.__webglDepthbuffer=[];for(let n=0;n<6;n++)i.bindFramebuffer(36160,r.__webglFramebuffer[n]),r.__webglDepthbuffer[n]=e.createRenderbuffer(),setupRenderBufferStorage(r.__webglDepthbuffer[n],t,!1)}else i.bindFramebuffer(36160,r.__webglFramebuffer),r.__webglDepthbuffer=e.createRenderbuffer(),setupRenderBufferStorage(r.__webglDepthbuffer,t,!1);i.bindFramebuffer(36160,null)}function getRenderTargetSamples(e){return Math.min(d,e.samples)}function useMultisampledRTT(e){const i=n.get(e);return o&&e.samples>0&&!0===t.has("WEBGL_multisampled_render_to_texture")&&!1!==i.__useRenderToTexture}function verifyColorSpace(e,i){const n=e.encoding,r=e.format,s=e.type;return!0===e.isCompressedTexture||!0===e.isVideoTexture||1035===e.format||3e3!==n&&(3001===n?!1===o?!0===t.has("EXT_sRGB")&&1023===r?(e.format=1035,e.minFilter=1006,e.generateMipmaps=!1):i=ImageUtils.sRGBToLinear(i):1023===r&&1009===s||console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",n)),i}this.allocateTextureUnit=function allocateTextureUnit(){const e=x;return e>=l&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+l),x+=1,e},this.resetTextureUnits=function resetTextureUnits(){x=0},this.setTexture2D=setTexture2D,this.setTexture2DArray=function setTexture2DArray(e,t){const r=n.get(e);e.version>0&&r.__version!==e.version?uploadTexture(r,e,t):i.bindTexture(35866,r.__webglTexture,33984+t)},this.setTexture3D=function setTexture3D(e,t){const r=n.get(e);e.version>0&&r.__version!==e.version?uploadTexture(r,e,t):i.bindTexture(32879,r.__webglTexture,33984+t)},this.setTextureCube=function setTextureCube(t,r){const a=n.get(t);t.version>0&&a.__version!==t.version?function uploadCubeTexture(t,r,a){if(6!==r.image.length)return;const l=initTexture(t,r),h=r.source;i.bindTexture(34067,t.__webglTexture,33984+a);const d=n.get(h);if(h.version!==d.__version||!0===l){i.activeTexture(33984+a),e.pixelStorei(37440,r.flipY),e.pixelStorei(37441,r.premultiplyAlpha),e.pixelStorei(3317,r.unpackAlignment),e.pixelStorei(37443,0);const t=r.isCompressedTexture||r.image[0].isCompressedTexture,n=r.image[0]&&r.image[0].isDataTexture,u=[];for(let e=0;e<6;e++)u[e]=t||n?n?r.image[e].image:r.image[e]:resizeImage(r.image[e],!1,!0,c),u[e]=verifyColorSpace(r,u[e]);const p=u[0],m=isPowerOfTwo$1(p)||o,f=s.convert(r.format,r.encoding),g=s.convert(r.type),v=getInternalFormat(r.internalFormat,f,g,r.encoding),x=o&&!0!==r.isVideoTexture,y=void 0===d.__version||!0===l;let b,_=getMipLevels(r,p,m);if(setTextureParameters(34067,r,m),t){x&&y&&i.texStorage2D(34067,_,v,p.width,p.height);for(let e=0;e<6;e++){b=u[e].mipmaps;for(let t=0;t<b.length;t++){const n=b[t];1023!==r.format?null!==f?x?i.compressedTexSubImage2D(34069+e,t,0,0,n.width,n.height,f,n.data):i.compressedTexImage2D(34069+e,t,v,n.width,n.height,0,n.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):x?i.texSubImage2D(34069+e,t,0,0,n.width,n.height,f,g,n.data):i.texImage2D(34069+e,t,v,n.width,n.height,0,f,g,n.data)}}}else{b=r.mipmaps,x&&y&&(b.length>0&&_++,i.texStorage2D(34067,_,v,u[0].width,u[0].height));for(let e=0;e<6;e++)if(n){x?i.texSubImage2D(34069+e,0,0,0,u[e].width,u[e].height,f,g,u[e].data):i.texImage2D(34069+e,0,v,u[e].width,u[e].height,0,f,g,u[e].data);for(let t=0;t<b.length;t++){const n=b[t].image[e].image;x?i.texSubImage2D(34069+e,t+1,0,0,n.width,n.height,f,g,n.data):i.texImage2D(34069+e,t+1,v,n.width,n.height,0,f,g,n.data)}}else{x?i.texSubImage2D(34069+e,0,0,0,f,g,u[e]):i.texImage2D(34069+e,0,v,f,g,u[e]);for(let t=0;t<b.length;t++){const n=b[t];x?i.texSubImage2D(34069+e,t+1,0,0,f,g,n.image[e]):i.texImage2D(34069+e,t+1,v,f,g,n.image[e])}}}textureNeedsGenerateMipmaps(r,m)&&generateMipmap(34067),d.__version=h.version,r.onUpdate&&r.onUpdate(r)}t.__version=r.version}(a,t,r):i.bindTexture(34067,a.__webglTexture,33984+r)},this.rebindTextures=function rebindTextures(e,t,i){const r=n.get(e);void 0!==t&&setupFrameBufferTexture(r.__webglFramebuffer,e,e.texture,36064,3553),void 0!==i&&setupDepthRenderbuffer(e)},this.setupRenderTarget=function setupRenderTarget(t){const l=t.texture,c=n.get(t),h=n.get(l);t.addEventListener("dispose",onRenderTargetDispose),!0!==t.isWebGLMultipleRenderTargets&&(void 0===h.__webglTexture&&(h.__webglTexture=e.createTexture()),h.__version=l.version,a.memory.textures++);const d=!0===t.isWebGLCubeRenderTarget,u=!0===t.isWebGLMultipleRenderTargets,p=isPowerOfTwo$1(t)||o;if(d){c.__webglFramebuffer=[];for(let t=0;t<6;t++)c.__webglFramebuffer[t]=e.createFramebuffer()}else{if(c.__webglFramebuffer=e.createFramebuffer(),u)if(r.drawBuffers){const i=t.texture;for(let t=0,r=i.length;t<r;t++){const r=n.get(i[t]);void 0===r.__webglTexture&&(r.__webglTexture=e.createTexture(),a.memory.textures++)}}else console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.");if(o&&t.samples>0&&!1===useMultisampledRTT(t)){const n=u?l:[l];c.__webglMultisampledFramebuffer=e.createFramebuffer(),c.__webglColorRenderbuffer=[],i.bindFramebuffer(36160,c.__webglMultisampledFramebuffer);for(let i=0;i<n.length;i++){const r=n[i];c.__webglColorRenderbuffer[i]=e.createRenderbuffer(),e.bindRenderbuffer(36161,c.__webglColorRenderbuffer[i]);const a=s.convert(r.format,r.encoding),o=s.convert(r.type),l=getInternalFormat(r.internalFormat,a,o,r.encoding,!0===t.isXRRenderTarget),h=getRenderTargetSamples(t);e.renderbufferStorageMultisample(36161,h,l,t.width,t.height),e.framebufferRenderbuffer(36160,36064+i,36161,c.__webglColorRenderbuffer[i])}e.bindRenderbuffer(36161,null),t.depthBuffer&&(c.__webglDepthRenderbuffer=e.createRenderbuffer(),setupRenderBufferStorage(c.__webglDepthRenderbuffer,t,!0)),i.bindFramebuffer(36160,null)}}if(d){i.bindTexture(34067,h.__webglTexture),setTextureParameters(34067,l,p);for(let e=0;e<6;e++)setupFrameBufferTexture(c.__webglFramebuffer[e],t,l,36064,34069+e);textureNeedsGenerateMipmaps(l,p)&&generateMipmap(34067),i.unbindTexture()}else if(u){const e=t.texture;for(let r=0,s=e.length;r<s;r++){const s=e[r],a=n.get(s);i.bindTexture(3553,a.__webglTexture),setTextureParameters(3553,s,p),setupFrameBufferTexture(c.__webglFramebuffer,t,s,36064+r,3553),textureNeedsGenerateMipmaps(s,p)&&generateMipmap(3553)}i.unbindTexture()}else{let e=3553;(t.isWebGL3DRenderTarget||t.isWebGLArrayRenderTarget)&&(o?e=t.isWebGL3DRenderTarget?32879:35866:console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")),i.bindTexture(e,h.__webglTexture),setTextureParameters(e,l,p),setupFrameBufferTexture(c.__webglFramebuffer,t,l,36064,e),textureNeedsGenerateMipmaps(l,p)&&generateMipmap(e),i.unbindTexture()}t.depthBuffer&&setupDepthRenderbuffer(t)},this.updateRenderTargetMipmap=function updateRenderTargetMipmap(e){const t=isPowerOfTwo$1(e)||o,r=!0===e.isWebGLMultipleRenderTargets?e.texture:[e.texture];for(let s=0,a=r.length;s<a;s++){const a=r[s];if(textureNeedsGenerateMipmaps(a,t)){const t=e.isWebGLCubeRenderTarget?34067:3553,r=n.get(a).__webglTexture;i.bindTexture(t,r),generateMipmap(t),i.unbindTexture()}}},this.updateMultisampleRenderTarget=function updateMultisampleRenderTarget(t){if(o&&t.samples>0&&!1===useMultisampledRTT(t)){const r=t.isWebGLMultipleRenderTargets?t.texture:[t.texture],s=t.width,a=t.height;let o=16384;const l=[],c=t.stencilBuffer?33306:36096,h=n.get(t),d=!0===t.isWebGLMultipleRenderTargets;if(d)for(let t=0;t<r.length;t++)i.bindFramebuffer(36160,h.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(36160,36064+t,36161,null),i.bindFramebuffer(36160,h.__webglFramebuffer),e.framebufferTexture2D(36009,36064+t,3553,null,0);i.bindFramebuffer(36008,h.__webglMultisampledFramebuffer),i.bindFramebuffer(36009,h.__webglFramebuffer);for(let i=0;i<r.length;i++){l.push(36064+i),t.depthBuffer&&l.push(c);const u=void 0!==h.__ignoreDepthValues&&h.__ignoreDepthValues;if(!1===u&&(t.depthBuffer&&(o|=256),t.stencilBuffer&&(o|=1024)),d&&e.framebufferRenderbuffer(36008,36064,36161,h.__webglColorRenderbuffer[i]),!0===u&&(e.invalidateFramebuffer(36008,[c]),e.invalidateFramebuffer(36009,[c])),d){const t=n.get(r[i]).__webglTexture;e.framebufferTexture2D(36009,36064,3553,t,0)}e.blitFramebuffer(0,0,s,a,0,0,s,a,o,9728),p&&e.invalidateFramebuffer(36008,l)}if(i.bindFramebuffer(36008,null),i.bindFramebuffer(36009,null),d)for(let t=0;t<r.length;t++){i.bindFramebuffer(36160,h.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(36160,36064+t,36161,h.__webglColorRenderbuffer[t]);const s=n.get(r[t]).__webglTexture;i.bindFramebuffer(36160,h.__webglFramebuffer),e.framebufferTexture2D(36009,36064+t,3553,s,0)}i.bindFramebuffer(36009,h.__webglMultisampledFramebuffer)}},this.setupDepthRenderbuffer=setupDepthRenderbuffer,this.setupFrameBufferTexture=setupFrameBufferTexture,this.useMultisampledRTT=useMultisampledRTT}function WebGLUtils(e,t,i){const n=i.isWebGL2;return{convert:function convert(i,r=null){let s;if(1009===i)return 5121;if(1017===i)return 32819;if(1018===i)return 32820;if(1010===i)return 5120;if(1011===i)return 5122;if(1012===i)return 5123;if(1013===i)return 5124;if(1014===i)return 5125;if(1015===i)return 5126;if(1016===i)return n?5131:(s=t.get("OES_texture_half_float"),null!==s?s.HALF_FLOAT_OES:null);if(1021===i)return 6406;if(1023===i)return 6408;if(1024===i)return 6409;if(1025===i)return 6410;if(1026===i)return 6402;if(1027===i)return 34041;if(1035===i)return s=t.get("EXT_sRGB"),null!==s?s.SRGB_ALPHA_EXT:null;if(1028===i)return 6403;if(1029===i)return 36244;if(1030===i)return 33319;if(1031===i)return 33320;if(1033===i)return 36249;if(33776===i||33777===i||33778===i||33779===i)if(3001===r){if(s=t.get("WEBGL_compressed_texture_s3tc_srgb"),null===s)return null;if(33776===i)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(33777===i)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(33778===i)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(33779===i)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else{if(s=t.get("WEBGL_compressed_texture_s3tc"),null===s)return null;if(33776===i)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(33777===i)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(33778===i)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(33779===i)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(35840===i||35841===i||35842===i||35843===i){if(s=t.get("WEBGL_compressed_texture_pvrtc"),null===s)return null;if(35840===i)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(35841===i)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(35842===i)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(35843===i)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(36196===i)return s=t.get("WEBGL_compressed_texture_etc1"),null!==s?s.COMPRESSED_RGB_ETC1_WEBGL:null;if(37492===i||37496===i){if(s=t.get("WEBGL_compressed_texture_etc"),null===s)return null;if(37492===i)return 3001===r?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(37496===i)return 3001===r?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}if(37808===i||37809===i||37810===i||37811===i||37812===i||37813===i||37814===i||37815===i||37816===i||37817===i||37818===i||37819===i||37820===i||37821===i){if(s=t.get("WEBGL_compressed_texture_astc"),null===s)return null;if(37808===i)return 3001===r?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(37809===i)return 3001===r?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(37810===i)return 3001===r?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(37811===i)return 3001===r?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(37812===i)return 3001===r?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(37813===i)return 3001===r?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(37814===i)return 3001===r?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(37815===i)return 3001===r?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(37816===i)return 3001===r?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(37817===i)return 3001===r?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(37818===i)return 3001===r?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(37819===i)return 3001===r?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(37820===i)return 3001===r?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(37821===i)return 3001===r?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}if(36492===i){if(s=t.get("EXT_texture_compression_bptc"),null===s)return null;if(36492===i)return 3001===r?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT}if(36283===i||36284===i||36285===i||36286===i){if(s=t.get("EXT_texture_compression_rgtc"),null===s)return null;if(36492===i)return s.COMPRESSED_RED_RGTC1_EXT;if(36284===i)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(36285===i)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(36286===i)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}return 1020===i?n?34042:(s=t.get("WEBGL_depth_texture"),null!==s?s.UNSIGNED_INT_24_8_WEBGL:null):void 0!==e[i]?e[i]:null}}}class ArrayCamera extends PerspectiveCamera{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}}class Group extends Object3D{constructor(){super(),this.isGroup=!0,this.type="Group"}}const At={type:"move"};class WebXRController{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return null===this._hand&&(this._hand=new Group,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return null===this._targetRay&&(this._targetRay=new Group,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new Vector3,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new Vector3),this._targetRay}getGripSpace(){return null===this._grip&&(this._grip=new Group,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new Vector3,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new Vector3),this._grip}dispatchEvent(e){return null!==this._targetRay&&this._targetRay.dispatchEvent(e),null!==this._grip&&this._grip.dispatchEvent(e),null!==this._hand&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const i of e.hand.values())this._getHandJoint(t,i)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),null!==this._targetRay&&(this._targetRay.visible=!1),null!==this._grip&&(this._grip.visible=!1),null!==this._hand&&(this._hand.visible=!1),this}update(e,t,i){let n=null,r=null,s=null;const a=this._targetRay,o=this._grip,l=this._hand;if(e&&"visible-blurred"!==t.session.visibilityState){if(l&&e.hand){s=!0;for(const n of e.hand.values()){const e=t.getJointPose(n,i),r=this._getHandJoint(l,n);null!==e&&(r.matrix.fromArray(e.transform.matrix),r.matrix.decompose(r.position,r.rotation,r.scale),r.jointRadius=e.radius),r.visible=null!==e}const n=l.joints["index-finger-tip"],r=l.joints["thumb-tip"],a=n.position.distanceTo(r.position),o=.02,c=.005;l.inputState.pinching&&a>o+c?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!l.inputState.pinching&&a<=o-c&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else null!==o&&e.gripSpace&&(r=t.getPose(e.gripSpace,i),null!==r&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1));null!==a&&(n=t.getPose(e.targetRaySpace,i),null===n&&null!==r&&(n=r),null!==n&&(a.matrix.fromArray(n.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),n.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(n.linearVelocity)):a.hasLinearVelocity=!1,n.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(n.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(At)))}return null!==a&&(a.visible=null!==n),null!==o&&(o.visible=null!==r),null!==l&&(l.visible=null!==s),this}_getHandJoint(e,t){if(void 0===e.joints[t.jointName]){const i=new Group;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}}class DepthTexture extends Texture{constructor(e,t,i,n,r,s,a,o,l,c){if(1026!==(c=void 0!==c?c:1026)&&1027!==c)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===i&&1026===c&&(i=1014),void 0===i&&1027===c&&(i=1020),super(null,n,r,s,a,o,c,i,l),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=void 0!==a?a:1003,this.minFilter=void 0!==o?o:1003,this.flipY=!1,this.generateMipmaps=!1}}class WebXRManager extends EventDispatcher$1{constructor(e,t){super();const i=this;let n=null,r=1,s=null,a="local-floor",o=1,l=null,c=null,h=null,d=null,u=null,p=null;const m=t.getContextAttributes();let f=null,g=null;const v=[],x=[],y=new Set,b=new Map,_=new PerspectiveCamera;_.layers.enable(1),_.viewport=new Vector4;const S=new PerspectiveCamera;S.layers.enable(2),S.viewport=new Vector4;const M=[_,S],w=new ArrayCamera;w.layers.enable(1),w.layers.enable(2);let T=null,E=null;function onSessionEvent(e){const t=x.indexOf(e.inputSource);if(-1===t)return;const i=v[t];void 0!==i&&i.dispatchEvent({type:e.type,data:e.inputSource})}function onSessionEnd(){n.removeEventListener("select",onSessionEvent),n.removeEventListener("selectstart",onSessionEvent),n.removeEventListener("selectend",onSessionEvent),n.removeEventListener("squeeze",onSessionEvent),n.removeEventListener("squeezestart",onSessionEvent),n.removeEventListener("squeezeend",onSessionEvent),n.removeEventListener("end",onSessionEnd),n.removeEventListener("inputsourceschange",onInputSourcesChange);for(let e=0;e<v.length;e++){const t=x[e];null!==t&&(x[e]=null,v[e].disconnect(t))}T=null,E=null,e.setRenderTarget(f),u=null,d=null,h=null,n=null,g=null,D.stop(),i.isPresenting=!1,i.dispatchEvent({type:"sessionend"})}function onInputSourcesChange(e){for(let t=0;t<e.removed.length;t++){const i=e.removed[t],n=x.indexOf(i);n>=0&&(x[n]=null,v[n].disconnect(i))}for(let t=0;t<e.added.length;t++){const i=e.added[t];let n=x.indexOf(i);if(-1===n){for(let e=0;e<v.length;e++){if(e>=x.length){x.push(i),n=e;break}if(null===x[e]){x[e]=i,n=e;break}}if(-1===n)break}const r=v[n];r&&r.connect(i)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let t=v[e];return void 0===t&&(t=new WebXRController,v[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){let t=v[e];return void 0===t&&(t=new WebXRController,v[e]=t),t.getGripSpace()},this.getHand=function(e){let t=v[e];return void 0===t&&(t=new WebXRController,v[e]=t),t.getHandSpace()},this.setFramebufferScaleFactor=function(e){r=e,!0===i.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(e){a=e,!0===i.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||s},this.setReferenceSpace=function(e){l=e},this.getBaseLayer=function(){return null!==d?d:u},this.getBinding=function(){return h},this.getFrame=function(){return p},this.getSession=function(){return n},this.setSession=async function(c){if(n=c,null!==n){if(f=e.getRenderTarget(),n.addEventListener("select",onSessionEvent),n.addEventListener("selectstart",onSessionEvent),n.addEventListener("selectend",onSessionEvent),n.addEventListener("squeeze",onSessionEvent),n.addEventListener("squeezestart",onSessionEvent),n.addEventListener("squeezeend",onSessionEvent),n.addEventListener("end",onSessionEnd),n.addEventListener("inputsourceschange",onInputSourcesChange),!0!==m.xrCompatible&&await t.makeXRCompatible(),void 0===n.renderState.layers||!1===e.capabilities.isWebGL2){const i={antialias:void 0!==n.renderState.layers||m.antialias,alpha:m.alpha,depth:m.depth,stencil:m.stencil,framebufferScaleFactor:r};u=new XRWebGLLayer(n,t,i),n.updateRenderState({baseLayer:u}),g=new WebGLRenderTarget(u.framebufferWidth,u.framebufferHeight,{format:1023,type:1009,encoding:e.outputEncoding,stencilBuffer:m.stencil})}else{let i=null,s=null,a=null;m.depth&&(a=m.stencil?35056:33190,i=m.stencil?1027:1026,s=m.stencil?1020:1014);const o={colorFormat:32856,depthFormat:a,scaleFactor:r};h=new XRWebGLBinding(n,t),d=h.createProjectionLayer(o),n.updateRenderState({layers:[d]}),g=new WebGLRenderTarget(d.textureWidth,d.textureHeight,{format:1023,type:1009,depthTexture:new DepthTexture(d.textureWidth,d.textureHeight,s,void 0,void 0,void 0,void 0,void 0,void 0,i),stencilBuffer:m.stencil,encoding:e.outputEncoding,samples:m.antialias?4:0});e.properties.get(g).__ignoreDepthValues=d.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(o),l=null,s=await n.requestReferenceSpace(a),D.setContext(n),D.start(),i.isPresenting=!0,i.dispatchEvent({type:"sessionstart"})}};const C=new Vector3,A=new Vector3;function updateCamera(e,t){null===t?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){if(null===n)return;w.near=S.near=_.near=e.near,w.far=S.far=_.far=e.far,T===w.near&&E===w.far||(n.updateRenderState({depthNear:w.near,depthFar:w.far}),T=w.near,E=w.far);const t=e.parent,i=w.cameras;updateCamera(w,t);for(let e=0;e<i.length;e++)updateCamera(i[e],t);w.matrixWorld.decompose(w.position,w.quaternion,w.scale),e.matrix.copy(w.matrix),e.matrix.decompose(e.position,e.quaternion,e.scale);const r=e.children;for(let e=0,t=r.length;e<t;e++)r[e].updateMatrixWorld(!0);2===i.length?function setProjectionFromUnion(e,t,i){C.setFromMatrixPosition(t.matrixWorld),A.setFromMatrixPosition(i.matrixWorld);const n=C.distanceTo(A),r=t.projectionMatrix.elements,s=i.projectionMatrix.elements,a=r[14]/(r[10]-1),o=r[14]/(r[10]+1),l=(r[9]+1)/r[5],c=(r[9]-1)/r[5],h=(r[8]-1)/r[0],d=(s[8]+1)/s[0],u=a*h,p=a*d,m=n/(-h+d),f=m*-h;t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(f),e.translateZ(m),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert();const g=a+m,v=o+m,x=u-f,y=p+(n-f),b=l*o/v*g,_=c*o/v*g;e.projectionMatrix.makePerspective(x,y,b,_,g,v)}(w,_,S):w.projectionMatrix.copy(_.projectionMatrix)},this.getCamera=function(){return w},this.getFoveation=function(){if(null!==d||null!==u)return o},this.setFoveation=function(e){o=e,null!==d&&(d.fixedFoveation=e),null!==u&&void 0!==u.fixedFoveation&&(u.fixedFoveation=e)},this.getPlanes=function(){return y};let P=null;const D=new WebGLAnimation;D.setAnimationLoop((function onAnimationFrame(t,n){if(c=n.getViewerPose(l||s),p=n,null!==c){const t=c.views;null!==u&&(e.setRenderTargetFramebuffer(g,u.framebuffer),e.setRenderTarget(g));let i=!1;t.length!==w.cameras.length&&(w.cameras.length=0,i=!0);for(let n=0;n<t.length;n++){const r=t[n];let s=null;if(null!==u)s=u.getViewport(r);else{const t=h.getViewSubImage(d,r);s=t.viewport,0===n&&(e.setRenderTargetTextures(g,t.colorTexture,d.ignoreDepthValues?void 0:t.depthStencilTexture),e.setRenderTarget(g))}let a=M[n];void 0===a&&(a=new PerspectiveCamera,a.layers.enable(n),a.viewport=new Vector4,M[n]=a),a.matrix.fromArray(r.transform.matrix),a.projectionMatrix.fromArray(r.projectionMatrix),a.viewport.set(s.x,s.y,s.width,s.height),0===n&&w.matrix.copy(a.matrix),!0===i&&w.cameras.push(a)}}for(let e=0;e<v.length;e++){const t=x[e],i=v[e];null!==t&&void 0!==i&&i.update(t,n,l||s)}if(P&&P(t,n),n.detectedPlanes){i.dispatchEvent({type:"planesdetected",data:n.detectedPlanes});let e=null;for(const t of y)n.detectedPlanes.has(t)||(null===e&&(e=[]),e.push(t));if(null!==e)for(const t of e)y.delete(t),b.delete(t),i.dispatchEvent({type:"planeremoved",data:t});for(const e of n.detectedPlanes)if(y.has(e)){const t=b.get(e);e.lastChangedTime>t&&(b.set(e,e.lastChangedTime),i.dispatchEvent({type:"planechanged",data:e}))}else y.add(e),b.set(e,n.lastChangedTime),i.dispatchEvent({type:"planeadded",data:e})}p=null})),this.setAnimationLoop=function(e){P=e},this.dispose=function(){}}}function WebGLMaterials(e,t){function refreshUniformsCommon(i,n){i.opacity.value=n.opacity,n.color&&i.diffuse.value.copy(n.color),n.emissive&&i.emissive.value.copy(n.emissive).multiplyScalar(n.emissiveIntensity),n.map&&(i.map.value=n.map),n.alphaMap&&(i.alphaMap.value=n.alphaMap),n.bumpMap&&(i.bumpMap.value=n.bumpMap,i.bumpScale.value=n.bumpScale,1===n.side&&(i.bumpScale.value*=-1)),n.displacementMap&&(i.displacementMap.value=n.displacementMap,i.displacementScale.value=n.displacementScale,i.displacementBias.value=n.displacementBias),n.emissiveMap&&(i.emissiveMap.value=n.emissiveMap),n.normalMap&&(i.normalMap.value=n.normalMap,i.normalScale.value.copy(n.normalScale),1===n.side&&i.normalScale.value.negate()),n.specularMap&&(i.specularMap.value=n.specularMap),n.alphaTest>0&&(i.alphaTest.value=n.alphaTest);const r=t.get(n).envMap;if(r&&(i.envMap.value=r,i.flipEnvMap.value=r.isCubeTexture&&!1===r.isRenderTargetTexture?-1:1,i.reflectivity.value=n.reflectivity,i.ior.value=n.ior,i.refractionRatio.value=n.refractionRatio),n.lightMap){i.lightMap.value=n.lightMap;const t=!0!==e.physicallyCorrectLights?Math.PI:1;i.lightMapIntensity.value=n.lightMapIntensity*t}let s,a;n.aoMap&&(i.aoMap.value=n.aoMap,i.aoMapIntensity.value=n.aoMapIntensity),n.map?s=n.map:n.specularMap?s=n.specularMap:n.displacementMap?s=n.displacementMap:n.normalMap?s=n.normalMap:n.bumpMap?s=n.bumpMap:n.roughnessMap?s=n.roughnessMap:n.metalnessMap?s=n.metalnessMap:n.alphaMap?s=n.alphaMap:n.emissiveMap?s=n.emissiveMap:n.clearcoatMap?s=n.clearcoatMap:n.clearcoatNormalMap?s=n.clearcoatNormalMap:n.clearcoatRoughnessMap?s=n.clearcoatRoughnessMap:n.iridescenceMap?s=n.iridescenceMap:n.iridescenceThicknessMap?s=n.iridescenceThicknessMap:n.specularIntensityMap?s=n.specularIntensityMap:n.specularColorMap?s=n.specularColorMap:n.transmissionMap?s=n.transmissionMap:n.thicknessMap?s=n.thicknessMap:n.sheenColorMap?s=n.sheenColorMap:n.sheenRoughnessMap&&(s=n.sheenRoughnessMap),void 0!==s&&(s.isWebGLRenderTarget&&(s=s.texture),!0===s.matrixAutoUpdate&&s.updateMatrix(),i.uvTransform.value.copy(s.matrix)),n.aoMap?a=n.aoMap:n.lightMap&&(a=n.lightMap),void 0!==a&&(a.isWebGLRenderTarget&&(a=a.texture),!0===a.matrixAutoUpdate&&a.updateMatrix(),i.uv2Transform.value.copy(a.matrix))}return{refreshFogUniforms:function refreshFogUniforms(t,i){i.color.getRGB(t.fogColor.value,getUnlitUniformColorSpace(e)),i.isFog?(t.fogNear.value=i.near,t.fogFar.value=i.far):i.isFogExp2&&(t.fogDensity.value=i.density)},refreshMaterialUniforms:function refreshMaterialUniforms(e,i,n,r,s){i.isMeshBasicMaterial||i.isMeshLambertMaterial?refreshUniformsCommon(e,i):i.isMeshToonMaterial?(refreshUniformsCommon(e,i),function refreshUniformsToon(e,t){t.gradientMap&&(e.gradientMap.value=t.gradientMap)}(e,i)):i.isMeshPhongMaterial?(refreshUniformsCommon(e,i),function refreshUniformsPhong(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4)}(e,i)):i.isMeshStandardMaterial?(refreshUniformsCommon(e,i),function refreshUniformsStandard(e,i){e.roughness.value=i.roughness,e.metalness.value=i.metalness,i.roughnessMap&&(e.roughnessMap.value=i.roughnessMap);i.metalnessMap&&(e.metalnessMap.value=i.metalnessMap);t.get(i).envMap&&(e.envMapIntensity.value=i.envMapIntensity)}(e,i),i.isMeshPhysicalMaterial&&function refreshUniformsPhysical(e,t,i){e.ior.value=t.ior,t.sheen>0&&(e.sheenColor.value.copy(t.sheenColor).multiplyScalar(t.sheen),e.sheenRoughness.value=t.sheenRoughness,t.sheenColorMap&&(e.sheenColorMap.value=t.sheenColorMap),t.sheenRoughnessMap&&(e.sheenRoughnessMap.value=t.sheenRoughnessMap));t.clearcoat>0&&(e.clearcoat.value=t.clearcoat,e.clearcoatRoughness.value=t.clearcoatRoughness,t.clearcoatMap&&(e.clearcoatMap.value=t.clearcoatMap),t.clearcoatRoughnessMap&&(e.clearcoatRoughnessMap.value=t.clearcoatRoughnessMap),t.clearcoatNormalMap&&(e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale),e.clearcoatNormalMap.value=t.clearcoatNormalMap,1===t.side&&e.clearcoatNormalScale.value.negate()));t.iridescence>0&&(e.iridescence.value=t.iridescence,e.iridescenceIOR.value=t.iridescenceIOR,e.iridescenceThicknessMinimum.value=t.iridescenceThicknessRange[0],e.iridescenceThicknessMaximum.value=t.iridescenceThicknessRange[1],t.iridescenceMap&&(e.iridescenceMap.value=t.iridescenceMap),t.iridescenceThicknessMap&&(e.iridescenceThicknessMap.value=t.iridescenceThicknessMap));t.transmission>0&&(e.transmission.value=t.transmission,e.transmissionSamplerMap.value=i.texture,e.transmissionSamplerSize.value.set(i.width,i.height),t.transmissionMap&&(e.transmissionMap.value=t.transmissionMap),e.thickness.value=t.thickness,t.thicknessMap&&(e.thicknessMap.value=t.thicknessMap),e.attenuationDistance.value=t.attenuationDistance,e.attenuationColor.value.copy(t.attenuationColor));e.specularIntensity.value=t.specularIntensity,e.specularColor.value.copy(t.specularColor),t.specularIntensityMap&&(e.specularIntensityMap.value=t.specularIntensityMap);t.specularColorMap&&(e.specularColorMap.value=t.specularColorMap)}(e,i,s)):i.isMeshMatcapMaterial?(refreshUniformsCommon(e,i),function refreshUniformsMatcap(e,t){t.matcap&&(e.matcap.value=t.matcap)}(e,i)):i.isMeshDepthMaterial?refreshUniformsCommon(e,i):i.isMeshDistanceMaterial?(refreshUniformsCommon(e,i),function refreshUniformsDistance(e,t){e.referencePosition.value.copy(t.referencePosition),e.nearDistance.value=t.nearDistance,e.farDistance.value=t.farDistance}(e,i)):i.isMeshNormalMaterial?refreshUniformsCommon(e,i):i.isLineBasicMaterial?(!function refreshUniformsLine(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity}(e,i),i.isLineDashedMaterial&&function refreshUniformsDash(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}(e,i)):i.isPointsMaterial?function refreshUniformsPoints(e,t,i,n){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.size.value=t.size*i,e.scale.value=.5*n,t.map&&(e.map.value=t.map);t.alphaMap&&(e.alphaMap.value=t.alphaMap);t.alphaTest>0&&(e.alphaTest.value=t.alphaTest);let r;t.map?r=t.map:t.alphaMap&&(r=t.alphaMap);void 0!==r&&(!0===r.matrixAutoUpdate&&r.updateMatrix(),e.uvTransform.value.copy(r.matrix))}(e,i,n,r):i.isSpriteMaterial?function refreshUniformsSprites(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.rotation.value=t.rotation,t.map&&(e.map.value=t.map);t.alphaMap&&(e.alphaMap.value=t.alphaMap);t.alphaTest>0&&(e.alphaTest.value=t.alphaTest);let i;t.map?i=t.map:t.alphaMap&&(i=t.alphaMap);void 0!==i&&(!0===i.matrixAutoUpdate&&i.updateMatrix(),e.uvTransform.value.copy(i.matrix))}(e,i):i.isShadowMaterial?(e.color.value.copy(i.color),e.opacity.value=i.opacity):i.isShaderMaterial&&(i.uniformsNeedUpdate=!1)}}}function WebGLUniformsGroups(e,t,i,n){let r={},s={},a=[];const o=i.isWebGL2?e.getParameter(35375):0;function hasUniformChanged(e,t,i){const n=e.value;if(void 0===i[t]){if("number"==typeof n)i[t]=n;else{const e=Array.isArray(n)?n:[n],r=[];for(let t=0;t<e.length;t++)r.push(e[t].clone());i[t]=r}return!0}if("number"==typeof n){if(i[t]!==n)return i[t]=n,!0}else{const e=Array.isArray(i[t])?i[t]:[i[t]],r=Array.isArray(n)?n:[n];for(let t=0;t<e.length;t++){const i=e[t];if(!1===i.equals(r[t]))return i.copy(r[t]),!0}}return!1}function getUniformSize(e){const t={boundary:0,storage:0};return"number"==typeof e?(t.boundary=4,t.storage=4):e.isVector2?(t.boundary=8,t.storage=8):e.isVector3||e.isColor?(t.boundary=16,t.storage=12):e.isVector4?(t.boundary=16,t.storage=16):e.isMatrix3?(t.boundary=48,t.storage=48):e.isMatrix4?(t.boundary=64,t.storage=64):e.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",e),t}function onUniformsGroupsDispose(t){const i=t.target;i.removeEventListener("dispose",onUniformsGroupsDispose);const n=a.indexOf(i.__bindingPointIndex);a.splice(n,1),e.deleteBuffer(r[i.id]),delete r[i.id],delete s[i.id]}return{bind:function bind(e,t){const i=t.program;n.uniformBlockBinding(e,i)},update:function update(i,l){let c=r[i.id];void 0===c&&(!function prepareUniformsGroup(e){const t=e.uniforms;let i=0;const n=16;let r=0;for(let e=0,s=t.length;e<s;e++){const s=t[e],a={boundary:0,storage:0},o=Array.isArray(s.value)?s.value:[s.value];for(let e=0,t=o.length;e<t;e++){const t=getUniformSize(o[e]);a.boundary+=t.boundary,a.storage+=t.storage}if(s.__data=new Float32Array(a.storage/Float32Array.BYTES_PER_ELEMENT),s.__offset=i,e>0){r=i%n;const e=n-r;0!==r&&e-a.boundary<0&&(i+=n-r,s.__offset=i)}i+=a.storage}r=i%n,r>0&&(i+=n-r);return e.__size=i,e.__cache={},this}(i),c=function createBuffer(t){const i=function allocateBindingPointIndex(){for(let e=0;e<o;e++)if(-1===a.indexOf(e))return a.push(e),e;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}();t.__bindingPointIndex=i;const n=e.createBuffer(),r=t.__size,s=t.usage;return e.bindBuffer(35345,n),e.bufferData(35345,r,s),e.bindBuffer(35345,null),e.bindBufferBase(35345,i,n),n}(i),r[i.id]=c,i.addEventListener("dispose",onUniformsGroupsDispose));const h=l.program;n.updateUBOMapping(i,h);const d=t.render.frame;s[i.id]!==d&&(!function updateBufferData(t){const i=r[t.id],n=t.uniforms,s=t.__cache;e.bindBuffer(35345,i);for(let t=0,i=n.length;t<i;t++){const i=n[t];if(!0===hasUniformChanged(i,t,s)){const t=i.__offset,n=Array.isArray(i.value)?i.value:[i.value];let r=0;for(let s=0;s<n.length;s++){const a=n[s],o=getUniformSize(a);"number"==typeof a?(i.__data[0]=a,e.bufferSubData(35345,t+r,i.__data)):a.isMatrix3?(i.__data[0]=a.elements[0],i.__data[1]=a.elements[1],i.__data[2]=a.elements[2],i.__data[3]=a.elements[0],i.__data[4]=a.elements[3],i.__data[5]=a.elements[4],i.__data[6]=a.elements[5],i.__data[7]=a.elements[0],i.__data[8]=a.elements[6],i.__data[9]=a.elements[7],i.__data[10]=a.elements[8],i.__data[11]=a.elements[0]):(a.toArray(i.__data,r),r+=o.storage/Float32Array.BYTES_PER_ELEMENT)}e.bufferSubData(35345,t,i.__data)}}e.bindBuffer(35345,null)}(i),s[i.id]=d)},dispose:function dispose(){for(const t in r)e.deleteBuffer(r[t]);a=[],r={},s={}}}}function WebGLRenderer(e={}){this.isWebGLRenderer=!0;const t=void 0!==e.canvas?e.canvas:function createCanvasElement(){const e=createElementNS("canvas");return e.style.display="block",e}(),i=void 0!==e.context?e.context:null,n=void 0===e.depth||e.depth,r=void 0===e.stencil||e.stencil,s=void 0!==e.antialias&&e.antialias,a=void 0===e.premultipliedAlpha||e.premultipliedAlpha,o=void 0!==e.preserveDrawingBuffer&&e.preserveDrawingBuffer,l=void 0!==e.powerPreference?e.powerPreference:"default",c=void 0!==e.failIfMajorPerformanceCaveat&&e.failIfMajorPerformanceCaveat;let h;h=null!==i?i.getContextAttributes().alpha:void 0!==e.alpha&&e.alpha;let d=null,u=null;const p=[],m=[];this.domElement=t,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=3e3,this.physicallyCorrectLights=!1,this.toneMapping=0,this.toneMappingExposure=1;const f=this;let g=!1,v=0,x=0,y=null,b=-1,_=null;const S=new Vector4,M=new Vector4;let w=null,T=t.width,E=t.height,C=1,A=null,P=null;const D=new Vector4(0,0,T,E),L=new Vector4(0,0,T,E);let I=!1;const R=new Frustum;let O=!1,N=!1,z=null;const B=new Matrix4,U=new Vector2,V=new Vector3,k={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function getTargetPixelRatio(){return null===y?C:1}let G,H,W,j,X,q,Y,Z,Q,K,J,$,ee,te,ie,ne,re,se,ae,oe,le,ce,he,de,ue=i;function getContext(e,i){for(let n=0;n<e.length;n++){const r=e[n],s=t.getContext(r,i);if(null!==s)return s}return null}try{const e={alpha:!0,depth:n,stencil:r,antialias:s,premultipliedAlpha:a,preserveDrawingBuffer:o,powerPreference:l,failIfMajorPerformanceCaveat:c};if("setAttribute"in t&&t.setAttribute("data-engine","three.js r149"),t.addEventListener("webglcontextlost",onContextLost,!1),t.addEventListener("webglcontextrestored",onContextRestore,!1),t.addEventListener("webglcontextcreationerror",onContextCreationError,!1),null===ue){const t=["webgl2","webgl","experimental-webgl"];if(!0===f.isWebGL1Renderer&&t.shift(),ue=getContext(t,e),null===ue)throw getContext(t)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}void 0===ue.getShaderPrecisionFormat&&(ue.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(e){throw console.error("THREE.WebGLRenderer: "+e.message),e}function initGLContext(){G=new WebGLExtensions(ue),H=new WebGLCapabilities(ue,G,e),G.init(H),ce=new WebGLUtils(ue,G,H),W=new WebGLState(ue,G,H),j=new WebGLInfo,X=new WebGLProperties,q=new WebGLTextures(ue,G,W,X,H,ce,j),Y=new WebGLCubeMaps(f),Z=new WebGLCubeUVMaps(f),Q=new WebGLAttributes(ue,H),he=new WebGLBindingStates(ue,G,Q,H),K=new WebGLGeometries(ue,Q,j,he),J=new WebGLObjects(ue,K,Q,j),ae=new WebGLMorphtargets(ue,H,q),ne=new WebGLClipping(X),$=new WebGLPrograms(f,Y,Z,G,H,he,ne),ee=new WebGLMaterials(f,X),te=new WebGLRenderLists,ie=new WebGLRenderStates(G,H),se=new WebGLBackground(f,Y,Z,W,J,h,a),re=new WebGLShadowMap(f,J,H),de=new WebGLUniformsGroups(ue,j,H,W),oe=new WebGLBufferRenderer(ue,G,j,H),le=new WebGLIndexedBufferRenderer(ue,G,j,H),j.programs=$.programs,f.capabilities=H,f.extensions=G,f.properties=X,f.renderLists=te,f.shadowMap=re,f.state=W,f.info=j}initGLContext();const pe=new WebXRManager(f,ue);function onContextLost(e){e.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),g=!0}function onContextRestore(){console.log("THREE.WebGLRenderer: Context Restored."),g=!1;const e=j.autoReset,t=re.enabled,i=re.autoUpdate,n=re.needsUpdate,r=re.type;initGLContext(),j.autoReset=e,re.enabled=t,re.autoUpdate=i,re.needsUpdate=n,re.type=r}function onContextCreationError(e){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",e.statusMessage)}function onMaterialDispose(e){const t=e.target;t.removeEventListener("dispose",onMaterialDispose),function deallocateMaterial(e){(function releaseMaterialProgramReferences(e){const t=X.get(e).programs;void 0!==t&&(t.forEach((function(e){$.releaseProgram(e)})),e.isShaderMaterial&&$.releaseShaderCache(e))})(e),X.remove(e)}(t)}this.xr=pe,this.getContext=function(){return ue},this.getContextAttributes=function(){return ue.getContextAttributes()},this.forceContextLoss=function(){const e=G.get("WEBGL_lose_context");e&&e.loseContext()},this.forceContextRestore=function(){const e=G.get("WEBGL_lose_context");e&&e.restoreContext()},this.getPixelRatio=function(){return C},this.setPixelRatio=function(e){void 0!==e&&(C=e,this.setSize(T,E,!1))},this.getSize=function(e){return e.set(T,E)},this.setSize=function(e,i,n){pe.isPresenting?console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."):(T=e,E=i,t.width=Math.floor(e*C),t.height=Math.floor(i*C),!1!==n&&(t.style.width=e+"px",t.style.height=i+"px"),this.setViewport(0,0,e,i))},this.getDrawingBufferSize=function(e){return e.set(T*C,E*C).floor()},this.setDrawingBufferSize=function(e,i,n){T=e,E=i,C=n,t.width=Math.floor(e*n),t.height=Math.floor(i*n),this.setViewport(0,0,e,i)},this.getCurrentViewport=function(e){return e.copy(S)},this.getViewport=function(e){return e.copy(D)},this.setViewport=function(e,t,i,n){e.isVector4?D.set(e.x,e.y,e.z,e.w):D.set(e,t,i,n),W.viewport(S.copy(D).multiplyScalar(C).floor())},this.getScissor=function(e){return e.copy(L)},this.setScissor=function(e,t,i,n){e.isVector4?L.set(e.x,e.y,e.z,e.w):L.set(e,t,i,n),W.scissor(M.copy(L).multiplyScalar(C).floor())},this.getScissorTest=function(){return I},this.setScissorTest=function(e){W.setScissorTest(I=e)},this.setOpaqueSort=function(e){A=e},this.setTransparentSort=function(e){P=e},this.getClearColor=function(e){return e.copy(se.getClearColor())},this.setClearColor=function(){se.setClearColor.apply(se,arguments)},this.getClearAlpha=function(){return se.getClearAlpha()},this.setClearAlpha=function(){se.setClearAlpha.apply(se,arguments)},this.clear=function(e=!0,t=!0,i=!0){let n=0;e&&(n|=16384),t&&(n|=256),i&&(n|=1024),ue.clear(n)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",onContextLost,!1),t.removeEventListener("webglcontextrestored",onContextRestore,!1),t.removeEventListener("webglcontextcreationerror",onContextCreationError,!1),te.dispose(),ie.dispose(),X.dispose(),Y.dispose(),Z.dispose(),J.dispose(),he.dispose(),de.dispose(),$.dispose(),pe.dispose(),pe.removeEventListener("sessionstart",onXRSessionStart),pe.removeEventListener("sessionend",onXRSessionEnd),z&&(z.dispose(),z=null),fe.stop()},this.renderBufferDirect=function(e,t,i,n,r,s){null===t&&(t=k);const a=r.isMesh&&r.matrixWorld.determinant()<0,o=function setProgram(e,t,i,n,r){!0!==t.isScene&&(t=k);q.resetTextureUnits();const s=t.fog,a=n.isMeshStandardMaterial?t.environment:null,o=null===y?f.outputEncoding:!0===y.isXRRenderTarget?y.texture.encoding:3e3,l=(n.isMeshStandardMaterial?Z:Y).get(n.envMap||a),c=!0===n.vertexColors&&!!i.attributes.color&&4===i.attributes.color.itemSize,h=!!n.normalMap&&!!i.attributes.tangent,d=!!i.morphAttributes.position,p=!!i.morphAttributes.normal,m=!!i.morphAttributes.color,g=n.toneMapped?f.toneMapping:0,v=i.morphAttributes.position||i.morphAttributes.normal||i.morphAttributes.color,x=void 0!==v?v.length:0,S=X.get(n),M=u.state.lights;if(!0===O&&(!0===N||e!==_)){const t=e===_&&n.id===b;ne.setState(n,e,t)}let w=!1;n.version===S.__version?S.needsLights&&S.lightsStateVersion!==M.state.version||S.outputEncoding!==o||r.isInstancedMesh&&!1===S.instancing?w=!0:r.isInstancedMesh||!0!==S.instancing?r.isSkinnedMesh&&!1===S.skinning?w=!0:r.isSkinnedMesh||!0!==S.skinning?S.envMap!==l||!0===n.fog&&S.fog!==s?w=!0:void 0===S.numClippingPlanes||S.numClippingPlanes===ne.numPlanes&&S.numIntersection===ne.numIntersection?(S.vertexAlphas!==c||S.vertexTangents!==h||S.morphTargets!==d||S.morphNormals!==p||S.morphColors!==m||S.toneMapping!==g||!0===H.isWebGL2&&S.morphTargetsCount!==x)&&(w=!0):w=!0:w=!0:w=!0:(w=!0,S.__version=n.version);let T=S.currentProgram;!0===w&&(T=getProgram(n,t,r));let A=!1,P=!1,D=!1;const L=T.getUniforms(),I=S.uniforms;W.useProgram(T.program)&&(A=!0,P=!0,D=!0);n.id!==b&&(b=n.id,P=!0);if(A||_!==e){if(L.setValue(ue,"projectionMatrix",e.projectionMatrix),H.logarithmicDepthBuffer&&L.setValue(ue,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),_!==e&&(_=e,P=!0,D=!0),n.isShaderMaterial||n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshStandardMaterial||n.envMap){const t=L.map.cameraPosition;void 0!==t&&t.setValue(ue,V.setFromMatrixPosition(e.matrixWorld))}(n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshLambertMaterial||n.isMeshBasicMaterial||n.isMeshStandardMaterial||n.isShaderMaterial)&&L.setValue(ue,"isOrthographic",!0===e.isOrthographicCamera),(n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshLambertMaterial||n.isMeshBasicMaterial||n.isMeshStandardMaterial||n.isShaderMaterial||n.isShadowMaterial||r.isSkinnedMesh)&&L.setValue(ue,"viewMatrix",e.matrixWorldInverse)}if(r.isSkinnedMesh){L.setOptional(ue,r,"bindMatrix"),L.setOptional(ue,r,"bindMatrixInverse");const e=r.skeleton;e&&(H.floatVertexTextures?(null===e.boneTexture&&e.computeBoneTexture(),L.setValue(ue,"boneTexture",e.boneTexture,q),L.setValue(ue,"boneTextureSize",e.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}const R=i.morphAttributes;(void 0!==R.position||void 0!==R.normal||void 0!==R.color&&!0===H.isWebGL2)&&ae.update(r,i,n,T);(P||S.receiveShadow!==r.receiveShadow)&&(S.receiveShadow=r.receiveShadow,L.setValue(ue,"receiveShadow",r.receiveShadow));n.isMeshGouraudMaterial&&null!==n.envMap&&(I.envMap.value=l,I.flipEnvMap.value=l.isCubeTexture&&!1===l.isRenderTargetTexture?-1:1);P&&(L.setValue(ue,"toneMappingExposure",f.toneMappingExposure),S.needsLights&&function markUniformsLightsNeedsUpdate(e,t){e.ambientLightColor.needsUpdate=t,e.lightProbe.needsUpdate=t,e.directionalLights.needsUpdate=t,e.directionalLightShadows.needsUpdate=t,e.pointLights.needsUpdate=t,e.pointLightShadows.needsUpdate=t,e.spotLights.needsUpdate=t,e.spotLightShadows.needsUpdate=t,e.rectAreaLights.needsUpdate=t,e.hemisphereLights.needsUpdate=t}(I,D),s&&!0===n.fog&&ee.refreshFogUniforms(I,s),ee.refreshMaterialUniforms(I,n,C,E,z),WebGLUniforms.upload(ue,S.uniformsList,I,q));n.isShaderMaterial&&!0===n.uniformsNeedUpdate&&(WebGLUniforms.upload(ue,S.uniformsList,I,q),n.uniformsNeedUpdate=!1);n.isSpriteMaterial&&L.setValue(ue,"center",r.center);if(L.setValue(ue,"modelViewMatrix",r.modelViewMatrix),L.setValue(ue,"normalMatrix",r.normalMatrix),L.setValue(ue,"modelMatrix",r.matrixWorld),n.isShaderMaterial||n.isRawShaderMaterial){const e=n.uniformsGroups;for(let t=0,i=e.length;t<i;t++)if(H.isWebGL2){const i=e[t];de.update(i,T),de.bind(i,T)}else console.warn("THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.")}return T}(e,t,i,n,r);W.setMaterial(n,a);let l=i.index,c=1;!0===n.wireframe&&(l=K.getWireframeAttribute(i),c=2);const h=i.drawRange,d=i.attributes.position;let p=h.start*c,m=(h.start+h.count)*c;null!==s&&(p=Math.max(p,s.start*c),m=Math.min(m,(s.start+s.count)*c)),null!==l?(p=Math.max(p,0),m=Math.min(m,l.count)):null!=d&&(p=Math.max(p,0),m=Math.min(m,d.count));const g=m-p;if(g<0||g===1/0)return;let v;he.setup(r,n,o,i,l);let x=oe;if(null!==l&&(v=Q.get(l),x=le,x.setIndex(v)),r.isMesh)!0===n.wireframe?(W.setLineWidth(n.wireframeLinewidth*getTargetPixelRatio()),x.setMode(1)):x.setMode(4);else if(r.isLine){let e=n.linewidth;void 0===e&&(e=1),W.setLineWidth(e*getTargetPixelRatio()),r.isLineSegments?x.setMode(1):r.isLineLoop?x.setMode(2):x.setMode(3)}else r.isPoints?x.setMode(0):r.isSprite&&x.setMode(4);if(r.isInstancedMesh)x.renderInstances(p,g,r.count);else if(i.isInstancedBufferGeometry){const e=void 0!==i._maxInstanceCount?i._maxInstanceCount:1/0,t=Math.min(i.instanceCount,e);x.renderInstances(p,g,t)}else x.render(p,g)},this.compile=function(e,t){function prepare(e,t,i){!0===e.transparent&&2===e.side&&!1===e.forceSinglePass?(e.side=1,e.needsUpdate=!0,getProgram(e,t,i),e.side=0,e.needsUpdate=!0,getProgram(e,t,i),e.side=2):getProgram(e,t,i)}u=ie.get(e),u.init(),m.push(u),e.traverseVisible((function(e){e.isLight&&e.layers.test(t.layers)&&(u.pushLight(e),e.castShadow&&u.pushShadow(e))})),u.setupLights(f.physicallyCorrectLights),e.traverse((function(t){const i=t.material;if(i)if(Array.isArray(i))for(let n=0;n<i.length;n++){prepare(i[n],e,t)}else prepare(i,e,t)})),m.pop(),u=null};let me=null;function onXRSessionStart(){fe.stop()}function onXRSessionEnd(){fe.start()}const fe=new WebGLAnimation;function projectObject(e,t,i,n){if(!1===e.visible)return;if(e.layers.test(t.layers))if(e.isGroup)i=e.renderOrder;else if(e.isLOD)!0===e.autoUpdate&&e.update(t);else if(e.isLight)u.pushLight(e),e.castShadow&&u.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||R.intersectsSprite(e)){n&&V.setFromMatrixPosition(e.matrixWorld).applyMatrix4(B);const t=J.update(e),r=e.material;r.visible&&d.push(e,t,r,i,V.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(e.isSkinnedMesh&&e.skeleton.frame!==j.render.frame&&(e.skeleton.update(),e.skeleton.frame=j.render.frame),!e.frustumCulled||R.intersectsObject(e))){n&&V.setFromMatrixPosition(e.matrixWorld).applyMatrix4(B);const t=J.update(e),r=e.material;if(Array.isArray(r)){const n=t.groups;for(let s=0,a=n.length;s<a;s++){const a=n[s],o=r[a.materialIndex];o&&o.visible&&d.push(e,t,o,i,V.z,a)}}else r.visible&&d.push(e,t,r,i,V.z,null)}const r=e.children;for(let e=0,s=r.length;e<s;e++)projectObject(r[e],t,i,n)}function renderScene(e,t,i,n){const r=e.opaque,a=e.transmissive,o=e.transparent;u.setupLightsView(i),!0===O&&ne.setGlobalState(f.clippingPlanes,i),a.length>0&&function renderTransmissionPass(e,t,i){const n=H.isWebGL2;null===z&&(z=new WebGLRenderTarget(1,1,{generateMipmaps:!0,type:G.has("EXT_color_buffer_half_float")?1016:1009,minFilter:1008,samples:n&&!0===s?4:0}));f.getDrawingBufferSize(U),n?z.setSize(U.x,U.y):z.setSize(floorPowerOfTwo(U.x),floorPowerOfTwo(U.y));const r=f.getRenderTarget();f.setRenderTarget(z),f.clear();const a=f.toneMapping;f.toneMapping=0,renderObjects(e,t,i),f.toneMapping=a,q.updateMultisampleRenderTarget(z),q.updateRenderTargetMipmap(z),f.setRenderTarget(r)}(r,t,i),n&&W.viewport(S.copy(n)),r.length>0&&renderObjects(r,t,i),a.length>0&&renderObjects(a,t,i),o.length>0&&renderObjects(o,t,i),W.buffers.depth.setTest(!0),W.buffers.depth.setMask(!0),W.buffers.color.setMask(!0),W.setPolygonOffset(!1)}function renderObjects(e,t,i){const n=!0===t.isScene?t.overrideMaterial:null;for(let r=0,s=e.length;r<s;r++){const s=e[r],a=s.object,o=s.geometry,l=null===n?s.material:n,c=s.group;a.layers.test(i.layers)&&renderObject(a,t,i,o,l,c)}}function renderObject(e,t,i,n,r,s){e.onBeforeRender(f,t,i,n,r,s),e.modelViewMatrix.multiplyMatrices(i.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix),r.onBeforeRender(f,t,i,n,e,s),!0===r.transparent&&2===r.side&&!1===r.forceSinglePass?(r.side=1,r.needsUpdate=!0,f.renderBufferDirect(i,t,n,r,e,s),r.side=0,r.needsUpdate=!0,f.renderBufferDirect(i,t,n,r,e,s),r.side=2):f.renderBufferDirect(i,t,n,r,e,s),e.onAfterRender(f,t,i,n,r,s)}function getProgram(e,t,i){!0!==t.isScene&&(t=k);const n=X.get(e),r=u.state.lights,s=u.state.shadowsArray,a=r.state.version,o=$.getParameters(e,r.state,s,t,i),l=$.getProgramCacheKey(o);let c=n.programs;n.environment=e.isMeshStandardMaterial?t.environment:null,n.fog=t.fog,n.envMap=(e.isMeshStandardMaterial?Z:Y).get(e.envMap||n.environment),void 0===c&&(e.addEventListener("dispose",onMaterialDispose),c=new Map,n.programs=c);let h=c.get(l);if(void 0!==h){if(n.currentProgram===h&&n.lightsStateVersion===a)return updateCommonMaterialProperties(e,o),h}else o.uniforms=$.getUniforms(e),e.onBuild(i,o,f),e.onBeforeCompile(o,f),h=$.acquireProgram(o,l),c.set(l,h),n.uniforms=o.uniforms;const d=n.uniforms;(e.isShaderMaterial||e.isRawShaderMaterial)&&!0!==e.clipping||(d.clippingPlanes=ne.uniform),updateCommonMaterialProperties(e,o),n.needsLights=function materialNeedsLights(e){return e.isMeshLambertMaterial||e.isMeshToonMaterial||e.isMeshPhongMaterial||e.isMeshStandardMaterial||e.isShadowMaterial||e.isShaderMaterial&&!0===e.lights}(e),n.lightsStateVersion=a,n.needsLights&&(d.ambientLightColor.value=r.state.ambient,d.lightProbe.value=r.state.probe,d.directionalLights.value=r.state.directional,d.directionalLightShadows.value=r.state.directionalShadow,d.spotLights.value=r.state.spot,d.spotLightShadows.value=r.state.spotShadow,d.rectAreaLights.value=r.state.rectArea,d.ltc_1.value=r.state.rectAreaLTC1,d.ltc_2.value=r.state.rectAreaLTC2,d.pointLights.value=r.state.point,d.pointLightShadows.value=r.state.pointShadow,d.hemisphereLights.value=r.state.hemi,d.directionalShadowMap.value=r.state.directionalShadowMap,d.directionalShadowMatrix.value=r.state.directionalShadowMatrix,d.spotShadowMap.value=r.state.spotShadowMap,d.spotLightMatrix.value=r.state.spotLightMatrix,d.spotLightMap.value=r.state.spotLightMap,d.pointShadowMap.value=r.state.pointShadowMap,d.pointShadowMatrix.value=r.state.pointShadowMatrix);const p=h.getUniforms(),m=WebGLUniforms.seqWithValue(p.seq,d);return n.currentProgram=h,n.uniformsList=m,h}function updateCommonMaterialProperties(e,t){const i=X.get(e);i.outputEncoding=t.outputEncoding,i.instancing=t.instancing,i.skinning=t.skinning,i.morphTargets=t.morphTargets,i.morphNormals=t.morphNormals,i.morphColors=t.morphColors,i.morphTargetsCount=t.morphTargetsCount,i.numClippingPlanes=t.numClippingPlanes,i.numIntersection=t.numClipIntersection,i.vertexAlphas=t.vertexAlphas,i.vertexTangents=t.vertexTangents,i.toneMapping=t.toneMapping}fe.setAnimationLoop((function onAnimationFrame(e){me&&me(e)})),"undefined"!=typeof self&&fe.setContext(self),this.setAnimationLoop=function(e){me=e,pe.setAnimationLoop(e),null===e?fe.stop():fe.start()},pe.addEventListener("sessionstart",onXRSessionStart),pe.addEventListener("sessionend",onXRSessionEnd),this.render=function(e,t){if(void 0!==t&&!0!==t.isCamera)return void console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");if(!0===g)return;!0===e.matrixWorldAutoUpdate&&e.updateMatrixWorld(),null===t.parent&&!0===t.matrixWorldAutoUpdate&&t.updateMatrixWorld(),!0===pe.enabled&&!0===pe.isPresenting&&(!0===pe.cameraAutoUpdate&&pe.updateCamera(t),t=pe.getCamera()),!0===e.isScene&&e.onBeforeRender(f,e,t,y),u=ie.get(e,m.length),u.init(),m.push(u),B.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),R.setFromProjectionMatrix(B),N=this.localClippingEnabled,O=ne.init(this.clippingPlanes,N),d=te.get(e,p.length),d.init(),p.push(d),projectObject(e,t,0,f.sortObjects),d.finish(),!0===f.sortObjects&&d.sort(A,P),!0===O&&ne.beginShadows();const i=u.state.shadowsArray;if(re.render(i,e,t),!0===O&&ne.endShadows(),!0===this.info.autoReset&&this.info.reset(),se.render(d,e),u.setupLights(f.physicallyCorrectLights),t.isArrayCamera){const i=t.cameras;for(let t=0,n=i.length;t<n;t++){const n=i[t];renderScene(d,e,n,n.viewport)}}else renderScene(d,e,t);null!==y&&(q.updateMultisampleRenderTarget(y),q.updateRenderTargetMipmap(y)),!0===e.isScene&&e.onAfterRender(f,e,t),he.resetDefaultState(),b=-1,_=null,m.pop(),u=m.length>0?m[m.length-1]:null,p.pop(),d=p.length>0?p[p.length-1]:null},this.getActiveCubeFace=function(){return v},this.getActiveMipmapLevel=function(){return x},this.getRenderTarget=function(){return y},this.setRenderTargetTextures=function(e,t,i){X.get(e.texture).__webglTexture=t,X.get(e.depthTexture).__webglTexture=i;const n=X.get(e);n.__hasExternalTextures=!0,n.__hasExternalTextures&&(n.__autoAllocateDepthBuffer=void 0===i,n.__autoAllocateDepthBuffer||!0===G.has("WEBGL_multisampled_render_to_texture")&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),n.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(e,t){const i=X.get(e);i.__webglFramebuffer=t,i.__useDefaultFramebuffer=void 0===t},this.setRenderTarget=function(e,t=0,i=0){y=e,v=t,x=i;let n=!0,r=null,s=!1,a=!1;if(e){const i=X.get(e);void 0!==i.__useDefaultFramebuffer?(W.bindFramebuffer(36160,null),n=!1):void 0===i.__webglFramebuffer?q.setupRenderTarget(e):i.__hasExternalTextures&&q.rebindTextures(e,X.get(e.texture).__webglTexture,X.get(e.depthTexture).__webglTexture);const o=e.texture;(o.isData3DTexture||o.isDataArrayTexture||o.isCompressedArrayTexture)&&(a=!0);const l=X.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(r=l[t],s=!0):r=H.isWebGL2&&e.samples>0&&!1===q.useMultisampledRTT(e)?X.get(e).__webglMultisampledFramebuffer:l,S.copy(e.viewport),M.copy(e.scissor),w=e.scissorTest}else S.copy(D).multiplyScalar(C).floor(),M.copy(L).multiplyScalar(C).floor(),w=I;if(W.bindFramebuffer(36160,r)&&H.drawBuffers&&n&&W.drawBuffers(e,r),W.viewport(S),W.scissor(M),W.setScissorTest(w),s){const n=X.get(e.texture);ue.framebufferTexture2D(36160,36064,34069+t,n.__webglTexture,i)}else if(a){const n=X.get(e.texture),r=t||0;ue.framebufferTextureLayer(36160,36064,n.__webglTexture,i||0,r)}b=-1},this.readRenderTargetPixels=function(e,t,i,n,r,s,a){if(!e||!e.isWebGLRenderTarget)return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let o=X.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==a&&(o=o[a]),o){W.bindFramebuffer(36160,o);try{const a=e.texture,o=a.format,l=a.type;if(1023!==o&&ce.convert(o)!==ue.getParameter(35739))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");const c=1016===l&&(G.has("EXT_color_buffer_half_float")||H.isWebGL2&&G.has("EXT_color_buffer_float"));if(!(1009===l||ce.convert(l)===ue.getParameter(35738)||1015===l&&(H.isWebGL2||G.has("OES_texture_float")||G.has("WEBGL_color_buffer_float"))||c))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");t>=0&&t<=e.width-n&&i>=0&&i<=e.height-r&&ue.readPixels(t,i,n,r,ce.convert(o),ce.convert(l),s)}finally{const e=null!==y?X.get(y).__webglFramebuffer:null;W.bindFramebuffer(36160,e)}}},this.copyFramebufferToTexture=function(e,t,i=0){const n=Math.pow(2,-i),r=Math.floor(t.image.width*n),s=Math.floor(t.image.height*n);q.setTexture2D(t,0),ue.copyTexSubImage2D(3553,i,0,0,e.x,e.y,r,s),W.unbindTexture()},this.copyTextureToTexture=function(e,t,i,n=0){const r=t.image.width,s=t.image.height,a=ce.convert(i.format),o=ce.convert(i.type);q.setTexture2D(i,0),ue.pixelStorei(37440,i.flipY),ue.pixelStorei(37441,i.premultiplyAlpha),ue.pixelStorei(3317,i.unpackAlignment),t.isDataTexture?ue.texSubImage2D(3553,n,e.x,e.y,r,s,a,o,t.image.data):t.isCompressedTexture?ue.compressedTexSubImage2D(3553,n,e.x,e.y,t.mipmaps[0].width,t.mipmaps[0].height,a,t.mipmaps[0].data):ue.texSubImage2D(3553,n,e.x,e.y,a,o,t.image),0===n&&i.generateMipmaps&&ue.generateMipmap(3553),W.unbindTexture()},this.copyTextureToTexture3D=function(e,t,i,n,r=0){if(f.isWebGL1Renderer)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");const s=e.max.x-e.min.x+1,a=e.max.y-e.min.y+1,o=e.max.z-e.min.z+1,l=ce.convert(n.format),c=ce.convert(n.type);let h;if(n.isData3DTexture)q.setTexture3D(n,0),h=32879;else{if(!n.isDataArrayTexture)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");q.setTexture2DArray(n,0),h=35866}ue.pixelStorei(37440,n.flipY),ue.pixelStorei(37441,n.premultiplyAlpha),ue.pixelStorei(3317,n.unpackAlignment);const d=ue.getParameter(3314),u=ue.getParameter(32878),p=ue.getParameter(3316),m=ue.getParameter(3315),g=ue.getParameter(32877),v=i.isCompressedTexture?i.mipmaps[0]:i.image;ue.pixelStorei(3314,v.width),ue.pixelStorei(32878,v.height),ue.pixelStorei(3316,e.min.x),ue.pixelStorei(3315,e.min.y),ue.pixelStorei(32877,e.min.z),i.isDataTexture||i.isData3DTexture?ue.texSubImage3D(h,r,t.x,t.y,t.z,s,a,o,l,c,v.data):i.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),ue.compressedTexSubImage3D(h,r,t.x,t.y,t.z,s,a,o,l,v.data)):ue.texSubImage3D(h,r,t.x,t.y,t.z,s,a,o,l,c,v),ue.pixelStorei(3314,d),ue.pixelStorei(32878,u),ue.pixelStorei(3316,p),ue.pixelStorei(3315,m),ue.pixelStorei(32877,g),0===r&&n.generateMipmaps&&ue.generateMipmap(h),W.unbindTexture()},this.initTexture=function(e){e.isCubeTexture?q.setTextureCube(e,0):e.isData3DTexture?q.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?q.setTexture2DArray(e,0):q.setTexture2D(e,0),W.unbindTexture()},this.resetState=function(){v=0,x=0,y=null,W.reset(),he.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}(class WebGL1Renderer extends WebGLRenderer{}).prototype.isWebGL1Renderer=!0;class Scene extends Object3D{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.overrideMaterial=null,"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),null!==e.background&&(this.background=e.background.clone()),null!==e.environment&&(this.environment=e.environment.clone()),null!==e.fog&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,null!==e.overrideMaterial&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return null!==this.fog&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(t.object.backgroundIntensity=this.backgroundIntensity),t}get autoUpdate(){return console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate}set autoUpdate(e){console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate=e}}class InterleavedBuffer{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.usage=35044,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=generateUUID()}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,i){e*=this.stride,i*=t.stride;for(let n=0,r=this.stride;n<r;n++)this.array[e+n]=t.array[i+n];return this}set(e,t=0){return this.array.set(e,t),this}clone(e){void 0===e.arrayBuffers&&(e.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=generateUUID()),void 0===e.arrayBuffers[this.array.buffer._uuid]&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);const t=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),i=new this.constructor(t,this.stride);return i.setUsage(this.usage),i}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return void 0===e.arrayBuffers&&(e.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=generateUUID()),void 0===e.arrayBuffers[this.array.buffer._uuid]&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}}const Pt=new Vector3;class InterleavedBufferAttribute{constructor(e,t,i,n=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=e,this.itemSize=t,this.offset=i,this.normalized=n}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let t=0,i=this.data.count;t<i;t++)Pt.fromBufferAttribute(this,t),Pt.applyMatrix4(e),this.setXYZ(t,Pt.x,Pt.y,Pt.z);return this}applyNormalMatrix(e){for(let t=0,i=this.count;t<i;t++)Pt.fromBufferAttribute(this,t),Pt.applyNormalMatrix(e),this.setXYZ(t,Pt.x,Pt.y,Pt.z);return this}transformDirection(e){for(let t=0,i=this.count;t<i;t++)Pt.fromBufferAttribute(this,t),Pt.transformDirection(e),this.setXYZ(t,Pt.x,Pt.y,Pt.z);return this}setX(e,t){return this.normalized&&(t=normalize(t,this.array)),this.data.array[e*this.data.stride+this.offset]=t,this}setY(e,t){return this.normalized&&(t=normalize(t,this.array)),this.data.array[e*this.data.stride+this.offset+1]=t,this}setZ(e,t){return this.normalized&&(t=normalize(t,this.array)),this.data.array[e*this.data.stride+this.offset+2]=t,this}setW(e,t){return this.normalized&&(t=normalize(t,this.array)),this.data.array[e*this.data.stride+this.offset+3]=t,this}getX(e){let t=this.data.array[e*this.data.stride+this.offset];return this.normalized&&(t=denormalize(t,this.array)),t}getY(e){let t=this.data.array[e*this.data.stride+this.offset+1];return this.normalized&&(t=denormalize(t,this.array)),t}getZ(e){let t=this.data.array[e*this.data.stride+this.offset+2];return this.normalized&&(t=denormalize(t,this.array)),t}getW(e){let t=this.data.array[e*this.data.stride+this.offset+3];return this.normalized&&(t=denormalize(t,this.array)),t}setXY(e,t,i){return e=e*this.data.stride+this.offset,this.normalized&&(t=normalize(t,this.array),i=normalize(i,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=i,this}setXYZ(e,t,i,n){return e=e*this.data.stride+this.offset,this.normalized&&(t=normalize(t,this.array),i=normalize(i,this.array),n=normalize(n,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=i,this.data.array[e+2]=n,this}setXYZW(e,t,i,n,r){return e=e*this.data.stride+this.offset,this.normalized&&(t=normalize(t,this.array),i=normalize(i,this.array),n=normalize(n,this.array),r=normalize(r,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=i,this.data.array[e+2]=n,this.data.array[e+3]=r,this}clone(e){if(void 0===e){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.");const e=[];for(let t=0;t<this.count;t++){const i=t*this.data.stride+this.offset;for(let t=0;t<this.itemSize;t++)e.push(this.data.array[i+t])}return new BufferAttribute(new this.array.constructor(e),this.itemSize,this.normalized)}return void 0===e.interleavedBuffers&&(e.interleavedBuffers={}),void 0===e.interleavedBuffers[this.data.uuid]&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new InterleavedBufferAttribute(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(e){if(void 0===e){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.");const e=[];for(let t=0;t<this.count;t++){const i=t*this.data.stride+this.offset;for(let t=0;t<this.itemSize;t++)e.push(this.data.array[i+t])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:e,normalized:this.normalized}}return void 0===e.interleavedBuffers&&(e.interleavedBuffers={}),void 0===e.interleavedBuffers[this.data.uuid]&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}}class SpriteMaterial extends Material{constructor(e){super(),this.isSpriteMaterial=!0,this.type="SpriteMaterial",this.color=new Color$1(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}let Dt;const Lt=new Vector3,It=new Vector3,Rt=new Vector3,Ot=new Vector2,Nt=new Vector2,Ft=new Matrix4,zt=new Vector3,Bt=new Vector3,Ut=new Vector3,Vt=new Vector2,kt=new Vector2,Gt=new Vector2;class Sprite extends Object3D{constructor(e){if(super(),this.isSprite=!0,this.type="Sprite",void 0===Dt){Dt=new BufferGeometry;const e=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),t=new InterleavedBuffer(e,5);Dt.setIndex([0,1,2,0,2,3]),Dt.setAttribute("position",new InterleavedBufferAttribute(t,3,0,!1)),Dt.setAttribute("uv",new InterleavedBufferAttribute(t,2,3,!1))}this.geometry=Dt,this.material=void 0!==e?e:new SpriteMaterial,this.center=new Vector2(.5,.5)}raycast(e,t){null===e.camera&&console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),It.setFromMatrixScale(this.matrixWorld),Ft.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),Rt.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&!1===this.material.sizeAttenuation&&It.multiplyScalar(-Rt.z);const i=this.material.rotation;let n,r;0!==i&&(r=Math.cos(i),n=Math.sin(i));const s=this.center;transformVertex(zt.set(-.5,-.5,0),Rt,s,It,n,r),transformVertex(Bt.set(.5,-.5,0),Rt,s,It,n,r),transformVertex(Ut.set(.5,.5,0),Rt,s,It,n,r),Vt.set(0,0),kt.set(1,0),Gt.set(1,1);let a=e.ray.intersectTriangle(zt,Bt,Ut,!1,Lt);if(null===a&&(transformVertex(Bt.set(-.5,.5,0),Rt,s,It,n,r),kt.set(0,1),a=e.ray.intersectTriangle(zt,Ut,Bt,!1,Lt),null===a))return;const o=e.ray.origin.distanceTo(Lt);o<e.near||o>e.far||t.push({distance:o,point:Lt.clone(),uv:Triangle.getUV(Lt,zt,Bt,Ut,Vt,kt,Gt,new Vector2),face:null,object:this})}copy(e,t){return super.copy(e,t),void 0!==e.center&&this.center.copy(e.center),this.material=e.material,this}}function transformVertex(e,t,i,n,r,s){Ot.subVectors(e,i).addScalar(.5).multiply(n),void 0!==r?(Nt.x=s*Ot.x-r*Ot.y,Nt.y=r*Ot.x+s*Ot.y):Nt.copy(Ot),e.copy(t),e.x+=Nt.x,e.y+=Nt.y,e.applyMatrix4(Ft)}const Ht=new Vector3,Wt=new Vector4,jt=new Vector4,Xt=new Vector3,qt=new Matrix4;class SkinnedMesh extends Mesh{constructor(e,t){super(e,t),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode="attached",this.bindMatrix=new Matrix4,this.bindMatrixInverse=new Matrix4}copy(e,t){return super.copy(e,t),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,this}bind(e,t){this.skeleton=e,void 0===t&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const e=new Vector4,t=this.geometry.attributes.skinWeight;for(let i=0,n=t.count;i<n;i++){e.fromBufferAttribute(t,i);const n=1/e.manhattanLength();n!==1/0?e.multiplyScalar(n):e.set(1,0,0,0),t.setXYZW(i,e.x,e.y,e.z,e.w)}}updateMatrixWorld(e){super.updateMatrixWorld(e),"attached"===this.bindMode?this.bindMatrixInverse.copy(this.matrixWorld).invert():"detached"===this.bindMode?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)}boneTransform(e,t){const i=this.skeleton,n=this.geometry;Wt.fromBufferAttribute(n.attributes.skinIndex,e),jt.fromBufferAttribute(n.attributes.skinWeight,e),Ht.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let e=0;e<4;e++){const n=jt.getComponent(e);if(0!==n){const r=Wt.getComponent(e);qt.multiplyMatrices(i.bones[r].matrixWorld,i.boneInverses[r]),t.addScaledVector(Xt.copy(Ht).applyMatrix4(qt),n)}}return t.applyMatrix4(this.bindMatrixInverse)}}class Bone extends Object3D{constructor(){super(),this.isBone=!0,this.type="Bone"}}class DataTexture extends Texture{constructor(e=null,t=1,i=1,n,r,s,a,o,l=1003,c=1003,h,d){super(null,s,a,o,l,c,n,r,h,d),this.isDataTexture=!0,this.image={data:e,width:t,height:i},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}const Yt=new Matrix4,Zt=new Matrix4;class Skeleton{constructor(e=[],t=[]){this.uuid=generateUUID(),this.bones=e.slice(0),this.boneInverses=t,this.boneMatrices=null,this.boneTexture=null,this.boneTextureSize=0,this.frame=-1,this.init()}init(){const e=this.bones,t=this.boneInverses;if(this.boneMatrices=new Float32Array(16*e.length),0===t.length)this.calculateInverses();else if(e.length!==t.length){console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(let e=0,t=this.bones.length;e<t;e++)this.boneInverses.push(new Matrix4)}}calculateInverses(){this.boneInverses.length=0;for(let e=0,t=this.bones.length;e<t;e++){const t=new Matrix4;this.bones[e]&&t.copy(this.bones[e].matrixWorld).invert(),this.boneInverses.push(t)}}pose(){for(let e=0,t=this.bones.length;e<t;e++){const t=this.bones[e];t&&t.matrixWorld.copy(this.boneInverses[e]).invert()}for(let e=0,t=this.bones.length;e<t;e++){const t=this.bones[e];t&&(t.parent&&t.parent.isBone?(t.matrix.copy(t.parent.matrixWorld).invert(),t.matrix.multiply(t.matrixWorld)):t.matrix.copy(t.matrixWorld),t.matrix.decompose(t.position,t.quaternion,t.scale))}}update(){const e=this.bones,t=this.boneInverses,i=this.boneMatrices,n=this.boneTexture;for(let n=0,r=e.length;n<r;n++){const r=e[n]?e[n].matrixWorld:Zt;Yt.multiplyMatrices(r,t[n]),Yt.toArray(i,16*n)}null!==n&&(n.needsUpdate=!0)}clone(){return new Skeleton(this.bones,this.boneInverses)}computeBoneTexture(){let e=Math.sqrt(4*this.bones.length);e=ceilPowerOfTwo(e),e=Math.max(e,4);const t=new Float32Array(e*e*4);t.set(this.boneMatrices);const i=new DataTexture(t,e,e,1023,1015);return i.needsUpdate=!0,this.boneMatrices=t,this.boneTexture=i,this.boneTextureSize=e,this}getBoneByName(e){for(let t=0,i=this.bones.length;t<i;t++){const i=this.bones[t];if(i.name===e)return i}}dispose(){null!==this.boneTexture&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(e,t){this.uuid=e.uuid;for(let i=0,n=e.bones.length;i<n;i++){const n=e.bones[i];let r=t[n];void 0===r&&(console.warn("THREE.Skeleton: No bone found with UUID:",n),r=new Bone),this.bones.push(r),this.boneInverses.push((new Matrix4).fromArray(e.boneInverses[i]))}return this.init(),this}toJSON(){const e={metadata:{version:4.5,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]};e.uuid=this.uuid;const t=this.bones,i=this.boneInverses;for(let n=0,r=t.length;n<r;n++){const r=t[n];e.bones.push(r.uuid);const s=i[n];e.boneInverses.push(s.toArray())}return e}}class InstancedBufferAttribute extends BufferAttribute{constructor(e,t,i,n=1){super(e,t,i),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=n}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}toJSON(){const e=super.toJSON();return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}}const Qt=new Matrix4,Kt=new Matrix4,Jt=[],$t=new Matrix4,ei=new Mesh;class InstancedMesh extends Mesh{constructor(e,t,i){super(e,t),this.isInstancedMesh=!0,this.instanceMatrix=new InstancedBufferAttribute(new Float32Array(16*i),16),this.instanceColor=null,this.count=i,this.frustumCulled=!1;for(let e=0;e<i;e++)this.setMatrixAt(e,$t)}copy(e,t){return super.copy(e,t),this.instanceMatrix.copy(e.instanceMatrix),null!==e.instanceColor&&(this.instanceColor=e.instanceColor.clone()),this.count=e.count,this}getColorAt(e,t){t.fromArray(this.instanceColor.array,3*e)}getMatrixAt(e,t){t.fromArray(this.instanceMatrix.array,16*e)}raycast(e,t){const i=this.matrixWorld,n=this.count;if(ei.geometry=this.geometry,ei.material=this.material,void 0!==ei.material)for(let r=0;r<n;r++){this.getMatrixAt(r,Qt),Kt.multiplyMatrices(i,Qt),ei.matrixWorld=Kt,ei.raycast(e,Jt);for(let e=0,i=Jt.length;e<i;e++){const i=Jt[e];i.instanceId=r,i.object=this,t.push(i)}Jt.length=0}}setColorAt(e,t){null===this.instanceColor&&(this.instanceColor=new InstancedBufferAttribute(new Float32Array(3*this.instanceMatrix.count),3)),t.toArray(this.instanceColor.array,3*e)}setMatrixAt(e,t){t.toArray(this.instanceMatrix.array,16*e)}updateMorphTargets(){}dispose(){this.dispatchEvent({type:"dispose"})}}class LineBasicMaterial extends Material{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Color$1(16777215),this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}}const ti=new Vector3,ii=new Vector3,ni=new Matrix4,ri=new Ray,si=new Sphere;class Line extends Object3D{constructor(e=new BufferGeometry,t=new LineBasicMaterial){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=e.material,this.geometry=e.geometry,this}computeLineDistances(){const e=this.geometry;if(null===e.index){const t=e.attributes.position,i=[0];for(let e=1,n=t.count;e<n;e++)ti.fromBufferAttribute(t,e-1),ii.fromBufferAttribute(t,e),i[e]=i[e-1],i[e]+=ti.distanceTo(ii);e.setAttribute("lineDistance",new Float32BufferAttribute(i,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(e,t){const i=this.geometry,n=this.matrixWorld,r=e.params.Line.threshold,s=i.drawRange;if(null===i.boundingSphere&&i.computeBoundingSphere(),si.copy(i.boundingSphere),si.applyMatrix4(n),si.radius+=r,!1===e.ray.intersectsSphere(si))return;ni.copy(n).invert(),ri.copy(e.ray).applyMatrix4(ni);const a=r/((this.scale.x+this.scale.y+this.scale.z)/3),o=a*a,l=new Vector3,c=new Vector3,h=new Vector3,d=new Vector3,u=this.isLineSegments?2:1,p=i.index,m=i.attributes.position;if(null!==p){for(let i=Math.max(0,s.start),n=Math.min(p.count,s.start+s.count)-1;i<n;i+=u){const n=p.getX(i),r=p.getX(i+1);l.fromBufferAttribute(m,n),c.fromBufferAttribute(m,r);if(ri.distanceSqToSegment(l,c,d,h)>o)continue;d.applyMatrix4(this.matrixWorld);const s=e.ray.origin.distanceTo(d);s<e.near||s>e.far||t.push({distance:s,point:h.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}else{for(let i=Math.max(0,s.start),n=Math.min(m.count,s.start+s.count)-1;i<n;i+=u){l.fromBufferAttribute(m,i),c.fromBufferAttribute(m,i+1);if(ri.distanceSqToSegment(l,c,d,h)>o)continue;d.applyMatrix4(this.matrixWorld);const n=e.ray.origin.distanceTo(d);n<e.near||n>e.far||t.push({distance:n,point:h.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;e<t;e++){const t=i[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}}const ai=new Vector3,oi=new Vector3;class LineSegments extends Line{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(null===e.index){const t=e.attributes.position,i=[];for(let e=0,n=t.count;e<n;e+=2)ai.fromBufferAttribute(t,e),oi.fromBufferAttribute(t,e+1),i[e]=0===e?0:i[e-1],i[e+1]=i[e]+ai.distanceTo(oi);e.setAttribute("lineDistance",new Float32BufferAttribute(i,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}class LineLoop extends Line{constructor(e,t){super(e,t),this.isLineLoop=!0,this.type="LineLoop"}}class PointsMaterial extends Material{constructor(e){super(),this.isPointsMaterial=!0,this.type="PointsMaterial",this.color=new Color$1(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.size=e.size,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}const li=new Matrix4,ci=new Ray,hi=new Sphere,di=new Vector3;class Points extends Object3D{constructor(e=new BufferGeometry,t=new PointsMaterial){super(),this.isPoints=!0,this.type="Points",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=e.material,this.geometry=e.geometry,this}raycast(e,t){const i=this.geometry,n=this.matrixWorld,r=e.params.Points.threshold,s=i.drawRange;if(null===i.boundingSphere&&i.computeBoundingSphere(),hi.copy(i.boundingSphere),hi.applyMatrix4(n),hi.radius+=r,!1===e.ray.intersectsSphere(hi))return;li.copy(n).invert(),ci.copy(e.ray).applyMatrix4(li);const a=r/((this.scale.x+this.scale.y+this.scale.z)/3),o=a*a,l=i.index,c=i.attributes.position;if(null!==l){for(let i=Math.max(0,s.start),r=Math.min(l.count,s.start+s.count);i<r;i++){const r=l.getX(i);di.fromBufferAttribute(c,r),testPoint(di,r,o,n,e,t,this)}}else{for(let i=Math.max(0,s.start),r=Math.min(c.count,s.start+s.count);i<r;i++)di.fromBufferAttribute(c,i),testPoint(di,i,o,n,e,t,this)}}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;e<t;e++){const t=i[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}}function testPoint(e,t,i,n,r,s,a){const o=ci.distanceSqToPoint(e);if(o<i){const i=new Vector3;ci.closestPointToPoint(e,i),i.applyMatrix4(n);const l=r.ray.origin.distanceTo(i);if(l<r.near||l>r.far)return;s.push({distance:l,distanceToRay:Math.sqrt(o),point:i,index:t,face:null,object:a})}}class CanvasTexture extends Texture{constructor(e,t,i,n,r,s,a,o,l){super(e,t,i,n,r,s,a,o,l),this.isCanvasTexture=!0,this.needsUpdate=!0}}function CubicPoly(){let e=0,t=0,i=0,n=0;function init(r,s,a,o){e=r,t=a,i=-3*r+3*s-2*a-o,n=2*r-2*s+a+o}return{initCatmullRom:function(e,t,i,n,r){init(t,i,r*(i-e),r*(n-t))},initNonuniformCatmullRom:function(e,t,i,n,r,s,a){let o=(t-e)/r-(i-e)/(r+s)+(i-t)/s,l=(i-t)/s-(n-t)/(s+a)+(n-i)/a;o*=s,l*=s,init(t,i,o,l)},calc:function(r){const s=r*r;return e+t*r+i*s+n*(s*r)}}}const pi=new Vector3,mi=new CubicPoly,fi=new CubicPoly,gi=new CubicPoly;class CatmullRomCurve3 extends class Curve{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){const i=this.getUtoTmapping(e);return this.getPoint(i,t)}getPoints(e=5){const t=[];for(let i=0;i<=e;i++)t.push(this.getPoint(i/e));return t}getSpacedPoints(e=5){const t=[];for(let i=0;i<=e;i++)t.push(this.getPointAt(i/e));return t}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const t=[];let i,n=this.getPoint(0),r=0;t.push(0);for(let s=1;s<=e;s++)i=this.getPoint(s/e),r+=i.distanceTo(n),t.push(r),n=i;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){const i=this.getLengths();let n=0;const r=i.length;let s;s=t||e*i[r-1];let a,o=0,l=r-1;for(;o<=l;)if(n=Math.floor(o+(l-o)/2),a=i[n]-s,a<0)o=n+1;else{if(!(a>0)){l=n;break}l=n-1}if(n=l,i[n]===s)return n/(r-1);const c=i[n];return(n+(s-c)/(i[n+1]-c))/(r-1)}getTangent(e,t){const i=1e-4;let n=e-i,r=e+i;n<0&&(n=0),r>1&&(r=1);const s=this.getPoint(n),a=this.getPoint(r),o=t||(s.isVector2?new Vector2:new Vector3);return o.copy(a).sub(s).normalize(),o}getTangentAt(e,t){const i=this.getUtoTmapping(e);return this.getTangent(i,t)}computeFrenetFrames(e,t){const i=new Vector3,n=[],r=[],s=[],a=new Vector3,o=new Matrix4;for(let t=0;t<=e;t++){const i=t/e;n[t]=this.getTangentAt(i,new Vector3)}r[0]=new Vector3,s[0]=new Vector3;let l=Number.MAX_VALUE;const c=Math.abs(n[0].x),h=Math.abs(n[0].y),d=Math.abs(n[0].z);c<=l&&(l=c,i.set(1,0,0)),h<=l&&(l=h,i.set(0,1,0)),d<=l&&i.set(0,0,1),a.crossVectors(n[0],i).normalize(),r[0].crossVectors(n[0],a),s[0].crossVectors(n[0],r[0]);for(let t=1;t<=e;t++){if(r[t]=r[t-1].clone(),s[t]=s[t-1].clone(),a.crossVectors(n[t-1],n[t]),a.length()>Number.EPSILON){a.normalize();const e=Math.acos(clamp(n[t-1].dot(n[t]),-1,1));r[t].applyMatrix4(o.makeRotationAxis(a,e))}s[t].crossVectors(n[t],r[t])}if(!0===t){let t=Math.acos(clamp(r[0].dot(r[e]),-1,1));t/=e,n[0].dot(a.crossVectors(r[0],r[e]))>0&&(t=-t);for(let i=1;i<=e;i++)r[i].applyMatrix4(o.makeRotationAxis(n[i],t*i)),s[i].crossVectors(n[i],r[i])}return{tangents:n,normals:r,binormals:s}}clone(){return(new this.constructor).copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}{constructor(e=[],t=!1,i="centripetal",n=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=e,this.closed=t,this.curveType=i,this.tension=n}getPoint(e,t=new Vector3){const i=t,n=this.points,r=n.length,s=(r-(this.closed?0:1))*e;let a,o,l=Math.floor(s),c=s-l;this.closed?l+=l>0?0:(Math.floor(Math.abs(l)/r)+1)*r:0===c&&l===r-1&&(l=r-2,c=1),this.closed||l>0?a=n[(l-1)%r]:(pi.subVectors(n[0],n[1]).add(n[0]),a=pi);const h=n[l%r],d=n[(l+1)%r];if(this.closed||l+2<r?o=n[(l+2)%r]:(pi.subVectors(n[r-1],n[r-2]).add(n[r-1]),o=pi),"centripetal"===this.curveType||"chordal"===this.curveType){const e="chordal"===this.curveType?.5:.25;let t=Math.pow(a.distanceToSquared(h),e),i=Math.pow(h.distanceToSquared(d),e),n=Math.pow(d.distanceToSquared(o),e);i<1e-4&&(i=1),t<1e-4&&(t=i),n<1e-4&&(n=i),mi.initNonuniformCatmullRom(a.x,h.x,d.x,o.x,t,i,n),fi.initNonuniformCatmullRom(a.y,h.y,d.y,o.y,t,i,n),gi.initNonuniformCatmullRom(a.z,h.z,d.z,o.z,t,i,n)}else"catmullrom"===this.curveType&&(mi.initCatmullRom(a.x,h.x,d.x,o.x,this.tension),fi.initCatmullRom(a.y,h.y,d.y,o.y,this.tension),gi.initCatmullRom(a.z,h.z,d.z,o.z,this.tension));return i.set(mi.calc(c),fi.calc(c),gi.calc(c)),i}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t<i;t++){const i=e.points[t];this.points.push(i.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}toJSON(){const e=super.toJSON();e.points=[];for(let t=0,i=this.points.length;t<i;t++){const i=this.points[t];e.points.push(i.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,i=e.points.length;t<i;t++){const i=e.points[t];this.points.push((new Vector3).fromArray(i))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}}class PolyhedronGeometry extends BufferGeometry{constructor(e=[],t=[],i=1,n=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:i,detail:n};const r=[],s=[];function subdivideFace(e,t,i,n){const r=n+1,s=[];for(let n=0;n<=r;n++){s[n]=[];const a=e.clone().lerp(i,n/r),o=t.clone().lerp(i,n/r),l=r-n;for(let e=0;e<=l;e++)s[n][e]=0===e&&n===r?a:a.clone().lerp(o,e/l)}for(let e=0;e<r;e++)for(let t=0;t<2*(r-e)-1;t++){const i=Math.floor(t/2);t%2==0?(pushVertex(s[e][i+1]),pushVertex(s[e+1][i]),pushVertex(s[e][i])):(pushVertex(s[e][i+1]),pushVertex(s[e+1][i+1]),pushVertex(s[e+1][i]))}}function pushVertex(e){r.push(e.x,e.y,e.z)}function getVertexByIndex(t,i){const n=3*t;i.x=e[n+0],i.y=e[n+1],i.z=e[n+2]}function correctUV(e,t,i,n){n<0&&1===e.x&&(s[t]=e.x-1),0===i.x&&0===i.z&&(s[t]=n/2/Math.PI+.5)}function azimuth(e){return Math.atan2(e.z,-e.x)}!function subdivide(e){const i=new Vector3,n=new Vector3,r=new Vector3;for(let s=0;s<t.length;s+=3)getVertexByIndex(t[s+0],i),getVertexByIndex(t[s+1],n),getVertexByIndex(t[s+2],r),subdivideFace(i,n,r,e)}(n),function applyRadius(e){const t=new Vector3;for(let i=0;i<r.length;i+=3)t.x=r[i+0],t.y=r[i+1],t.z=r[i+2],t.normalize().multiplyScalar(e),r[i+0]=t.x,r[i+1]=t.y,r[i+2]=t.z}(i),function generateUVs(){const e=new Vector3;for(let i=0;i<r.length;i+=3){e.x=r[i+0],e.y=r[i+1],e.z=r[i+2];const n=azimuth(e)/2/Math.PI+.5,a=(t=e,Math.atan2(-t.y,Math.sqrt(t.x*t.x+t.z*t.z))/Math.PI+.5);s.push(n,1-a)}var t;(function correctUVs(){const e=new Vector3,t=new Vector3,i=new Vector3,n=new Vector3,a=new Vector2,o=new Vector2,l=new Vector2;for(let c=0,h=0;c<r.length;c+=9,h+=6){e.set(r[c+0],r[c+1],r[c+2]),t.set(r[c+3],r[c+4],r[c+5]),i.set(r[c+6],r[c+7],r[c+8]),a.set(s[h+0],s[h+1]),o.set(s[h+2],s[h+3]),l.set(s[h+4],s[h+5]),n.copy(e).add(t).add(i).divideScalar(3);const d=azimuth(n);correctUV(a,h+0,e,d),correctUV(o,h+2,t,d),correctUV(l,h+4,i,d)}})(),function correctSeam(){for(let e=0;e<s.length;e+=6){const t=s[e+0],i=s[e+2],n=s[e+4],r=Math.max(t,i,n),a=Math.min(t,i,n);r>.9&&a<.1&&(t<.2&&(s[e+0]+=1),i<.2&&(s[e+2]+=1),n<.2&&(s[e+4]+=1))}}()}(),this.setAttribute("position",new Float32BufferAttribute(r,3)),this.setAttribute("normal",new Float32BufferAttribute(r.slice(),3)),this.setAttribute("uv",new Float32BufferAttribute(s,2)),0===n?this.computeVertexNormals():this.normalizeNormals()}static fromJSON(e){return new PolyhedronGeometry(e.vertices,e.indices,e.radius,e.details)}}class OctahedronGeometry extends PolyhedronGeometry{constructor(e=1,t=0){super([1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t),this.type="OctahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new OctahedronGeometry(e.radius,e.detail)}}class SphereGeometry extends BufferGeometry{constructor(e=1,t=32,i=16,n=0,r=2*Math.PI,s=0,a=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:e,widthSegments:t,heightSegments:i,phiStart:n,phiLength:r,thetaStart:s,thetaLength:a},t=Math.max(3,Math.floor(t)),i=Math.max(2,Math.floor(i));const o=Math.min(s+a,Math.PI);let l=0;const c=[],h=new Vector3,d=new Vector3,u=[],p=[],m=[],f=[];for(let u=0;u<=i;u++){const g=[],v=u/i;let x=0;0==u&&0==s?x=.5/t:u==i&&o==Math.PI&&(x=-.5/t);for(let i=0;i<=t;i++){const o=i/t;h.x=-e*Math.cos(n+o*r)*Math.sin(s+v*a),h.y=e*Math.cos(s+v*a),h.z=e*Math.sin(n+o*r)*Math.sin(s+v*a),p.push(h.x,h.y,h.z),d.copy(h).normalize(),m.push(d.x,d.y,d.z),f.push(o+x,1-v),g.push(l++)}c.push(g)}for(let e=0;e<i;e++)for(let n=0;n<t;n++){const t=c[e][n+1],r=c[e][n],a=c[e+1][n],l=c[e+1][n+1];(0!==e||s>0)&&u.push(t,r,l),(e!==i-1||o<Math.PI)&&u.push(r,a,l)}this.setIndex(u),this.setAttribute("position",new Float32BufferAttribute(p,3)),this.setAttribute("normal",new Float32BufferAttribute(m,3)),this.setAttribute("uv",new Float32BufferAttribute(f,2))}static fromJSON(e){return new SphereGeometry(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}}class ShadowMaterial extends Material{constructor(e){super(),this.isShadowMaterial=!0,this.type="ShadowMaterial",this.color=new Color$1(0),this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.fog=e.fog,this}}class MeshStandardMaterial extends Material{constructor(e){super(),this.isMeshStandardMaterial=!0,this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new Color$1(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Color$1(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Vector2(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class MeshPhysicalMaterial extends MeshStandardMaterial{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new Vector2(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return clamp(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(e){this.ior=(1+.4*e)/(1-.4*e)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new Color$1(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new Color$1(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new Color$1(1,1,1),this.specularColorMap=null,this._sheen=0,this._clearcoat=0,this._iridescence=0,this._transmission=0,this.setValues(e)}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class MeshPhongMaterial extends Material{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new Color$1(16777215),this.specular=new Color$1(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Color$1(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Vector2(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class MeshLambertMaterial extends Material{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new Color$1(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Color$1(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Vector2(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}function arraySlice(e,t,i){return isTypedArray(e)?new e.constructor(e.subarray(t,void 0!==i?i:e.length)):e.slice(t,i)}function convertArray(e,t,i){return!e||!i&&e.constructor===t?e:"number"==typeof t.BYTES_PER_ELEMENT?new t(e):Array.prototype.slice.call(e)}function isTypedArray(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function getKeyframeOrder(e){const t=e.length,i=new Array(t);for(let e=0;e!==t;++e)i[e]=e;return i.sort((function compareTime(t,i){return e[t]-e[i]})),i}function sortedArray(e,t,i){const n=e.length,r=new e.constructor(n);for(let s=0,a=0;a!==n;++s){const n=i[s]*t;for(let i=0;i!==t;++i)r[a++]=e[n+i]}return r}function flattenJSON(e,t,i,n){let r=1,s=e[0];for(;void 0!==s&&void 0===s[n];)s=e[r++];if(void 0===s)return;let a=s[n];if(void 0!==a)if(Array.isArray(a))do{a=s[n],void 0!==a&&(t.push(s.time),i.push.apply(i,a)),s=e[r++]}while(void 0!==s);else if(void 0!==a.toArray)do{a=s[n],void 0!==a&&(t.push(s.time),a.toArray(i,i.length)),s=e[r++]}while(void 0!==s);else do{a=s[n],void 0!==a&&(t.push(s.time),i.push(a)),s=e[r++]}while(void 0!==s)}class Interpolant{constructor(e,t,i,n){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=void 0!==n?n:new t.constructor(i),this.sampleValues=t,this.valueSize=i,this.settings=null,this.DefaultSettings_={}}evaluate(e){const t=this.parameterPositions;let i=this._cachedIndex,n=t[i],r=t[i-1];e:{t:{let s;i:{n:if(!(e<n)){for(let s=i+2;;){if(void 0===n){if(e<r)break n;return i=t.length,this._cachedIndex=i,this.copySampleValue_(i-1)}if(i===s)break;if(r=n,n=t[++i],e<n)break t}s=t.length;break i}if(e>=r)break e;{const a=t[1];e<a&&(i=2,r=a);for(let s=i-2;;){if(void 0===r)return this._cachedIndex=0,this.copySampleValue_(0);if(i===s)break;if(n=r,r=t[--i-1],e>=r)break t}s=i,i=0}}for(;i<s;){const n=i+s>>>1;e<t[n]?s=n:i=n+1}if(n=t[i],r=t[i-1],void 0===r)return this._cachedIndex=0,this.copySampleValue_(0);if(void 0===n)return i=t.length,this._cachedIndex=i,this.copySampleValue_(i-1)}this._cachedIndex=i,this.intervalChanged_(i,r,n)}return this.interpolate_(i,r,e,n)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){const t=this.resultBuffer,i=this.sampleValues,n=this.valueSize,r=e*n;for(let e=0;e!==n;++e)t[e]=i[r+e];return t}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}}class CubicInterpolant extends Interpolant{constructor(e,t,i,n){super(e,t,i,n),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:2400,endingEnd:2400}}intervalChanged_(e,t,i){const n=this.parameterPositions;let r=e-2,s=e+1,a=n[r],o=n[s];if(void 0===a)switch(this.getSettings_().endingStart){case 2401:r=e,a=2*t-i;break;case 2402:r=n.length-2,a=t+n[r]-n[r+1];break;default:r=e,a=i}if(void 0===o)switch(this.getSettings_().endingEnd){case 2401:s=e,o=2*i-t;break;case 2402:s=1,o=i+n[1]-n[0];break;default:s=e-1,o=t}const l=.5*(i-t),c=this.valueSize;this._weightPrev=l/(t-a),this._weightNext=l/(o-i),this._offsetPrev=r*c,this._offsetNext=s*c}interpolate_(e,t,i,n){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,o=e*a,l=o-a,c=this._offsetPrev,h=this._offsetNext,d=this._weightPrev,u=this._weightNext,p=(i-t)/(n-t),m=p*p,f=m*p,g=-d*f+2*d*m-d*p,v=(1+d)*f+(-1.5-2*d)*m+(-.5+d)*p+1,x=(-1-u)*f+(1.5+u)*m+.5*p,y=u*f-u*m;for(let e=0;e!==a;++e)r[e]=g*s[c+e]+v*s[l+e]+x*s[o+e]+y*s[h+e];return r}}class LinearInterpolant extends Interpolant{constructor(e,t,i,n){super(e,t,i,n)}interpolate_(e,t,i,n){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,o=e*a,l=o-a,c=(i-t)/(n-t),h=1-c;for(let e=0;e!==a;++e)r[e]=s[l+e]*h+s[o+e]*c;return r}}class DiscreteInterpolant extends Interpolant{constructor(e,t,i,n){super(e,t,i,n)}interpolate_(e){return this.copySampleValue_(e-1)}}class KeyframeTrack{constructor(e,t,i,n){if(void 0===e)throw new Error("THREE.KeyframeTrack: track name is undefined");if(void 0===t||0===t.length)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=convertArray(t,this.TimeBufferType),this.values=convertArray(i,this.ValueBufferType),this.setInterpolation(n||this.DefaultInterpolation)}static toJSON(e){const t=e.constructor;let i;if(t.toJSON!==this.toJSON)i=t.toJSON(e);else{i={name:e.name,times:convertArray(e.times,Array),values:convertArray(e.values,Array)};const t=e.getInterpolation();t!==e.DefaultInterpolation&&(i.interpolation=t)}return i.type=e.ValueTypeName,i}InterpolantFactoryMethodDiscrete(e){return new DiscreteInterpolant(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new LinearInterpolant(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new CubicInterpolant(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case 2300:t=this.InterpolantFactoryMethodDiscrete;break;case 2301:t=this.InterpolantFactoryMethodLinear;break;case 2302:t=this.InterpolantFactoryMethodSmooth}if(void 0===t){const t="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(void 0===this.createInterpolant){if(e===this.DefaultInterpolation)throw new Error(t);this.setInterpolation(this.DefaultInterpolation)}return console.warn("THREE.KeyframeTrack:",t),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return 2300;case this.InterpolantFactoryMethodLinear:return 2301;case this.InterpolantFactoryMethodSmooth:return 2302}}getValueSize(){return this.values.length/this.times.length}shift(e){if(0!==e){const t=this.times;for(let i=0,n=t.length;i!==n;++i)t[i]+=e}return this}scale(e){if(1!==e){const t=this.times;for(let i=0,n=t.length;i!==n;++i)t[i]*=e}return this}trim(e,t){const i=this.times,n=i.length;let r=0,s=n-1;for(;r!==n&&i[r]<e;)++r;for(;-1!==s&&i[s]>t;)--s;if(++s,0!==r||s!==n){r>=s&&(s=Math.max(s,1),r=s-1);const e=this.getValueSize();this.times=arraySlice(i,r,s),this.values=arraySlice(this.values,r*e,s*e)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const i=this.times,n=this.values,r=i.length;0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let s=null;for(let t=0;t!==r;t++){const n=i[t];if("number"==typeof n&&isNaN(n)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,t,n),e=!1;break}if(null!==s&&s>n){console.error("THREE.KeyframeTrack: Out of order keys.",this,t,n,s),e=!1;break}s=n}if(void 0!==n&&isTypedArray(n))for(let t=0,i=n.length;t!==i;++t){const i=n[t];if(isNaN(i)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,t,i),e=!1;break}}return e}optimize(){const e=arraySlice(this.times),t=arraySlice(this.values),i=this.getValueSize(),n=2302===this.getInterpolation(),r=e.length-1;let s=1;for(let a=1;a<r;++a){let r=!1;const o=e[a];if(o!==e[a+1]&&(1!==a||o!==e[0]))if(n)r=!0;else{const e=a*i,n=e-i,s=e+i;for(let a=0;a!==i;++a){const i=t[e+a];if(i!==t[n+a]||i!==t[s+a]){r=!0;break}}}if(r){if(a!==s){e[s]=e[a];const n=a*i,r=s*i;for(let e=0;e!==i;++e)t[r+e]=t[n+e]}++s}}if(r>0){e[s]=e[r];for(let e=r*i,n=s*i,a=0;a!==i;++a)t[n+a]=t[e+a];++s}return s!==e.length?(this.times=arraySlice(e,0,s),this.values=arraySlice(t,0,s*i)):(this.times=e,this.values=t),this}clone(){const e=arraySlice(this.times,0),t=arraySlice(this.values,0),i=new(0,this.constructor)(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}}KeyframeTrack.prototype.TimeBufferType=Float32Array,KeyframeTrack.prototype.ValueBufferType=Float32Array,KeyframeTrack.prototype.DefaultInterpolation=2301;class BooleanKeyframeTrack extends KeyframeTrack{}BooleanKeyframeTrack.prototype.ValueTypeName="bool",BooleanKeyframeTrack.prototype.ValueBufferType=Array,BooleanKeyframeTrack.prototype.DefaultInterpolation=2300,BooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear=void 0,BooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth=void 0;class ColorKeyframeTrack extends KeyframeTrack{}ColorKeyframeTrack.prototype.ValueTypeName="color";class NumberKeyframeTrack extends KeyframeTrack{}NumberKeyframeTrack.prototype.ValueTypeName="number";class QuaternionLinearInterpolant extends Interpolant{constructor(e,t,i,n){super(e,t,i,n)}interpolate_(e,t,i,n){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,o=(i-t)/(n-t);let l=e*a;for(let e=l+a;l!==e;l+=4)Quaternion$1.slerpFlat(r,0,s,l-a,s,l,o);return r}}class QuaternionKeyframeTrack extends KeyframeTrack{InterpolantFactoryMethodLinear(e){return new QuaternionLinearInterpolant(this.times,this.values,this.getValueSize(),e)}}QuaternionKeyframeTrack.prototype.ValueTypeName="quaternion",QuaternionKeyframeTrack.prototype.DefaultInterpolation=2301,QuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth=void 0;class StringKeyframeTrack extends KeyframeTrack{}StringKeyframeTrack.prototype.ValueTypeName="string",StringKeyframeTrack.prototype.ValueBufferType=Array,StringKeyframeTrack.prototype.DefaultInterpolation=2300,StringKeyframeTrack.prototype.InterpolantFactoryMethodLinear=void 0,StringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth=void 0;class VectorKeyframeTrack extends KeyframeTrack{}VectorKeyframeTrack.prototype.ValueTypeName="vector";class AnimationClip{constructor(e,t=-1,i,n=2500){this.name=e,this.tracks=i,this.duration=t,this.blendMode=n,this.uuid=generateUUID(),this.duration<0&&this.resetDuration()}static parse(e){const t=[],i=e.tracks,n=1/(e.fps||1);for(let e=0,r=i.length;e!==r;++e)t.push(parseKeyframeTrack(i[e]).scale(n));const r=new this(e.name,e.duration,t,e.blendMode);return r.uuid=e.uuid,r}static toJSON(e){const t=[],i=e.tracks,n={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let e=0,n=i.length;e!==n;++e)t.push(KeyframeTrack.toJSON(i[e]));return n}static CreateFromMorphTargetSequence(e,t,i,n){const r=t.length,s=[];for(let e=0;e<r;e++){let a=[],o=[];a.push((e+r-1)%r,e,(e+1)%r),o.push(0,1,0);const l=getKeyframeOrder(a);a=sortedArray(a,1,l),o=sortedArray(o,1,l),n||0!==a[0]||(a.push(r),o.push(o[0])),s.push(new NumberKeyframeTrack(".morphTargetInfluences["+t[e].name+"]",a,o).scale(1/i))}return new this(e,-1,s)}static findByName(e,t){let i=e;if(!Array.isArray(e)){const t=e;i=t.geometry&&t.geometry.animations||t.animations}for(let e=0;e<i.length;e++)if(i[e].name===t)return i[e];return null}static CreateClipsFromMorphTargetSequences(e,t,i){const n={},r=/^([\w-]*?)([\d]+)$/;for(let t=0,i=e.length;t<i;t++){const i=e[t],s=i.name.match(r);if(s&&s.length>1){const e=s[1];let t=n[e];t||(n[e]=t=[]),t.push(i)}}const s=[];for(const e in n)s.push(this.CreateFromMorphTargetSequence(e,n[e],t,i));return s}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const addNonemptyTrack=function(e,t,i,n,r){if(0!==i.length){const s=[],a=[];flattenJSON(i,s,a,n),0!==s.length&&r.push(new e(t,s,a))}},i=[],n=e.name||"default",r=e.fps||30,s=e.blendMode;let a=e.length||-1;const o=e.hierarchy||[];for(let e=0;e<o.length;e++){const n=o[e].keys;if(n&&0!==n.length)if(n[0].morphTargets){const e={};let t;for(t=0;t<n.length;t++)if(n[t].morphTargets)for(let i=0;i<n[t].morphTargets.length;i++)e[n[t].morphTargets[i]]=-1;for(const r in e){const e=[],s=[];for(let i=0;i!==n[t].morphTargets.length;++i){const i=n[t];e.push(i.time),s.push(i.morphTarget===r?1:0)}i.push(new NumberKeyframeTrack(".morphTargetInfluence["+r+"]",e,s))}a=e.length*r}else{const r=".bones["+t[e].name+"]";addNonemptyTrack(VectorKeyframeTrack,r+".position",n,"pos",i),addNonemptyTrack(QuaternionKeyframeTrack,r+".quaternion",n,"rot",i),addNonemptyTrack(VectorKeyframeTrack,r+".scale",n,"scl",i)}}if(0===i.length)return null;return new this(n,a,i,s)}resetDuration(){let e=0;for(let t=0,i=this.tracks.length;t!==i;++t){const i=this.tracks[t];e=Math.max(e,i.times[i.times.length-1])}return this.duration=e,this}trim(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].trim(0,this.duration);return this}validate(){let e=!0;for(let t=0;t<this.tracks.length;t++)e=e&&this.tracks[t].validate();return e}optimize(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].optimize();return this}clone(){const e=[];for(let t=0;t<this.tracks.length;t++)e.push(this.tracks[t].clone());return new this.constructor(this.name,this.duration,e,this.blendMode)}toJSON(){return this.constructor.toJSON(this)}}function parseKeyframeTrack(e){if(void 0===e.type)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");const t=function getTrackTypeForValueTypeName(e){switch(e.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return NumberKeyframeTrack;case"vector":case"vector2":case"vector3":case"vector4":return VectorKeyframeTrack;case"color":return ColorKeyframeTrack;case"quaternion":return QuaternionKeyframeTrack;case"bool":case"boolean":return BooleanKeyframeTrack;case"string":return StringKeyframeTrack}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+e)}(e.type);if(void 0===e.times){const t=[],i=[];flattenJSON(e.keys,t,i,"value"),e.times=t,e.values=i}return void 0!==t.parse?t.parse(e):new t(e.name,e.times,e.values,e.interpolation)}const vi={enabled:!1,files:{},add:function(e,t){!1!==this.enabled&&(this.files[e]=t)},get:function(e){if(!1!==this.enabled)return this.files[e]},remove:function(e){delete this.files[e]},clear:function(){this.files={}}};class LoadingManager{constructor(e,t,i){const n=this;let r,s=!1,a=0,o=0;const l=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=i,this.itemStart=function(e){o++,!1===s&&void 0!==n.onStart&&n.onStart(e,a,o),s=!0},this.itemEnd=function(e){a++,void 0!==n.onProgress&&n.onProgress(e,a,o),a===o&&(s=!1,void 0!==n.onLoad&&n.onLoad())},this.itemError=function(e){void 0!==n.onError&&n.onError(e)},this.resolveURL=function(e){return r?r(e):e},this.setURLModifier=function(e){return r=e,this},this.addHandler=function(e,t){return l.push(e,t),this},this.removeHandler=function(e){const t=l.indexOf(e);return-1!==t&&l.splice(t,2),this},this.getHandler=function(e){for(let t=0,i=l.length;t<i;t+=2){const i=l[t],n=l[t+1];if(i.global&&(i.lastIndex=0),i.test(e))return n}return null}}}const xi=new LoadingManager;class Loader{constructor(e){this.manager=void 0!==e?e:xi,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,t){const i=this;return new Promise((function(n,r){i.load(e,n,t,r)}))}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}}const yi={};class HttpError extends Error{constructor(e,t){super(e),this.response=t}}class FileLoader extends Loader{constructor(e){super(e)}load(e,t,i,n){void 0===e&&(e=""),void 0!==this.path&&(e=this.path+e),e=this.manager.resolveURL(e);const r=vi.get(e);if(void 0!==r)return this.manager.itemStart(e),setTimeout((()=>{t&&t(r),this.manager.itemEnd(e)}),0),r;if(void 0!==yi[e])return void yi[e].push({onLoad:t,onProgress:i,onError:n});yi[e]=[],yi[e].push({onLoad:t,onProgress:i,onError:n});const s=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,o=this.responseType;fetch(s).then((t=>{if(200===t.status||0===t.status){if(0===t.status&&console.warn("THREE.FileLoader: HTTP Status 0 received."),"undefined"==typeof ReadableStream||void 0===t.body||void 0===t.body.getReader)return t;const i=yi[e],n=t.body.getReader(),r=t.headers.get("Content-Length")||t.headers.get("X-File-Size"),s=r?parseInt(r):0,a=0!==s;let o=0;const l=new ReadableStream({start(e){!function readData(){n.read().then((({done:t,value:n})=>{if(t)e.close();else{o+=n.byteLength;const t=new ProgressEvent("progress",{lengthComputable:a,loaded:o,total:s});for(let e=0,n=i.length;e<n;e++){const n=i[e];n.onProgress&&n.onProgress(t)}e.enqueue(n),readData()}}))}()}});return new Response(l)}throw new HttpError(`fetch for "${t.url}" responded with ${t.status}: ${t.statusText}`,t)})).then((e=>{switch(o){case"arraybuffer":return e.arrayBuffer();case"blob":return e.blob();case"document":return e.text().then((e=>(new DOMParser).parseFromString(e,a)));case"json":return e.json();default:if(void 0===a)return e.text();{const t=/charset="?([^;"\s]*)"?/i.exec(a),i=t&&t[1]?t[1].toLowerCase():void 0,n=new TextDecoder(i);return e.arrayBuffer().then((e=>n.decode(e)))}}})).then((t=>{vi.add(e,t);const i=yi[e];delete yi[e];for(let e=0,n=i.length;e<n;e++){const n=i[e];n.onLoad&&n.onLoad(t)}})).catch((t=>{const i=yi[e];if(void 0===i)throw this.manager.itemError(e),t;delete yi[e];for(let e=0,n=i.length;e<n;e++){const n=i[e];n.onError&&n.onError(t)}this.manager.itemError(e)})).finally((()=>{this.manager.itemEnd(e)})),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class ImageLoader extends Loader{constructor(e){super(e)}load(e,t,i,n){void 0!==this.path&&(e=this.path+e),e=this.manager.resolveURL(e);const r=this,s=vi.get(e);if(void 0!==s)return r.manager.itemStart(e),setTimeout((function(){t&&t(s),r.manager.itemEnd(e)}),0),s;const a=createElementNS("img");function onImageLoad(){removeEventListeners(),vi.add(e,this),t&&t(this),r.manager.itemEnd(e)}function onImageError(t){removeEventListeners(),n&&n(t),r.manager.itemError(e),r.manager.itemEnd(e)}function removeEventListeners(){a.removeEventListener("load",onImageLoad,!1),a.removeEventListener("error",onImageError,!1)}return a.addEventListener("load",onImageLoad,!1),a.addEventListener("error",onImageError,!1),"data:"!==e.slice(0,5)&&void 0!==this.crossOrigin&&(a.crossOrigin=this.crossOrigin),r.manager.itemStart(e),a.src=e,a}}class CubeTextureLoader extends Loader{constructor(e){super(e)}load(e,t,i,n){const r=new CubeTexture,s=new ImageLoader(this.manager);s.setCrossOrigin(this.crossOrigin),s.setPath(this.path);let a=0;function loadTexture(i){s.load(e[i],(function(e){r.images[i]=e,a++,6===a&&(r.needsUpdate=!0,t&&t(r))}),void 0,n)}for(let t=0;t<e.length;++t)loadTexture(t);return r}}class DataTextureLoader extends Loader{constructor(e){super(e)}load(e,t,i,n){const r=this,s=new DataTexture,a=new FileLoader(this.manager);return a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setPath(this.path),a.setWithCredentials(r.withCredentials),a.load(e,(function(e){const i=r.parse(e);i&&(void 0!==i.image?s.image=i.image:void 0!==i.data&&(s.image.width=i.width,s.image.height=i.height,s.image.data=i.data),s.wrapS=void 0!==i.wrapS?i.wrapS:1001,s.wrapT=void 0!==i.wrapT?i.wrapT:1001,s.magFilter=void 0!==i.magFilter?i.magFilter:1006,s.minFilter=void 0!==i.minFilter?i.minFilter:1006,s.anisotropy=void 0!==i.anisotropy?i.anisotropy:1,void 0!==i.encoding&&(s.encoding=i.encoding),void 0!==i.flipY&&(s.flipY=i.flipY),void 0!==i.format&&(s.format=i.format),void 0!==i.type&&(s.type=i.type),void 0!==i.mipmaps&&(s.mipmaps=i.mipmaps,s.minFilter=1008),1===i.mipmapCount&&(s.minFilter=1006),void 0!==i.generateMipmaps&&(s.generateMipmaps=i.generateMipmaps),s.needsUpdate=!0,t&&t(s,i))}),i,n),s}}class TextureLoader extends Loader{constructor(e){super(e)}load(e,t,i,n){const r=new Texture,s=new ImageLoader(this.manager);return s.setCrossOrigin(this.crossOrigin),s.setPath(this.path),s.load(e,(function(e){r.image=e,r.needsUpdate=!0,void 0!==t&&t(r)}),i,n),r}}class Light extends Object3D{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new Color$1(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){const t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,void 0!==this.groundColor&&(t.object.groundColor=this.groundColor.getHex()),void 0!==this.distance&&(t.object.distance=this.distance),void 0!==this.angle&&(t.object.angle=this.angle),void 0!==this.decay&&(t.object.decay=this.decay),void 0!==this.penumbra&&(t.object.penumbra=this.penumbra),void 0!==this.shadow&&(t.object.shadow=this.shadow.toJSON()),t}}class HemisphereLight extends Light{constructor(e,t,i){super(e,i),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(Object3D.DEFAULT_UP),this.updateMatrix(),this.groundColor=new Color$1(t)}copy(e,t){return super.copy(e,t),this.groundColor.copy(e.groundColor),this}}const bi=new Matrix4,_i=new Vector3,Si=new Vector3;class LightShadow{constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new Vector2(512,512),this.map=null,this.mapPass=null,this.matrix=new Matrix4,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new Frustum,this._frameExtents=new Vector2(1,1),this._viewportCount=1,this._viewports=[new Vector4(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){const t=this.camera,i=this.matrix;_i.setFromMatrixPosition(e.matrixWorld),t.position.copy(_i),Si.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(Si),t.updateMatrixWorld(),bi.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(bi),i.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),i.multiply(bi)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return(new this.constructor).copy(this)}toJSON(){const e={};return 0!==this.bias&&(e.bias=this.bias),0!==this.normalBias&&(e.normalBias=this.normalBias),1!==this.radius&&(e.radius=this.radius),512===this.mapSize.x&&512===this.mapSize.y||(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}}class SpotLightShadow extends LightShadow{constructor(){super(new PerspectiveCamera(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(e){const t=this.camera,i=2*h*e.angle*this.focus,n=this.mapSize.width/this.mapSize.height,r=e.distance||t.far;i===t.fov&&n===t.aspect&&r===t.far||(t.fov=i,t.aspect=n,t.far=r,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}}class SpotLight extends Light{constructor(e,t,i=0,n=Math.PI/3,r=0,s=2){super(e,t),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(Object3D.DEFAULT_UP),this.updateMatrix(),this.target=new Object3D,this.distance=i,this.angle=n,this.penumbra=r,this.decay=s,this.map=null,this.shadow=new SpotLightShadow}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}const Mi=new Matrix4,wi=new Vector3,Ti=new Vector3;class PointLightShadow extends LightShadow{constructor(){super(new PerspectiveCamera(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new Vector2(4,2),this._viewportCount=6,this._viewports=[new Vector4(2,1,1,1),new Vector4(0,1,1,1),new Vector4(3,1,1,1),new Vector4(1,1,1,1),new Vector4(3,0,1,1),new Vector4(1,0,1,1)],this._cubeDirections=[new Vector3(1,0,0),new Vector3(-1,0,0),new Vector3(0,0,1),new Vector3(0,0,-1),new Vector3(0,1,0),new Vector3(0,-1,0)],this._cubeUps=[new Vector3(0,1,0),new Vector3(0,1,0),new Vector3(0,1,0),new Vector3(0,1,0),new Vector3(0,0,1),new Vector3(0,0,-1)]}updateMatrices(e,t=0){const i=this.camera,n=this.matrix,r=e.distance||i.far;r!==i.far&&(i.far=r,i.updateProjectionMatrix()),wi.setFromMatrixPosition(e.matrixWorld),i.position.copy(wi),Ti.copy(i.position),Ti.add(this._cubeDirections[t]),i.up.copy(this._cubeUps[t]),i.lookAt(Ti),i.updateMatrixWorld(),n.makeTranslation(-wi.x,-wi.y,-wi.z),Mi.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Mi)}}class PointLight extends Light{constructor(e,t,i=0,n=2){super(e,t),this.isPointLight=!0,this.type="PointLight",this.distance=i,this.decay=n,this.shadow=new PointLightShadow}get power(){return 4*this.intensity*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}}class DirectionalLightShadow extends LightShadow{constructor(){super(new OrthographicCamera(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class DirectionalLight extends Light{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(Object3D.DEFAULT_UP),this.updateMatrix(),this.target=new Object3D,this.shadow=new DirectionalLightShadow}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}class LoaderUtils{static decodeText(e){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(e);let t="";for(let i=0,n=e.length;i<n;i++)t+=String.fromCharCode(e[i]);try{return decodeURIComponent(escape(t))}catch(e){return t}}static extractUrlBase(e){const t=e.lastIndexOf("/");return-1===t?"./":e.slice(0,t+1)}static resolveURL(e,t){return"string"!=typeof e||""===e?"":(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}}class InstancedBufferGeometry extends BufferGeometry{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}toJSON(){const e=super.toJSON();return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}class BufferGeometryLoader extends Loader{constructor(e){super(e)}load(e,t,i,n){const r=this,s=new FileLoader(r.manager);s.setPath(r.path),s.setRequestHeader(r.requestHeader),s.setWithCredentials(r.withCredentials),s.load(e,(function(i){try{t(r.parse(JSON.parse(i)))}catch(t){n?n(t):console.error(t),r.manager.itemError(e)}}),i,n)}parse(e){const t={},i={};function getInterleavedBuffer(e,n){if(void 0!==t[n])return t[n];const r=e.interleavedBuffers[n],s=function getArrayBuffer(e,t){if(void 0!==i[t])return i[t];const n=e.arrayBuffers[t],r=new Uint32Array(n).buffer;return i[t]=r,r}(e,r.buffer),a=getTypedArray(r.type,s),o=new InterleavedBuffer(a,r.stride);return o.uuid=r.uuid,t[n]=o,o}const n=e.isInstancedBufferGeometry?new InstancedBufferGeometry:new BufferGeometry,r=e.data.index;if(void 0!==r){const e=getTypedArray(r.type,r.array);n.setIndex(new BufferAttribute(e,1))}const s=e.data.attributes;for(const t in s){const i=s[t];let r;if(i.isInterleavedBufferAttribute){const t=getInterleavedBuffer(e.data,i.data);r=new InterleavedBufferAttribute(t,i.itemSize,i.offset,i.normalized)}else{const e=getTypedArray(i.type,i.array);r=new(i.isInstancedBufferAttribute?InstancedBufferAttribute:BufferAttribute)(e,i.itemSize,i.normalized)}void 0!==i.name&&(r.name=i.name),void 0!==i.usage&&r.setUsage(i.usage),void 0!==i.updateRange&&(r.updateRange.offset=i.updateRange.offset,r.updateRange.count=i.updateRange.count),n.setAttribute(t,r)}const a=e.data.morphAttributes;if(a)for(const t in a){const i=a[t],r=[];for(let t=0,n=i.length;t<n;t++){const n=i[t];let s;if(n.isInterleavedBufferAttribute){const t=getInterleavedBuffer(e.data,n.data);s=new InterleavedBufferAttribute(t,n.itemSize,n.offset,n.normalized)}else{const e=getTypedArray(n.type,n.array);s=new BufferAttribute(e,n.itemSize,n.normalized)}void 0!==n.name&&(s.name=n.name),r.push(s)}n.morphAttributes[t]=r}e.data.morphTargetsRelative&&(n.morphTargetsRelative=!0);const o=e.data.groups||e.data.drawcalls||e.data.offsets;if(void 0!==o)for(let e=0,t=o.length;e!==t;++e){const t=o[e];n.addGroup(t.start,t.count,t.materialIndex)}const l=e.data.boundingSphere;if(void 0!==l){const e=new Vector3;void 0!==l.center&&e.fromArray(l.center),n.boundingSphere=new Sphere(e,l.radius)}return e.name&&(n.name=e.name),e.userData&&(n.userData=e.userData),n}}class ImageBitmapLoader extends Loader{constructor(e){super(e),this.isImageBitmapLoader=!0,"undefined"==typeof createImageBitmap&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),"undefined"==typeof fetch&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(e){return this.options=e,this}load(e,t,i,n){void 0===e&&(e=""),void 0!==this.path&&(e=this.path+e),e=this.manager.resolveURL(e);const r=this,s=vi.get(e);if(void 0!==s)return r.manager.itemStart(e),setTimeout((function(){t&&t(s),r.manager.itemEnd(e)}),0),s;const a={};a.credentials="anonymous"===this.crossOrigin?"same-origin":"include",a.headers=this.requestHeader,fetch(e,a).then((function(e){return e.blob()})).then((function(e){return createImageBitmap(e,Object.assign(r.options,{colorSpaceConversion:"none"}))})).then((function(i){vi.add(e,i),t&&t(i),r.manager.itemEnd(e)})).catch((function(t){n&&n(t),r.manager.itemError(e),r.manager.itemEnd(e)})),r.manager.itemStart(e)}}class Clock{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=now(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=now();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}function now(){return("undefined"==typeof performance?Date:performance).now()}class PropertyMixer{constructor(e,t,i){let n,r,s;switch(this.binding=e,this.valueSize=i,t){case"quaternion":n=this._slerp,r=this._slerpAdditive,s=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(6*i),this._workIndex=5;break;case"string":case"bool":n=this._select,r=this._select,s=this._setAdditiveIdentityOther,this.buffer=new Array(5*i);break;default:n=this._lerp,r=this._lerpAdditive,s=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(5*i)}this._mixBufferRegion=n,this._mixBufferRegionAdditive=r,this._setIdentity=s,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(e,t){const i=this.buffer,n=this.valueSize,r=e*n+n;let s=this.cumulativeWeight;if(0===s){for(let e=0;e!==n;++e)i[r+e]=i[e];s=t}else{s+=t;const e=t/s;this._mixBufferRegion(i,r,0,e,n)}this.cumulativeWeight=s}accumulateAdditive(e){const t=this.buffer,i=this.valueSize,n=i*this._addIndex;0===this.cumulativeWeightAdditive&&this._setIdentity(),this._mixBufferRegionAdditive(t,n,0,e,i),this.cumulativeWeightAdditive+=e}apply(e){const t=this.valueSize,i=this.buffer,n=e*t+t,r=this.cumulativeWeight,s=this.cumulativeWeightAdditive,a=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,r<1){const e=t*this._origIndex;this._mixBufferRegion(i,n,e,1-r,t)}s>0&&this._mixBufferRegionAdditive(i,n,this._addIndex*t,1,t);for(let e=t,r=t+t;e!==r;++e)if(i[e]!==i[e+t]){a.setValue(i,n);break}}saveOriginalState(){const e=this.binding,t=this.buffer,i=this.valueSize,n=i*this._origIndex;e.getValue(t,n);for(let e=i,r=n;e!==r;++e)t[e]=t[n+e%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=3*this.valueSize;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let i=e;i<t;i++)this.buffer[i]=0}_setAdditiveIdentityQuaternion(){this._setAdditiveIdentityNumeric(),this.buffer[this._addIndex*this.valueSize+3]=1}_setAdditiveIdentityOther(){const e=this._origIndex*this.valueSize,t=this._addIndex*this.valueSize;for(let i=0;i<this.valueSize;i++)this.buffer[t+i]=this.buffer[e+i]}_select(e,t,i,n,r){if(n>=.5)for(let n=0;n!==r;++n)e[t+n]=e[i+n]}_slerp(e,t,i,n){Quaternion$1.slerpFlat(e,t,e,t,e,i,n)}_slerpAdditive(e,t,i,n,r){const s=this._workIndex*r;Quaternion$1.multiplyQuaternionsFlat(e,s,e,t,e,i),Quaternion$1.slerpFlat(e,t,e,t,e,s,n)}_lerp(e,t,i,n,r){const s=1-n;for(let a=0;a!==r;++a){const r=t+a;e[r]=e[r]*s+e[i+a]*n}}_lerpAdditive(e,t,i,n,r){for(let s=0;s!==r;++s){const r=t+s;e[r]=e[r]+e[i+s]*n}}}const Ei=new RegExp("[\\[\\]\\.:\\/]","g"),Ci="[^"+"\\[\\]\\.:\\/".replace("\\.","")+"]",Ai=new RegExp("^"+/((?:WC+[\/:])*)/.source.replace("WC","[^\\[\\]\\.:\\/]")+/(WCOD+)?/.source.replace("WCOD",Ci)+/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC","[^\\[\\]\\.:\\/]")+/\.(WC+)(?:\[(.+)\])?/.source.replace("WC","[^\\[\\]\\.:\\/]")+"$"),Pi=["material","materials","bones","map"];class PropertyBinding{constructor(e,t,i){this.path=t,this.parsedPath=i||PropertyBinding.parseTrackName(t),this.node=PropertyBinding.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new PropertyBinding.Composite(e,t,i):new PropertyBinding(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(Ei,"")}static parseTrackName(e){const t=Ai.exec(e);if(null===t)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},n=i.nodeName&&i.nodeName.lastIndexOf(".");if(void 0!==n&&-1!==n){const e=i.nodeName.substring(n+1);-1!==Pi.indexOf(e)&&(i.nodeName=i.nodeName.substring(0,n),i.objectName=e)}if(null===i.propertyName||0===i.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(void 0===t||""===t||"."===t||-1===t||t===e.name||t===e.uuid)return e;if(e.skeleton){const i=e.skeleton.getBoneByName(t);if(void 0!==i)return i}if(e.children){const searchNodeSubtree=function(e){for(let i=0;i<e.length;i++){const n=e[i];if(n.name===t||n.uuid===t)return n;const r=searchNodeSubtree(n.children);if(r)return r}return null},i=searchNodeSubtree(e.children);if(i)return i}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(e,t){e[t]=this.targetObject[this.propertyName]}_getValue_array(e,t){const i=this.resolvedProperty;for(let n=0,r=i.length;n!==r;++n)e[t++]=i[n]}_getValue_arrayElement(e,t){e[t]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(e,t){this.resolvedProperty.toArray(e,t)}_setValue_direct(e,t){this.targetObject[this.propertyName]=e[t]}_setValue_direct_setNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(e,t){const i=this.resolvedProperty;for(let n=0,r=i.length;n!==r;++n)i[n]=e[t++]}_setValue_array_setNeedsUpdate(e,t){const i=this.resolvedProperty;for(let n=0,r=i.length;n!==r;++n)i[n]=e[t++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(e,t){const i=this.resolvedProperty;for(let n=0,r=i.length;n!==r;++n)i[n]=e[t++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(e,t){this.resolvedProperty[this.propertyIndex]=e[t]}_setValue_arrayElement_setNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(e,t){this.resolvedProperty.fromArray(e,t)}_setValue_fromArray_setNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(e,t){this.bind(),this.getValue(e,t)}_setValue_unbound(e,t){this.bind(),this.setValue(e,t)}bind(){let e=this.node;const t=this.parsedPath,i=t.objectName,n=t.propertyName;let r=t.propertyIndex;if(e||(e=PropertyBinding.findNode(this.rootNode,t.nodeName)||this.rootNode,this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!e)return void console.error("THREE.PropertyBinding: Trying to update node for track: "+this.path+" but it wasn't found.");if(i){let n=t.objectIndex;switch(i){case"materials":if(!e.material)return void console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);if(!e.material.materials)return void console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);e=e.material.materials;break;case"bones":if(!e.skeleton)return void console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);e=e.skeleton.bones;for(let t=0;t<e.length;t++)if(e[t].name===n){n=t;break}break;case"map":if("map"in e){e=e.map;break}if(!e.material)return void console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);if(!e.material.map)return void console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);e=e.material.map;break;default:if(void 0===e[i])return void console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);e=e[i]}if(void 0!==n){if(void 0===e[n])return void console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,e);e=e[n]}}const s=e[n];if(void 0===s){const i=t.nodeName;return void console.error("THREE.PropertyBinding: Trying to update property for track: "+i+"."+n+" but it wasn't found.",e)}let a=this.Versioning.None;this.targetObject=e,void 0!==e.needsUpdate?a=this.Versioning.NeedsUpdate:void 0!==e.matrixWorldNeedsUpdate&&(a=this.Versioning.MatrixWorldNeedsUpdate);let o=this.BindingType.Direct;if(void 0!==r){if("morphTargetInfluences"===n){if(!e.geometry)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);if(!e.geometry.morphAttributes)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);void 0!==e.morphTargetDictionary[r]&&(r=e.morphTargetDictionary[r])}o=this.BindingType.ArrayElement,this.resolvedProperty=s,this.propertyIndex=r}else void 0!==s.fromArray&&void 0!==s.toArray?(o=this.BindingType.HasFromToArray,this.resolvedProperty=s):Array.isArray(s)?(o=this.BindingType.EntireArray,this.resolvedProperty=s):this.propertyName=n;this.getValue=this.GetterByBindingType[o],this.setValue=this.SetterByBindingTypeAndVersioning[o][a]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}}PropertyBinding.Composite=class Composite{constructor(e,t,i){const n=i||PropertyBinding.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,n)}getValue(e,t){this.bind();const i=this._targetGroup.nCachedObjects_,n=this._bindings[i];void 0!==n&&n.getValue(e,t)}setValue(e,t){const i=this._bindings;for(let n=this._targetGroup.nCachedObjects_,r=i.length;n!==r;++n)i[n].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}},PropertyBinding.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},PropertyBinding.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},PropertyBinding.prototype.GetterByBindingType=[PropertyBinding.prototype._getValue_direct,PropertyBinding.prototype._getValue_array,PropertyBinding.prototype._getValue_arrayElement,PropertyBinding.prototype._getValue_toArray],PropertyBinding.prototype.SetterByBindingTypeAndVersioning=[[PropertyBinding.prototype._setValue_direct,PropertyBinding.prototype._setValue_direct_setNeedsUpdate,PropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[PropertyBinding.prototype._setValue_array,PropertyBinding.prototype._setValue_array_setNeedsUpdate,PropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate],[PropertyBinding.prototype._setValue_arrayElement,PropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,PropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[PropertyBinding.prototype._setValue_fromArray,PropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,PropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];class AnimationAction{constructor(e,t,i=null,n=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=i,this.blendMode=n;const r=t.tracks,s=r.length,a=new Array(s),o={endingStart:2400,endingEnd:2400};for(let e=0;e!==s;++e){const t=r[e].createInterpolant(null);a[e]=t,t.settings=o}this._interpolantSettings=o,this._interpolants=a,this._propertyBindings=new Array(s),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=2201,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,i){if(e.fadeOut(t),this.fadeIn(t),i){const i=this._clip.duration,n=e._clip.duration,r=n/i,s=i/n;e.warp(1,r,t),this.warp(s,1,t)}return this}crossFadeTo(e,t,i){return e.crossFadeFrom(this,t,i)}stopFading(){const e=this._weightInterpolant;return null!==e&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,i){const n=this._mixer,r=n.time,s=this.timeScale;let a=this._timeScaleInterpolant;null===a&&(a=n._lendControlInterpolant(),this._timeScaleInterpolant=a);const o=a.parameterPositions,l=a.sampleValues;return o[0]=r,o[1]=r+i,l[0]=e/s,l[1]=t/s,this}stopWarping(){const e=this._timeScaleInterpolant;return null!==e&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,i,n){if(!this.enabled)return void this._updateWeight(e);const r=this._startTime;if(null!==r){const n=(e-r)*i;n<0||0===i?t=0:(this._startTime=null,t=i*n)}t*=this._updateTimeScale(e);const s=this._updateTime(t),a=this._updateWeight(e);if(a>0){const e=this._interpolants,t=this._propertyBindings;if(2501===this.blendMode)for(let i=0,n=e.length;i!==n;++i)e[i].evaluate(s),t[i].accumulateAdditive(a);else for(let i=0,r=e.length;i!==r;++i)e[i].evaluate(s),t[i].accumulate(n,a)}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const i=this._weightInterpolant;if(null!==i){const n=i.evaluate(e)[0];t*=n,e>i.parameterPositions[1]&&(this.stopFading(),0===n&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const i=this._timeScaleInterpolant;if(null!==i){t*=i.evaluate(e)[0],e>i.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,i=this.loop;let n=this.time+e,r=this._loopCount;const s=2202===i;if(0===e)return-1===r?n:s&&1==(1&r)?t-n:n;if(2200===i){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(n>=t)n=t;else{if(!(n<0)){this.time=n;break e}n=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=n,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(-1===r&&(e>=0?(r=0,this._setEndings(!0,0===this.repetitions,s)):this._setEndings(0===this.repetitions,!0,s)),n>=t||n<0){const i=Math.floor(n/t);n-=t*i,r+=Math.abs(i);const a=this.repetitions-r;if(a<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,n=e>0?t:0,this.time=n,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(1===a){const t=e<0;this._setEndings(t,!t,s)}else this._setEndings(!1,!1,s);this._loopCount=r,this.time=n,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:i})}}else this.time=n;if(s&&1==(1&r))return t-n}return n}_setEndings(e,t,i){const n=this._interpolantSettings;i?(n.endingStart=2401,n.endingEnd=2401):(n.endingStart=e?this.zeroSlopeAtStart?2401:2400:2402,n.endingEnd=t?this.zeroSlopeAtEnd?2401:2400:2402)}_scheduleFading(e,t,i){const n=this._mixer,r=n.time;let s=this._weightInterpolant;null===s&&(s=n._lendControlInterpolant(),this._weightInterpolant=s);const a=s.parameterPositions,o=s.sampleValues;return a[0]=r,o[0]=t,a[1]=r+e,o[1]=i,this}}const Di=new Float32Array(1);class AnimationMixer extends EventDispatcher$1{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const i=e._localRoot||this._root,n=e._clip.tracks,r=n.length,s=e._propertyBindings,a=e._interpolants,o=i.uuid,l=this._bindingsByRootAndName;let c=l[o];void 0===c&&(c={},l[o]=c);for(let e=0;e!==r;++e){const r=n[e],l=r.name;let h=c[l];if(void 0!==h)++h.referenceCount,s[e]=h;else{if(h=s[e],void 0!==h){null===h._cacheIndex&&(++h.referenceCount,this._addInactiveBinding(h,o,l));continue}const n=t&&t._propertyBindings[e].binding.parsedPath;h=new PropertyMixer(PropertyBinding.create(i,l,n),r.ValueTypeName,r.getValueSize()),++h.referenceCount,this._addInactiveBinding(h,o,l),s[e]=h}a[e].resultBuffer=h.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(null===e._cacheIndex){const t=(e._localRoot||this._root).uuid,i=e._clip.uuid,n=this._actionsByClip[i];this._bindAction(e,n&&n.knownActions[0]),this._addInactiveAction(e,i,t)}const t=e._propertyBindings;for(let e=0,i=t.length;e!==i;++e){const i=t[e];0==i.useCount++&&(this._lendBinding(i),i.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let e=0,i=t.length;e!==i;++e){const i=t[e];0==--i.useCount&&(i.restoreOriginalState(),this._takeBackBinding(i))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){const t=e._cacheIndex;return null!==t&&t<this._nActiveActions}_addInactiveAction(e,t,i){const n=this._actions,r=this._actionsByClip;let s=r[t];if(void 0===s)s={knownActions:[e],actionByRoot:{}},e._byClipCacheIndex=0,r[t]=s;else{const t=s.knownActions;e._byClipCacheIndex=t.length,t.push(e)}e._cacheIndex=n.length,n.push(e),s.actionByRoot[i]=e}_removeInactiveAction(e){const t=this._actions,i=t[t.length-1],n=e._cacheIndex;i._cacheIndex=n,t[n]=i,t.pop(),e._cacheIndex=null;const r=e._clip.uuid,s=this._actionsByClip,a=s[r],o=a.knownActions,l=o[o.length-1],c=e._byClipCacheIndex;l._byClipCacheIndex=c,o[c]=l,o.pop(),e._byClipCacheIndex=null;delete a.actionByRoot[(e._localRoot||this._root).uuid],0===o.length&&delete s[r],this._removeInactiveBindingsForAction(e)}_removeInactiveBindingsForAction(e){const t=e._propertyBindings;for(let e=0,i=t.length;e!==i;++e){const i=t[e];0==--i.referenceCount&&this._removeInactiveBinding(i)}}_lendAction(e){const t=this._actions,i=e._cacheIndex,n=this._nActiveActions++,r=t[n];e._cacheIndex=n,t[n]=e,r._cacheIndex=i,t[i]=r}_takeBackAction(e){const t=this._actions,i=e._cacheIndex,n=--this._nActiveActions,r=t[n];e._cacheIndex=n,t[n]=e,r._cacheIndex=i,t[i]=r}_addInactiveBinding(e,t,i){const n=this._bindingsByRootAndName,r=this._bindings;let s=n[t];void 0===s&&(s={},n[t]=s),s[i]=e,e._cacheIndex=r.length,r.push(e)}_removeInactiveBinding(e){const t=this._bindings,i=e.binding,n=i.rootNode.uuid,r=i.path,s=this._bindingsByRootAndName,a=s[n],o=t[t.length-1],l=e._cacheIndex;o._cacheIndex=l,t[l]=o,t.pop(),delete a[r],0===Object.keys(a).length&&delete s[n]}_lendBinding(e){const t=this._bindings,i=e._cacheIndex,n=this._nActiveBindings++,r=t[n];e._cacheIndex=n,t[n]=e,r._cacheIndex=i,t[i]=r}_takeBackBinding(e){const t=this._bindings,i=e._cacheIndex,n=--this._nActiveBindings,r=t[n];e._cacheIndex=n,t[n]=e,r._cacheIndex=i,t[i]=r}_lendControlInterpolant(){const e=this._controlInterpolants,t=this._nActiveControlInterpolants++;let i=e[t];return void 0===i&&(i=new LinearInterpolant(new Float32Array(2),new Float32Array(2),1,Di),i.__cacheIndex=t,e[t]=i),i}_takeBackControlInterpolant(e){const t=this._controlInterpolants,i=e.__cacheIndex,n=--this._nActiveControlInterpolants,r=t[n];e.__cacheIndex=n,t[n]=e,r.__cacheIndex=i,t[i]=r}clipAction(e,t,i){const n=t||this._root,r=n.uuid;let s="string"==typeof e?AnimationClip.findByName(n,e):e;const a=null!==s?s.uuid:e,o=this._actionsByClip[a];let l=null;if(void 0===i&&(i=null!==s?s.blendMode:2500),void 0!==o){const e=o.actionByRoot[r];if(void 0!==e&&e.blendMode===i)return e;l=o.knownActions[0],null===s&&(s=l._clip)}if(null===s)return null;const c=new AnimationAction(this,s,t,i);return this._bindAction(c,l),this._addInactiveAction(c,a,r),c}existingAction(e,t){const i=t||this._root,n=i.uuid,r="string"==typeof e?AnimationClip.findByName(i,e):e,s=r?r.uuid:e,a=this._actionsByClip[s];return void 0!==a&&a.actionByRoot[n]||null}stopAllAction(){const e=this._actions;for(let t=this._nActiveActions-1;t>=0;--t)e[t].stop();return this}update(e){e*=this.timeScale;const t=this._actions,i=this._nActiveActions,n=this.time+=e,r=Math.sign(e),s=this._accuIndex^=1;for(let a=0;a!==i;++a){t[a]._update(n,e,r,s)}const a=this._bindings,o=this._nActiveBindings;for(let e=0;e!==o;++e)a[e].apply(s);return this}setTime(e){this.time=0;for(let e=0;e<this._actions.length;e++)this._actions[e].time=0;return this.update(e)}getRoot(){return this._root}uncacheClip(e){const t=this._actions,i=e.uuid,n=this._actionsByClip,r=n[i];if(void 0!==r){const e=r.knownActions;for(let i=0,n=e.length;i!==n;++i){const n=e[i];this._deactivateAction(n);const r=n._cacheIndex,s=t[t.length-1];n._cacheIndex=null,n._byClipCacheIndex=null,s._cacheIndex=r,t[r]=s,t.pop(),this._removeInactiveBindingsForAction(n)}delete n[i]}}uncacheRoot(e){const t=e.uuid,i=this._actionsByClip;for(const e in i){const n=i[e].actionByRoot[t];void 0!==n&&(this._deactivateAction(n),this._removeInactiveAction(n))}const n=this._bindingsByRootAndName[t];if(void 0!==n)for(const e in n){const t=n[e];t.restoreOriginalState(),this._removeInactiveBinding(t)}}uncacheAction(e,t){const i=this.existingAction(e,t);null!==i&&(this._deactivateAction(i),this._removeInactiveAction(i))}}class Raycaster{constructor(e,t,i=0,n=1/0){this.ray=new Ray(e,t),this.near=i,this.far=n,this.camera=null,this.layers=new Layers,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error("THREE.Raycaster: Unsupported camera type: "+t.type)}intersectObject(e,t=!0,i=[]){return intersectObject(e,this,i,t),i.sort(ascSort),i}intersectObjects(e,t=!0,i=[]){for(let n=0,r=e.length;n<r;n++)intersectObject(e[n],this,i,t);return i.sort(ascSort),i}}function ascSort(e,t){return e.distance-t.distance}function intersectObject(e,t,i,n){if(e.layers.test(t.layers)&&e.raycast(t,i),!0===n){const n=e.children;for(let e=0,r=n.length;e<r;e++)intersectObject(n[e],t,i,!0)}}const Li=_generateTables();function _generateTables(){const e=new ArrayBuffer(4),t=new Float32Array(e),i=new Uint32Array(e),n=new Uint32Array(512),r=new Uint32Array(512);for(let e=0;e<256;++e){const t=e-127;t<-27?(n[e]=0,n[256|e]=32768,r[e]=24,r[256|e]=24):t<-14?(n[e]=1024>>-t-14,n[256|e]=1024>>-t-14|32768,r[e]=-t-1,r[256|e]=-t-1):t<=15?(n[e]=t+15<<10,n[256|e]=t+15<<10|32768,r[e]=13,r[256|e]=13):t<128?(n[e]=31744,n[256|e]=64512,r[e]=24,r[256|e]=24):(n[e]=31744,n[256|e]=64512,r[e]=13,r[256|e]=13)}const s=new Uint32Array(2048),a=new Uint32Array(64),o=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,i=0;for(;0==(8388608&t);)t<<=1,i-=8388608;t&=-8388609,i+=947912704,s[e]=t|i}for(let e=1024;e<2048;++e)s[e]=939524096+(e-1024<<13);for(let e=1;e<31;++e)a[e]=e<<23;a[31]=1199570944,a[32]=2147483648;for(let e=33;e<63;++e)a[e]=2147483648+(e-32<<23);a[63]=3347054592;for(let e=1;e<64;++e)32!==e&&(o[e]=1024);return{floatView:t,uint32View:i,baseTable:n,shiftTable:r,mantissaTable:s,exponentTable:a,offsetTable:o}}var Ii=Object.freeze({__proto__:null,fromHalfFloat:function fromHalfFloat(e){const t=e>>10;return Li.uint32View[0]=Li.mantissaTable[Li.offsetTable[t]+(1023&e)]+Li.exponentTable[t],Li.floatView[0]},toHalfFloat:function toHalfFloat(e){Math.abs(e)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),e=clamp(e,-65504,65504),Li.floatView[0]=e;const t=Li.uint32View[0],i=t>>23&511;return Li.baseTable[i]+((8388607&t)>>Li.shiftTable[i])}});function toTrianglesDrawMode(e,t){if(0===t)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(2===t||1===t){let i=e.getIndex();if(null===i){const 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<n.count;e++)t.push(e);e.setIndex(t),i=e.getIndex()}const n=i.count-2,r=[];if(2===t)for(let e=1;e<=n;e++)r.push(i.getX(0)),r.push(i.getX(e)),r.push(i.getX(e+1));else for(let e=0;e<n;e++)e%2==0?(r.push(i.getX(e)),r.push(i.getX(e+1)),r.push(i.getX(e+2))):(r.push(i.getX(e+2)),r.push(i.getX(e+1)),r.push(i.getX(e)));r.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const s=e.clone();return s.setIndex(r),s.clearGroups(),s}return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e}"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:"149"}})),"undefined"!=typeof window&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__="149");class GLTFLoader extends Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register((function(e){return new GLTFMaterialsClearcoatExtension(e)})),this.register((function(e){return new GLTFTextureBasisUExtension(e)})),this.register((function(e){return new GLTFTextureWebPExtension(e)})),this.register((function(e){return new GLTFMaterialsSheenExtension(e)})),this.register((function(e){return new GLTFMaterialsTransmissionExtension(e)})),this.register((function(e){return new GLTFMaterialsVolumeExtension(e)})),this.register((function(e){return new GLTFMaterialsIorExtension(e)})),this.register((function(e){return new GLTFMaterialsEmissiveStrengthExtension(e)})),this.register((function(e){return new GLTFMaterialsSpecularExtension(e)})),this.register((function(e){return new GLTFMaterialsIridescenceExtension(e)})),this.register((function(e){return new GLTFLightsExtension(e)})),this.register((function(e){return new GLTFMeshoptCompression(e)})),this.register((function(e){return new GLTFMeshGpuInstancing(e)}))}load(e,t,i,n){const r=this;let s;s=""!==this.resourcePath?this.resourcePath:""!==this.path?this.path:LoaderUtils.extractUrlBase(e),this.manager.itemStart(e);const _onError=function(t){n?n(t):console.error(t),r.manager.itemError(e),r.manager.itemEnd(e)},a=new FileLoader(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,(function(i){try{r.parse(i,s,(function(i){t(i),r.manager.itemEnd(e)}),_onError)}catch(e){_onError(e)}}),i,_onError)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return-1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return-1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,i,n){let r;const s={},a={},o=new TextDecoder;if("string"==typeof e)r=JSON.parse(e);else if(e instanceof ArrayBuffer){if(o.decode(new Uint8Array(e,0,4))===Oi){try{s[Ri.KHR_BINARY_GLTF]=new GLTFBinaryExtension(e)}catch(e){return void(n&&n(e))}r=JSON.parse(s[Ri.KHR_BINARY_GLTF].content)}else r=JSON.parse(o.decode(e))}else r=e;if(void 0===r.asset||r.asset.version[0]<2)return void(n&&n(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const l=new GLTFParser(r,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){const t=this.pluginCallbacks[e](l);a[t.name]=t,s[t.name]=!0}if(r.extensionsUsed)for(let e=0;e<r.extensionsUsed.length;++e){const t=r.extensionsUsed[e],i=r.extensionsRequired||[];switch(t){case Ri.KHR_MATERIALS_UNLIT:s[t]=new GLTFMaterialsUnlitExtension;break;case Ri.KHR_DRACO_MESH_COMPRESSION:s[t]=new GLTFDracoMeshCompressionExtension(r,this.dracoLoader);break;case Ri.KHR_TEXTURE_TRANSFORM:s[t]=new GLTFTextureTransformExtension;break;case Ri.KHR_MESH_QUANTIZATION:s[t]=new GLTFMeshQuantizationExtension;break;default:i.indexOf(t)>=0&&void 0===a[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}l.setExtensions(s),l.setPlugins(a),l.parse(i,n)}parseAsync(e,t){const i=this;return new Promise((function(n,r){i.parse(e,t,n,r)}))}}function GLTFRegistry(){let e={};return{get:function(t){return e[t]},add:function(t,i){e[t]=i},remove:function(t){delete e[t]},removeAll:function(){e={}}}}const Ri={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_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_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_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class GLTFLightsExtension{constructor(e){this.parser=e,this.name=Ri.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let i=0,n=t.length;i<n;i++){const n=t[i];n.extensions&&n.extensions[this.name]&&void 0!==n.extensions[this.name].light&&e._addNodeRef(this.cache,n.extensions[this.name].light)}}_loadLight(e){const t=this.parser,i="light:"+e;let n=t.cache.get(i);if(n)return n;const r=t.json,s=((r.extensions&&r.extensions[this.name]||{}).lights||[])[e];let a;const o=new Color$1(16777215);void 0!==s.color&&o.fromArray(s.color);const l=void 0!==s.range?s.range:0;switch(s.type){case"directional":a=new DirectionalLight(o),a.target.position.set(0,0,-1),a.add(a.target);break;case"point":a=new PointLight(o),a.distance=l;break;case"spot":a=new SpotLight(o),a.distance=l,s.spot=s.spot||{},s.spot.innerConeAngle=void 0!==s.spot.innerConeAngle?s.spot.innerConeAngle:0,s.spot.outerConeAngle=void 0!==s.spot.outerConeAngle?s.spot.outerConeAngle:Math.PI/4,a.angle=s.spot.outerConeAngle,a.penumbra=1-s.spot.innerConeAngle/s.spot.outerConeAngle,a.target.position.set(0,0,-1),a.add(a.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+s.type)}return a.position.set(0,0,0),a.decay=2,assignExtrasToUserData(a,s),void 0!==s.intensity&&(a.intensity=s.intensity),a.name=t.createUniqueName(s.name||"light_"+e),n=Promise.resolve(a),t.cache.add(i,n),n}getDependency(e,t){if("light"===e)return this._loadLight(t)}createNodeAttachment(e){const t=this,i=this.parser,n=i.json.nodes[e],r=(n.extensions&&n.extensions[this.name]||{}).light;return void 0===r?null:this._loadLight(r).then((function(e){return i._getNodeRef(t.cache,r,e)}))}}class GLTFMaterialsUnlitExtension{constructor(){this.name=Ri.KHR_MATERIALS_UNLIT}getMaterialType(){return MeshBasicMaterial}extendParams(e,t,i){const n=[];e.color=new Color$1(1,1,1),e.opacity=1;const r=t.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){const t=r.baseColorFactor;e.color.fromArray(t),e.opacity=t[3]}void 0!==r.baseColorTexture&&n.push(i.assignTexture(e,"map",r.baseColorTexture,3001))}return Promise.all(n)}}class GLTFMaterialsEmissiveStrengthExtension{constructor(e){this.parser=e,this.name=Ri.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const i=this.parser.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=i.extensions[this.name].emissiveStrength;return void 0!==n&&(t.emissiveIntensity=n),Promise.resolve()}}class GLTFMaterialsClearcoatExtension{constructor(e){this.parser=e,this.name=Ri.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?MeshPhysicalMaterial:null}extendMaterialParams(e,t){const i=this.parser,n=i.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],s=n.extensions[this.name];if(void 0!==s.clearcoatFactor&&(t.clearcoat=s.clearcoatFactor),void 0!==s.clearcoatTexture&&r.push(i.assignTexture(t,"clearcoatMap",s.clearcoatTexture)),void 0!==s.clearcoatRoughnessFactor&&(t.clearcoatRoughness=s.clearcoatRoughnessFactor),void 0!==s.clearcoatRoughnessTexture&&r.push(i.assignTexture(t,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),void 0!==s.clearcoatNormalTexture&&(r.push(i.assignTexture(t,"clearcoatNormalMap",s.clearcoatNormalTexture)),void 0!==s.clearcoatNormalTexture.scale)){const e=s.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new Vector2(e,e)}return Promise.all(r)}}class GLTFMaterialsIridescenceExtension{constructor(e){this.parser=e,this.name=Ri.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?MeshPhysicalMaterial:null}extendMaterialParams(e,t){const i=this.parser,n=i.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],s=n.extensions[this.name];return void 0!==s.iridescenceFactor&&(t.iridescence=s.iridescenceFactor),void 0!==s.iridescenceTexture&&r.push(i.assignTexture(t,"iridescenceMap",s.iridescenceTexture)),void 0!==s.iridescenceIor&&(t.iridescenceIOR=s.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==s.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),void 0!==s.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),void 0!==s.iridescenceThicknessTexture&&r.push(i.assignTexture(t,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(r)}}class GLTFMaterialsSheenExtension{constructor(e){this.parser=e,this.name=Ri.KHR_MATERIALS_SHEEN}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?MeshPhysicalMaterial:null}extendMaterialParams(e,t){const i=this.parser,n=i.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[];t.sheenColor=new Color$1(0,0,0),t.sheenRoughness=0,t.sheen=1;const s=n.extensions[this.name];return void 0!==s.sheenColorFactor&&t.sheenColor.fromArray(s.sheenColorFactor),void 0!==s.sheenRoughnessFactor&&(t.sheenRoughness=s.sheenRoughnessFactor),void 0!==s.sheenColorTexture&&r.push(i.assignTexture(t,"sheenColorMap",s.sheenColorTexture,3001)),void 0!==s.sheenRoughnessTexture&&r.push(i.assignTexture(t,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(r)}}class GLTFMaterialsTransmissionExtension{constructor(e){this.parser=e,this.name=Ri.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?MeshPhysicalMaterial:null}extendMaterialParams(e,t){const i=this.parser,n=i.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],s=n.extensions[this.name];return void 0!==s.transmissionFactor&&(t.transmission=s.transmissionFactor),void 0!==s.transmissionTexture&&r.push(i.assignTexture(t,"transmissionMap",s.transmissionTexture)),Promise.all(r)}}class GLTFMaterialsVolumeExtension{constructor(e){this.parser=e,this.name=Ri.KHR_MATERIALS_VOLUME}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?MeshPhysicalMaterial:null}extendMaterialParams(e,t){const i=this.parser,n=i.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],s=n.extensions[this.name];t.thickness=void 0!==s.thicknessFactor?s.thicknessFactor:0,void 0!==s.thicknessTexture&&r.push(i.assignTexture(t,"thicknessMap",s.thicknessTexture)),t.attenuationDistance=s.attenuationDistance||1/0;const a=s.attenuationColor||[1,1,1];return t.attenuationColor=new Color$1(a[0],a[1],a[2]),Promise.all(r)}}class GLTFMaterialsIorExtension{constructor(e){this.parser=e,this.name=Ri.KHR_MATERIALS_IOR}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?MeshPhysicalMaterial:null}extendMaterialParams(e,t){const i=this.parser.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const n=i.extensions[this.name];return t.ior=void 0!==n.ior?n.ior:1.5,Promise.resolve()}}class GLTFMaterialsSpecularExtension{constructor(e){this.parser=e,this.name=Ri.KHR_MATERIALS_SPECULAR}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?MeshPhysicalMaterial:null}extendMaterialParams(e,t){const i=this.parser,n=i.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const r=[],s=n.extensions[this.name];t.specularIntensity=void 0!==s.specularFactor?s.specularFactor:1,void 0!==s.specularTexture&&r.push(i.assignTexture(t,"specularIntensityMap",s.specularTexture));const a=s.specularColorFactor||[1,1,1];return t.specularColor=new Color$1(a[0],a[1],a[2]),void 0!==s.specularColorTexture&&r.push(i.assignTexture(t,"specularColorMap",s.specularColorTexture,3001)),Promise.all(r)}}class GLTFTextureBasisUExtension{constructor(e){this.parser=e,this.name=Ri.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,i=t.json,n=i.textures[e];if(!n.extensions||!n.extensions[this.name])return null;const r=n.extensions[this.name],s=t.options.ktx2Loader;if(!s){if(i.extensionsRequired&&i.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,r.source,s)}}class GLTFTextureWebPExtension{constructor(e){this.parser=e,this.name=Ri.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,i=this.parser,n=i.json,r=n.textures[e];if(!r.extensions||!r.extensions[t])return null;const s=r.extensions[t],a=n.images[s.source];let o=i.textureLoader;if(a.uri){const e=i.options.manager.getHandler(a.uri);null!==e&&(o=e)}return this.detectSupport().then((function(r){if(r)return i.loadTextureImage(e,s.source,o);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return i.loadTexture(e)}))}detectSupport(){return this.isSupported||(this.isSupported=new Promise((function(e){const t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}}))),this.isSupported}}class GLTFMeshoptCompression{constructor(e){this.name=Ri.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){const e=i.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),r=this.parser.options.meshoptDecoder;if(!r||!r.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return n.then((function(t){const i=e.byteOffset||0,n=e.byteLength||0,s=e.count,a=e.byteStride,o=new Uint8Array(t,i,n);return r.decodeGltfBufferAsync?r.decodeGltfBufferAsync(s,a,o,e.mode,e.filter).then((function(e){return e.buffer})):r.ready.then((function(){const t=new ArrayBuffer(s*a);return r.decodeGltfBuffer(new Uint8Array(t),s,a,o,e.mode,e.filter),t}))}))}return null}}class GLTFMeshGpuInstancing{constructor(e){this.name=Ri.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||void 0===i.mesh)return null;const n=t.meshes[i.mesh];for(const e of n.primitives)if(e.mode!==Bi.TRIANGLES&&e.mode!==Bi.TRIANGLE_STRIP&&e.mode!==Bi.TRIANGLE_FAN&&void 0!==e.mode)return null;const r=i.extensions[this.name].attributes,s=[],a={};for(const e in r)s.push(this.parser.getDependency("accessor",r[e]).then((t=>(a[e]=t,a[e]))));return s.length<1?null:(s.push(this.parser.createNodeMesh(e)),Promise.all(s).then((e=>{const t=e.pop(),i=t.isGroup?t.children:[t],n=e[0].count,r=[];for(const e of i){const t=new Matrix4,i=new Vector3,s=new Quaternion$1,o=new Vector3(1,1,1),l=new InstancedMesh(e.geometry,e.material,n);for(let e=0;e<n;e++)a.TRANSLATION&&i.fromBufferAttribute(a.TRANSLATION,e),a.ROTATION&&s.fromBufferAttribute(a.ROTATION,e),a.SCALE&&o.fromBufferAttribute(a.SCALE,e),l.setMatrixAt(e,t.compose(i,s,o));for(const t in a)"TRANSLATION"!==t&&"ROTATION"!==t&&"SCALE"!==t&&e.geometry.setAttribute(t,a[t]);Object3D.prototype.copy.call(l,e),l.frustumCulled=!1,this.parser.assignFinalMaterial(l),r.push(l)}return t.isGroup?(t.clear(),t.add(...r),t):r[0]})))}}const Oi="glTF",Ni=1313821514,Fi=5130562;class GLTFBinaryExtension{constructor(e){this.name=Ri.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12),i=new TextDecoder;if(this.header={magic:i.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==Oi)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const n=this.header.length-12,r=new DataView(e,12);let s=0;for(;s<n;){const t=r.getUint32(s,!0);s+=4;const n=r.getUint32(s,!0);if(s+=4,n===Ni){const n=new Uint8Array(e,12+s,t);this.content=i.decode(n)}else if(n===Fi){const i=12+s;this.body=e.slice(i,i+t)}s+=t}if(null===this.content)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class GLTFDracoMeshCompressionExtension{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=Ri.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const i=this.json,n=this.dracoLoader,r=e.extensions[this.name].bufferView,s=e.extensions[this.name].attributes,a={},o={},l={};for(const e in s){const t=Hi[e]||e.toLowerCase();a[t]=s[e]}for(const t in e.attributes){const n=Hi[t]||t.toLowerCase();if(void 0!==s[t]){const r=i.accessors[e.attributes[t]],s=Ui[r.componentType];l[n]=s.name,o[n]=!0===r.normalized}}return t.getDependency("bufferView",r).then((function(e){return new Promise((function(t){n.decodeDracoFile(e,(function(e){for(const t in e.attributes){const i=e.attributes[t],n=o[t];void 0!==n&&(i.normalized=n)}t(e)}),a,l)}))}))}}class GLTFTextureTransformExtension{constructor(){this.name=Ri.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return void 0!==t.texCoord&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),void 0===t.offset&&void 0===t.rotation&&void 0===t.scale||(e=e.clone(),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class GLTFMeshQuantizationExtension{constructor(){this.name=Ri.KHR_MESH_QUANTIZATION}}class GLTFCubicSplineInterpolant extends Interpolant{constructor(e,t,i,n){super(e,t,i,n)}copySampleValue_(e){const t=this.resultBuffer,i=this.sampleValues,n=this.valueSize,r=e*n*3+n;for(let e=0;e!==n;e++)t[e]=i[r+e];return t}interpolate_(e,t,i,n){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,o=2*a,l=3*a,c=n-t,h=(i-t)/c,d=h*h,u=d*h,p=e*l,m=p-l,f=-2*u+3*d,g=u-d,v=1-f,x=g-d+h;for(let e=0;e!==a;e++){const t=s[m+e+a],i=s[m+e+o]*c,n=s[p+e+a],l=s[p+e]*c;r[e]=v*t+x*i+f*n+g*l}return r}}const zi=new Quaternion$1;class GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant{interpolate_(e,t,i,n){const r=super.interpolate_(e,t,i,n);return zi.fromArray(r).normalize().toArray(r),r}}const Bi={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},Ui={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Vi={9728:1003,9729:1006,9984:1004,9985:1007,9986:1005,9987:1008},ki={33071:1001,33648:1002,10497:1e3},Gi={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Hi={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Wi={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},ji={CUBICSPLINE:void 0,LINEAR:2301,STEP:2300},Xi="OPAQUE",qi="MASK",Yi="BLEND";function addUnknownExtensionsToUserData(e,t,i){for(const n in i.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=i.extensions[n])}function assignExtrasToUserData(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 updateMorphTargets(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let i=0,n=t.weights.length;i<n;i++)e.morphTargetInfluences[i]=t.weights[i];if(t.extras&&Array.isArray(t.extras.targetNames)){const i=t.extras.targetNames;if(e.morphTargetInfluences.length===i.length){e.morphTargetDictionary={};for(let t=0,n=i.length;t<n;t++)e.morphTargetDictionary[i[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function createPrimitiveKey(e){const t=e.extensions&&e.extensions[Ri.KHR_DRACO_MESH_COMPRESSION];let i;return i=t?"draco:"+t.bufferView+":"+t.indices+":"+createAttributesKey(t.attributes):e.indices+":"+createAttributesKey(e.attributes)+":"+e.mode,i}function createAttributesKey(e){let t="";const i=Object.keys(e).sort();for(let n=0,r=i.length;n<r;n++)t+=i[n]+":"+e[i[n]]+";";return t}function getNormalizedComponentScale(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}const Zi=new Matrix4;class GLTFParser{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new GLTFRegistry,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let i=!1,n=!1,r=-1;"undefined"!=typeof navigator&&(i=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),n=navigator.userAgent.indexOf("Firefox")>-1,r=n?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"undefined"==typeof createImageBitmap||i||n&&r<98?this.textureLoader=new TextureLoader(this.options.manager):this.textureLoader=new ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const i=this,n=this.json,r=this.extensions;this.cache.removeAll(),this._invokeAll((function(e){return e._markDefs&&e._markDefs()})),Promise.all(this._invokeAll((function(e){return e.beforeRoot&&e.beforeRoot()}))).then((function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])})).then((function(t){const s={scene:t[0][n.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:n.asset,parser:i,userData:{}};addUnknownExtensionsToUserData(r,s,n),assignExtrasToUserData(s,n),Promise.all(i._invokeAll((function(e){return e.afterRoot&&e.afterRoot(s)}))).then((function(){e(s)}))})).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let i=0,n=t.length;i<n;i++){const n=t[i].joints;for(let t=0,i=n.length;t<i;t++)e[n[t]].isBone=!0}for(let t=0,n=e.length;t<n;t++){const n=e[t];void 0!==n.mesh&&(this._addNodeRef(this.meshCache,n.mesh),void 0!==n.skin&&(i[n.mesh].isSkinnedMesh=!0)),void 0!==n.camera&&this._addNodeRef(this.cameraCache,n.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,i){if(e.refs[t]<=1)return i;const n=i.clone(),updateMappings=(e,t)=>{const i=this.associations.get(e);null!=i&&this.associations.set(t,i);for(const[i,n]of e.children.entries())updateMappings(n,t.children[i])};return updateMappings(i,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let i=0;i<t.length;i++){const n=e(t[i]);if(n)return n}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const i=[];for(let n=0;n<t.length;n++){const r=e(t[n]);r&&i.push(r)}return i}getDependency(e,t){const i=e+":"+t;let n=this.cache.get(i);if(!n){switch(e){case"scene":n=this.loadScene(t);break;case"node":n=this._invokeOne((function(e){return e.loadNode&&e.loadNode(t)}));break;case"mesh":n=this._invokeOne((function(e){return e.loadMesh&&e.loadMesh(t)}));break;case"accessor":n=this.loadAccessor(t);break;case"bufferView":n=this._invokeOne((function(e){return e.loadBufferView&&e.loadBufferView(t)}));break;case"buffer":n=this.loadBuffer(t);break;case"material":n=this._invokeOne((function(e){return e.loadMaterial&&e.loadMaterial(t)}));break;case"texture":n=this._invokeOne((function(e){return e.loadTexture&&e.loadTexture(t)}));break;case"skin":n=this.loadSkin(t);break;case"animation":n=this._invokeOne((function(e){return e.loadAnimation&&e.loadAnimation(t)}));break;case"camera":n=this.loadCamera(t);break;default:if(n=this._invokeOne((function(i){return i!=this&&i.getDependency&&i.getDependency(e,t)})),!n)throw new Error("Unknown type: "+e)}this.cache.add(i,n)}return n}getDependencies(e){let t=this.cache.get(e);if(!t){const i=this,n=this.json[e+("mesh"===e?"es":"s")]||[];t=Promise.all(n.map((function(t,n){return i.getDependency(e,n)}))),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],i=this.fileLoader;if(t.type&&"arraybuffer"!==t.type)throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(void 0===t.uri&&0===e)return Promise.resolve(this.extensions[Ri.KHR_BINARY_GLTF].body);const n=this.options;return new Promise((function(e,r){i.load(LoaderUtils.resolveURL(t.uri,n.path),e,void 0,(function(){r(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))}))}))}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then((function(e){const i=t.byteLength||0,n=t.byteOffset||0;return e.slice(n,n+i)}))}loadAccessor(e){const t=this,i=this.json,n=this.json.accessors[e];if(void 0===n.bufferView&&void 0===n.sparse){const e=Gi[n.type],t=Ui[n.componentType],i=!0===n.normalized,r=new t(n.count*e);return Promise.resolve(new BufferAttribute(r,e,i))}const r=[];return void 0!==n.bufferView?r.push(this.getDependency("bufferView",n.bufferView)):r.push(null),void 0!==n.sparse&&(r.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),r.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(r).then((function(e){const r=e[0],s=Gi[n.type],a=Ui[n.componentType],o=a.BYTES_PER_ELEMENT,l=o*s,c=n.byteOffset||0,h=void 0!==n.bufferView?i.bufferViews[n.bufferView].byteStride:void 0,d=!0===n.normalized;let u,p;if(h&&h!==l){const e=Math.floor(c/h),i="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+e+":"+n.count;let l=t.cache.get(i);l||(u=new a(r,e*h,n.count*h/o),l=new InterleavedBuffer(u,h/o),t.cache.add(i,l)),p=new InterleavedBufferAttribute(l,s,c%h/o,d)}else u=null===r?new a(n.count*s):new a(r,c,n.count*s),p=new BufferAttribute(u,s,d);if(void 0!==n.sparse){const t=Gi.SCALAR,i=Ui[n.sparse.indices.componentType],o=n.sparse.indices.byteOffset||0,l=n.sparse.values.byteOffset||0,c=new i(e[1],o,n.sparse.count*t),h=new a(e[2],l,n.sparse.count*s);null!==r&&(p=new BufferAttribute(p.array.slice(),p.itemSize,p.normalized));for(let e=0,t=c.length;e<t;e++){const t=c[e];if(p.setX(t,h[e*s]),s>=2&&p.setY(t,h[e*s+1]),s>=3&&p.setZ(t,h[e*s+2]),s>=4&&p.setW(t,h[e*s+3]),s>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return p}))}loadTexture(e){const t=this.json,i=this.options,n=t.textures[e].source,r=t.images[n];let s=this.textureLoader;if(r.uri){const e=i.manager.getHandler(r.uri);null!==e&&(s=e)}return this.loadTextureImage(e,n,s)}loadTextureImage(e,t,i){const n=this,r=this.json,s=r.textures[e],a=r.images[t],o=(a.uri||a.bufferView)+":"+s.sampler;if(this.textureCache[o])return this.textureCache[o];const l=this.loadImageSource(t,i).then((function(t){t.flipY=!1,t.name=s.name||a.name||"";const i=(r.samplers||{})[s.sampler]||{};return t.magFilter=Vi[i.magFilter]||1006,t.minFilter=Vi[i.minFilter]||1008,t.wrapS=ki[i.wrapS]||1e3,t.wrapT=ki[i.wrapT]||1e3,n.associations.set(t,{textures:e}),t})).catch((function(){return null}));return this.textureCache[o]=l,l}loadImageSource(e,t){const i=this,n=this.json,r=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then((e=>e.clone()));const s=n.images[e],a=self.URL||self.webkitURL;let o=s.uri||"",l=!1;if(void 0!==s.bufferView)o=i.getDependency("bufferView",s.bufferView).then((function(e){l=!0;const t=new Blob([e],{type:s.mimeType});return o=a.createObjectURL(t),o}));else if(void 0===s.uri)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const c=Promise.resolve(o).then((function(e){return new Promise((function(i,n){let s=i;!0===t.isImageBitmapLoader&&(s=function(e){const t=new Texture(e);t.needsUpdate=!0,i(t)}),t.load(LoaderUtils.resolveURL(e,r.path),s,void 0,n)}))})).then((function(e){return!0===l&&a.revokeObjectURL(o),e.userData.mimeType=s.mimeType||function getImageURIMimeType(e){return e.search(/\.jpe?g($|\?)/i)>0||0===e.search(/^data\:image\/jpeg/)?"image/jpeg":e.search(/\.webp($|\?)/i)>0||0===e.search(/^data\:image\/webp/)?"image/webp":"image/png"}(s.uri),e})).catch((function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",o),e}));return this.sourceCache[e]=c,c}assignTexture(e,t,i,n){const r=this;return this.getDependency("texture",i.index).then((function(s){if(!s)return null;if(void 0===i.texCoord||0==i.texCoord||"aoMap"===t&&1==i.texCoord||console.warn("THREE.GLTFLoader: Custom UV set "+i.texCoord+" for texture "+t+" not yet supported."),r.extensions[Ri.KHR_TEXTURE_TRANSFORM]){const e=void 0!==i.extensions?i.extensions[Ri.KHR_TEXTURE_TRANSFORM]:void 0;if(e){const t=r.associations.get(s);s=r.extensions[Ri.KHR_TEXTURE_TRANSFORM].extendTexture(s,e),r.associations.set(s,t)}}return void 0!==n&&(s.encoding=n),e[t]=s,s}))}assignFinalMaterial(e){const t=e.geometry;let i=e.material;const n=void 0===t.attributes.tangent,r=void 0!==t.attributes.color,s=void 0===t.attributes.normal;if(e.isPoints){const e="PointsMaterial:"+i.uuid;let t=this.cache.get(e);t||(t=new PointsMaterial,Material.prototype.copy.call(t,i),t.color.copy(i.color),t.map=i.map,t.sizeAttenuation=!1,this.cache.add(e,t)),i=t}else if(e.isLine){const e="LineBasicMaterial:"+i.uuid;let t=this.cache.get(e);t||(t=new LineBasicMaterial,Material.prototype.copy.call(t,i),t.color.copy(i.color),this.cache.add(e,t)),i=t}if(n||r||s){let e="ClonedMaterial:"+i.uuid+":";n&&(e+="derivative-tangents:"),r&&(e+="vertex-colors:"),s&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=i.clone(),r&&(t.vertexColors=!0),s&&(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(i))),i=t}i.aoMap&&void 0===t.attributes.uv2&&void 0!==t.attributes.uv&&t.setAttribute("uv2",t.attributes.uv),e.material=i}getMaterialType(){return MeshStandardMaterial}loadMaterial(e){const t=this,i=this.json,n=this.extensions,r=i.materials[e];let s;const a={},o=[];if((r.extensions||{})[Ri.KHR_MATERIALS_UNLIT]){const e=n[Ri.KHR_MATERIALS_UNLIT];s=e.getMaterialType(),o.push(e.extendParams(a,r,t))}else{const i=r.pbrMetallicRoughness||{};if(a.color=new Color$1(1,1,1),a.opacity=1,Array.isArray(i.baseColorFactor)){const e=i.baseColorFactor;a.color.fromArray(e),a.opacity=e[3]}void 0!==i.baseColorTexture&&o.push(t.assignTexture(a,"map",i.baseColorTexture,3001)),a.metalness=void 0!==i.metallicFactor?i.metallicFactor:1,a.roughness=void 0!==i.roughnessFactor?i.roughnessFactor:1,void 0!==i.metallicRoughnessTexture&&(o.push(t.assignTexture(a,"metalnessMap",i.metallicRoughnessTexture)),o.push(t.assignTexture(a,"roughnessMap",i.metallicRoughnessTexture))),s=this._invokeOne((function(t){return t.getMaterialType&&t.getMaterialType(e)})),o.push(Promise.all(this._invokeAll((function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,a)}))))}!0===r.doubleSided&&(a.side=2);const l=r.alphaMode||Xi;if(l===Yi?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,l===qi&&(a.alphaTest=void 0!==r.alphaCutoff?r.alphaCutoff:.5)),void 0!==r.normalTexture&&s!==MeshBasicMaterial&&(o.push(t.assignTexture(a,"normalMap",r.normalTexture)),a.normalScale=new Vector2(1,1),void 0!==r.normalTexture.scale)){const e=r.normalTexture.scale;a.normalScale.set(e,e)}return void 0!==r.occlusionTexture&&s!==MeshBasicMaterial&&(o.push(t.assignTexture(a,"aoMap",r.occlusionTexture)),void 0!==r.occlusionTexture.strength&&(a.aoMapIntensity=r.occlusionTexture.strength)),void 0!==r.emissiveFactor&&s!==MeshBasicMaterial&&(a.emissive=(new Color$1).fromArray(r.emissiveFactor)),void 0!==r.emissiveTexture&&s!==MeshBasicMaterial&&o.push(t.assignTexture(a,"emissiveMap",r.emissiveTexture,3001)),Promise.all(o).then((function(){const i=new s(a);return r.name&&(i.name=r.name),assignExtrasToUserData(i,r),t.associations.set(i,{materials:e}),r.extensions&&addUnknownExtensionsToUserData(n,i,r),i}))}createUniqueName(e){const t=PropertyBinding.sanitizeNodeName(e||"");let i=t;for(let e=1;this.nodeNamesUsed[i];++e)i=t+"_"+e;return this.nodeNamesUsed[i]=!0,i}loadGeometries(e){const t=this,i=this.extensions,n=this.primitiveCache;function createDracoPrimitive(e){return i[Ri.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then((function(i){return addPrimitiveAttributes(i,e,t)}))}const r=[];for(let i=0,s=e.length;i<s;i++){const s=e[i],a=createPrimitiveKey(s),o=n[a];if(o)r.push(o.promise);else{let e;e=s.extensions&&s.extensions[Ri.KHR_DRACO_MESH_COMPRESSION]?createDracoPrimitive(s):addPrimitiveAttributes(new BufferGeometry,s,t),n[a]={primitive:s,promise:e},r.push(e)}}return Promise.all(r)}loadMesh(e){const t=this,i=this.json,n=this.extensions,r=i.meshes[e],s=r.primitives,a=[];for(let e=0,t=s.length;e<t;e++){const t=void 0===s[e].material?(void 0===(o=this.cache).DefaultMaterial&&(o.DefaultMaterial=new MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:0})),o.DefaultMaterial):this.getDependency("material",s[e].material);a.push(t)}var o;return a.push(t.loadGeometries(s)),Promise.all(a).then((function(i){const a=i.slice(0,i.length-1),o=i[i.length-1],l=[];for(let i=0,c=o.length;i<c;i++){const c=o[i],h=s[i];let d;const u=a[i];if(h.mode===Bi.TRIANGLES||h.mode===Bi.TRIANGLE_STRIP||h.mode===Bi.TRIANGLE_FAN||void 0===h.mode)d=!0===r.isSkinnedMesh?new SkinnedMesh(c,u):new Mesh(c,u),!0!==d.isSkinnedMesh||d.geometry.attributes.skinWeight.normalized||d.normalizeSkinWeights(),h.mode===Bi.TRIANGLE_STRIP?d.geometry=toTrianglesDrawMode(d.geometry,1):h.mode===Bi.TRIANGLE_FAN&&(d.geometry=toTrianglesDrawMode(d.geometry,2));else if(h.mode===Bi.LINES)d=new LineSegments(c,u);else if(h.mode===Bi.LINE_STRIP)d=new Line(c,u);else if(h.mode===Bi.LINE_LOOP)d=new LineLoop(c,u);else{if(h.mode!==Bi.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+h.mode);d=new Points(c,u)}Object.keys(d.geometry.morphAttributes).length>0&&updateMorphTargets(d,r),d.name=t.createUniqueName(r.name||"mesh_"+e),assignExtrasToUserData(d,r),h.extensions&&addUnknownExtensionsToUserData(n,d,h),t.assignFinalMaterial(d),l.push(d)}for(let i=0,n=l.length;i<n;i++)t.associations.set(l[i],{meshes:e,primitives:i});if(1===l.length)return l[0];const c=new Group;t.associations.set(c,{meshes:e});for(let e=0,t=l.length;e<t;e++)c.add(l[e]);return c}))}loadCamera(e){let t;const i=this.json.cameras[e],n=i[i.type];if(n)return"perspective"===i.type?t=new PerspectiveCamera(d.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):"orthographic"===i.type&&(t=new OrthographicCamera(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),i.name&&(t.name=this.createUniqueName(i.name)),assignExtrasToUserData(t,i),Promise.resolve(t);console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){const t=this.json.skins[e],i=[];for(let e=0,n=t.joints.length;e<n;e++)i.push(this.getDependency("node",t.joints[e]));return void 0!==t.inverseBindMatrices?i.push(this.getDependency("accessor",t.inverseBindMatrices)):i.push(null),Promise.all(i).then((function(e){const i=e.pop(),n=e,r=[],s=[];for(let e=0,a=n.length;e<a;e++){const a=n[e];if(a){r.push(a);const t=new Matrix4;null!==i&&t.fromArray(i.array,16*e),s.push(t)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[e])}return new Skeleton(r,s)}))}loadAnimation(e){const t=this.json.animations[e],i=[],n=[],r=[],s=[],a=[];for(let e=0,o=t.channels.length;e<o;e++){const o=t.channels[e],l=t.samplers[o.sampler],c=o.target,h=c.node,d=void 0!==t.parameters?t.parameters[l.input]:l.input,u=void 0!==t.parameters?t.parameters[l.output]:l.output;i.push(this.getDependency("node",h)),n.push(this.getDependency("accessor",d)),r.push(this.getDependency("accessor",u)),s.push(l),a.push(c)}return Promise.all([Promise.all(i),Promise.all(n),Promise.all(r),Promise.all(s),Promise.all(a)]).then((function(i){const n=i[0],r=i[1],s=i[2],a=i[3],o=i[4],l=[];for(let e=0,t=n.length;e<t;e++){const t=n[e],i=r[e],c=s[e],h=a[e],d=o[e];if(void 0===t)continue;let u;switch(t.updateMatrix(),Wi[d.path]){case Wi.weights:u=NumberKeyframeTrack;break;case Wi.rotation:u=QuaternionKeyframeTrack;break;default:u=VectorKeyframeTrack}const p=t.name?t.name:t.uuid,m=void 0!==h.interpolation?ji[h.interpolation]:2301,f=[];Wi[d.path]===Wi.weights?t.traverse((function(e){e.morphTargetInfluences&&f.push(e.name?e.name:e.uuid)})):f.push(p);let g=c.array;if(c.normalized){const e=getNormalizedComponentScale(g.constructor),t=new Float32Array(g.length);for(let i=0,n=g.length;i<n;i++)t[i]=g[i]*e;g=t}for(let e=0,t=f.length;e<t;e++){const t=new u(f[e]+"."+Wi[d.path],i.array,g,m);"CUBICSPLINE"===h.interpolation&&(t.createInterpolant=function InterpolantFactoryMethodGLTFCubicSpline(e){return new(this instanceof QuaternionKeyframeTrack?GLTFCubicSplineQuaternionInterpolant:GLTFCubicSplineInterpolant)(this.times,this.values,this.getValueSize()/3,e)},t.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),l.push(t)}}const c=t.name?t.name:"animation_"+e;return new AnimationClip(c,void 0,l)}))}createNodeMesh(e){const t=this.json,i=this,n=t.nodes[e];return void 0===n.mesh?null:i.getDependency("mesh",n.mesh).then((function(e){const t=i._getNodeRef(i.meshCache,n.mesh,e);return void 0!==n.weights&&t.traverse((function(e){if(e.isMesh)for(let t=0,i=n.weights.length;t<i;t++)e.morphTargetInfluences[t]=n.weights[t]})),t}))}loadNode(e){const t=this.json,i=this.extensions,n=this,r=t.nodes[e],s=r.name?n.createUniqueName(r.name):"";return function(){const t=[],i=n._invokeOne((function(t){return t.createNodeMesh&&t.createNodeMesh(e)}));i&&t.push(i),void 0!==r.camera&&t.push(n.getDependency("camera",r.camera).then((function(e){return n._getNodeRef(n.cameraCache,r.camera,e)}))),n._invokeAll((function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)})).forEach((function(e){t.push(e)}));const s=[],a=r.children||[];for(let e=0,t=a.length;e<t;e++)s.push(n.getDependency("node",a[e]));const o=void 0===r.skin?Promise.resolve(null):n.getDependency("skin",r.skin);return Promise.all([Promise.all(t),Promise.all(s),o])}().then((function(t){const a=t[0],o=t[1],l=t[2];let c;if(c=!0===r.isBone?new Bone:a.length>1?new Group:1===a.length?a[0]:new Object3D,c!==a[0])for(let e=0,t=a.length;e<t;e++)c.add(a[e]);if(r.name&&(c.userData.name=r.name,c.name=s),assignExtrasToUserData(c,r),r.extensions&&addUnknownExtensionsToUserData(i,c,r),void 0!==r.matrix){const e=new Matrix4;e.fromArray(r.matrix),c.applyMatrix4(e)}else void 0!==r.translation&&c.position.fromArray(r.translation),void 0!==r.rotation&&c.quaternion.fromArray(r.rotation),void 0!==r.scale&&c.scale.fromArray(r.scale);n.associations.has(c)||n.associations.set(c,{}),n.associations.get(c).nodes=e,null!==l&&c.traverse((function(e){e.isSkinnedMesh&&e.bind(l,Zi)}));for(let e=0,t=o.length;e<t;e++)c.add(o[e]);return c}))}loadScene(e){const t=this.extensions,i=this.json.scenes[e],n=this,r=new Group;i.name&&(r.name=n.createUniqueName(i.name)),assignExtrasToUserData(r,i),i.extensions&&addUnknownExtensionsToUserData(t,r,i);const s=i.nodes||[],a=[];for(let e=0,t=s.length;e<t;e++)a.push(n.getDependency("node",s[e]));return Promise.all(a).then((function(e){for(let t=0,i=e.length;t<i;t++)r.add(e[t]);return n.associations=(e=>{const t=new Map;for(const[e,i]of n.associations)(e instanceof Material||e instanceof Texture)&&t.set(e,i);return e.traverse((e=>{const i=n.associations.get(e);null!=i&&t.set(e,i)})),t})(r),r}))}}function addPrimitiveAttributes(e,t,i){const n=t.attributes,r=[];function assignAttributeAccessor(t,n){return i.getDependency("accessor",t).then((function(t){e.setAttribute(n,t)}))}for(const t in n){const i=Hi[t]||t.toLowerCase();i in e.attributes||r.push(assignAttributeAccessor(n[t],i))}if(void 0!==t.indices&&!e.index){const n=i.getDependency("accessor",t.indices).then((function(t){e.setIndex(t)}));r.push(n)}return assignExtrasToUserData(e,t),function computeBounds(e,t,i){const n=t.attributes,r=new Box3;if(void 0===n.POSITION)return;{const e=i.json.accessors[n.POSITION],t=e.min,s=e.max;if(void 0===t||void 0===s)return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(r.set(new Vector3(t[0],t[1],t[2]),new Vector3(s[0],s[1],s[2])),e.normalized){const t=getNormalizedComponentScale(Ui[e.componentType]);r.min.multiplyScalar(t),r.max.multiplyScalar(t)}}const s=t.targets;if(void 0!==s){const e=new Vector3,t=new Vector3;for(let n=0,r=s.length;n<r;n++){const r=s[n];if(void 0!==r.POSITION){const n=i.json.accessors[r.POSITION],s=n.min,a=n.max;if(void 0!==s&&void 0!==a){if(t.setX(Math.max(Math.abs(s[0]),Math.abs(a[0]))),t.setY(Math.max(Math.abs(s[1]),Math.abs(a[1]))),t.setZ(Math.max(Math.abs(s[2]),Math.abs(a[2]))),n.normalized){const e=getNormalizedComponentScale(Ui[n.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}r.expandByVector(e)}e.boundingBox=r;const a=new Sphere;r.getCenter(a.center),a.radius=r.min.distanceTo(r.max)/2,e.boundingSphere=a}(e,t,i),Promise.all(r).then((function(){return void 0!==t.targets?function addMorphTargets(e,t,i){let n=!1,r=!1,s=!1;for(let e=0,i=t.length;e<i;e++){const i=t[e];if(void 0!==i.POSITION&&(n=!0),void 0!==i.NORMAL&&(r=!0),void 0!==i.COLOR_0&&(s=!0),n&&r&&s)break}if(!n&&!r&&!s)return Promise.resolve(e);const a=[],o=[],l=[];for(let c=0,h=t.length;c<h;c++){const h=t[c];if(n){const t=void 0!==h.POSITION?i.getDependency("accessor",h.POSITION):e.attributes.position;a.push(t)}if(r){const t=void 0!==h.NORMAL?i.getDependency("accessor",h.NORMAL):e.attributes.normal;o.push(t)}if(s){const t=void 0!==h.COLOR_0?i.getDependency("accessor",h.COLOR_0):e.attributes.color;l.push(t)}}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(l)]).then((function(t){const i=t[0],a=t[1],o=t[2];return n&&(e.morphAttributes.position=i),r&&(e.morphAttributes.normal=a),s&&(e.morphAttributes.color=o),e.morphTargetsRelative=!0,e}))}(e,t.targets,i):e}))}class DiceFactory{constructor(){this.geometries={},this.baseScale=50,this.preferredSystem="standard",this.preferredColorset="custom",this.cache_hits=0,this.cache_misses=0,this.realisticLighting=!0,this.loaderGLTF=new GLTFLoader,this.fontLoadingPromises=[],this.baseTextureCache={},this.systems={standard:{id:"standard",name:game.i18n.localize("DICESONICE.System.Standard"),dice:[],mode:"default"},spectrum:{id:"spectrum",name:game.i18n.localize("DICESONICE.System.SpectrumDice"),dice:[],mode:"default"},foundry_vtt:{id:"foundry_vtt",name:game.i18n.localize("DICESONICE.System.FoundryVTT"),dice:[],mode:"default"},dot:{id:"dot",name:game.i18n.localize("DICESONICE.System.Dot"),dice:[],mode:"default"},dot_b:{id:"dot_b",name:game.i18n.localize("DICESONICE.System.DotBlack"),dice:[],mode:"default"}},e.forEach((e=>{this.register(e)})),t.forEach((e=>{this.addDicePreset(e)}));for(let e in CONFIG.Dice.terms){let t=CONFIG.Dice.terms[e];if(![Coin,FateDie,Die].includes(t)){let e=new t({});[2,3,4,6,8,10,12,14,16,20,24,30].includes(e.faces)&&this.internalAddDicePreset(e)}}}initializeMaterials(){this.realisticLighting?this.material_options={plastic:{type:"standard",options:{metalness:0,roughness:.6,envMapIntensity:1},scopedOptions:{roughnessMap:"roughnessMap_fingerprint",envMap:!0}},metal:{type:"standard",options:{roughness:.6,metalness:1},scopedOptions:{roughnessMap:"roughnessMap_metal",envMap:!0}},wood:{type:"standard",options:{roughness:1,metalness:0},scopedOptions:{roughnessMap:"roughnessMap_wood",envMap:!0}},glass:{type:"standard",options:{roughness:.3,metalness:0},scopedOptions:{roughnessMap:"roughnessMap_fingerprint",envMap:!0}},chrome:{type:"standard",options:{metalness:1,roughness:.1},scopedOptions:{roughnessMap:"roughnessMap_fingerprint",envMap:!0}},pristine:{type:"physical",options:{metalness:0,roughness:.8,envMapIntensity:1,clearcoat:1,clearcoatRoughness:.9},scopedOptions:{envMap:!0}},iridescent:{type:"physical",options:{metalness:1,roughness:.2,iridescence:1,iridescenceIOR:1.8,iridescenceThicknessRange:[485,515]},scopedOptions:{envMap:!0}},stone:{type:"standard",options:{metalness:0,roughness:1},scopedOptions:{roughnessMap:"roughnessMap_stone",envMap:!0}}}:this.material_options={plastic:{type:"phong",options:{specular:16777215,color:11908533,shininess:3,flatShading:!0}},metal:{type:"standard",options:{color:14540253,emissive:1118481,roughness:.6,metalness:1,envMapIntensity:2},scopedOptions:{envMap:!0}},wood:{type:"phong",options:{specular:16777215,color:11908533,shininess:1,flatShading:!0}},glass:{type:"phong",options:{specular:16777215,color:11908533,shininess:.3,reflectivity:.1,combine:1},scopedOptions:{envMap:!0}},chrome:{type:"phong",options:{specular:16777215,color:11908533,shininess:1,reflectivity:.7,combine:2},scopedOptions:{envMap:!0}},pristine:{type:"phong",options:{specular:16777215,color:11908533,shininess:3,flatShading:!0}},iridescent:{type:"standard",options:{color:14540253,emissive:1118481,roughness:.2,metalness:1,envMapIntensity:2,userData:{iridescent:!0}},scopedOptions:{envMap:!0}},stone:{type:"lambert",options:{color:11908533,reflectivity:.01},scopedOptions:{envMap:!0}}}}setScale(e){this.baseScale=e}setQualitySettings(e){this.realisticLighting=e.bumpMapping,this.aa=e.antialiasing,this.glow=e.glow,this.useHighDPI=e.useHighDPI,this.shadows="none"!=e.shadowQuality,this.shadowQuality=e.shadowQuality}register(e){let t=this.systems.standard.dice.findIndex((t=>t.type==e.type));t>=0&&(this.systems.standard.dice[t].internalAdd||e.internalAdd)&&(this.systems.standard.dice[t]=e,e.modelFile?e.loadModel(this.loaderGLTF):e.loadTextures()),"standard"==e.system?t<0&&this.systems[e.system].dice.push(e):(t<0&&(this.systems.standard.dice.push(e),e.modelFile?e.loadModel(this.loaderGLTF):e.loadTextures()),this.systems[e.system].dice.push(e))}async preloadPresets(e=!0,t=null,i={}){let n=[];const preloadPresetsByUser=e=>{let t=e.getFlag("dice-so-nice","appearance")?duplicate(e.getFlag("dice-so-nice","appearance")):null;if(t||(t={global:{}},"standard"!=this.preferredSystem&&(t.global.system=this.preferredSystem),"custom"!=this.preferredColorset&&(t.global.colorset=this.preferredColorset)),this.systems.standard.dice.forEach((e=>{n.push(e)})),mergeObject(t,i,{performDeletions:!0}),!isEmpty(t))for(let e in t)t.hasOwnProperty(e)&&("global"!=e?n.push(this.getPresetBySystem(e,t[e].system)):this.systems.hasOwnProperty(t[e].system)&&this.systems[t[e].system].dice.forEach((e=>{n.push(e)})))};t?preloadPresetsByUser(game.users.get(t)):game.users.forEach((e=>{preloadPresetsByUser(e)})),n=n.filter(((e,t,i)=>i.indexOf(e)===t));let r=[];n.forEach((e=>{e&&(e.modelFile?r.push(e.loadModel(this.loaderGLTF)):r.push(e.loadTextures()))})),e&&await Promise.all(r)}addSystem(e,t="default"){e.dice=[],e.mode=t,"default"!=t&&"standard"==this.preferredSystem&&(this.preferredSystem=e.id),this.systems[e.id]=e}addDicePreset(e,t=null){let i=this.systems.standard.dice.find((t=>t.type==e.type));i&&i.internalAdd||(t||(t=e.type),i=this.systems.standard.dice.find((e=>e.type==t)));let n=new DicePreset(e.type,i.shape),r=e.type.substr(1);n.term=isNaN(r)?CONFIG.Dice.terms[r].name:"Die",n.setLabels(e.labels),n.setModel(e.modelFile),e.values?(null==e.values.min&&(e.values.min=1),null==e.values.max&&(e.values.max=i.values.length),null==e.values.step&&(e.values.step=1),n.setValues(e.values.min,e.values.max,e.values.step)):(n.values=i.values,n.valueMap=i.valueMap),e.valueMap&&(n.valueMap=e.valueMap),n.mass=i.mass,n.scale=i.scale,n.inertia=i.inertia,n.system=e.system,n.font=e.font,n.fontScale=e.fontScale||null,n.colorset=e.colorset||null,n.fontScale||["d2","d4","d6","d8","d10","d12","d14","d16","d20","d24","d30","d100"].includes(e.type)||!this.systems.standard.dice.find((t=>t.type==e.type))||(n.fontScale=s[t]),e.bumpMaps&&e.bumpMaps.length&&n.setBumpMaps(e.bumpMaps),e.emissiveMaps&&e.emissiveMaps.length&&n.setEmissiveMaps(e.emissiveMaps),e.emissive&&(n.emissive=e.emissive),e.emissiveIntensity&&(n.emissiveIntensity=e.emissiveIntensity),this.register(n),e.font&&!FontConfig.getAvailableFonts().includes(e.font)&&this.fontLoadingPromises.push(FontConfig.loadFont(e.font,{editor:!1,fonts:[]}))}internalAddDicePreset(e){let t="d";[3,5,7].includes(e.faces)?t+=2*e.faces:t+=e.faces;let i="d"+e.constructor.DENOMINATION,n=this.systems.standard.dice.find((e=>e.type==t)),r=new DicePreset(i,n.shape);r.term=e.constructor.name;let s=[];for(let t=1;t<=e.faces;t++)s.push(e.getResultLabel({result:t}));r.setLabels(s),r.setValues(1,e.faces),r.mass=n.mass,r.inertia=n.inertia,r.scale=n.scale,r.internalAdd=!0,this.register(r)}disposeCachedMaterials(e=null){for(const t in this.baseTextureCache)null!=e&&t.substr(0,e.length)!=e||(this.baseTextureCache[t].map.dispose(),this.baseTextureCache[t].bumpMap&&this.baseTextureCache[t].bumpMap.dispose(),this.baseTextureCache[t].emissiveMap&&this.baseTextureCache[t].emissiveMap.dispose(),this.baseTextureCache[t].dispose(),delete this.baseTextureCache[t])}async _loadFonts(){const e=new Promise((e=>setTimeout(e,4500))),t=Promise.all(this.fontLoadingPromises).then((()=>document.fonts.ready));this.fontLoadingPromises=[],await Promise.race([t,e])}get(e){return this.getPresetBySystem(e)}getPresetBySystem(e,t="standard"){let i=this.systems.standard.dice.find((t=>t.type==e));if(!i)return null;let n=null;return"standard"!=t&&this.systems.hasOwnProperty(t)&&(n=this.systems[t].dice.find((t=>t.type==e&&t.shape==i.shape)),n||["Coin","FateDie","Die"].includes(i.term)||(n=this.systems[t].dice.find((e=>e.shape==i.shape&&e.values.length==i.values.length&&!i.colorset)))),n||(n=this.systems.standard.dice.find((t=>t.type==e))),n}create(e,t,i){let n=this.getPresetBySystem(t,i.system);n.model&&i.isGhost&&(n=this.getPresetBySystem(t,"standard"));let r,s="board"==e.type?this.baseScale:60;if(!n)return null;let o=this.geometries[t+s];if(o||(o=this.createGeometry(n.shape,n.scale,s),this.geometries[t+s]=o),!o)return null;if(n.model){r=n.model.scene.children[0].clone();let e=s/100;r.scale.set(e,e,e),r.geometry||(r.geometry={}),r.geometry.cannon_shape=o.cannon_shape,n.model.animations.length>0&&(r.mixer=new AnimationMixer(r),r.mixer.clipAction(n.model.animations[0]).play())}else{let s,a=this.generateMaterialData(n,i),l=e.type+t+a.cacheString;s=this.baseTextureCache[l]?this.baseTextureCache[l]:this.createMaterials(e,l,n,a),r=new Mesh(o,s),n.color&&(r.material[0].color=new Color$1(n.color),this.realisticLighting&&r.material[0].color.convertLinearToSRGB(),r.material[0].emissiveIntensity=n.emissiveIntensity?n.emissiveIntensity:1,r.material[0].needsUpdate=!0)}r.result=[],r.shape=n.shape,r.rerolls=0,r.resultReason="natural";let l=this;return r.getFaceValue=function(){let e,t=this.resultReason,i=new Vector3(0,0,"d4"==this.shape?-1:1),n=new Vector3,r=2*Math.PI;for(let t=0,s=this.body_sim.shapes[0].faceNormals.length;t<s;++t){if(0==a[this.shape].faceValues[t])continue;n.copy(this.body_sim.shapes[0].faceNormals[t]);let s=n.applyQuaternion(this.body_sim.quaternion).angleTo(i);s<r&&(r=s,e=t)}const s=l.get(this.notation.type);let o=a[this.shape].faceValues[e];if("d4"==this.shape)return{value:o,label:s.labels[o-1],reason:t};let c=o;return["d10","d2"].includes(this.shape)&&(c+=1),{value:o,label:s.labels[c+1],reason:t}},r.storeRolledValue=function(){this.result.push(this.getFaceValue())},r.getLastValue=function(){return!this.result||this.result.length<1?{value:void 0,label:"",reason:""}:this.result[this.result.length-1]},r.setLastValue=function(e){if(this.result&&!(this.result.length<1)&&e&&!(e.length<1))return this.result[this.result.length-1]=e},r}createMaterials(e,t,i,n){if(this.baseTextureCache[t])return this.baseTextureCache[t];let r=i.labels;"d4"==i.shape&&(r=i.labels[0]);let a=Array.isArray(n.texture)?n.texture[0]:n.texture;var o;let l=this.material_options[n.material]?this.material_options[n.material]:this.material_options.plastic;switch(this.realisticLighting||delete l.roughnessMap,l.type){case"phong":o=new MeshPhongMaterial(l.options);break;case"standard":o=new MeshStandardMaterial(l.options);break;case"lambert":o=new MeshLambertMaterial(l.options);break;case"physical":o=new MeshPhysicalMaterial(l.options);break;default:o=new MeshPhongMaterial(this.material_options.plastic.options)}l.scopedOptions&&(l.scopedOptions.envMap&&(o.envMap=e.textureCube),l.scopedOptions.roughnessMap&&(o.roughnessMap=e[l.scopedOptions.roughnessMap]));let c={type:i.font,scale:i.fontScale?i.fontScale:null};c.type||(c.type=n.font),c.scale||(n.fontScale[i.type]?c.scale=n.fontScale[i.type]:c.scale=s[i.shape]);let h=document.createElement("canvas"),d=h.getContext("2d",{alpha:!0});d.globalAlpha=0;let u=document.createElement("canvas"),p=u.getContext("2d",{alpha:!0});p.globalAlpha=0;let m=document.createElement("canvas"),f=m.getContext("2d"),g=r.length,v=["d3","d5","d7"].includes(i.type)||"df"==i.type&&"d6"==i.shape;v&&(g=2*g-2,"d2"!=i.shape&&"d10"!=i.shape||(g+=1));let x=Math.ceil(Math.sqrt(g)),y=256,b=this.calc_texture_size(Math.sqrt(g)*y,!0);h.width=h.height=u.width=u.height=m.width=m.height=b;let _=0,S=0,M=0;for(var w=0;w<r.length;++w){if(M==x&&(S+=y,_=0,M=0),0==w){let e={name:"none"};"source-over"!=a.composite&&(e=a),this.createTextMaterial(d,p,f,_,S,y,i,r,c,w,e,n)}else this.createTextMaterial(d,p,f,_,S,y,i,r,c,w,n.texture,n);M++,_+=y}if(v){let e=2;for("d2"!=i.shape&&"d10"!=i.shape||(e=1),w=e;w<r.length;w++)M==x&&(S+=y,_=0,M=0),this.createTextMaterial(d,p,f,_,S,y,i,r,c,w,n.texture,n),M++,_+=y}if(!this.baseTextureCache[t]){let e=new CanvasTexture(h);if(this.realisticLighting&&(e.encoding=3001),e.flipY=!1,o.map=e,o.map.anisotropy=game.dice3d.box.anisotropy,this.realisticLighting){let e=new CanvasTexture(u);e.flipY=!1,o.bumpMap=e;let t=new CanvasTexture(m);this.realisticLighting&&(t.encoding=3001),t.flipY=!1,o.emissiveMap=t,o.emissiveIntensity=i.emissiveIntensity?i.emissiveIntensity:1,o.emissive=new Color$1(i.emissive),this.realisticLighting&&o.emissive.convertLinearToSRGB()}}switch(n.material){case"chrome":case"iridescent":this.realisticLighting&&(o.metalnessMap=o.bumpMap)}return o.opacity=1,o.transparent=!0,o.depthTest=!0,o.needUpdate=!0,o.onBeforeCompile=ShaderUtils.applyDiceSoNiceShader,this.baseTextureCache[t]=o,o}createTextMaterial(e,t,i,n,r,s,a,o,l,c,h,d){if(void 0===o[c])return null;let u=d.foreground,p=d.outline,m=c>0?d.background:""!=d.edge?d.edge:d.background;Array.isArray(h)&&(h=h[Math.floor(Math.random()*h.length)]);let f=o[c],g=a.bumps[c],v=a.emissiveMaps[c];if(e.fillStyle=m,e.fillRect(n,r,s,s),t.fillStyle="#FFFFFF",t.fillRect(n,r,s,s),i.fillStyle="#000000",i.fillRect(n,r,s,s),""!=h.name&&"none"!=h.name&&(e.save(),e.beginPath(),e.rect(n,r,s,s),e.clip(),e.globalCompositeOperation=h.composite||"source-over",e.drawImage(h.texture,n,r,s,s),e.restore(),""!=h.bump&&t.drawImage(h.bump,n,r,s,s)),e.globalCompositeOperation="source-over",e.textAlign="center",e.textBaseline="middle",t.textAlign="center",t.textBaseline="middle",t.shadowColor="#000000",t.shadowOffsetX=1,t.shadowOffsetY=1,t.shadowBlur=3,i.textAlign="center",i.textBaseline="middle","d4"!=a.shape)if(d.isGhost&&""!=o[c]&&(f="?"),f instanceof HTMLImageElement)e.drawImage(f,0,0,f.width,f.height,n,r,s,s),g&&t.drawImage(g,0,0,f.width,f.height,n,r,s,s),v&&i.drawImage(v,0,0,f.width,f.height,n,r,s,s);else{let o=s/3,c=s/2,h=s/2;switch(l.scale&&(o*=l.scale),a.shape){case"d10":c=1.3*h;break;case"d14":case"d16":c=1.4*h;break;case"d8":case"d6":c*=1.1;break;case"d12":c*=1.08;break;case"d20":c=1.2*h}e.font=o+"pt "+l.type,t.font=o+"pt "+l.type,i.font=o+"pt "+l.type;var x=o;let d=f.split("\n");if(d.length>1){o/=d.length,e.font=o+"pt "+l.type,t.font=o+"pt "+l.type,i.font=o+"pt "+l.type;let n=new PIXI.TextStyle({fontFamily:l.type,fontSize:o,stroke:"#0000FF",strokeThickness:"none"!=p&&p!=m?1:0});x=PIXI.TextMetrics.measureText(d.join(""),n).lineHeight,""!=d[0]?(c-=x*d.length/2,"d12"==a.shape&&(c*=1.08)):d.shift()}for(let s=0,a=d.length;s<a;s++){let a=d[s].trim();"none"!=p&&p!=m&&(e.strokeStyle=p,e.lineWidth=5,e.strokeText(d[s],h+n,c+r),t.strokeStyle="#555555",t.lineWidth=5,t.strokeText(d[s],h+n,c+r),i.strokeStyle="#999999",i.lineWidth=5,i.strokeText(d[s],h+n,c+r),"6"!=a&&"9"!=a||(e.strokeText(" .",h+n,c+r),t.strokeText(" .",h+n,c+r),i.strokeText(" .",h+n,c+r))),e.fillStyle=u,e.fillText(d[s],h+n,c+r),t.fillStyle="#555555",t.fillText(d[s],h+n,c+r),i.fillStyle="#999999",i.fillText(d[s],h+n,c+r),"6"!=a&&"9"!=a||(e.fillText(" .",h+n,c+r),t.fillText(" .",h+n,c+r),i.fillText(" .",h+n,c+r)),c+=1.5*x}}else{var y=s/2,b=s/2;let a=s/128*24;l.scale&&(a*=l.scale),e.font=a+"pt "+l.type,t.font=a+"pt "+l.type,i.font=a+"pt "+l.type;let o=1,c=1;for(let a=0;a<f.length;a++){switch(d.isGhost&&(f[a]="?"),a){case 0:c=1.13;break;case 1:c=.87,o=1.13;break;case 2:o=.87}let l=y*o+n,h=(b-.3*s)*c+r;if(f[a]instanceof HTMLImageElement){let t=60/(f[a].width/s);e.drawImage(f[a],0,0,f[a].width,f[a].height,l-t/2,h-t/2,t,t),v&&i.drawImage(f[a],0,0,f[a].width,f[a].height,l-t/2,h-t/2,t,t)}else"none"!=p&&p!=m&&(e.strokeStyle=p,e.lineWidth=5,e.strokeText(f[a],l,h),t.strokeStyle="#555555",t.lineWidth=5,t.strokeText(f[a],l,h),i.strokeStyle="#999999",i.lineWidth=5,i.strokeText(f[a],l,h)),e.fillStyle=u,e.fillText(f[a],l,h),t.fillStyle="#555555",t.fillText(f[a],l,h),i.fillStyle="#999999",i.fillText(f[a],l,h);e.translate(y+n,b+r),e.rotate(2*Math.PI/3),e.translate(-y-n,-b-r),t.translate(y+n,b+r),t.rotate(2*Math.PI/3),t.translate(-y-n,-b-r),i.translate(y+n,b+r),i.rotate(2*Math.PI/3),i.translate(-y-n,-b-r)}}}getAppearanceForDice(e,t,i=null){let n;n=e[t]?e[t]:e.global;let s={colorset:n.colorset?n.colorset:e.global.colorset?e.global.colorset:"custom",foreground:n.labelColor?n.labelColor:e.global.labelColor?e.global.labelColor:"#FFFFFF",background:n.diceColor?n.diceColor:e.global.diceColor?e.global.diceColor:"#000000",texture:n.texture?n.texture:e.global.texture?e.global.texture:"none",material:n.material?n.material:e.global.material?e.global.material:"auto",font:n.font?n.font:e.global.font?e.global.font:"Arial",system:n.system?n.system:e.global.system?e.global.system:"standard"};if("custom"==s.colorset?(s.outline=n.outlineColor?n.outlineColor:"",s.edge=n.edgeColor?n.edgeColor:""):(s.outline=n.outlineColor?n.outlineColor:e.global.outlineColor?e.global.outlineColor:"",s.edge=n.edgeColor?n.edgeColor:e.global.edgeColor?e.global.edgeColor:""),s.colorset&&"custom"!=s.colorset){let e=DiceColors.getColorSet(s.colorset);s.foreground=e.foreground,s.background=e.background,s.outline=e.outline,s.edge=e.edge?e.edge:""}let a=this.getPresetBySystem(t,s.system);if(a.colorset){let e={...DiceColors.getColorSet(a.colorset)};Object.entries(e).forEach((t=>{"custom"==t[1]&&delete e[t[0]]})),mergeObject(s,e,{performDeletions:!0}),s.colorset=a.colorset}if(i){let e=null;if(i.options.colorset?e=i.options.colorset:i.options.flavor&&r[i.options.flavor]&&(e=i.options.flavor),e){let t=DiceColors.getColorSet(e);t.edge=t.edge?t.edge:"",s=t}i.options.appearance&&mergeObject(s,i.options.appearance,{performDeletions:!0}),i.options.ghost&&(s.isGhost=!0)}return s}generateMaterialData(e,t){let i,n={};t.texture&&!t.texture.id&&(t.texture=DiceColors.getTexture(t.texture));let r=DiceColors.getColorSet(t.colorset);"custom"==r.foreground&&(r.foreground=t.foreground),"custom"==r.background&&(r.background=t.background),"custom"==r.texture&&(r.texture=t.texture),"custom"==r.material&&(r.material=t.material),"custom"==r.font&&(r.font=t.font),Array.isArray(t.background)?(i=Math.floor(Math.random()*t.background.length),Array.isArray(t.foreground)&&t.foreground.length==t.background.length&&(n.foreground=t.foreground[i],Array.isArray(t.outline)&&t.outline.length==t.foreground.length&&(n.outline=t.outline[i])),Array.isArray(t.texture)&&t.texture.length==t.background.length&&(n.texture=t.texture[i]),Array.isArray(t.edge)&&t.edge.length==t.background.length&&(n.edge=t.edge[i]),n.background=t.background[i]):n.background=t.background,n.edge||(Array.isArray(t.edge)?(i=Math.floor(Math.random()*t.edge.length),n.edge=t.edge[i]):n.edge=t.edge),n.foreground||(Array.isArray(t.foreground)?(i=t.foreground[Math.floor(Math.random()*t.foreground.length)],Array.isArray(t.outline)&&t.outline.length==t.foreground.length&&(n.outline=t.outline[i]),n.foreground=t.foreground[i]):n.foreground=t.foreground),n.outline||(Array.isArray(t.outline)?(i=t.outline[Math.floor(Math.random()*t.outline.length)],n.outline=t.outline[i]):n.outline=t.outline),n.texture||(Array.isArray(t.texture)?n.texture=t.texture[Math.floor(Math.random()*t.texture.length)]:"none"==t.texture.name?Array.isArray(r.texture)?n.texture=r.texture[Math.floor(Math.random()*r.texture.length)]:n.texture=r.texture:n.texture=t.texture);let s=Array.isArray(n.texture)?n.texture[0]:n.texture;return"auto"==t.material||""==t.material?r.material?n.material=r.material:n.material=s.material:n.material=t.material,"auto"==t.font?e.font?n.font=e.font:n.font=r.font:n.font=t.font,t.fontScale?n.fontScale=t.fontScale:e.fontScale?n.fontScale=e.fontScale:n.fontScale=r.fontScale,n.isGhost=!!t.isGhost&&t.isGhost,n.cacheString=t.system+n.background+n.foreground+n.outline+n.texture.name+n.edge+n.material+n.font+n.isGhost,n}calc_texture_size(e,t=!1){let i=0;return i=t?Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))):Math.pow(2,Math.floor(Math.log(e)/Math.log(2))),i}createGeometry(e,t,i){let n=t*i,r=null;switch(e){case"d2":r=this.create_d2_geometry(n,i);break;case"d4":r=this.create_d4_geometry(n,i);break;case"d6":r=this.create_d6_geometry(n,i);break;case"d8":r=this.create_d8_geometry(n,i);break;case"d10":r=this.create_d10_geometry(n,i);break;case"d12":r=this.create_d12_geometry(n,i);break;case"d14":r=this.create_d14_geometry(n,i);break;case"d16":r=this.create_d16_geometry(n,i);break;case"d20":r=this.create_d20_geometry(n,i);break;case"d24":r=this.create_d24_geometry(n,i);break;case"d30":r=this.create_d30_geometry(n,i)}return r}load_geometry(e,t){let i=(new BufferGeometryLoader).parse(a[e]);return i.scale(t/100,t/100,t/100),i}create_d2_geometry(e,t){let i=this.load_geometry("d2",t);return i.cannon_shape=new CANNON.Cylinder(1*e,1*e,.1*e,8),i}create_d4_geometry(e,t){let i=this.load_geometry("d4",t);return i.cannon_shape=this.create_geom([[1,1,1],[-1,-1,1],[-1,1,-1],[1,-1,-1]],[[1,0,2,1],[0,1,3,2],[0,3,2,3],[1,2,3,4]],e),i}create_d6_geometry(e,t){let i=this.load_geometry("d6",t);return i.cannon_shape=this.create_geom([[-1,-1,-1],[1,-1,-1],[1,1,-1],[-1,1,-1],[-1,-1,1],[1,-1,1],[1,1,1],[-1,1,1]],[[0,3,2,1,1],[1,2,6,5,2],[0,1,5,4,3],[3,7,6,2,4],[0,4,7,3,5],[4,5,6,7,6]],e),i}create_d8_geometry(e,t){let i=this.load_geometry("d8",t);return i.cannon_shape=this.create_geom([[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]],[[0,2,4,1],[0,4,3,2],[0,3,5,3],[0,5,2,4],[1,3,4,5],[1,4,2,6],[1,2,5,7],[1,5,3,8]],e),i}create_d10_geometry(e,t){let i=this.load_geometry("d10",t);for(var n=2*Math.PI/10,r=[],s=0,a=0;s<10;++s,a+=n)r.push([Math.cos(a),Math.sin(a),.105*(s%2?1:-1)]);r.push([0,0,-1]),r.push([0,0,1]);return i.cannon_shape=this.create_geom(r,[[5,6,7,11,0],[4,3,2,10,1],[1,2,3,11,2],[0,9,8,10,3],[7,8,9,11,4],[8,7,6,10,5],[9,0,1,11,6],[2,1,0,10,7],[3,4,5,11,8],[6,5,4,10,9]],e),i}create_d12_geometry(e,t){let i=this.load_geometry("d12",t);var n=(1+Math.sqrt(5))/2,r=1/n,s=[[0,r,n],[0,r,-n],[0,-r,n],[0,-r,-n],[n,0,r],[n,0,-r],[-n,0,r],[-n,0,-r],[r,n,0],[r,-n,0],[-r,n,0],[-r,-n,0],[1,1,1],[1,1,-1],[1,-1,1],[1,-1,-1],[-1,1,1],[-1,1,-1],[-1,-1,1],[-1,-1,-1]];return i.cannon_shape=this.create_geom(s,[[2,14,4,12,0,1],[15,9,11,19,3,2],[16,10,17,7,6,3],[6,7,19,11,18,4],[6,18,2,0,16,5],[18,11,9,14,2,6],[1,17,10,8,13,7],[1,13,5,15,3,8],[13,8,12,4,5,9],[5,4,14,9,15,10],[0,12,8,10,16,11],[3,19,7,17,1,12]],e),i}create_d14_geometry(e,t){let i=this.load_geometry("d14",t);return i.cannon_shape=this.create_geom_dcc([[-.005093127489089966,1.177548885345459,.002782404189929366],[-.9908595681190491,.061759304255247116,.22585006058216095],[-.9924551844596863,-.06095181778073311,-.23028047382831573],[-.7984917163848877,.061637163162231445,-.6402497291564941],[-.4453684985637665,-.06121010705828667,-.9239609241485596],[-.00504341721534729,.06129471957683563,-1.0241185426712036],[.437289297580719,-.06156954541802406,-.9219886660575867],[.7920035719871521,.06098949536681175,-.6366959810256958],[.9908595681190491,-.06175928935408592,-.22585000097751617],[.9924551844596863,.0609518401324749,.23028059303760529],[.7984917163848877,-.061637137085199356,.6402497291564941],[.4453684985637665,.061210136860609055,.9239609241485596],[.00504341721534729,-.06129469349980354,1.0241185426712036],[-.4372892379760742,.061569564044475555,.9219887852668762],[-.7920035719871521,-.060989461839199066,.6366960406303406],[.005093127489089966,-1.177548885345459,-.002782404189929366]],[[0,3,2,1],[1,14,13,0],[12,11,0,13],[10,9,0,11],[8,7,0,9],[6,5,0,7],[4,3,0,5],[10,11,12,15],[14,15,12,13],[2,15,14,1],[2,3,4,15],[4,5,6,15],[6,7,8,15],[8,9,10,15]],.85*e),i}create_d16_geometry(e,t){let i=this.load_geometry("d16",t);return i.cannon_shape=this.create_geom_dcc([[-1.0301814079284668,.002833150327205658,1.0244150161743164],[-.0018179342150688171,-.006610371172428131,-1.4427297115325928],[1.4587815999984741,.0028328225016593933,-.006545569747686386],[1.031739592552185,.0028328821063041687,-1.0375059843063354],[-1.4572231769561768,.0028332099318504333,-.006545361131429672],[-1.0301814079284668,.002833150327205658,-1.0375059843063354],[1.031739592552185,.0028328821063041687,1.0244150161743164],[-.0018179342150688171,-.006610371172428131,1.4732751846313477],[.0007793977856636047,1.4608354568481445,-.006545450538396835],[-.0018181726336479187,-1.4646127223968506,.015272742137312889]],[[5,8,1],[5,4,8],[4,0,8],[0,7,8],[8,7,6],[8,6,2],[2,3,8],[3,1,8],[3,9,1],[2,9,3],[6,9,2],[6,7,9],[0,9,7],[4,9,0],[5,9,4],[5,1,9]],.83*e),i}create_d20_geometry(e,t){let i=this.load_geometry("d20",t);var n=(1+Math.sqrt(5))/2,r=[[-1,n,0],[1,n,0],[-1,-n,0],[1,-n,0],[0,-1,n],[0,1,n],[0,-1,-n],[0,1,-n],[n,0,-1],[n,0,1],[-n,0,-1],[-n,0,1]];return i.cannon_shape=this.create_geom(r,[[0,11,5,1],[0,5,1,2],[0,1,7,3],[0,7,10,4],[0,10,11,5],[1,5,9,6],[5,11,4,7],[11,10,2,8],[10,7,6,9],[7,1,8,10],[3,9,4,11],[3,4,2,12],[3,2,6,13],[3,6,8,14],[3,8,9,15],[4,9,5,16],[2,4,11,17],[6,2,10,18],[8,6,7,19],[9,8,1,20]],e),i}create_d24_geometry(e,t){let i=this.load_geometry("d24",t);return i.cannon_shape=this.create_geom([[.7070000171661377,-0,-.7070000171661377],[.7070000171661377,.7070000171661377,-0],[.5468999743461609,.5468999743461609,-.5468999743461609],[-0,-.7070000171661377,-.7070000171661377],[-0,.7070000171661377,-.7070000171661377],[-.5468999743461609,.5468999743461609,-.5468999743461609],[-.5468999743461609,-.5468999743461609,-.5468999743461609],[.5468999743461609,.5468999743461609,.5468999743461609],[-0,-0,-1],[1,-0,-0],[.5468999743461609,-.5468999743461609,-.5468999743461609],[-.5468999743461609,.5468999743461609,.5468999743461609],[-0,-0,1],[-0,.7070000171661377,.7070000171661377],[-0,1,-0],[-.7070000171661377,.7070000171661377,-0],[-.7070000171661377,-0,-.7070000171661377],[-.7070000171661377,-.7070000171661377,-0],[-0,-.7070000171661377,.7070000171661377],[-.5468999743461609,-.5468999743461609,.5468999743461609],[-1,0,-0],[.5468999743461609,-.5468999743461609,.5468999743461609],[.7070000171661377,-0,.7070000171661377],[-0,-1,-0],[.7070000171661377,-.7070000171661377,-0],[-.7070000171661377,-0,.7070000171661377]],[[4,5,15,14],[3,10,24,23],[11,15,20,25],[10,3,8,0],[19,18,12,25],[7,22,9,1],[22,21,24,9],[7,13,12,22],[5,4,8,16],[20,17,19,25],[6,3,23,17],[2,4,14,1],[18,19,17,23],[13,7,1,14],[0,2,1,9],[18,21,22,12],[3,6,16,8],[15,5,16,20],[6,17,20,16],[4,2,0,8],[13,11,25,12],[24,10,0,9],[11,13,14,15],[21,18,23,24]],e),i}create_d30_geometry(e,t){let i=this.load_geometry("d30",t);return i.cannon_shape=this.create_geom_dcc([[-1.6180000305175781,0,1],[-1.6180000305175781,.6179999709129333,-0],[-0,1.6180000305175781,.6179999709129333],[.6179999709129333,0,1.6180000305175781],[-1,-1.6180000305175781,-0],[1.6180000305175781,0,1],[-1.6180000305175781,-.6179999709129333,-0],[-.6179999709129333,0,1.6180000305175781],[-0,1,-1.6180000305175781],[-1,1,-1],[1.6180000305175781,.6179999709129333,-0],[1,-1.6180000305175781,-0],[-1,-1,-1],[1.6180000305175781,-.6179999709129333,-0],[-1,1.6180000305175781,-0],[1,1,-1],[1,1.6180000305175781,-0],[-0,1,1.6180000305175781],[1,-1,-1],[-.6179999709129333,0,-1.6180000305175781],[-0,-1,-1.6180000305175781],[-1,1,1],[.6179999709129333,0,-1.6180000305175781],[-0,-1,1.6180000305175781],[-1,-1,1],[-0,1.6180000305175781,.6179999709129333],[-1.6180000305175781,0,-1],[1,1,1],[-0,-1.6180000305175781,-.6179999709129333],[1.6180000305175781,0,-1],[1,-1,1],[-0,1.6180000305175781,-.6179999709129333],[-0,-1.6180000305175781,.6179999709129333]],[[25,16,31,14],[7,0,24,23],[19,20,12,26],[13,5,30,11],[1,0,21,14],[10,29,15,16],[6,0,1,26],[22,29,18,20],[9,14,31,8],[28,4,12,20],[30,5,3,23],[12,4,6,26],[31,16,15,8],[21,17,25,14],[22,20,19,8],[3,17,7,23],[18,11,28,20],[32,23,24,4],[27,5,10,16],[9,8,19,26],[25,17,27,16],[30,23,32,11],[7,17,21,0],[10,5,13,29],[24,0,6,4],[13,11,18,29],[9,26,1,14],[3,5,27,17],[15,29,22,8],[28,11,32,4]],e),i}create_shape(e,t,i){for(var n=new Array(e.length),r=new Array(t.length),s=0;s<e.length;++s){var a=e[s];n[s]=new CANNON.Vec3(a.x*i,a.y*i,a.z*i)}for(s=0;s<t.length;++s)r[s]=t[s].slice(0,t[s].length-1);return new CANNON.ConvexPolyhedron(n,r)}create_geom(e,t,i){for(var n=new Array(e.length),r=0;r<e.length;++r)n[r]=(new Vector3).fromArray(e[r]).normalize();return this.create_shape(n,t,i)}create_shape_dcc(e,t,i){for(var n=new Array(e.length),r=new Array(t.length),s=0;s<e.length;++s){var a=e[s];n[s]=new CANNON.Vec3(a.x*i,a.y*i,a.z*i)}for(s=0;s<t.length;++s)r[s]=t[s];return new CANNON.ConvexPolyhedron(n,r)}create_geom_dcc(e,t,i){for(var n=new Array(e.length),r=0;r<e.length;++r)n[r]=(new Vector3).fromArray(e[r]).normalize();return this.create_shape_dcc(n,t,i)}}class DiceSFX{get nameLocalized(){return game.i18n.localize(this._name)}constructor(e,t,i){this.options=mergeObject({isGlobal:!1,muteSound:!1},i),this.dicemesh=t,this.box=e,this.destroyed=!1,this.enableGC=!1,this.renderReady=!1,this.volume=t.body_sim.secretRoll&&e.muteSoundSecretRolls||this.options.muteSound?0:this.box.volume}static async init(){return!0}async play(){return Promise.resolve()}static async loadAsset(e,t){return new Promise(((i,n)=>{e.load(t,(e=>i(e)),null,n)}))}static getDialogContent(e,t){let i={},n=game.user.isGM?"":'disabled="disabled"';return i.content=`<div class="form-group">\n <label>{{localize "DICESONICE.sfxOptionsIsGlobal"}}</label>\n <div class="form-fields">\n <input type="checkbox" name="sfxLine[{{id}}][options][isGlobal]" data-dtype="Boolean" ${n} {{checked isGlobal}} />\n </div>\n </div>\n <div class="form-group">\n <label>{{localize "DICESONICE.sfxOptionsMuteSound"}}</label>\n <div class="form-fields">\n <input type="checkbox" name="sfxLine[{{id}}][options][muteSound]" data-dtype="Boolean" ${n} {{checked muteSound}} />\n </div>\n </div>`,i.data={isGlobal:!!e.options&&e.options.isGlobal,muteSound:!!e.options&&e.options.muteSound,id:t},i}}class PlaySoundEpicFail extends DiceSFX{static id="PlaySoundEpicFail";static specialEffectName="DICESONICE.PlaySoundEpicFail";static path="modules/dice-so-nice/sfx/sounds/epic_fail.mp3";static async init(){return game.audio.pending.push(function(){AudioHelper.preloadSound(PlaySoundEpicFail.path)}.bind(this)),!0}async play(){AudioHelper.play({src:PlaySoundEpicFail.path,volume:this.volume},!1)}}class PlaySoundEpicWin extends DiceSFX{static id="PlaySoundEpicWin";static specialEffectName="DICESONICE.PlaySoundEpicWin";static path="modules/dice-so-nice/sfx/sounds/epic_win.mp3";static async init(){return game.audio.pending.push(function(){AudioHelper.preloadSound(PlaySoundEpicWin.path)}.bind(this)),!0}async play(){AudioHelper.play({src:PlaySoundEpicWin.path,volume:this.volume},!1)}}function Proton(e,t){this.preParticles=Proton.Util.initValue(e,Proton.POOL_MAX),this.integrationType=Proton.Util.initValue(t,Proton.EULER),this.emitters=[],this.renderers=[],this.pool=new Proton.Pool,Proton.integrator=new Proton.Integration(this.integrationType)}function EventDispatcher(){this.initialize()}
|